本文是對李宏毅教授課程的筆記加上自己的理解重新組織,如有錯誤,感謝指出。視頻及 PPT 原教程:https://pan.baidu.com/s/1dAFnki 密碼:5rsd
還沒有看過前幾篇機器學習理論的童鞋,推薦先把前幾篇看完。這裏接着上篇的 Logistic Regression 來講。
看這樣一個二元分類問題,假設我們有四個數據。
y ≥ 0.5 相當於 z ≥ 0 ; y < 0.5 相等於 z < 0 ; 而 z 相當於一條直線。所以 LR 的任務就是找一條直線,把兩組數據分到直線的兩側。
很明顯,這是無法做到的。所以此時 LR 是無能爲力的,我們怎麼改進呢 ?
做 Feature transformation ,舉個例子。我們把 x1 變成 x1 到 的距離
x2 變成 x2 到 的距離
這樣就改變了原始數據的分佈,我們就可以找到一條直線分隔 class1 和 class2 ,從而實現我們的分類任務。
我們可不可以用幾個 LR 連接起來解決呢?
帶進幾個具體的數值看一下。
然後把每個數據代入,求出新的 x1 ,x2 如下:
是的,達到了我們的目標!
是的這就是深度學習!!!!每一個 LR 我們叫它 Neruron ( 神經元)。我們再看下它的結構
我們依舊舉個例子吧,很簡單,數字的識別吧。
當然,我們會先對它進行一些處理,去噪,二值化等,讓他變成只有黑白兩種顏色。這樣對於每個像素點就只有兩個取值了。
每個像素點,我們都當做一維,這樣我們每個數據就是這樣
深度學習的 Model 不像之前可以有一個固定的式子,它中間的神經元可以隨便連接,不同的連接就是一個新的 Model 。可以嘗試不同的連接,從而找一個可以滿足自己預期的模型。最常見的有下邊一種Fully Connect Feedforward Network (前饋全連接神經網絡) 。
二維的圖
1 輸入後到達第一個神經元會輸出 0.98-1 輸入後到達第一個神經元會輸出 0.12我們的 S 形函數這裏有了新的稱謂,activation function ( 激勵函數 ),當然它也可以不同S 形函數而換成別的函數,以後會講到。
一般的形式:
輸入 n 維的 x ,輸出 m 維的 y ,每一維度代表屬於該類的概率。所以輸出之前一般做一次 Softmax 。Softmax 是啥子嘞?中文翻譯過來叫歸一化指數函數 ,很形象,把每個值取 e 的冪次,然後歸一一下。假設我們有一個數組 V,Vi表示V中的第i個元素,那麼這個元素的Softmax值就是
我們繼續尋找它的 Loss Function !
我們先看一個數據的 loss ,例如是識別數字 1 。
是的,我們把 Model 求出的 y 與 向上篇文章一樣做 Cross Entropy ( ( 交叉熵 ) ,忘記的話可以再看一下上篇 。
有了一個數據的 loss ,我們要做的就是把所有數據的 loss 求和。
我們得到了 Loss Function ,接下來就是求偏導,然後進行梯度下降。
是的你沒有看錯,高大上的深度學習依舊用的梯度下降,就算是 AlphaGo ,意不意外?驚不驚喜?
咦?偏導的公式爲什麼這次沒給推導呀?你知道 L 長這個樣子
可是你知道 y 寫出是什麼樣子嗎?
每經過一個神經元,其實就是矩陣相乘
我們的 y 函數就是這樣
S 形函數一層套了一層,用筆去算偏導大概會瘋掉。好在一些平臺已經利用 Backpropagation ( 反向傳播算法 ) 實現了梯度下降,我們直接去用就好了。
Backpropagation 以後我們再講。
好了,上邊就是深度學習 Deep learning 的基本理論了!!!!!!!!!!!!!!
一圖勝千言
谷歌中用到了深度學習技術的項目數目,現在是真的火呀!