MLP 多層神經網路 介紹

2022-03-29 12:44:04 字數 2703 閱讀 4571

接觸神經網路(ann)的時間很長了,以前也只是學了學原理,做過乙個bpn的練習,沒有系統的總結過,最近看torch的原始碼,對mlp有了更多的了解,寫寫自己學到的東西吧,算是做了一次總結!

(1) 高度的並行性

人工神經網路是由許多相同的簡單處理單元併聯組合而成,雖然每個單元的功能簡單,但大量簡單單元的並行活動,使其對資訊的處理能力與效果驚人。

(2) 高度的非線性全域性作用

神經網路系統是由大量簡單神經元構成的,每個神經元接受大量其他神經元的輸入,通過非線性輸入、輸出關係,產生輸出影響其它神經元。網路就是這樣互相制約相互影響,實現從輸入狀態空間到輸出狀態空間非線性對映的。網路的演化遵從全域性性作用原則,從輸入狀態演化到終態而輸出。從全域性觀點來看,網路整體效能不是網路區域性效能的簡單迭加,而表現某種集體性行為;而電腦遵從序列式局域性操作原則,每一步計算與上一步計算緊密相關,並對下一步產生影響,問題是通過演算法逐步進行處理的。

(3) 良好的容錯性與聯想記憶功能

人工神經網路通過自身的網路結構能夠實現對資訊的記憶,而所記憶的資訊是儲存在神經元之間的權值中。從單個權值中看不出所儲存的資訊內容,因而是分布式的儲存方式。這使得網路具有良好的容錯性,並能進行聚類分析、特徵提取、缺損模式復原等模式資訊處理工作。

十分強的自適應、自學習功能人工神經網路可以通過訓練和學習來獲得網路的權值與結構,呈現出很強的自學習能力和對環境的自適應能力。

在這裡我介紹一下反向傳播網路bpn---帶動量項的誤差反傳。反向傳播神經網路是對非線性可微分函式進行權值訓練的多層網路,是前向神經網路的一種。bp網路主要用於:

1)函式逼近與**分析:用輸入向量和相應的輸出向量訓練乙個網路,逼近乙個函式或**未知資訊;

2)模式識別:用乙個特定的輸出向量將它與輸入向量聯絡起來;

3)分類:把輸入向量以所定義的合適方式進行分類;

4)資料壓縮:減少輸出向量維數以便於傳輸與儲存。

比如,乙個三層bpn結構如下:

由輸入層、隱含層和輸出層三層組成。其中每一層的單元與與之相鄰層的所有單元連線,同一層的單元之間沒有連線。當一對學習樣本提供給網路後,神經元的啟用值從輸入層經各中間層向輸出層傳播,在輸出層的各神經元獲得網路的輸入響應。接下來,按照減少目標輸出與實際誤差的方向,從輸出層經過各中間層逐層修正各連線權值,最後回到輸入層。

linear----線**知器

tanh----雙曲正切函式

sigmoid----雙曲函式

softmax----1/(e(net) * e(wi*xi- shift))

log-softmax---- log(1/(e(net) * e(wi*xi)))

exp----指數函式

softplus----log(1+ e(wi*xi))

delta學習方法

增量梯度下降

1.網路的隱含節點個數選取問題至今仍是乙個 世界難題(google, elsevier, cnki);

2.停止閾值、學習率、動量常數需要採用」trial-and-error」法,極其耗時(動手實驗);

3.學習速度慢;

4.容易陷入區域性極值,學習不夠充分。

舉乙個例子,是用bpn實現下面的問題,程式語言使用的是c#。

[c-sharp]view plain

copy

static void main(string args)  

}  for (int i = 0; i < n_hidden; i++)  

}  //迭代進行訓練  

bool over = true;  

int itera_time = 0;//迭代次數  

while (over)  

o_hidden[j] = 1.0 / (1 + math.exp(-net));  

}  //計算輸出層單元的輸出  

for (int j = 0; j < n_out;j++ )  

o_out[j] = 1.0 / (1 + math.exp(-net));  

}  //計算輸出層單元的誤差項  

for (int j = 0; j < n_out;j++ )  

//計算隱含層單元的誤差項  

for (int j = 0;j < n_hidden;j++)  

}  delta_hidden[j] = o_hidden[j] * (1 - o_hidden[j]) * sum_weight;  

}  //更新每個網路單元的權值  

//更新輸出層的權值  

for (int j = 0;j < n_out;j++)  

}  //更新隱含層的權值  

for (int j = 0; j < n_hidden; j++)  

}  }  //訓練1000次結束迴圈  

itera_time++;  

if (itera_time == 1000)over = false;  

}  //輸出訓練後的權值  

console.writeline("輸出層權值:");  

for (int i = 0; i < n_out; i++)  

}  console.writeline("隱含層權值:");  

for (int i = 0; i < n_hidden; i++)  

}  }  

}  原文:

MLP 多層神經網路 介紹

接觸神經網路 ann 的時間很長了,以前也只是學了學原理,做過乙個bpn的練習,沒有系統的總結過,最近看torch的原始碼,對mlp有了更多的了解,寫寫自己學到的東西吧,算是做了一次總結!1 高度的並行性 人工神經網路是由許多相同的簡單處理單元併聯組合而成,雖然每個單元的功能簡單,但大量簡單單元的並...

MLP 多層神經網路 介紹

接觸神經網路 ann 的時間很長了,以前也只是學了學原理,做過乙個bpn的練習,沒有系統的總結過,最近看torch的原始碼,對mlp有了更多的了解,寫寫自己學到的東西吧,算是做了一次總結!1 高度的並行性 人工神經網路是由許多相同的簡單處理單元併聯組合而成,雖然每個單元的功能簡單,但大量簡單單元的並...

MLP 多層神經網路 介紹

接觸神經網路 ann 的時間很長了,以前也只是學了學原理,做過乙個bpn的練習,沒有系統的總結過,最近看torch的原始碼,對mlp有了更多的了解,寫寫自己學到的東西吧,算是做了一次總結!1 高度的並行性 人工神經網路是由許多相同的簡單處理單元併聯組合而成,雖然每個單元的功能簡單,但大量簡單單元的並...