為你解析機器學習品酒步驟(附視訊)

資料派THU發表於2018-06-01

來源:TensorFlow

本文約2850建議閱讀6鍾。

本文講述了實現機器學習中常見的七個步驟,讓我們更加深入瞭解在機器學習內部,整個機制又是如何運作的。

不論是皮膚癌監測、黃瓜自動分揀還是檢測故障電梯,機器學習都讓計算機有了全新的能力。

但是在機器學習內部,整個機制又是如何運作的呢?我們先舉一個簡單的例子,然後由此詳細解讀機器學習從資料當中獲得解答的整個過程。

請看 Yufeng 為大家帶來的講解:


視訊時長約10分鐘,建議WIFI環境下觀看

我們先假設這樣一個需求:建立一個能夠回答面前這杯液體是啤酒還是紅酒的問答系統。我們要建立的這一問答系統被稱為“模型”,而此模型的建立過程被稱為“訓練”。訓練的目的是建立出一個在絕大多數情況下能正確回答問題的精準模型。為了進行這樣的訓練,我們必須要蒐集足夠的資料,而這就是整個流程的起點。

紅酒還是啤酒?


我們的資料要從一杯一杯的紅酒和啤酒當中蒐集。而它們汲取可資料之處頗多,諸如泡沫數量和酒杯的形狀等特徵都是蒐集的重點。



此處,我們從中選取兩個方面來蒐集資料:酒水顏色(光波長)和酒精含量(濃度)。預期的效果就是通過這兩項因子就分辨出兩種酒水。後文中,我們會稱“顏色”和“酒精濃度”為資料的“特徵”。


好了,現在第一步就是到商店去買各式各樣的啤酒和紅酒,同時還需要淘一些測量所需的裝備——測光波長的分光儀和測酒精濃度的液體比重儀。

蒐集資料


一旦所有食(jiu)材(shui)和裝備都齊全了,就進入了“七步走”的第一步:蒐集資料。這一步至關重要,因為你所蒐集的資料量和質量將決定最終形成的預測模型的好壞。比如我們的流程中,所採集的資料就是每一個樣本的顏色(即透射光波長)和酒精濃度。



一種一種測完之後,大致會形成類似上述表格的資料。

資料準備


幾個小時之後,我們蒐集到了不少資料,接下來就要進入下一步驟:資料準備。這一步中,我們將會把資料匯出到一個適當的地方,以備後期訓練模型時使用。


首先將所有資料放在一起,然後將其順序打亂。由於順序不是判斷酒水的依據,我們並不期望順序影響到模型學習到的內容。換言之,我們判斷一種酒是紅的還是啤的,並不需要知道前一種或是接下來有什麼酒出現。




這時,可以著手繪出視覺化的資料分析結果,這些分析圖將有助於你發現不同變數之間的潛在相關性,並且能幫你發現是否有資料失衡。比如,假若我們的資料中大量結果都表現出啤酒的特徵,那麼模型大多數時候都遇到了啤酒,所以它的推測也將傾向於啤酒。但是真實世界中,模型需要判斷的啤酒和紅酒的量很有可能是相同的,假若它按照訓練的結果得出的大部分都是啤酒,那麼它有不少時候都得出了錯誤的結論。


我們還需要將資料分成兩部分。


  • 第一部分用於訓練模型,它們將佔全部資料中的絕大多數。

  • 另一部分則是用於評估模型的判斷能力的。


顯然我們不希望用於訓練的資料被拿來檢測模型,因為這些資料很可能被模型給直接記住了,答案脫口而出。這就好像你在考試裡總不會出現平時的作業原題那樣。有時我們得到的資料需要一些其他形式的調整和操作,比如去重、規範化和糾錯等等,這些都需要在資料準備的過程當中完成。 而我們的這個問答系統訓練用的資料並不需要進一步操作,所以現在進入下一環節。


選擇模型


下一步就是要選擇模型了。這些年,研究者和資料科學家研究出了很多很多的通用模型。其中不少都非常適用於影象資料,另有一些則適用於連續性資料(比如文字和音訊),一些適用於數值型資料,另外的則擅長處理基於文字的資料。在我們的例子當中,由於僅僅只有兩項特徵,所以可以使用小型的線性分析模型,一種非常小但是又足夠完成分析的模型。


訓練模型


接下來就是整個機器學習過程中最重要的步驟了——訓練模型。經過這一過程,我們的模型將會逐步提高判斷酒水是紅是啤的能力。



從某種程度上講,這與一個人初學開車是類似的。一開始,他並不知道踏板、把手和按鈕各有什麼作用,但經過一系列的聯絡,並且在教練的糾(chou)正(ma)之後,他逐漸成長為合格的新手。經過多次磨練,他會越來越嫻熟,直至成為秋名山車神一樣的老司機。



我們會在自己的模型上進行一個小規模的訓練。一條直線的方程是 y = m * x + b,x 是輸入,m 是直線的斜率,b 是縱軸的截距,y 是直線上對應 x 的值。我們需要訓練的值就是 m 和 b。由於整個表示式只有輸出 y 和輸入 x,所以只有該兩個變數需要訓練。



機器學習中,有多少特徵就有多少個 m,而 m 的值通常都用一個矩陣來表達,我們用“W”標記以表示“weight”(權重)。類似的,我們將 b 也用矩陣表示,簡記為“b”,也就是“biases”(偏差)。


訓練的過程,將會給 W 和 b 一定的初始值,然後用這些值來嘗試預測。如你所料,一開始的結果往往不符合要求,但我們可以通過與“應得結果”比較,並修改 W 和 b 來得到比較準確的預測。



上述過程將會重複進行,每一次迭代或者迴圈都被稱為訓練過程的“階”。


我們再回頭看看整個過程。一開始,我們好似隨機畫了一條線來分開紅酒和啤酒。接下來,每一次迴圈,這條線都進行一定的移動,逐漸逼近那條理想的、假想的紅酒和啤酒分界線。


評估模型


一旦訓練完畢,我們就要對得到的模型進行評估。此時,早前我們留下的那一小部分資料就派上用場了。在評估中,我們使用之前從未使用過的資料來測試模型,得到輸出並與正確的判定結果對比。這種方法能夠讓我們知道模型在遇到未接觸的資料時的表現情況,同時也展示了模型在現實世界的表現。


推薦訓練和評估所用的資料比例是 4:1 或 7:3。選取何種比例取決於原始資料集的規模。如果你的資料非常多,那麼用於驗證的資料可能就不需要那麼多了。


引數微調


評估結束,你也許想要嘗試著改善訓練的成果,此時可以進行引數微調。在訓練過程中,我們可能隱式使用了一些假設,而現在就回過頭去驗證這些假設或是改變它們的值。


舉個例子,其中一個可行的調整是針對訓練次數的。通過調整重複次數,我們可以一定程度提高模型的精度。



另外還有“學習頻率”,會影響到每一次訓練結束時相對上一次訓練變化的程度。這些值都決定了我們最終模型的精度和訓練耗時。


對於更加複雜的模型,初始條件對結果的影響也是非常大的。究竟是使用一系列 0 值還是一系列離散值作為初始值是引起這類影響的關鍵,而採用離散值則需要決定怎樣的離散形式。


從前文的內容可見,訓練的過程中我們需要考慮非常多的內容。並且,什麼時候結束、什麼程度算是“到火候了”都是需要考慮的問題,不然可能會出現反覆糾結的情形。


這一類的引數往往被稱為“超引數”,調整和優化它們更像是一種技巧而不是一種理論。這是一個實驗性的過程,並且取決於你的資料集型別、模型種類和訓練手段。


訓練完畢、微調結束,你得到了滿意的模型,那麼是時候來實操了!


預測


機器學習是一個通過資料解決問題的過程,所以預測(或是推斷)就是獲取答案的關鍵一步。這也是實現機器學習價值的關鍵一步。



通過給出顏色(光波長)和酒精濃度,我們的模型將能夠判斷出你面前的是一杯紅酒還是啤酒。


觸類旁通


機器學習的強大之處在於它使得我們可以判斷出酒的品類,而不需經過親自品嚐和人為判斷。你可以將今天案例中的中心思想舉一反三到其他的預測中,它們都遵循如下準則:


  • 蒐集資料

  • 準備資料

  • 選擇模型

  • 訓練模型

  • 評估模型

  • 引數微調

  • 預測


相關文章