前半段講python講得差不多惹XDD 終於進入機器學習篇章(打開全新的一頁的感覺),接著讓我們好好地繼續學習吧
扯到機器學習,不得先拉回比較宏觀的角度,人工智慧。人工智慧依照歷史發展可以分成四個層級:
人工智慧是讓機器可以展現人類的智慧,基本上是一個讓電腦執行人類工作的廣泛用語。
人工智慧可以泛稱機器展現人類的智慧,包含第一級自動化流程控制、第二級的專家知識。
第一級是寫 if else ,若是開發一個聊天機器人,則開發者需要寫很多條件去猜想顧客可能回答的問題。
第二級是加入該領域的專家,可以協助開發者更完整地解決一個問題。例如,請聊天專家協助開發聊天機器人,猜想顧客的問題以及滿意的回覆。
機器學習則是透過演算法學習資料的樣態,企圖給予機器讓它去學習一套規則或技能,通常可以建立一個模型去預測新的數據,而機器學習可以分成三種:
監督式學習:從過去標記過的資料來進行訓練模型,這個模型可以預測沒見過的數據
例如:訓練大量的電子郵件,跟機器說哪些是垃圾郵寄哪些不是,請機器去預測未來的郵件是否是垃圾郵件
非監督式學習:給予資料卻不給與正確的答案,讓模型從資料中找尋潛在的規則
例如:由於人力標示成本耗時耗力,給予機器很多動物的圖片來找尋分類規則
強化式學習:讓機器學習當前的狀態,通常包含獎懲機制。
例如:請機器下圍棋,最後跟機器說是輸還是贏;讓電腦玩馬力歐遊戲
類似人類學習的過程,如果犯法會有懲罰,如果做好事會得到別人的稱讚
深度學習是機器學習其中一種方法,藉由模仿人類的神經元傳遞,建立許多深層的網路建構,可以去學習更複雜的工作。
例如:影像辨識、手寫辨識、語音辨識複雜工作等等
而瞄準機器學習,其中建立模型開發流程可以粗略分成以上幾個步驟:
定義問題:一開始與需求方討論和定義想要解決的問題
蒐集資料:蒐集需要訓練的資料或是答案,可能採用爬蟲或從資料庫拿取等方式
清理資料:這些資料很有可能格式不一致,或是有可能有空值的情形需要進行資料處理
特徵工程:這通常需要 Domain Knowledge,對於資料有相當程度地了解的人,對資料萃取新的特徵以增加模型準度
訓練模型:此階段耗費的時間長短會決定於選擇的演算法、資料樣本大小、硬體資源(是否有GPU)等等
模型評估:開發者會依照問題選擇不同的評估方式,通常會有一個 baseline 成效,接著開發者的工作是想方設法地超越它
模型部署:若模型成效已經達到需求方滿意的水準之後,就會讓模型上線並實際應用
監控維運:模型開發後並不是結束,而是另一個開始,通常開發者需要肩負維運的責任
通常隨著時間模型成效會下降,這時候就需要有 re-train 的機制,讓模型重新進行訓練
此外,箭頭的指向也可能會變動,僅是提供大致方向參考
機器學習的演算法可以大致分為監督式學習與非監督式學習,兩者的差別在於是否知道標準答案
若實作機器學習之後會常常聽見的名詞,過度擬合(overfitting)
機器會根據資料來進行學習,但倘若它過度擬合這些圓點,而使用一個過度複雜的模型(右圖),雖然在訓練的時候得到比較好的成效,但通常在沒看過的資料成效會大打折扣
為了防止這種情況,我們可以...