最近看了李宏毅老師的深度學(xué)習(xí)視頻課程,真的是講得十分細(xì)致,從頭到尾看下來一遍,對深度學(xué)習(xí)模型有了一個(gè)基本的認(rèn)識,趁著腦子還能記著一些東西,趕緊把學(xué)到的東西記錄下來,以備后用。
視頻地址:https://www.bilibili.com/video/av9770302/from=search&seid=905421046757750252
ppt地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html
下面開始正題吧!
1、計(jì)算圖(Computational Graph)
計(jì)算圖是用來描述一個(gè)函數(shù)的語言,有兩種基本的要素:
Node:變量,Edge:邊
如下圖所示:


根據(jù)計(jì)算圖和鏈?zhǔn)椒▌t,我們可以很直觀計(jì)算偏導(dǎo)數(shù):

在計(jì)算圖上,有可能出現(xiàn)變量共享的情況,比如x^2,此時(shí)要把兩個(gè)x拆開,當(dāng)成不同的x對待,如下面的例子:

2、計(jì)算圖在前向神經(jīng)網(wǎng)絡(luò)中的應(yīng)用
我們首先回顧下反向傳播方法:

上圖中的倒三角表示梯度的意思。

將前饋神經(jīng)網(wǎng)絡(luò)寫成計(jì)算圖的形式,大概如下圖所示:


這里涉及到了向量之間的偏導(dǎo)數(shù)計(jì)算,使用如下的雅可比矩陣:

根據(jù)雅可比矩陣的定義,我們可以隊(duì)上面需要計(jì)算的項(xiàng)進(jìn)行逐項(xiàng)分解計(jì)算:






3、計(jì)算圖在循環(huán)神經(jīng)網(wǎng)絡(luò)中的應(yīng)用
我們先來回顧一下循環(huán)神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu):

畫出循環(huán)神經(jīng)網(wǎng)絡(luò)的計(jì)算圖如下圖所示:

假設(shè)我們的序列長度為三,三層的計(jì)算圖如下圖所示:

使用梯度下降來訓(xùn)練我們的循環(huán)神經(jīng)網(wǎng)絡(luò),我們可以使用計(jì)算圖:

可以得到如下的計(jì)算結(jié)果,可以看到,使用計(jì)算圖計(jì)算循環(huán)神經(jīng)網(wǎng)絡(luò)的梯度是不是十分的方便,而且也十分容易理解循環(huán)神經(jīng)網(wǎng)絡(luò)中經(jīng)常出現(xiàn)的梯度爆炸或梯度消失的問題。
注意下圖中的梯度計(jì)算是分三部分的,圖中只顯示了第一部分。
