機器學習之人工神經網絡


人工神經網絡由一系列神經元組成:

每個神經元都代表了一個特定的線性函數:

每個單元都會進行以下的計算過程:

ini = ΣWj,iaj
ai = g(ini)

通過調整每一個神經元的權值W,可以使得整個神經網絡非常好的擬合數據。

激活函數

每個神經元中都有一個激活函數,通常使用Sigmoid函數:

f(x) = 1/(1+e -x)

dy/dx = y(1-y)

因為它在定義域內光滑且連續,輸出十分平緩。

訓練過程

function ANN(examples) returns a neural network

    network = a network with random weights
    repeat do
    	for each example in examples do
    		FeedForward(network, example)
        	BackPropagation(network, example)
        error = CalError(network, examples)
    until error is small enough
    return network

可以看到訓練過程包括兩個主要步驟:

  1. 前向傳播(Feed Forward):將樣例輸入神經網絡中獲得每個神經元的輸出;
  2. 后向反饋(Back Propagation):根據每個神經元的輸出調整權值。

前向傳播

在前向傳播過程中,我們將輸入經過兩層神經元后獲得每一個神經元的輸出,每一層都執行以下計算:

ini = ΣWj,iaj
ai = g(ini)

function FeedForward(network, example) return a output vector
	
    for L = 2 to layer_num do
    	for each node i in layer L do:
		sum = weight_L_i × a_L-1 // dot product
        	a_L_i = g(sum)

后向反饋

在后向反饋中,我們根據輸出結果與正確結果相比較后,對各個神經元的權值進行修正。

function BackPropagation(network, example)

    for each node j in the output layer do
    	b_j = g'(a_j)*(rightanswer_j-a_j)
    
    for L = layer_num-1 to 1 do
    	for each node i in layer L do
        	b_i = g'(a_i)*(w × b_j)
            
    for each weight w_i,j in network do
    	w_i,j = w_i, j + alpha*ai*b_j // alpha 為學習率


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM