ML4-Brief Introduction of Deep Learning(李宏毅筆記)

這個系列文章是我對李宏毅教授機器學習課程的一個筆記。

deep learning的趨勢:

Google使用deep learning

回顧一下deep learning的歷史:

deep learning的發展

perceptron非常像我們的logistics regression只不過是沒有sigmoid部分。09年的GPU的發展是很關鍵的,節省了很多的時間。

我們都知道機器學習有三個step,那麼對於deep learning呢?

step1-3

那對於deep learning的step1就是Neural Network

deep learning的step1

Neural network,我們可以有不同的連接方式,這樣就會產生不同的structure:

那都有什麼連接方式呢?其實連接方式都是你手動去設計的:

當已知權重和閾值時輸入(1,-1)的結果[這種結構是最常用的]

當已知權重和閾值時輸入(0,0)的結果[這種結構是最常用的]

所以你可以把整個neural network看成是一個function,如果neural network中的權重和閾值都知道的話,就是一個已知的function。(也就是我們如果把參數都設置上去就是一個function)他的輸入是一個向量,對應的輸出也是一個向量。

把有參數的neural network看成是一個函數

但是如果沒有已知的權重還有閾值的話呢?

沒有參數的結構(function set)

只給了結構就相當於定義了一個function set

不論是做linear model還是logistics regression都是定義了一個function set。我們可以給上面的結構的參數設置為不同的數,就是不同的function。這些可能的function結合起來就是一個function set。這個時候你的function set是比較大的,是以前的linear model等沒有辦法包含的function,所以說deep learning能表達出以前所不能表達的情況。

我們通過另一種方式顯示:

圖示neural network

  1. 因為layer1與layer2之間兩兩都有連接,所以叫做Fully Connect;
  2. 因為現在傳遞的方向是由後往前傳,所以叫做Feedforward。

那什麼叫做Deep呢?Deep = Many hidden layer。那到底可以有幾層呢?

不同層數的network

對於這樣複雜的結構,我們一定不會一個一個的計算,對於億萬級的計算,使用loop循環效率很低。引入Matrix Operation能使得我們的運算的速度以及效率高很多:

matrix的運算

使用Matrix的Neural network

實質的公式

這樣寫成矩陣運算的好處是,你可以使用GPU加速。那我們看看本質是怎麼回事呢?

hidden layer實質就是特徵轉換

舉一個手寫數字體識別的例子:

手寫體識別

結構就決定了function set是怎麼樣,決定network structured很關鍵。

講完了step1之後就要將step2(怎麼定義參數的好壞):

step2

我們需要把所有的data算起來:

total loss

如何找呢?Gradient Descent方法:

現在有很多架構工具了:

為什麼要deep learning

參數多的model擬合數據很好是很正常的。下面有一個通用的理論:


推薦閱讀:

【谷歌機器學習課程公開了!】Google AI 教育項目今起免費開放,完美支持中文
機器學習基石筆記13:過擬合(OverFitting)
使用sklearn來進行驗證碼識別
降維技術解析:PCA, t-SNE and Auto Encoders
[貝葉斯八]之極大似然估計

TAG:機器學習 | 筆記 |