寫在最前面

機器學習在最近幾年的熱度可謂是蒸蒸日上,這項技術似乎要把這個世界做一番顛覆,或許可能會像移動互聯網一樣影響每個人的生活?這一切還不得而知,但可以確定的是,已經有不少企業家、科研人員、開發人員已經或即將投入機器學習的懷抱,我也是其中一個,在學習之初,蒐集了不少機器學習的學習資料,現在這方面的資料和培訓也越來越多,獲取一份學習材料可謂非常方便,但是其中對於機器學習的入門門檻看上去似乎不低,光是數學知識已經嚇倒了一批人,還有人工智慧一直給人高大上的印象也使很多人望而卻步。

寫這篇文章的目的一方面是自我學習總結,另外也想避開數學高高的門檻,寫一篇真正零基礎的入門文章,能幫到準備入門的朋友盡量少走彎路,快速入門。

學習順序

一定的數學知識能幫助理解機器學習的演算法,但從數學開始學習未必是個好主意,學習機器學習一定要抓住主線,親手搭建一個可運行的模型,在搭建過程中遇到什麼知識短板,再臨時去補救學習,聽上去不怎麼靠譜,但真的是經驗之談。文章假設你對機器學習一無所知,也假設你沒有Python的編程經驗,對於數學知識更是早已忘盡,這都沒有關係,下面是我規劃的的章節內容順序,循序漸進,任何人都能玩轉機器學習。

1. 機器學習的必要理論知識(本篇)

2. 機器學習需要用到的工具

3. 關於tensorflow你需要知道的

4. 實操搭建一個簡單的線性回歸預測模型

機器學習的必要理論知識

機器學習的分類

一般會把機器學習分為監督學習、無監督學習和增強學習幾個大類。

監督學習

監督學習演算法(Supervised learning algorithms)是機器學習演算法家族的一個超集,這種方法被廣泛地應用在預測模型之中。所謂預測模型,就是指使用機器學習演算法以及訓練數據的特徵和屬性所構建出來的一個模型,而對於新的輸入數據,這個模型可以被用來預測新的結果。監督學習演算法會嘗試建立起輸入特徵與目標結果之間的聯繫和依賴關係,因而通過使用一個已有數據集的訓練過程,我們就可以預測出一個新的數據集所對應的輸出結果。

監督學習有點像教育小孩子的過程,看到了有人穿紅燈的不文明情況,我們就會教育孩子說紅燈是不能闖的,如果闖了紅燈不僅可能會被罰款、更有被機動車撞到的危險,是一種不文明的行為,多次教育後,小孩就知道了看到紅燈是需要等待,不能直接穿馬路的。他的決策過程大概是這樣的,首先看到了紅燈,根據父母多次的教育(訓練)記憶,推斷應該將自己的行為應歸類為等待紅燈(分類問題),而不是繼續行走。

在監督學習的應用中,更常見的分類問題就是圖片識別,例如從10000張照片中自動挑選出狗狗的照片,我們人類可以很容易從照片中挑出狗狗照片,但是計算機沒有意識,只能接收指令,我們該如何下指令告訴計算機挑選出指定的照片呢,要知道狗狗種類很多,即時是同一品種的也是有極大差別的,很難用程序去標註狗狗的各種特徵,例如耳朵是豎著的,耳朵寬度和高度的比例是多少,耳朵輪廓毛長度是多少等等,也許需要寫上上萬條特徵語句,或許還遠遠不夠,這種指令化程序顯然不適合處理這類問題。

監督學習非常適合處理這類問題,下面是人腦與計算機在處理問題時的相似之處,計算機會模擬人類總結經驗的能力,對數據進行訓練歸納,最終形成可用於預測和分類的模型,並將模型運用到新的數據集中。

人腦問題處理過程

計算機處理問題的過程

監督學習常見的應用有:圖片識別、人臉識別、語音識別、醫學圖像分析等。

無監督學習

無監督學習演算法(Unsupervised learning algorithms)是機器學習演算法家族中常用來完成模式檢測和描述性建模的一種演算法。

與監督學習不同的是:無監督學習的訓練數據沒有標籤,全靠計算機自己去分析數據,抽取特徵值,然後做分類或關聯,依舊用監督學習中的狗狗照片作為例子,這次給計算機的10000張照片沒有打任何標籤,照片中包含了十幾種狗狗,無監督學習可以通過特徵分析,將各種狗狗的照片區分開來(聚類),而無需人為幹預。

無監督學習經常會應用於市場分析、氣象分析等領域。

增強學習

在一些應用場景中,我們希望能達成的結果不是簡單的預測分析,而是能通過自我學習達到既定目標的目的,例如我們開發了一款行走機器人,傳統方式會寫入行走的代碼,比較明顯的缺點是這類代碼缺乏自我進化,對不同環境的應對能力不足,如果使用增強學習,我們只要給到一個目標,就是保持穩定並且往前行進,在學習過程中,失去平衡對機器人來說是一種懲罰,而穩步前行是一種獎勵,通過獎懲不斷修正模型,最終學會步行。這個過程與訓練狗狗學會一個新的動作非常類似。

欠擬合、擬合與過擬合

我們總是希望模型能擬合真實數據,也就是通過訓練數據訓練後的模型具備真實環境的預測或分析能力,但有時因為參數太少或模型過於簡單等原因,模型沒有很好地捕捉到數據特徵,不能夠很好地擬合數據,如下面最左圖,藍色線代表計算機計算出的分割曲線(模型),但是並沒有很好的區分O和X兩種數據。

中間圖則抓取到了數據的分佈特徵,曲線將兩種數據區分開了(有2個X落在了曲線上方,造成這種情況有很多原因,例如誤差或噪點),這種狀況就認為已經擬合了數據。右側的情況看起來比中間圖擬合的更好,但是沒有考慮到其中的噪音影響,雖然在訓練數據上表現優異,但是在真實環境中,誤差會比中間的曲線大的多,這種情況稱為過擬合。

訓練數據、測試數據與驗證數據

訓練數據在文中已多次出現,這個概念也比較好理解,在模型訓練完成後,我們還希望知道這個模型的擬合能力如何,這時就需要用到測試數據了,測試數據有點像我們參加的考試,通過了一學期的學習(訓練),是該展示下學到的本領了,測試數據就是考覈模型用的,當然只能用一次,而在考試前,一般都會經過幾輪模擬考試,模擬考試可以幫助找出平時沒有注意到的知識點,這點就非常像驗證數據,可以把驗證數據理解為對模型的一次模擬考試。

深度學習

這是深度學習的模型示意圖,真實情況會更加複雜,最左側是輸入,例如我們要做一個區分狗狗照片的應用,那麼輸入就是狗狗照片,中間是隱藏層,最右側是輸出,例如輸出狗狗的類別,當隱藏層超過2層時就稱為深度學習。這個結構有些類似人腦的神經元,所以也稱為神經網路。

TENSORFLOW PLAYGROUND

在開始寫第一個機器學習程序前,可以先看看這個,這是tenorflow的playground,一個可以動態演示機器學習過程的在線網頁,網址是 http://playground.tensorflow.org 。你可以設置激活函數、學習率等各種參數,整個學習過程會使用動畫動態演示,非常直觀。

準備工作

任何一臺筆記本電腦就能勝任這個簡單的項目,所以不需要在硬體上有額外的支出。軟體環境可以是windows、linux或mac,如果你是用mac電腦,可以參考我寫的《從零開始搭建tensorflow人工智慧開發環境(MAC版)》

更多的參考資料可以關注我的微信公眾號:數字極客,回復「資料」關鍵字來獲取。

數字極客 - 學知識,做最酷的事!?

www.digeek.tech


推薦閱讀:
相关文章