深度學習Deep Learning Tutorial(李宏毅)————————自學筆記

本身接觸的一些東西不夠深刻,整個體系的結構也不夠清晰,因此回頭從一些入門經典資料進行從新梳理。如下內容圖片均來自Deep learning tutorial(李宏毅),其餘內容均爲本人本身的理解而作的一些記錄,不表明原文觀點,不保證準確性。

1、深度學習介紹

1.1 深度學習的介紹

先來看看機器學習是什麼,能夠看作尋找一個可以獲得咱們指望解的函數。經過訓練數據,咱們能夠找到包含若干函數的集合,在其中找一個對問題有良好響應的函數(對給定的輸入,都能獲得一個正確的解)。算法

  

有監督的學習指訓練的時候對每個輸入,咱們都已知其應該的輸出(標籤),咱們的目的是學到一個函數,可以知足全部訓練集的輸入,都會獲得其對應正確的輸出。這麼說吧,咱們有一組(x,y),咱們要找到一個函數,對應每個x,都會獲得其對應的y值。網絡

步驟:機器學習

  • 定義一個函數的集合————-對應神經網絡

給出一個參數,來定義一個函數;對應給出一個網路結構,定義一個函數集合(權重和偏置是網絡的參數)。函數

單個神經元性能

 

這裏須要重點引入一下softmax layer,文章中指出,通常來講,神經網絡的輸出多是任意值,May not be easy to interpret。這裏看來彷佛是對輸出作了一個歸一化。學習

 

須要找到一個網絡結構使得你的函數集合中有一個好的集合測試

  • goodness of function(我想這裏就是找一個好的函數集合)

目的:損失最小即網絡輸出與目標之間的距離最小化,找一組參數最小化整個的損失。優化

 

  • 找一個最優的函數(去優化函數)

 找網絡參數使得損失最小化。窮舉老是不可能滴。反向傳播很經典,竟然在推導之後我已經忘記了爲何要選擇梯度了。。。。從新溫習一下,爲何是負梯度方向。梯度方向是函數變換最快的方向,方向導數推出負梯度方向是函數在該點處減小最多的方向(方向導數最小那部分推導),梯度方向是函數增加最快的方向。因此在設置激活函數時,要求可微,便可求偏導數,便可獲得負梯度方向,從而知道該點使函數降低方向,逐步使得損失函數最小的參數。(下圖中,對x求偏導數是關於各變量的偏導數,獲得的是梯度。而對p求導,則是方向導數。)spa

 

 

 

 

 上圖中,獲得的梯度值自己爲負值,負梯度即變成正值,即w增大的方向爲函數降低的方向。反向傳播是一個有效計算梯度的方法。3d

1.2 why deep?

任何一個連續函數均可以用帶一個隱含層(足夠多隱含神經元)的網絡來實現。

爲何網絡是要愈來愈深而不是愈來愈胖?

基於邏輯電路爲背景來講,邏輯電路由門組成,兩個邏輯門能夠表示任何的布爾函數,使用多層的邏輯門較爲簡單的創建一些函數(須要更少的門)。神經網絡由神經元組成,包含一個隱含層的神經網絡能夠表示任何連續函數,多層神經元表示函數更加簡單(須要更少的參數)。

Deep與Modularization

後面層使用前面層做爲模塊進行創建新的分類器(只須要少許的數據就能夠訓練得到)

 

1.3 進入深度學習

這裏推薦的keras。

2、 訓練DNN的tips

2.1 深度學習的方法

訓練數據上取得好的結果

  • 選擇合適的損失函數(均方偏差,交叉熵)
  • mini-batch (minimize mini-batches loss 而不是total loss)
  • 新的激活函數

網絡並非越深越好,會出現梯度消失的問題,輸入端的梯度較小,學習的慢,幾乎是隨機的;輸出點的梯度較大,學習的較快,收斂的快。

如何去解決這樣的問題?在2006年開始,使用RBM作預訓練。2015年,開始使用ReLU(Rectified Linear Unit)做爲激活函數,緣由有:快速計算,生物學緣由,無限的激活函數有不一樣的偏置,尤爲是其解決了梯度消失的問題。一張圖來解釋全部:梯度沒有減小,而且獲得了一個更瘦的網絡。

ReLU有多個變形形式,還能夠看到ReLU是Maxout的特例,maxout network的激活函數能夠是任何分段線性凸函數,一共有多少段,取決於這個網絡中有多少個元素。

  • 自適應學習率

學習率若是很大,那麼可能會一直錯過最小極值點(步長太大)。若是設定很小,訓練速度會很慢。流行的簡單方法是在每隔幾個epochs,以必定比例進行減小學習率。在訓練開始的時候,咱們但願學習率要大一些,在幾個epochs之後,咱們對學習率進行減小。學習率不太可能可以通用,不一樣的參數,有不一樣的學習率。

各類改變學習率的算法(Adagrad、RMSprop、Adadelta、AdaSecant、Adam、Nadam

  • Momentum(動量)

找最優的網絡參數是困難的,可能只到近似平坦的地方、鞍點或者陷入局部最優。把物理中的動量現象放到梯度降低找最優勢會怎麼樣呢?

加上動量,可以在平坦的地方或者鞍點繼續「運動」「順勢」找最優勢,同時在局部最優的地方,會(添加)有一個動量,彷佛是在努力看看能不能越過這個小山坡,指不定山坡的另外一邊纔是最優勢。

測試數據上能取得好結果

  • 及早中止:防止過擬合,防止過擬合的方法:大量的訓練數據,創造更多的訓練數據。增長驗證數據集(validation set)使網絡及早中止

 

 

  • 正則化(權重衰減,weight decay是一種正則化的方式)

大腦的剪掉了神經元之間無用的鏈接,這裏對機器的大腦作一樣的事情,去提升性能。

 

  • Dropout

訓練時,對於每一次更新參數時,有必定比例的神經元被「拋棄」,也就是說網絡結構是改變的,使用新的改變的網絡結構去訓練,對於每個mimi-batch,咱們對重新採樣(選擇)要拋棄的神經元。測試時,選用所有的神經元進行預測,在訓練時,按照必定比例p捨棄神經元,即保留了(1-p)比例的神經元個數。那麼測試的時候,就要將權重乘以(1-p),即保證了最終輸出大小一致。

這裏的隨機Dropout,原文舉例類比其做用,在整個團隊都工做的,假如每一個人都指望小夥伴能把工做作好,那麼最後工做必然作很差,若是你知道你的小夥伴已經沒法起做用(dropout),那就只能靠本身好好作好,激發每個人最大的潛力,同時隨機性,又能保證必定的適應能力,意思是你和他能把事情作好,沒了他,你和她也能把事情作好,消除了神經元之間的依賴關係。還有一些觀點從動物的繁殖的基因重組比植物的無性生殖具備更強大的適應環境的能力方面進行類比解釋。

dropout是一種ensemble,最後的結果至關於多個網絡的輸出的平均。

  • 網絡結構

CNN是一個很是好的例子。

3、神經網絡的變體

3.1 卷積神經網絡(普遍用在圖像處理中)

why CNN for Image?

圖片中的一些模式比整張圖片要小,一個神經元不須要去看見整個圖片來發現這種模式,只用少許的參數來去鏈接小的區域便可。卷積網絡的特性:某些模式比整個圖片小,相同的模式出如今不一樣的區域。下采樣像素不會改變目標。

3.2 遞歸神經網絡(Recurrent Neural Network)

相關文章
相關標籤/搜索