Please enable JavaScript.
Coggle requires JavaScript to display documents.
林軒田AI課程
(整理by YC Note) (四堂課重點整理 (大腦:model
餵資料給大腦的過程:model fitting
model…
林軒田AI課程
(整理by YC Note)
-
-
總結
-
-
-
-
-
最後就真正亮出ML的三大絕招啦:Feature Transformation(特徵轉換)、Regularization(正規化)和Validation(驗證),Feature Transformation使得Model更為強大,所以Ein更能夠壓低,但是為了避免Overfitting我們必須去限制它,Regularization可以限制高次項的貢獻,另外,Validation可以量化Overfitting的程度,有了這個我們就可以去選出體質健康而且Ein又小的Model
-
四堂課重點整理
-
*Model看成是Hypothesis Set,在Model參數還沒被決定之前, 你可以想像它就像一個集合包含很多可以選擇的函數,而使用數據Model Fitting以後,選出一組最佳化的參數,就好像從這個集合中挑選一組函數一樣。
-
-
-
-
不加以處理的原始數據,稱為「Raw Features」
由人力從Raw Features中萃取出Concrete Features,這叫做Feature Engineering
Deep Learning厲害的地方是他可以自行從Data中學習 Features
訓練資料集In-sample Data,誤差記作Ein
Learning Algorithm的目的就是使Ein最小
測試資料集Out-of-sample Data,誤差記作Eout
最終目的就是把Eout壓下來,也就代表可以預測新的問題
評估Ein來選取Model參數,重要的是需要Ein≈Eout這個條件要成立
總結:建立Learning Model可以確保Ein≈Eout,Learning Algorithm選出最小Ein的Hypothesis,同時這組Hypothesis也能預測Out-sample。
-
-
-
總結一下機器學習的流程
1.準備好足夠的數據
2.把Model建立好,dVC必須要是有限的,而且大小要適中
3.定義好評估Ein的Error Measurement
4.使用演算法找出最佳參數把Ein降低
5.最後評估一下是否有Overfitting的狀況,確保Ein≈Eout(未來會講怎麼做)
先不管Model這部份該怎麼建立,我們先來看如何找到最佳參數這部份,有一套普遍的方法叫做Gradient Descent,很強大,甚至連現今流行的「深度學習」找最佳解的機制也是從Gradient Descent衍生出來的。
Gradient Descent (GD, 梯度下降) 有兩個變形,分別為Stochastic Gradient Descent (SGD, 隨機梯度下降) 和 Batch Gradient Descent (BGD, 批次梯度下降)。
了解Gradient Descent後,我們可以回頭看Model有哪一些?Error Measure該怎麼定?
Linear Regression、Logistic Regression都是模型的一種
Error Measure是啥我不太了解,又扯到Cross-Entropy ......
機器可以怎麼學得更好? 基本上有三招:Feature Transformation(特徵轉換)、Regularization(正規化)和Validation(驗證)。
藉由人為觀察數據,並給予適當的特徵轉換,找出其中隱藏的非線性項當作新的特徵,又稱為特徵工程(Feature Engineering)。
機器自己學習特徵轉換的這個概念應該是現今ML最重要的概念之一,最近很夯的深度學習就擁有強大的特徵轉換功能,這些轉換都是機器從Data自行學來的。
特徵轉換讓ML變得很強大,但要特別注意,因為我們增加了非線性項,所以等於是增加了模型的複雜度,這麼做的確可以壓低Ein沒有錯,但也可能使得Ein≈Eout不再成立,也就是Overfitting,所以建議要逐步的增加非線性項,從低次方的項開始加起,避免Overfitting。
Overfitting原因:
Data數量N越少、「隨機雜訊」越多、「決定性雜訊」越多、Model本身越複雜
防止Overfitting:
從低次模型開始做起,慢慢加入高次項
提升資料的正確性:Data Cleaning/Pruning(資料清洗)將錯誤的Data修正或刪除
Data Hinting(製造資料),使用合理的方法擴增原有的資料
Regularization(正規化):限制權重W的大小以控制高次的影響。
Validation(驗證):部分Data保留不進Fitting,用Validation Data來檢驗Overfitting的程度。
-
-
<總結>
來到了這四篇有關於林軒田教授機器學習基石學習筆記的尾聲了,讓我們重溫看看我們學會了什麼?
一開始我帶大家初探ML的基本架構,建立Model、使用Data訓練、最後達到描述Target Function的目的,也帶大家認識各種機器學習的類型。
接下來,我們用理論告訴大家,ML是不是真的可以做到,那在什麼時候可以做到?要符合哪些條件?我們知道要有好的Model,VC Dimension越小越好,也就是可調控的參數越少越好,才會使得Ein≈Eout成立;要有足夠的Data;要有好的Learning Algorithm能把Ein壓低,這三種條件成立後,如此一來Model在描述訓練數據很好的同時也可以很好的去預測母群體,但我們發現Ein壓低和可調控的參數越少越好兩者是Trade-off,所以我們必須取適當的VC Dimension。
再接下來我們開始看實際上ML該怎麼做,引入相當重要的Learning Algorithm,也就是Gradient Descent,並且說明了Linear Regression和Logistic Regression,而且還可以使用這兩種Regression來做分類問題。
那最後就真正亮出ML的三大絕招啦:Feature Transformation(特徵轉換)、Regularization(正規化)和Validation(驗證),Feature Transformation使得Model更為強大,所以Ein更能夠壓低,但是為了避免Overfitting我們必須去限制它,Regularization可以限制高次項的貢獻,另外,Validation可以量化Overfitting的程度,有了這個我們就可以去選出體質健康而且Ein又小的Model。
機器學習基石的這些概念都很重要,往後如果你開始學習其他的ML技巧,例如:深度學習,這些知識都是你強大的基礎,所以多看幾次吧!
Features(特徵)就是我的Model描述Data的方法,
也可以說是影響Data的變數,那在之前我們講過Features(特徵)的選擇可以是線性的,
那也可以使用「特徵轉換」來產生非線性。
Features,可以分為三類:
Embedding Numerous Features(嵌入大量特徵)
Combining Predictive Features(綜合預測結果的特徵)
Distilling Implicit Features(抽取隱含特性的特徵)
不同種類的Features就會造成不同的Models,這些Models分別是:
Embedding Numerous Features :Kernel Models(Kernel模型)
Combining Predictive Features:Aggregation Models(集合模型)
Distilling Implicit Features:Extraction Models(萃取模型)
Extraction Models的基本款就是廣為人知的「神經網路」(Neural Network),它的特色是使用神經元來做非線性的特徵轉換,那如果具有多層神經元,就是做了多次的非線性特徵轉換,這就是所謂的「深度學習」(Deep Learning)。
-
-
-
介紹神經網路
第三種「特徵轉換」— Extraction Models
Extraction Models的基本款就是廣為人知的「神經網路」
使用神經元來做非線性的特徵轉換,有多層就做多次的非線性特徵轉換,這就是所謂的「深度學習」
Activation Function的用意就是開關,當Score大於某個閥值,就打通線路讓這條路的貢獻可以繼續向後傳遞
有了Model的形式,我們可以使用Gradient Descent的手法來做最佳化
Gradient Descent在Neural Network的領域裡面發展出一套方法稱為Backpropagation
實現Backpropagation只要餵Data,Model就尋找可以描述這組Data的特徵轉換,就像是可以從Data中萃取出隱含的Feature一樣,
所以這類的Models才會被統稱為Extraction Models。
剛剛我們介紹了最基本款的Neural Network,那如果這個Neural Network有好幾層,我還會稱它為Deep Learning,
所以基本上Deep Neural Network和Deep Learning是指同一件事,那為什麼會有兩個名字呢?其實是有歷史典故的。
Neural Network的歷史相當悠久,早在1958年就有人提出以Perceptron當作Activation Function的單層Neural Network,
大家也知道一層的Neural Network是不Powerful的。
直到1980年代,有人開始使用多層的Neural Network,並在1989年,Yann LeCun博士等人就已經將反向傳播演算法
(Backpropagation, BP)應用於Neural Network,當時Neural Network的架構已經和現在的Deep Learning很接近了,
不過礙於當時的硬體設備計算力不足,Neural Network無法發揮功效,並且緊接的有人在1989年證明了只要使用一
層Neural Network就可以代表任意函數,那為何還要Deep呢?所以Deep Neural Network這方法就徹底黑掉了。
一直到了最近,G. E. Hinton博士為了讓Deep Neural Network起死回生,重新給了它一個新名字「Deep Learning」,
2009年開始有人發現使用GPU可以大大的加速Deep Learning。
不過大家是否還有看到什麼關鍵,「使用一層Neural Network就可以代表任意函數,那為何還要Deep呢?」這句話,
這不就否定了我們今天做的事情了嗎?的確,使用一層的Neural Network就可以形成任意函數,
而且完全可以用一層的神經元來表示任何多層的神經元,數學上是行得通的,但重點是參數量。
Deep Learning的學習方法和人有點類似,我們在學習一個艱深的理論時,會先單元式的針對幾個簡單的概念學習,
然後在整合這些概念去理解更高層次的問題,Deep Learning透過多層結構學習,雖然第一層的神經元沒有很多,
能學到的也只是簡單的概念而已,不過第二層再重組這些簡單概念,第三層再用更高層次的方法看問題,
所以同樣的問題使用一層Neural Network可能需要很多神經元才有辦法描述,但是Deep Learning卻可以使用更少
的神經元做到一樣的效果,因此,Deep Learning中每一層當中做了Aggregation,在增加模型複雜度的同時,
也因為平均的效果而做到截長補短,這具有Regularization的效果,並且在採用多層且瘦的結構也同時因為「模組化」
而做到降低參數使用量,來減少模型複雜度,這就不難想像Deep Learning為何如此強大。
接下來就來看一下Deep Learning的演算法—反向傳播法,我們來看要怎麼從Gradient Descent來推出這個算法。
看不懂略過.....
那麼使用Deep Learning的時候,我們要怎麼避免Overfitting呢?
第一個方法,藉由限縮一層當中的神經元來達到一種限制,做到Regularization。
第二個方法....
第三種方法是最常使用的「Early Stopping」
第四種方法是「Drop-out」.....來達到Regularization
第五種方法是「Denoising Autoencoder」
Neural Network針對不同需要發展出很多不同的型態,包括CNN, RNN,還有接下來要介紹的Autoencoder,
Autoencoder是一種可以將資料重要資訊保留下來的Neural Network。
最後來講一下Principal Component Analysis (PCA),它不太算是Deep Learning的範疇,
不過它是一個傳統且重要的Dimension Reduction的方法。
這一篇當中,我們介紹了Neural Network,並且探討多層Neural Network—Deep Neural Network,
也等同於Deep Learning,並且說明為什麼需要「Deep」,然後介紹Deep Learning最重要的演算法—反向傳播算法,
接著介紹五種常用的Regularization的方法:設計Deep Neural Network的結構、限制W的大小、Early Stopping、
Drop-out和Denoising Autoencoder。
介紹完以上內容,我們就已經對於Deep Learning的全貌有了一些認識了,
緊接著來看Deep Learning的特殊例子—Autoencoder,Autoencoder可以用來做Dimension Reduction,
那既然提到了Dimension Reduction,那就不得不在講一下重要的線性方法PCA。