5.3 前向傳播和反向傳播
前面講了多層感知機(jī)和相關(guān)代碼實(shí)現(xiàn),也給出了關(guān)于隱藏層的數(shù)學(xué)表示。這一節(jié)我們著重看一下,隱藏在深度學(xué)習(xí)框架之下的模型參數(shù)究竟起到了什么作用。
5.3.1?什么是前向傳播
前向傳播(Forward Propagation)是指在一個(gè)神經(jīng)網(wǎng)絡(luò)中,從輸入層到輸出層的信息傳遞過(guò)程。具體來(lái)說(shuō)就是,將上一層的輸出作為下一層的輸入,并計(jì)算下一層的輸出,一直到運(yùn)算到輸出層為止。

5.3.2?什么是反向傳播
反向傳播 (Back Propagation) 本質(zhì)上指的是計(jì)算神經(jīng)?絡(luò)每一層參數(shù)梯度的?法。利用鏈?zhǔn)椒▌t逐層求出損失函數(shù)對(duì)各個(gè)神經(jīng)元權(quán)重和偏置的偏導(dǎo)數(shù),構(gòu)成損失函數(shù)對(duì)權(quán)值和偏置向量的梯度,作為修改權(quán)值的依據(jù)。


在反向傳播的過(guò)程中,我們需要從輸出層開(kāi)始,逐層往輸入層計(jì)算梯度。也就是說(shuō)從最后一層開(kāi)始,逐層往第一層計(jì)算梯度。
反向傳播算法的梯度計(jì)算公式是基于鏈?zhǔn)椒▌t來(lái)推導(dǎo)的,是對(duì)神經(jīng)網(wǎng)絡(luò)各層間關(guān)系的數(shù)學(xué)描述。在進(jìn)行梯度計(jì)算時(shí),我們可以使用反向傳播算法的梯度計(jì)算公式來(lái)逐層計(jì)算神經(jīng)網(wǎng)絡(luò)中各層的梯度。然后,就可以使用梯度下降法或其他優(yōu)化算法來(lái)更新神經(jīng)網(wǎng)絡(luò)的參數(shù),使得神經(jīng)網(wǎng)絡(luò)的性能逐步達(dá)到最優(yōu)。
同學(xué)們?nèi)绻吹竭@堆公式直接頭暈了也不要擔(dān)心,在反向傳播算法的過(guò)程中,可以使用深度學(xué)習(xí)框架的自動(dòng)微分工具來(lái)計(jì)算梯度,這樣可以大大減少手動(dòng)推導(dǎo)梯度的工作量。
5.3.3?簡(jiǎn)單實(shí)例
前面的公式推導(dǎo)可能讓不少同學(xué)看暈了,別著急,看一個(gè)具體的例子就會(huì)明白,所謂的公式只是一種嚴(yán)謹(jǐn)表達(dá),其背后的含義可能并不難理解。
假定一個(gè)最簡(jiǎn)單的網(wǎng)絡(luò),包含兩個(gè)隱層,每層只有一個(gè)神經(jīng)元,其結(jié)構(gòu)如下圖所示。


至此,隱藏層權(quán)重和偏置項(xiàng)的梯度就都計(jì)算出來(lái)了。希望同學(xué)們通過(guò)這個(gè)簡(jiǎn)單例子了解前向傳播和反向傳播的含義,其實(shí)并沒(méi)有想象中那么可怕。
梗直哥提示:如果你想了解更多關(guān)于深度學(xué)習(xí)的內(nèi)容,歡迎入群學(xué)習(xí)(加V: gengzhige99)
同步更新
Github:?https://github.com/gengzhige
