神經(jīng)元模型
神經(jīng)網(wǎng)絡(luò)指由具有適應(yīng)性的簡單單元組成的廣泛并行互連的網(wǎng)絡(luò)。其中的簡單單元就是神經(jīng)元,M-P神經(jīng)元模型是一個經(jīng)典并且沿用至今的模型,對于一個神經(jīng)元:
其中代表其他神經(jīng)元的輸入,
為其他神經(jīng)元和本神經(jīng)元的連接權(quán)重,
是本伸進元的閾值,
為激活函數(shù)。整個公式的理解就是所有連接神經(jīng)元對本神經(jīng)元的所有輸入和本神經(jīng)元的閾值進行比較,通過激活函數(shù)判斷最后的輸出。
對于激活函數(shù)有:
- 階躍函數(shù)
- Sigmoid函數(shù)
可以將較大范圍內(nèi)的輸入擠壓到(0,1)范圍內(nèi)。
將所有的神經(jīng)元連接到一起就形成了神經(jīng)網(wǎng)絡(luò),可以將其視為一個包含了許多參數(shù)的模型。例:10個神經(jīng)元的網(wǎng)絡(luò)模型參數(shù)個數(shù)=90個連接權(quán)重+10個神經(jīng)元閾值。
感知機與多層網(wǎng)絡(luò)
感知機由兩層神經(jīng)元組成,分別成為輸入層和輸出層。輸入層負責信號的輸入,輸出層接受信號,然后進行函數(shù)判斷,又稱為功能神經(jīng)元。感知機通過權(quán)重和閾值
來實現(xiàn)簡單的邏輯運算,而
和
就可以通過學習來獲得(可以將
看作是
整個問題就可以看作是權(quán)重的學習過程)。
學習過程通過下式描述:
其中是學習效率,
是真實輸出,
為預測輸出,通過每次輸出預測的差值對
進行調(diào)整。
感知機的特點在于,結(jié)構(gòu)簡單,但是只能處理比較簡單的線性可分問題(即通過一個超平面就可以將兩類模式分開),在這類問題中,學習過程會收斂,從而才會有穩(wěn)定的結(jié)果。
對于異或邏輯運算這種非線性可分的問題,就需要比較復雜的多層網(wǎng)絡(luò),這種網(wǎng)絡(luò)除了輸入層和輸出層,還包含了存于中間的隱含層,隱含層也有函數(shù)激活功能,數(shù)目為一層或者多層。多層網(wǎng)絡(luò)的結(jié)構(gòu)特點在于,層間不連,鄰層全連,隔層不連,也稱為多層前饋神經(jīng)網(wǎng)絡(luò)(前饋指的是沒有回路和環(huán)路)。
誤差逆?zhèn)鞑ニ惴?/h1>
誤差逆?zhèn)鞑ニ惴?/strong>(error BackPropagation,簡稱BP)是一種用于訓練多層神經(jīng)網(wǎng)絡(luò)的算法,多用于多層前饋神經(jīng)網(wǎng)絡(luò),所以有“BP網(wǎng)絡(luò)”,但是這個算法還可以用于其他神經(jīng)網(wǎng)絡(luò)。
對于給定的訓練集:
其中:
為樣本個數(shù),
為屬性個數(shù),
為輸出神經(jīng)元個數(shù)。假定
為隱層神經(jīng)元的個數(shù),
表示第
個輸出神經(jīng)元的閾值,
表示第
隱層神經(jīng)元的閾值,
表示輸入層和隱層之間的權(quán)重,
表示隱層和輸出層之間的權(quán)重。則隱層第
個神經(jīng)元接收的輸入為:
輸出層第個 神經(jīng)元接收的輸入為:
神經(jīng)網(wǎng)絡(luò)的輸出為:
則網(wǎng)絡(luò)在上的均方誤差為:
網(wǎng)絡(luò)中需要確定的參數(shù)數(shù)目為:,即兩層權(quán)重和兩層閾值,通過迭代學習算法,對參數(shù)進行更新估計,因此對于每一個參數(shù)有:
BP算法基于梯度下降策略,以為例進行計算。
通過和
偏導數(shù)構(gòu)建(
為學習率):
從輸入層到輸出層理解,可得:
其中:
所以得到:
類似可以計算其他參數(shù):
這個式子我的理解就是為均方誤差對輸入的變化,閾值對應(yīng)輸入的反向變化可以達到同樣結(jié)果。
輸入層和隱含層之間,隱含層和輸出層之間各種參數(shù)的計算思想相同,但是可以使用不同的為了調(diào)整學習速度。
BP算法的整體流程如下:
輸入:訓練集D,學習率
過程:
(0,1)范圍內(nèi)隨機初始化所有參數(shù)
repeat
for all D do
計算當前樣本輸出
計算輸出層神經(jīng)元梯度項gj
計算隱層神經(jīng)元梯度項eh
更新連接權(quán)和閾值
end for
until 達到條件
輸出:神經(jīng)網(wǎng)絡(luò)
上述這種針對單個樣本的均方誤差最小進行調(diào)整的方式,稱為標準BP算法,如果用累積誤差最小化的規(guī)則更新,就是累積誤差逆?zhèn)鞑ニ惴ǎɡ鄯eBP)。兩種方法都很常用,標準BP算法,參數(shù)更新頻繁,且更新效果存在“抵消”現(xiàn)象,往往進行多次迭代;累積BP算法讀取整個訓練集之后更新參數(shù),頻數(shù)低,但是累積誤差下降到一定程度后,進一步下降會十分緩慢,因此當D比較大的時候,標準算法更快。
已經(jīng)證明如果有足夠多的隱含層神經(jīng)元,多層前饋神經(jīng)網(wǎng)絡(luò)就能以任意精度逼近任意復雜度的連續(xù)函數(shù),然而沒有明確的準則設(shè)置數(shù)目,常用“試錯法”。
為了應(yīng)對BP網(wǎng)絡(luò)的過擬合,有以下兩中策略:
- 早停
當訓練集誤差降低但驗證集誤差升高的時候,停止訓練,返回最小驗證集誤差對應(yīng)的連接權(quán)和閾值 - 正則化
在目標函數(shù)中增加用于描述網(wǎng)絡(luò)復雜度的部分,利用來折中兩項(交叉驗證估計)
全局最小和局部極小
伸進網(wǎng)絡(luò)的訓練過程實際上就是尋找最優(yōu)的和
使得誤差
最小,存在兩種最優(yōu):對于
和
,若存在
使得對于:
都有,則
為局部極小解;若對于任意
都有
,則
為全局最小解。
全局最小解對應(yīng)的數(shù)值唯一,局部極小解可能有多個,全局一定局部,局部不一定全局。在尋找最優(yōu)參數(shù)的過程中,就是尋找全局最小解的過程,從一定的初始值,沿著一定的方向進行優(yōu)化,沿著下降的方向自然是最快的,例如上面提到的基于梯度下降的搜索方法,但是找到的最小值可能是局部最小而非全局最小,因此就需要一些跳出局部最小的方法(都是啟發(fā)式,沒有理論支持):
- 通過從多種初始化參數(shù)數(shù)值進行訓練,就會得到多個最小解,將所有最小解中的最小的作為結(jié)果,就有可能是全局最小
- 模擬退火技術(shù),以一定概率接受次優(yōu)解,便能夠跳出局部最小,通過概率隨事件變小,從而保證算法穩(wěn)定
- 隨機梯度下降,與標準梯度下降相比,在計算梯度中加入了隨機因素,從而在局部極小點計算的梯度可能仍不為零,從而有機會跳出
其他常見神經(jīng)網(wǎng)絡(luò)
- RBF網(wǎng)絡(luò)
- ART網(wǎng)絡(luò)
- SOM網(wǎng)絡(luò)
- 級聯(lián)相關(guān)網(wǎng)絡(luò)
- Elman網(wǎng)絡(luò)
- Boltzmann機
深度學習
復雜的模型參數(shù)數(shù)目多,功能強,但是訓練效率低下,而且容易過擬合,但是大數(shù)據(jù)以及,高計算的出現(xiàn),使這類復雜模型有了更好的利用。
深度學習在神經(jīng)網(wǎng)絡(luò)方面就可以理解為,通過添加多個隱層,然后通過每一層的分解處理,將低層特征逐漸轉(zhuǎn)化為高層特征,從而在輸出層可以使用“簡單模型”來完成復雜的學習任務(wù)。通過機器自己學習來產(chǎn)生好的特征就可以省去人類子集的設(shè)計,就更接近于“全自動數(shù)據(jù)分析”。
主要實現(xiàn)方式有:
- 無監(jiān)督逐層訓練
先將每一層的下層輸出作為輸入,本層的輸出作為上層的輸出,訓練本層的隱結(jié)點,稱為預訓練。預訓練完成后,對整個網(wǎng)絡(luò)進行微調(diào)。這種方法可以看做將大量參數(shù)進行分組,先找局部比較好的設(shè)置,再從整體上進行微調(diào)。例如:深度信念網(wǎng)絡(luò)(DNB) - 權(quán)共享
每組的神經(jīng)元都使用相同的權(quán),節(jié)省訓練開銷。例如:卷積神經(jīng)網(wǎng)絡(luò)(CNN)