機器學習周志華筆記系列-第五章-神經網絡(歡迎討論)

系列背景:

從周志華機器學習第四章開始,總結每章的知識點。

非科班,能源工科,複習過考研微積分,線性代數,概率論。機器學習小白。

所以總結機器學習方法的思想,儘量不涉及數學工具,如矩陣微分、奇異值分解、凸優化、概率論共軛分佈、KL散度等(書中附錄)。

結構簡單,問題導向,每個問題分爲:問題,思想,其他方法和比較,具體方法,思考,其他。

思考部分爲自己提出的一些問題,歡迎大家提出自己的想法

歡迎討論

 

第五章 神經網絡

 

1.問題:神經網絡解決什麼問題

解答:同線性模型和決策樹一樣,用來表示因果關係

思想:人類神經系統的基本組成單位是神經元,神經元的工作過程是神經元受刺激(輸入)之後電位發生變化,當電位達到閾值時,釋放物質(輸出)刺激與它相連的神經元,如此將刺激傳遞下去。神經網絡正是將這一過程模型化,神經網絡的神經元接收與其連接的神經元的輸入(輸入用數來表示),爲表示不同神經元的影響不同,將輸入加權求和作爲神經元的輸入,神經元接收輸入後與閾值作差,最後用激活函數處理,判斷對後續神經元是否產生影響。所以理想的激活函數是階躍函數,但階躍函數不連續不光滑,所以用sigmoid函數近似。

其他方法和比較:既然都是表示因果關係,神經網絡與線性模型和決策樹的區別在哪。在我看來,線性模型是一個簡單的線性函數,而神經網絡和決策樹更像是一種函數組織方式。決策樹的基本單元是測試節點,它將節點以分支的形式(從下到上)組織起來(類似數據結構中的樹)。神經網絡的基本單元是神經元,用網絡將它們組織起來(類似數據結構的“圖”),明顯比線性模型更復雜。

思考:值得注意的是神經網絡的結構包含層的概念,同一層中神經元不相連,而實際的神經系統中可能沒有層的概念,所有神經元平等,互通互聯。

 

2.問題:神經網絡既然比線性模型複雜,那麼它能解決的最複雜的問題有多複雜

解答:具有輸入層(不包含激活函數)、一層包含足夠多神經元的隱含層(包含激活函數)和輸出層(包含激活函數)的神經網絡能解決所有非線性可分問題,或者說能逼近任何函數。

思考:是否所有的分類問題、聚類問題都屬於線性可分或者非線性可分問題?

 

3.問題:如何求解神經網絡

解決:誤差逆傳播算法(BP算法)

思想:採用均方誤差法(預測值與實際值之差的平方表示預測和實際的差距,求解的參數要最小化這個差距)和梯度下降法(函數在最小值處梯度爲零,對於無法對梯度爲零進行求解的函數,常常要按照一定步長進行試值,直到試出函數值最小的自變量;梯度下降法利用函數沿梯度方向下降最快,動態調整步長,加速了獲得結果的過程)。

 

4.問題:梯度下降法如何避免局部最優,而得到全局最優

以不同參數值初始化

模擬退火:每一次迭代都以一定概率接受比當前解更差的解,但隨着迭代進行概率應該越來越小,以保證算法穩定

隨機梯度下降法:在梯度下降法中加入隨機項,因此即使達到局部最優,梯度也可能不爲零,從而跳出局部最優

遺傳算法:通過變異,引入隨機因素

其他方法和比較:上述方法都是啓發式的

 

5.問題:如何避免過擬合?

解決:早停和正則化

早停:數據分成訓練集和測試集,測試集誤差開始上升時就停止訓練

正則化:在均方誤差上加一個描述神經網絡複雜度的部分——連接權和閾值的平方和。

思考:

正則化中的連接權和閾值爲什麼能反應網絡複雜度,作者的解釋是較小的連接權和閾值會使網格光滑,如何理解?引入的λ怎麼確定?

能否採用刪去神經元的方法避免過擬合?

 

6.問題:激活函數如何選擇?

解答:通常爲sigmoid函數,然而在卷積神經網絡CNN中通常使用修正線性函數

 

7.問題:神經元個數如何選擇?

解答:試錯法

 

8.問題:梯度下降法學習率(即步長)如何選擇?

思想:學習率(0, 1),學習率過大容易產生震盪,學習率過小收斂速度慢,不同參數的學習率可以不同,一個小竅門是在訓練過程中自適應改變學習率,先選擇大的學習率,再逐步縮小。

思考:如何做到自適應?

 

9. 累積BP算法:

思想:對訓練集樣例全部讀取後,計算各個樣例的誤差和,然後對誤差和最小化。

其他方法和比較:相比BP算法,累積BP算法參數迭代次數少,但是在很多任務中當累積誤差下降到一定程度後,進一步下將會非常緩慢,此時BP算法能更快獲得更好的解,尤其訓練集特別大的情況

思考:具體怎麼實現?

 

10.問題:圖像識別的任務,簡單的通過多層前饋神經網絡求解像素點數值到標籤的映射關係已經不能很好的解決問題,需要對圖像提取更多的反應像素點關係的特徵,再求解特徵到標籤的映射,所以需要增加網絡層數。

解決:深度學習(增加神經網絡層數)

思考:能否通過使網絡結構更復雜解決這個問題?

其他:因爲增加的隱含層是對原始數據提取特徵,所以深度學習可理解爲特徵學習和表示學習

 

11.問題:使用標準BP算法訓練多隱藏層網絡時,誤差在隱藏層內逆向傳播往往會發散,需要新的訓練方法。

無監督逐層訓練:算法逐層訓練,每一層的輸出作爲下一層的輸入,稱作預訓練,全部結束後利用BP算法對整個網絡進行訓練,更易收斂

權共享:讓一組神經元有相同的權重,減少參數,更易收斂,卷積神經網絡CNN經常使用

思考:發散的原因是什麼?這兩種方法各自的優缺點?有沒有其他的方法?

 

(接問題1.)其他:

閾值(threshold)也叫偏差(bias)

感知機是最簡單的神經網絡,只有輸入層(不包含激活函數)和輸出層(包含激活函數),只能解決線性可分問題

目前常用的神經網絡是多層前饋神經網絡,前饋指的是同一層之間不連接,也不存在環路

BP網絡一般指採用BP算法訓練的多層前饋神經網絡

神經元模型有MP神經元模型(前述的模型)和脈衝神經元模型

思考:

什麼是脈衝神經元模型?

連接權相加是否得1?

感知機的求解規則也是梯度下降法,如何理解?

什麼是貝葉斯框架?

神經網絡的可解釋性:人類對自身的神經系統機理還沒認識清楚,而神經網絡模擬人的神經系統,所以對神經網絡的機理也難以認清

其他常見神經網絡的思想?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章