如果說“感知機”是單個的神經元,那么“多層感知機”就是將分散的神經元,連接成了網絡。
在輸入層和輸出層之間,再加入若干層,每層若干個神經元。
然后每一層的每個神經元,與下一層的每個神經元,都通過權重參數建立起連接……
層與層之間,完全連接。
也就是說,第i層的任意一個神經元,一定與第i+1層的任意一個神經元相連。
這就是多層感知機,簡稱MLP。
但僅僅簡單組合在一起,還不算真正的“人工神經網絡”,必須對“感知機”的基本結構,做出一定的改進。
首先,必須加入隱藏層,以增強模型的表達能力。
隱藏層可以有多層,層數越多,表達能力越強,但與此同時,也會增加模型的復雜度,導致計算量急遽增長。
其次,輸出層的神經元允許擁有多個輸出。
這樣模型就可以靈活地應用于各種分類回歸,以及其他的機器學習領域,比如降維、聚類等。
此外,還要對激活函數做出擴展……
前一篇“感知機”論文中,主要使用的是階躍函數sign,雖然簡單易用,但是處理能力有限。
因此神經網絡的激活函數,一般使用其他的非線性函數。
備選的函數有很多:sigmoid函數,tanh函數,ReLU函數……
江寒逐一進行了分析。
通過使用多種性能各異的激活函數,可以進一步增強神經網絡的表達能力。
對于二分類問題,只需要一個輸出神經元就夠了。
使用sigmoid作為激活函數,來輸出一個0到1之間的數值,用來表示結果為1的概率。
對于多類分類問題,一般在輸出層中,安排多個神經元,每個分類一個。
然后用softmax函數來預測每個分類的概率……
描述完結構之后,就可以討論一下“多層感知機”的訓練了。
首先是MLP的訓練中,經典的前向傳播算法。
顧名思義,前向傳播就是從輸入層開始,逐層計算加權和,直到算出輸出值。
每調整一次參數值,就需要重頭到尾重新計算一次。
這樣運算量是非常大的,如果沒有強大的硬件基礎,根本無法支撐這種強度的訓練。
好在現在已經是2012年,計算機性能已經足夠強悍。
前向傳播無疑是符合直覺的,缺陷就是運算量很大,訓練起來效率比較差。
與“感知機”的訓練相比,MLP的訓練需要引入損失函數和梯度的概念。
神經網絡的訓練,本質上是損失函數最小化的過程。
損失函數有許多種選擇,經典的方法有均方誤差、交叉熵誤差等,各有特性和利弊。
整個訓練過程是很清晰的。
先隨機初始化各層的權重和偏置,再以損失函數為指針,通過數值微分求偏導的辦法,來計算各個參數的梯度。
然后沿著梯度方向,以預設的學習率,逐步調整權重和偏置,就能求得最優化的模型……
寫完這些就足夠了,再多的內容,可以安排在下一篇文章里。
不過,江寒想了想,覺得這篇論文的內容,還是有點過于充實。
仔細琢磨了一下,干脆將其一分為二。
多層感知機的結構和前向傳播的概述部分,單獨成篇。
神經網絡訓練中,關于激活函數和損失函數討論的部分,再來一篇。
然后分開投稿,這樣不就可以多拿1個學術點了?
反正學術點又不看字數……
當然,這兩篇論文都必須以前一篇的感知機為基礎,分別進行闡述,而不能互為前提、互相引用。
這樣就需要多動點腦筋了。
江寒又花了一個多小時,才將它們全都補充完整,并豐滿起來。
接下來校隊、潤色一番后,翻譯成英文,轉換PDF……
投稿的時候,江寒仔細琢磨了一下,在三區里選了兩家方向對口的期刊,投了出去。
沒有選擇影響因子更大的二區或一區期刊。
因為二區以上的期刊,雖然影響因子更高,發表后收獲的學術點也多。
但發表難度太大,萬一被打回來,再重新投遞……
時間耽擱不起。
要知道,江寒只有三個月的時間。
一系列操作下來,差不多就到了10點半。