神經(jīng)網(wǎng)絡(luò)技術(shù)的核心:反向傳播算法(BP算法)
在前面的文章中介紹訓練一個模型,其主要區(qū)別就在于神經(jīng)網(wǎng)絡(luò)模型的架構(gòu);但可能很多人并不知道神經(jīng)網(wǎng)絡(luò)模型的核心算法就是——反向傳播算法,也被叫做BP算法。
可能很多人都聽說過反向傳播算法,但可能很多人都沒意識到反向傳播算法對神經(jīng)網(wǎng)絡(luò)的重要性;可以說現(xiàn)在的神經(jīng)網(wǎng)絡(luò)模型就建立在反向傳播算法之上,沒有反向傳播算法就沒有神經(jīng)網(wǎng)絡(luò)的存在。
反向傳播(BP)算法
了解過人工智能發(fā)展史的人應(yīng)該都知道,人工智能技術(shù)并不是最近才出現(xiàn)的新技術(shù);在世界上第一臺計算機出現(xiàn)之后的十年,人工智能的概念就已經(jīng)被提出來了,但人工智能技術(shù)的發(fā)展卻是最近幾年才爆火的。
但在爆火之前,人工智能技術(shù)已經(jīng)經(jīng)過了幾十年的發(fā)展;而且人工智能技術(shù)的發(fā)展也有幾個流派,也經(jīng)過了幾次大起大落。
特別是以仿生學為基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)模型,經(jīng)過幾次大起大落才走到了今天這個地步。
神經(jīng)網(wǎng)絡(luò)模型的提出是基于神經(jīng)元模型的提出,在1943年,心理學家McCulloch和數(shù)學家Pitts參考了生物神經(jīng)元的結(jié)構(gòu);發(fā)表了抽象的神經(jīng)元模型MP。而在1958年,計算科學家Rosenblatt提出了由單層神經(jīng)元組成的神經(jīng)網(wǎng)絡(luò)——感知機,也就是世界上第一個神經(jīng)網(wǎng)絡(luò)模型。
但受限于當時的技術(shù)與理論,感知機只能解決最簡單的線性分類任務(wù);對異或這種簡單的分類任務(wù)都無法解決,再加上受限于當時的計算能力,導(dǎo)致神經(jīng)網(wǎng)絡(luò)發(fā)展被擱置,這也使得神經(jīng)網(wǎng)絡(luò)模型的研究進入了一個冰河時期。
在1969年發(fā)現(xiàn)單層神經(jīng)網(wǎng)絡(luò)無法解決異或問題之后,又過了大概十年左右;由兩層神經(jīng)網(wǎng)絡(luò)構(gòu)成的多層感知機被提了出來;當神經(jīng)網(wǎng)絡(luò)增加一層之后,不但能夠解決異或問題,而且還擁有非常好的非線性分類效果。
但多層感知機存在的一個主要問題還是計算問題,在多層感知機提出來時并沒有一個很好的解決方案;直到1986年,Rumelhar和Hinton等人提出了反向傳播算法(Backpropagation,BP算法);才解決了兩層神經(jīng)網(wǎng)絡(luò)所需要的復(fù)雜計算量問題。
而反向傳播算法的啟示是數(shù)學中的鏈式反則。
在此需要說明的是,盡管早期神經(jīng)網(wǎng)絡(luò)的研究人員努力從生物學中得到啟發(fā),但從BP算法開始,研究者們更多地從數(shù)學上尋求問題的最優(yōu)解。不再盲目模擬人腦網(wǎng)絡(luò)是神經(jīng)網(wǎng)絡(luò)研究走向成熟的標志。正如科學家們可以從鳥類的飛行中得到啟發(fā),但沒有必要一定要完全模擬鳥類的飛行方式,也能制造可以飛天的飛機。
而后神經(jīng)網(wǎng)絡(luò)模型的發(fā)展又經(jīng)過幾次摧殘,比如支持向量機的產(chǎn)生(SVM);盡管使用了BP算法,一次神經(jīng)網(wǎng)絡(luò)的訓練仍然耗時太久,而且困擾訓練優(yōu)化的一個問題就是局部最優(yōu)解問題,這使得神經(jīng)網(wǎng)絡(luò)的優(yōu)化較為困難。同時,隱藏層的節(jié)點數(shù)需要調(diào)參,這使得使用不太方便,工程和研究人員對此多有抱怨。
多層神經(jīng)網(wǎng)絡(luò)——深度學習
2006年,Hinton在《Science》和相關(guān)期刊上發(fā)表了論文,首次提出了“深度信念網(wǎng)絡(luò)”的概念。與傳統(tǒng)的訓練方式不同,“深度信念網(wǎng)絡(luò)”有一個“預(yù)訓練”(pre-training)的過程,這可以方便的讓神經(jīng)網(wǎng)絡(luò)中的權(quán)值找到一個接近最優(yōu)解的值,之后再使用“微調(diào)”(fine-tuning)技術(shù)來對整個網(wǎng)絡(luò)進行優(yōu)化訓練。這兩個技術(shù)的運用大幅度減少了訓練多層神經(jīng)網(wǎng)絡(luò)的時間。他給多層神經(jīng)網(wǎng)絡(luò)相關(guān)的學習方法賦予了一個新名詞--“深度學習”。
由此,深度學習技術(shù)發(fā)展進入快車道,快速應(yīng)用于圖像處理,自然語言處理等領(lǐng)域;而后到谷歌工程師提出了Transformer架構(gòu),以及openAI基于Transformer架構(gòu)開發(fā)了chatGPT聊天機器人神經(jīng)網(wǎng)絡(luò)模型。
在人腦的神經(jīng)網(wǎng)絡(luò)中,不同神經(jīng)元之間的信號是實時傳遞和變化的;因此,反向傳播算法就是計算不同神經(jīng)網(wǎng)絡(luò)層神經(jīng)元的信號值;因此,也就解決了神經(jīng)網(wǎng)絡(luò)最核心的問題。