這可能是最簡單易懂的機器學習入門
本文用淺顯易懂的語言精準概括了機器學習的相關知識,內容全面,總結到位,剖析了機器學習的what,who,when, where, how,以及why等相關問題。從機器學習的概念,到機器學習的發展史,再到機器學習的各類演算法,最後到機器學習的最新應用,十分詳盡。適合小白快速瞭解機器學習。
Machine Learning: A Primer
a quick introduction intended for non-technical readers
你是否使用像Siri或Alexa這樣的個人助理客戶端?你是否依賴垃圾郵件過濾器來保持電子郵件收件箱的乾淨?你是否訂閱了Netflix,並依賴它驚人的準確推薦來發現新的電影可看?如果你對這些問題說“是”,恭喜你!你已經很好地利用了機器學習!
雖然這聽起來很複雜,需要大量的技術背景,但機器學習實際上是一個相當簡單的概念。為了更好地理解它,讓我們研究一下關於機器學習的what,who,when, where, how,以及why。
什麼是機器學習?
One day ladies will take their computers for walks in the park and tell each other, “My little computer said such a funny thing this morning”.
—Alan Turing
機器學習的核心是“使用演算法解析資料,從中學習,然後對世界上的某件事情做出決定或預測”。這意味著,與其顯式地編寫程式來執行某些任務,不如教計算機如何開發一個演算法來完成任務。有三種主要型別的機器學習:監督學習、非監督學習和強化學習,所有這些都有其特定的優點和缺點。
監督學習涉及一組標記資料。計算機可以使用特定的模式來識別每種標記型別的新樣本。監督學習的兩種主要型別是分類和迴歸。在分類中,機器被訓練成將一個組劃分為特定的類。分類的一個簡單例子是電子郵件帳戶上的垃圾郵件過濾器。過濾器分析你以前標記為垃圾郵件的電子郵件,並將它們與新郵件進行比較。如果它們匹配一定的百分比,這些新郵件將被標記為垃圾郵件併傳送到適當的資料夾。那些比較不相似的電子郵件被歸類為正常郵件併傳送到你的郵箱。
第二種監督學習是迴歸。在迴歸中,機器使用先前的(標記的)資料來預測未來。天氣應用是迴歸的好例子。使用氣象事件的歷史資料(即平均氣溫、溼度和降水量),你的手機天氣應用程式可以檢視當前天氣,並在未來的時間內對天氣進行預測。
在無監督學習中,資料是無標籤的。由於大多數真實世界的資料都沒有標籤,這些演算法特別有用。無監督學習分為聚類和降維。聚類用於根據屬性和行為物件進行分組。這與分類不同,因為這些組不是你提供的。聚類的一個例子是將一個組劃分成不同的子組(例如,基於年齡和婚姻狀況),然後應用到有針對性的營銷方案中。降維通過找到共同點來減少資料集的變數。大多數大資料視覺化使用降維來識別趨勢和規則。
最後,強化學習使用機器的個人歷史和經驗來做出決定。強化學習的經典應用是玩遊戲。與監督和非監督學習不同,強化學習不涉及提供“正確的”答案或輸出。相反,它只關注效能。這反映了人類是如何根據積極和消極的結果學習的。很快就學會了不要重複這一動作。同樣的道理,一臺下棋的電腦可以學會不把它的國王移到對手的棋子可以進入的空間。然後,國際象棋的這一基本教訓就可以被擴充套件和推斷出來,直到機器能夠打(並最終擊敗)人類頂級玩家為止。
但是,等等,你可能會說。我們是在說人工智慧嗎?機器學習是人工智慧的一個分支。人工智慧致力於創造出比人類更能完成複雜任務的機器。這些任務通常涉及判斷、策略和認知推理,這些技能最初被認為是機器的“禁區”。雖然這聽起來很簡單,但這些技能的範圍非常大——語言處理、影象識別、規劃等等。
機器學習使用特定的演算法和程式設計方法來實現人工智慧。沒有機器學習,我們前面提到的國際象棋程式將需要數百萬行程式碼,包括所有的邊緣情況,幷包含來自對手的所有可能的移動。有了機器學習,我們可以將程式碼量縮小到以前的一小部分。很棒對吧?
有一個缺失的部分:深度學習和神經網路。我們稍後會更詳細地討論它們,請注意,深度學習是機器學習的一個子集,專注於模仿人類大腦的生物學和過程。
誰發展了機器學習?何時何地?
A breakthrough in machine learning would be worth ten Microsofts.—Bill Gates
在我看來,機器學習最早的發展是Thomas Bayes 在1783年發表的同名理論,貝斯定理髮現了給定有關類似事件的歷史資料的事件的可能性。這是機器學習的貝葉斯分支的基礎,它尋求根據以前的資訊尋找最可能發生的事件。換句話說,Bayes定理只是一個從經驗中學習的數學方法,是機器學習的基本思想。
幾個世紀後,1950年,電腦科學家 Alan Turing發明了所謂的圖靈測試,計算機必須通過文字對話一個人,讓人以為她在和另一個人說話。圖靈認為,只有通過這個測試,機器才能被認為是“智慧的”。1952年,Arthur Samuel建立了第一個真正的機器學習程式——一個簡單的棋盤遊戲,計算機能夠從以前的遊戲中學習策略,並提高未來的效能。接著是Donald Michie 在1963年推出的強化學習的tic-tac-toe程式。在接下來的幾十年裡,機器學習的進步遵循了同樣的模式--一項技術突破導致了更新的、更復雜的計算機,通常是通過與專業的人類玩家玩戰略遊戲來測試的。
它在1997年達到巔峰,當時IBM國際象棋電腦深藍(Deep Blue)在一場國際象棋比賽中擊敗了世界冠軍加里·卡斯帕羅夫(Garry Kasparov)。最近,谷歌開發了專注於古代中國棋類遊戲圍棋(Go)的AlphaGo,該遊戲被普遍認為是世界上最難的遊戲。儘管圍棋被認為過於複雜,以至於一臺電腦無法掌握,但在2016年,AlphaGo終於獲得了勝利,在一場五局比賽中擊敗了Lee Sedol。
機器學習最大的突破是2006年的深度學習。深度學習是一類機器學習,目的是模仿人腦的思維過程,經常用於影象和語音識別。深度學習的出現導致了我們今天使用的(可能是理所當然的)許多技術。你有沒有把一張照片上傳到你的Facebook賬戶,只是為了暗示給照片中的人貼上標籤?Facebook正在使用神經網路來識別照片中的面孔。或者Siri呢?當你問你的iPhone關於今天的棒球成績時,你的話語會用一種複雜的語音解析演算法進行分析。如果沒有深度學習,這一切都是不可能的。
要獲得更全面的機器學習時間表,請務必檢視這篇由Google雲團隊撰寫的偉大文章!
機器學習是如何工作的?
注意所有對數學恐懼的讀者:我很遺憾地告訴你,要完全理解大多數機器學習演算法,就需要對一些關鍵的數學概念有一個基本的理解。但不要害怕!所需的概念很簡單,並且借鑑了你可能已經上過的課程。機器學習使用線性代數、微積分、概率和統計。
Top 3線性代數概念:
1.矩陣運算;
2.特徵值/特徵向量;
3.向量空間和範數
Top 3微積分概念:
1.偏導數;
2.向量-值函式;
3.方向梯度
Top 3統計概念:
1.Bayes定理;
2.組合學;
3.抽樣方法
對於特定的數學資源,我強烈推薦這篇來自MetaDesignIdeas的文章。
一旦你對數學有了基本的理解,就該開始思考整個機器學習過程了。有五個主要步驟:
上面的圖表以比較清楚的方式解釋了步驟,所以在我們關注最關鍵的部分:為資料和情況選擇正確的演算法之前,花一分鐘的時間來研究它。
We don’t have better algorithms, we just have more data.—Peter Norvig
讓我們回顧一下演算法的一些常見分組:
迴歸演算法
這可能是最流行的機器學習演算法,線性迴歸演算法是基於連續變數預測特定結果的監督學習演算法。另一方面,Logistic迴歸專門用來預測離散值。這兩種(以及所有其他迴歸演算法)都以它們的速度而聞名,它們一直是最快速的機器學習演算法之一。
基於例項的演算法
基於例項的分析使用提供資料的特定例項來預測結果。最著名的基於例項的演算法是k-最近鄰演算法,也稱為KNN。KNN用於分類,比較資料點的距離,並將每個點分配給它最接近的組。
決策樹演算法
決策樹演算法將一組“弱”學習器集合在一起,形成一種強演算法,這些學習器組織在樹狀結構中,相互分支。一種流行的決策樹演算法是隨機森林演算法。在該演算法中,弱學習器是隨機選擇的,這往往可以獲得一個強預測器。在下面的例子中,我們可以發現許多共同的特徵(就像眼睛是藍的或者不是藍色的),它們都不足以單獨識別動物。然而,當我們把所有這些觀察結合在一起時,我們就能形成一個更完整的畫面,並做出更準確的預測。
貝葉斯演算法
絲毫不奇怪,這些演算法都是基於Bayes理論的,最流行的演算法是樸素Bayes,它經常用於文字分析。例如,大多數垃圾郵件過濾器使用貝葉斯演算法,它們使用使用者輸入的類標記資料來比較新資料並對其進行適當分類。
聚類演算法
聚類演算法的重點是發現元素之間的共性並對它們進行相應的分組,常用的聚類演算法是k-means聚類演算法。在k-means中,分析人員選擇簇數(以變數k表示),並根據物理距離將元素分組為適當的聚類。
深度學習和神經網路演算法
人工神經網路演算法基於生物神經網路的結構,深度學習採用神經網路模型並對其進行更新。它們是大、且極其複雜的神經網路,使用少量的標記資料和更多的未標記資料。神經網路和深度學習有許多輸入,它們經過幾個隱藏層後才產生一個或多個輸出。這些連線形成一個特定的迴圈,模仿人腦處理資訊和建立邏輯連線的方式。此外,隨著演算法的執行,隱藏層往往變得更小、更細微。
其他演算法
下面的圖表是我發現的最好的圖表,它展示了主要的機器學習演算法、它們的分類以及它們之間的關係。
The numbers have no way of speaking for themselves. We speak for them. We imbue them with meaning….Before we demand more of our data, we need to demand more of ourselves.—Nate Silver
一旦你選擇並執行了你的演算法,還有一個非常重要的步驟:視覺化和交流結果。雖然與演算法程式設計的細節相比,這看起來既愚蠢又膚淺,但是良好的視覺化是優秀資料科學家和偉大科學家的關鍵隔膜。如果沒有人能夠理解,那麼驚人的洞察力又有什麼用呢?
為什麼機器學習很重要?
Just as electricity transformed almost everything 100 years ago, today I actually have a hard time thinking of an industry that I don’t think AI will transform in the next several years.— Andrew Ng
現在應該清楚的是,機器學習有巨大的潛力來改變和改善世界。通過像谷歌大腦和史丹佛機器學習小組這樣的研究團隊,我們正朝著真正的人工智慧邁進一大步。但是,確切地說,什麼是機器學習能產生影響的下一個主要領域?
-
物聯網
物聯網(Internet of Things),或者說IOT,是指你家裡和辦公室裡聯網的物理裝置。流行的物聯網裝置是智慧燈泡,其銷售額在過去幾年裡猛增。隨著機器學習的進步,物聯網裝置比以往任何時候都更聰明、更復雜。機器學習有兩個主要的與物聯網相關的應用:使你的裝置變得更好和收集你的資料。讓裝置變得更好是非常簡單的:使用機器學習來個性化您的環境,比如,用面部識別軟體來感知哪個是房間,並相應地調整溫度和AC。收集資料更加簡單,通過在你的家中保持網路連線的裝置(如亞馬遜回聲)的通電和監聽,像Amazon這樣的公司收集關鍵的人口統計資訊,將其傳遞給廣告商,比如電視顯示你正在觀看的節目、你什麼時候醒來或睡覺、有多少人住在你家。
-
聊天機器人
在過去的幾年裡,我們看到了聊天機器人的激增,成熟的語言處理演算法每天都在改進它們。聊天機器人被公司用在他們自己的移動應用程式和第三方應用上,比如Slack,以提供比傳統的(人類)代表更快、更高效的虛擬客戶服務。
-
自動駕駛
我個人最喜歡的下一個大型機器學習專案是最遠離廣泛生產的專案之一。然而,目前有幾家大型公司正在開發無人駕駛汽車,如雪佛蘭、Uber和Tsla。這些汽車使用了通過機器學習實現導航、維護和安全程式的技術。一個例子是交通標誌感測器,它使用監督學習演算法來識別和解析交通標誌,並將它們與一組標有標記的標準標誌進行比較。這樣,汽車就能看到停車標誌,並認識到它實際上意味著停車,而不是轉彎,單向或人行橫道。
這就是我們進入機器學習世界的非常短暫的旅程。感謝觀看。
相關文章
- 最簡單易懂的ChatGPT入門指南!ChatGPT
- 《機器學習有意思! 01》- 世界上最簡單的機器學習入門機器學習
- 有趣的機器學習:最簡明入門指南機器學習
- 最簡單易懂的laravel事件,這個功能非常的有用Laravel事件
- 最簡單的 Git 入門教程Git
- 全網最通俗易懂的Kafka入門Kafka
- 全網最通俗易懂的Kafka入門!Kafka
- 這可能是實現高斯模糊(毛玻璃)最簡單的庫了
- 全網最通俗易懂的【短連結】入門
- emacs最簡單入門,只要10分鐘Mac
- 簡單易懂的PromisePromise
- SpringDataJPA入門就這麼簡單Spring
- SpringMVC入門就這麼簡單SpringMVC
- 可能是最全面最易懂的解析前端浮動的文章前端
- 史上最通俗易懂的Android Dagger入門教程Android
- 這可能是掘金講「原型鏈」,講的最好最通俗易懂的了,附練習題!原型
- 簡單易懂的索引原理索引
- 最簡單易懂的 Spring Security 身份認證流程講解Spring
- 機器學習梯度下降法,最通俗易懂的解釋機器學習梯度
- Docker入門為什麼可以這麼簡單?Docker
- 清晰易懂的Numpy入門教程
- 通俗易懂的 Git入門Git
- VMTools的安裝 (簡單易懂)
- 簡單易懂的氣泡排序排序
- 簡單易懂的JSON框架JSON框架
- 最簡單易懂的三種排序演算法:冒泡、選擇、插入排序演算法
- Azkaban 簡單入門
- postgresql 簡單入門SQL
- SprintBoot簡單入門boot
- Vue簡單入門Vue
- Kafka簡單入門Kafka
- Mysql 簡單入門MySql
- git簡單入門Git
- Espresso 簡單入門Espresso
- Groovy 簡單入門
- 小米盒子看直播最簡單最易懂教程 怎麼裝上直播軟體
- drools的簡單入門案例
- 簡單的 Go 入門教程Go