[監督式]Deep learning(深度學習)

Deep learning

Neural Network

每一層Neural Network都可以使用不同的activation function,sigmoid、ReLU、leaky ReLU、softmax、tanh。

function set(hypothesis set)

可以設置一個全為1的特徵(x_0),然後將b併到權重裡(w_0)。矩陣wrow數,決定他的輸出的row數,假設一個函數集合(function set),\hat{y}可以由這個函數集合(function set)裡面其中一個function生成。

Loss function

Gradient Desent

Feedforward

預設所有w、b的初始值,計算出所有z值、a值、C值
從first layer出發可以一路求出所有z值、a值、C值

Backpropagation

計算L對所有參數(w,b)的偏微分,亦即所有參數的Gradient,運用微積分的連鎖律(Chain Rule)求解,從last layer可以一路回推所有參數(w,b)的偏微分,注意這裡C是下標(i),表示\hat{y_i}lny_i

  • 連鎖律(Chain Rule)
    \frac{\partial C }{\partial w}wa的變數,aC的變數,則\frac{\partial C }{\partial w}=\frac{\partial C }{\partial a} \frac{\partial a }{\partial w}
  1. Three layer(字體太小可以在latex上按右鍵開啟新分頁)
    C = ( y_1 - \hat{y_1} ) + ( y_2 - \hat{y_2} )
    \frac{\partial C }{\partial w_1}=\frac{\partial C }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1} = \frac{\partial C }{\partial a_1} \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1} = \left( \frac{\partial C }{\partial z_{y_1}} \frac{\partial z_{y_1} }{\partial a_1 } + \frac{\partial C }{\partial z_{y_2}} \frac{\partial z_{y_2} }{\partial a_1} \right) \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1}
    = \left( \frac{\partial C }{\partial C_1}\frac{\partial C_1 }{\partial y_1} \frac{\partial y_1 }{\partial z_{y_1}} \frac{\partial z_{y_1} }{\partial a_1 } + \frac{\partial C }{\partial C_2} \frac{\partial C_2 }{\partial y_2} \frac{\partial y_2 }{\partial z_{y_2}} \frac{\partial z_{y_2} }{\partial a_1} \right) \left( \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1} \right)

  2. four layer(字體太小可以在latex上按右鍵開啟新分頁)
    \frac{\partial C }{\partial w_1}=\frac{\partial C }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1} = \frac{\partial C }{\partial a_1} \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1} = \left( \frac{\partial C }{\partial z_{y_1}} \frac{\partial z_{y_1} }{\partial a_1 } + \frac{\partial C }{\partial z_{y_2}} \frac{\partial z_{y_2} }{\partial a_1} \right) \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1}
    = \left( \frac{\partial C }{\partial a_3} \frac{\partial a_3 }{\partial z_{a_3}} \frac{\partial z_{a_3} }{\partial a_1 } + \frac{\partial C }{\partial a_4} \frac{\partial a_4 }{\partial z_{a_4}} \frac{\partial z_{a_4} }{\partial a_1} \right) \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1}
    \LARGE = \left( \left( \frac{\partial C }{\partial C_1}\frac{\partial C_1 }{\partial y_1} \frac{\partial y_1 }{\partial z_{y_1}} \frac{\partial z_{y_1} }{\partial a_3} + \frac{\partial C }{\partial C_2}\frac{\partial C_2 }{\partial y_2} \frac{\partial y_2 }{\partial z_{y_2}} \frac{\partial z_{y_2} }{\partial a_3}\right) \frac{\partial a_3 }{\partial z_{a_3}} \frac{\partial z_{a_3} }{\partial a_1 } + \left(\frac{\partial C }{\partial C_1} \frac{\partial C_1 }{\partial y_1} \frac{\partial y_1 }{\partial z_{y_1}} \frac{\partial z_{y_1} }{\partial a_4} + \frac{\partial C }{\partial C_2}\frac{\partial C_2 }{\partial y_2} \frac{\partial y_2 }{\partial z_{y_2}} \frac{\partial z_{y_2} }{\partial a_4}\right) \frac{\partial a_4 }{\partial z_{a_4}} \frac{\partial z_{a_4} }{\partial a_1} \right) \frac{\partial a_1 }{\partial z_{a1}} \frac{\partial z_{a1} }{\partial w_1}

  • Backpropagation
    由於連鎖律的關係,所以從y_1可以一路求回,使用不同的activation function求的微分也不同。

過擬合問題

  • underfitting、overfitting
  1. high Bias即所謂的Underfitting,因為參數過少連Training set都會有頗大的預測誤差。
  2. low Bias high Variance即所謂的Overfitting,因為參數過多導致過度符合Training set的資料特性,使得其無法預測較為普遍的資料集。
  • ReLU
    使用ReLU可以降低overfitting的情形,ReLU運算較為快速訓練時間較短,ReLU沒有梯度消失的問題。
    ReLU只要輸入<0就不響應,等於神經元沒有繳活,作用類似dropout。
    ReLU是訓練時訓練所有神經元,但訓練完後死了一部份的神經元,而Dropout是訓練時每次使用不同部份神經元。


  • Weight decay
    regularization能使函數降低複雜度,避免overfitting。
    L1 regularization(Lasso回歸):
    \lambda \Sigma w_i^2 + Loss\,Function
    L2 regularization(Ridge回歸、脊回歸、嶺回歸):
    \lambda \Sigma |w_i| + Loss\,Function

  • Dropout
    Dropout是用於深度學習中控制overfitting(過擬合)的一種方法,Dropout是在學習過程中一邊隨機消除神經元一邊學習的手法,每一次更新參數之前,所有神經元(包含input)都有p%的機率被丟棄,所以每次訓練都只會剩下1-p%的神經元。
    ReLU是訓練時訓練所有神經元,但訓練完後死了一部份的神經元,而Dropout是訓練時每次使用不同部份神經元,所以因為訓練時只使用1-p%的神經元,而訓練出來的模型適用所有weight預測,所以在預測(predict、test)時會比原本的y值大(1/1-p%)倍,因而預測時所有weight要乘上1-p%(訓練時使用(保留)的神經元比例),才是訓練出來模型正常預測的y值。


  • Maxout
    Maxout可以自動學習成任何分段線性凸函數的activation function,feature乘上weight後的值我們將他分組(多少組可以自己決定),然後取最大值。

Maxout模仿ReLU

梯度消失、爆炸問題

梯度消失(gradient vanishing)

當我們使用sigmoid activation在多層的DNN上會有梯度消失問題,我們在做Backpropagation,計算loss對w的梯度時,越向後傳播,梯度變得越來越小,這就意味著在網絡的前面一些層的神經元,會比後面的訓練的要慢很多,甚至不會變化。

前面我們看到w_1的Grad如下圖,每個y與a都是一個sigmoid function,我們不斷對它們求導然後相乘,而sigmoid的導數輸出介於0~0.25之間,多次相乘後必然會接近於零,導致前面的權重更新很慢。

梯度爆炸

梯度爆炸是指activation function derivative大於1的情況,會使梯度不斷成長。

解決或舒緩方法

使用不同的activation function
  1. 可以使用其他activation function,如ReLU、tanh,或每層使用不同的activation function。


    tanh與derivative

    ReLU與derivative
初始化權重(w)調整

为什么神经网络参数不能全部初始化为全0

  1. 初始化權重不能設為均一值(例如all zero),會導致每一層輸出的結果都為對稱的,當很多神經元存在相同值就沒有存在的意義了,例如100個神經元都為相同值,代表只使用一個神經元就能表現出一樣的情況,不管更新幾次所有權重都為相同值。
  2. 初始化權重值不能偏離0太遠,會造成sigmoid輸出都為0或1的情況,會造成梯度消失,但若都太趨近於零會造成對稱的問題。

隨機初始化(random initialization)權重:
初始化權重可以考慮設為正態分怖(高斯分布)平均值為零,標準差為0~1之間的值,調整標準差進行訓練使loss越低越好,意思標準差為一個超參數(hyperparameters)(手動需要調整的參數)。

Xavier initialization
  • Xavier initialization 的作法是使用normal初始化,將W的標準差設為\sqrt{ \frac{2} {N_{in}+N_{out}}}N_{in}為W前一層神經元(NN)的數量,N_{out}為W下一層神經元(NN)的數量,通常用於sigmoid function作為activation function的情形。
  • CNN為N_{in} kernel_w* kernel_h* in_channel,N_{out}(kernel_w* kernel_h* out_channel)
  • 若使用uniform則是將low={-} \sqrt{ \frac{6} {N_{in}+N_{out}}},high=\sqrt{ \frac{6} {N_{in}+N_{out}}}
He initialization

He initialization的作法是將Xavier根號內再除以2,W的標準差設為\sqrt{ \frac{4} {N_{in}+N_{out}}},N為W前一層神經元(NN)的數量,通常用於ReLU function作為activation function的情形。

Batch normalization

Batch Normalization
Batch normalization論文
Understanding the backward pass through Batch Normalization Layer
Batch Normalization原理与实战
Batch normalization是2015年提出的手法,能增加學習率、不會過度依賴預設權重、可以降低sigmoid梯度消失以及ReLU導致太多神經元為0的問題,Batch normalization layer可以放在activation function的input或output,通常放置在input,但有時候放在後面效果更好。
可以參考這篇
註:\gamma,\beta是一個可學的參數,每個初始gamma可以預設為1,beta預設為0。

實作trick

推薦閱讀:
一步步教你理解反向传播方法(這篇loss function是使用MSE方便說明原理)
Artificial Neural Networks Explained
Activation Functions: Neural Networks
Batch normalization in Neural Networks
26种神经网络激活函数可视化

參考李宏毅老師ML課程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容