1. 程式人生 > 其它 >深度學習之梯度下降法

深度學習之梯度下降法

目錄

科學家是如何把一個棘手的問題(影象分類)轉換成了一個自己熟悉的好量化的問題(優化)。而在深度學習上,我們就是用梯度下降法建立了一個可量化的評判標準——利用“代價”這個標準去判斷當前網路模型的引數到底有多好/差,並且給出了往更好的方向前進的一步。

代價函式

在一開始,我們會完全隨機地初始化所有的權重和偏置值。可想而知,這個網路對於給定的訓練示例,會表現得非常糟糕。例如,輸入一個3的影象,理想狀態應該是輸出層3這個點最亮,

可是實際情況並不是這樣。這時就需要定義一個代價函式。

梯度下降法

還得告訴它,怎麼改變這些權重和偏置值,才能有進步。

為了簡化問題,我們先不去想一個有13000個變數的函式,而考慮簡單的一元函式,只有一個輸入變數,只輸出一個數字。學過微積分的都知道,有時你可以直接算出這個最小值,不過函式很複雜的話就不一定能寫出來,而我們這個超複雜13000元的代價函式,就更加是不可能做到的了。

這裡我主要關注了兩點:

  1. 神經網路的代價函式其實是非凸函式
  2. 非凸優化問題被認為是非常難求解的,因為可行域集合可能存在無數個區域性最優點,通常求解全域性最優的演算法複雜度是指數級的。

一個更靈活的技巧是:以下圖為例,先隨便挑一個輸入值,找到函式在這裡的斜率,斜率為正就向左走,斜率為負則向右走,你就會逼近函式的某個區域性最小值。(其實是沿著負梯度方向,函式減小的最快。)

但由於不知道一開始輸入值在哪裡,最後你可能會落到許多不同的坑裡,而且無法保證你落到的區域性最小值就是代價函式的全域性最小值。

值得一提的是,如果每步的大小和斜率成比例,那麼在最小值附近斜率會越來越平緩,每步會越來越小,這樣可以防止調過頭。

當我們提到讓網路學習,實質上就是讓代價函式的值最小。代價函式有必要是平滑的,這樣我們才能挪動以找到區域性最小值,這也就是為什麼人工神經元的啟用值是連續的。

奇怪的結果

當輸入是一個噪聲圖片時,網路卻仍然很自信的把它識別成一個數字。換句話來說,即使網路學會了如何識別數字,但是它卻不會自己寫數字。

究其原因,因為網路的訓練被限制在很小的框架內,在網路的世界裡,整個宇宙都是由小網格內清晰的靜止的手寫數字構成的。

最後,作者給出了上期問題的答案:神經元根本就沒有去識別圖案和短邊!

推薦的資源

  1. Chris Olah的部落格,特別是講RNN和LSTM的那篇
  2. 視訊中提到的 神經網路和深度學習 書的中譯本~

引言 | 神經網路與深度學習(不全)

英文連結

Neural networks and deep learning

推薦部落格:

深度學習-https://www.cnblogs.com/yeluzi/category/1064181.html

神經網路和深度學習總結-https://blog.csdn.net/myarrow/article/details/51322433