機器學習 學習記錄(四)

2021-08-14 03:11:02 字數 2860 閱讀 2128

本篇部落格將介紹深度學習時所用到的一些tips。

我們知道,機器學習的三大步驟(function set, goodness of function, pick up the best function),那如果我們最終得到的結果壞掉了怎麼辦。如果壞掉了,到底是這三步的哪乙個步驟出現了問題呢?

結果的壞掉有兩種情況,一種是訓練資料的符合率很低,還有一種是測試資料的命中率比較低。在第一種情況下,很可能是在gradient descent的時候,由於某種原因而致使所得到的權重並不是l(

w1,w

1,⋯,

wn,b

) 最小值點,所以需要我們調整loss function或者是權重的初始值以及learning rate。那如果是測試資料的時候結果壞掉了呢?那基本上就可以確定是出現了過擬合的情況,所以可能需要我們重新調整模型,下面的這張圖很好地描述了這個過程。

下面介紹幾種比較常用的方法

i.對於訓練資料的時候出現問題的解決辦法:

對於某些機器學習問題,有時候會隨著網路深度的遞增而遞減。那為什麼會出現這種現象呢?解釋是:vanishing gradient. 在以sigmoid函式為啟用函式的神經網路中,由於sigmoid函式的影響導致網路中靠近input layer的引數偏導數很小,而靠近output layer的引數偏導數較大,這樣就導致靠近output layer的引數收斂得很快,而靠近input layer的引數直到學習結束都幾乎都沒有被更新。

那怎麼去解決這個問題呢?你當然可以採用乙個動態的learning rate去使不同引數盡量收斂,但是這種解決方案顯然只是治標不治本,因為導致這個問題的元凶在sigmoid函式。那我們能不能通過更換啟用函式來解決這個問題呢?答案是完全可行!事實上我們也是這麼做的。

下面介紹兩種比較常用的來更換sigmoid函式的啟用函式:

那這個函式怎麼求導呢?

根據上一次的weight與輸入我們是能夠求出每個神經元的具體輸出的,那麼就將輸出z1

=w1x

+b,z

2=w2

x+b 中較小的那乙個從神經網路中剔除,然後訓練這乙個更淺一點的神經網路,操作如下圖

這種方法有很多具體的實現方式,比較著名的有adagrad、rmsprop、momentum.

<1>adagrad:

adagrad的具體表達如下: wt

+1←w

t−η∑

ti=0

g2i−

−−−−

−√⋅g

i 其中g

i=∇l

<2>rmsprop wt

+1←w

t−ησ

t⋅gt

其中σt

=ασ2

t−1+

(1−α

)g2t

−−−−

−−−−

−−−−

−−√,

σ0=g

0,gt

=∇l

<3>momentum

不做過多解釋,請讀者參考下圖

ii.對於測試資料時出現問題的解決方法

解決方法主要有:early stopping,regularization,dropout

下面簡短地介紹一下regularization與dropout,early stopping比較簡單,請讀者查閱相關資料,不在這裡贅述

1.regularization

regularization其實就是要調整我們做梯度遞減的函式,在該函式後面加上λ|

θ|2 : l′

(θ)=

l(θ)

+λ|θ

|2用這個新的函式來做gradient descent: ∂l

′∂w=

∂l∂w

+λw

wt+1

←wt−

(η∂l

∂w)−

ηλwt

=(1−

ηλ)w

t−(η

∂l∂w

) 2.dropout

這種處理方式的做法是,每次引數更新,每個神經元有

p %的概率被隨機丟棄

最終得到的結果要用每個引數乘上1−

p %

機器學習 學習記錄六

本篇部落格將介紹semi supervised learning的實現方法 介紹 之前我們所介紹的機器學習所提到的資料都是帶有label的。而現實是,蒐集這些帶有label的資料並不是一件簡單的事情,但是蒐集一些不帶有label的資料就要容易很多。semi supervised learning指的...

機器學習實戰學習記錄

1 k近鄰演算法 k近鄰演算法的一般流程 1 收集資料 可以使用任何方法。2 準備資料 距離計算所需要的數值,最好是結構化的資料格式。3 分析資料 可以使用任何方法。4 測試演算法 計算錯誤率。5 使用演算法 首先需要輸入樣本資料和結構化的輸出結果,然後執行k近鄰演算法判定輸入資料分別屬於哪個分類,...

python學習記錄 機器學習

首先安裝了anaconda3軟體,安裝的是最新版,安裝時勾選了寫入環境變數,支援的是python3.7.3版本。然後設定了清華大學的映象,主要是用管理員身份執行 anaconda prompt命令列,然後執行conda config命令,然後執行 然後,需要更新spyder3.3.3為3.3.4,仍...