零基礎入門深度學習六:深度學習基本概念

本文是對李宏毅教授課程的筆記加上自己的理解重新組織,如有錯誤,感謝指出。視頻及 PPT 原教程:https://pan.baidu.com/s/1dAFnki 密碼:5rsd

還沒有看過前幾篇機器學習理論的童鞋,推薦先把前幾篇看完。這裏接着上篇的 Logistic Regression 來講。

Limitation of 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 不像之前可以有一個固定的式子,它中間的神經元可以隨便連接,不同的連接就是一個新的 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值就是

Goodness of Function

我們繼續尋找它的 Loss Function !

我們先看一個數據的 loss ,例如是識別數字 1 。

是的,我們把 Model 求出的 y 與  向上篇文章一樣做 Cross Entropy ( ( 交叉熵 ) ,忘記的話可以再看一下上篇 。

有了一個數據的 loss ,我們要做的就是把所有數據的 loss 求和。

Best Function

我們得到了 Loss Function ,接下來就是求偏導,然後進行梯度下降。

是的你沒有看錯,高大上的深度學習依舊用的梯度下降,就算是 AlphaGo ,意不意外?驚不驚喜?

咦?偏導的公式爲什麼這次沒給推導呀?你知道 L 長這個樣子

可是你知道 y 寫出是什麼樣子嗎?

每經過一個神經元,其實就是矩陣相乘

我們的 y 函數就是這樣

S 形函數一層套了一層,用筆去算偏導大概會瘋掉。好在一些平臺已經利用 Backpropagation ( 反向傳播算法 ) 實現了梯度下降,我們直接去用就好了。

Backpropagation 以後我們再講。

好了,上邊就是深度學習 Deep learning 的基本理論了!!!!!!!!!!!!!!

應用

一圖勝千言

谷歌中用到了深度學習技術的項目數目,現在是真的火呀!