神經(jīng)網(wǎng)絡(luò)可以看作是一個(gè)大的變分優(yōu)化器:
? 給定 y=f(x1, x2..., w),求w使L(y, x..)最小
x是輸入蜕劝,y輸出檀头,w是網(wǎng)絡(luò)參數(shù),L是損失函數(shù)岖沛。
而任一函數(shù)y=f(x1, x2...)暑始,他的實(shí)際計(jì)算過(guò)程一般而言是分步驟的,例如:
? ? h1=h1(x1,x2),
? ? h2=h2(x3,x4),
? ? h3=h3(h1,x2..),...
? ? y=f(h2,h3,x5...)
也就是說(shuō)該函數(shù)存在若干中間變量婴削。
這種計(jì)算步驟可以畫(huà)成計(jì)算圖廊镜。
本文想說(shuō)的是,對(duì)于一個(gè)待訓(xùn)練的{X,Y}數(shù)據(jù)集唉俗,如果我們能通過(guò)一些方法發(fā)現(xiàn)最終函數(shù)f的計(jì)算圖關(guān)系和中間變量嗤朴,則我們的神經(jīng)網(wǎng)絡(luò)搭建和訓(xùn)練就會(huì)大大的簡(jiǎn)化。
那么問(wèn)題來(lái)了虫溜,如何通過(guò)數(shù)據(jù)集去發(fā)現(xiàn)計(jì)算圖呢雹姊?該問(wèn)題暫按下不表。下面舉一個(gè)實(shí)際計(jì)算圖的例子衡楞,詳情參考這里吱雏,下面簡(jiǎn)要說(shuō)明:
該例子是傳統(tǒng)rnn的升級(jí)版。傳統(tǒng)的rnn是一個(gè)函數(shù):S1=f(x1,S0)瘾境,Si就是時(shí)序數(shù)據(jù)在i時(shí)刻的總結(jié)歧杏,我們要求的函數(shù)是根據(jù)上一刻的總結(jié)和這一刻的輸入,求出這一刻的總結(jié)(需要注意的是迷守,若希望很遠(yuǎn)的過(guò)去的x0對(duì)現(xiàn)在的Si也有關(guān)的話犬绒,需要加一些約束,也就是lstm之類(lèi)的)兑凿。
rnn的升級(jí)版on-lstm凯力,是把已有的rnn計(jì)算圖做了升級(jí),加了一個(gè)中間變量r如下:
? r1=r(S0, x1)
表示S1的改寫(xiě)級(jí)別礼华,比如S是1*10的張量沮协,r1=3的意思就是本次的S1只改寫(xiě)前3個(gè)數(shù),后面7個(gè)數(shù)不變跟S0一樣卓嫂。
加了這個(gè)以后慷暂,訓(xùn)練出來(lái)的結(jié)果更好了,因?yàn)檫@個(gè)結(jié)構(gòu)是lstm的一個(gè)子集晨雳,且最優(yōu)結(jié)果函數(shù)依然在該子集內(nèi)行瑞。
這個(gè)思想和這一篇文章一樣,當(dāng)計(jì)算圖足夠清晰了餐禁,最優(yōu)解依然在子集內(nèi)的時(shí)候血久,優(yōu)化參數(shù)w的求解就十分容易了!
本例增加了一個(gè)中間變量r帮非,就使得相同訓(xùn)練集下的結(jié)果更優(yōu)就是實(shí)證氧吐。
所以回到我們的問(wèn)題讹蘑,如何發(fā)現(xiàn)目標(biāo)函數(shù)的計(jì)算圖以及中間變量,且保證最優(yōu)函數(shù)依然在子集內(nèi)呢筑舅?
This is a question座慰!