乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Deep Learning(深度學(xué)習(xí))之(五)神經(jīng)網(wǎng)絡(luò)訓(xùn)練中的高效BP(反向傳播算法)

       imelee 2017-01-12

       人工神經(jīng)網(wǎng)絡(luò)的能力大家都是有目共睹的,在機(jī)器學(xué)習(xí)領(lǐng)域可是占據(jù)了一定的地位。這點(diǎn)應(yīng)該毋庸置疑。它可以建模任意復(fù)雜的函數(shù)。雖然能力大了有時(shí)候也不是好事,因?yàn)槿菀走^(guò)擬合。但能力小了,就沒(méi)辦法建模復(fù)雜的函數(shù),也就是給你數(shù)據(jù),你也消化不了。關(guān)于神經(jīng)網(wǎng)絡(luò)的介紹,這里就不說(shuō)了,發(fā)展了那么久,介紹神經(jīng)網(wǎng)絡(luò)的書(shū)籍或者資料太多了。還記得我們要干嘛嗎?我們想要知道訓(xùn)練神經(jīng)網(wǎng)絡(luò)的Tricks!眾所周知(如果你不知道,就先不要往下看了),訓(xùn)練神經(jīng)網(wǎng)絡(luò)的方法就是經(jīng)典的BP算法!理解BP算法的工作原理很重要,因?yàn)樵趯?shí)踐過(guò)程中,你遇到的一些現(xiàn)象是可以通過(guò)分析BP算法的收斂性獲得的。同時(shí),BP算法也存在弱點(diǎn)和一些不好的特性,如何能對(duì)這些不好的特性退而避之對(duì)模型的成功就非常重要。

       

      一、介紹

             BP算法是訓(xùn)練神經(jīng)網(wǎng)絡(luò)的一個(gè)非常流行的算法,因?yàn)樗粌H概念上簡(jiǎn)單,而且實(shí)現(xiàn)也簡(jiǎn)單,當(dāng)然了,它也是有效的。不過(guò),對(duì)它的使用,更像一種藝術(shù),而不僅是科學(xué)。設(shè)計(jì)或者使用BP算法訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò)看似簡(jiǎn)單,同時(shí)做了很多看似簡(jiǎn)單的選擇,例如神經(jīng)元節(jié)點(diǎn)的類(lèi)型、數(shù)量、層數(shù)、學(xué)習(xí)率、訓(xùn)練和測(cè)試集等等。實(shí)際上,對(duì)他們的選擇非常關(guān)鍵!不過(guò),也很遺憾的告訴你,現(xiàn)實(shí)中并不存在關(guān)于如何選擇他們的有力指南。因?yàn)檫@是一個(gè)非常大的問(wèn)題,而且和具體的任務(wù)和數(shù)據(jù)有關(guān)。不過(guò),也很高興的告訴你,實(shí)際上,還是存在很多啟發(fā)式和潛在的理論可以指導(dǎo)實(shí)踐者對(duì)他們做出更好的選擇的。下面我們先介紹下有關(guān)的基礎(chǔ),再對(duì)其中的Tricks娓娓道來(lái)。

       

      二、學(xué)習(xí)和泛化

             機(jī)器學(xué)習(xí)的方法非常多,但大多數(shù)成功的方法都可以將其統(tǒng)一為基于梯度的學(xué)習(xí)方法。學(xué)習(xí)框架如下圖所示。我們的模型實(shí)際上就是學(xué)習(xí)一個(gè)從輸入到輸出的函數(shù),這里表示為M(Zp, W),其中輸入就是Zp,表示第p個(gè)輸入樣本。W就是模型可以學(xué)習(xí)的參數(shù)。在神經(jīng)網(wǎng)絡(luò)里面就是兩層之間的連接權(quán)重了。那通過(guò)什么原則來(lái)調(diào)整模型或者學(xué)習(xí)參數(shù)W呢?我們是希望模型能學(xué)習(xí)我們的訓(xùn)練數(shù)據(jù),也就是擬合我們的訓(xùn)練數(shù)據(jù),所以我們就需要一個(gè)衡量這種擬合度的度量。也就是代價(jià)函數(shù)了,這里表示為Ep=C(Dp, M(Zp, W)),它度量的就是當(dāng)?shù)趐的樣本輸入網(wǎng)絡(luò)的時(shí)候,網(wǎng)絡(luò)的輸出M(Zp, W)和我們期待的“正確”輸出Dp(也就是我們平時(shí)說(shuō)的訓(xùn)練樣本的標(biāo)簽了)的差異。假設(shè)我們的訓(xùn)練集包含P個(gè)樣本{(Z1, D1),…, (ZP, DP)},我們?cè)谟?xùn)練集中的代價(jià)函數(shù)就是在整個(gè)樣本集中取平均。

             機(jī)器學(xué)習(xí)的問(wèn)題總的來(lái)說(shuō),就是調(diào)整模型參數(shù)W使得代價(jià)函數(shù)或者模型擬合數(shù)據(jù)的誤差最小。實(shí)際上,大家是不太關(guān)心模型在訓(xùn)練集上的誤差的,更關(guān)心的是模型在這個(gè)任務(wù)上的誤差,因?yàn)檫@個(gè)模型是要在實(shí)際中使用的,換句話說(shuō),我們訓(xùn)練好的模型是為了以后能正確地預(yù)測(cè)新的樣本。這個(gè)性能通過(guò)一個(gè)和訓(xùn)練集不重疊的測(cè)試集來(lái)估計(jì)。最常用的代價(jià)函數(shù)就是均方函數(shù)了:

             那如何才能調(diào)整模型的參數(shù)W讓這個(gè)代價(jià)函數(shù)最小呢?這就是這一章我們要討論的。這里面涉及到一些策略,不過(guò),這些策略必須結(jié)合最大化網(wǎng)絡(luò)的泛化能力一起使用,這樣才可以讓學(xué)習(xí)的模型能更好的預(yù)測(cè)未知的樣本。

             為了更好的理解泛化,我們來(lái)分析下BP的工作原理。實(shí)際上,對(duì)訓(xùn)練樣本的采集是有噪聲的,所以例如你采集了很多個(gè)集合的樣本,可以認(rèn)為因?yàn)樵诓煌牟蓸狱c(diǎn)進(jìn)行采樣,所以不同集合的樣本存在噪聲,從而導(dǎo)致差別。因此,每個(gè)集合在用以訓(xùn)練網(wǎng)絡(luò)時(shí),都會(huì)讓網(wǎng)絡(luò)傾向于自己,從而學(xué)的網(wǎng)絡(luò)和其他集合的不太一樣。

             存在很多分析在訓(xùn)練集上的最小化誤差的理論,叫經(jīng)驗(yàn)風(fēng)險(xiǎn)最小化。這里面有一些理論將泛化誤差分解為兩部分:bias and variance,偏置和方差。偏置衡量的是網(wǎng)絡(luò)的輸出與目標(biāo)輸出的差別,是在所有樣本中的誤差平均。方差衡量的是網(wǎng)絡(luò)的輸出在不同的數(shù)據(jù)中有多大的不同。在網(wǎng)絡(luò)訓(xùn)練開(kāi)始的時(shí)候,偏置很大,因?yàn)榫W(wǎng)絡(luò)還沒(méi)學(xué)習(xí),網(wǎng)絡(luò)的輸出和目標(biāo)的輸出一般差別很大。但方差很小,因?yàn)閿?shù)據(jù)對(duì)網(wǎng)絡(luò)的影響還很小。隨著訓(xùn)練的進(jìn)行,偏置會(huì)慢慢變小,因?yàn)榫W(wǎng)絡(luò)慢慢的開(kāi)始學(xué)習(xí)到了潛在的函數(shù),也就是開(kāi)始擬合數(shù)據(jù)了。然而,如果訓(xùn)練的太久,那么網(wǎng)絡(luò)也會(huì)學(xué)習(xí)到特定數(shù)據(jù)庫(kù)的噪聲,這就訓(xùn)練過(guò)度了。這時(shí)候,方差就會(huì)變得很大,因?yàn)椴煌臄?shù)據(jù)庫(kù)中存在不同的噪聲。然而,當(dāng)偏置和方差的和最小的時(shí)候,就是全部誤差最小的時(shí)候。

             目前存在很多技術(shù)來(lái)獲得最小化網(wǎng)絡(luò)的泛化能力,例如常用的early stopping(提前停止訓(xùn)練)、規(guī)則化等。

             本章主要是介紹一些在給定代價(jià)函數(shù)的時(shí)候,如何是執(zhí)行最小化的策略,同時(shí)如何保證最小化或者訓(xùn)練的質(zhì)量和速度。不過(guò),值得一提的是,模型、架構(gòu)和代價(jià)函數(shù)的選擇對(duì)獲取一個(gè)泛化性能好的網(wǎng)絡(luò)都是非常關(guān)鍵的。所以,記得,如果你選錯(cuò)了模型,而且沒(méi)有使用合適的模型選擇策略,那就是一個(gè)異常牛逼的最小化策略也無(wú)力回天。實(shí)際上,過(guò)訓(xùn)練的存在都讓很多學(xué)者認(rèn)為不那么精確的最小化算法還可能獲得更好的效果。

       

      三、標(biāo)準(zhǔn)BP

             本文中的tricks和分析都是在多層前向神經(jīng)網(wǎng)絡(luò)的背景下分析的,不過(guò),大部分這些Tricks都可以應(yīng)用到其他的基于梯度的學(xué)習(xí)算法中。

             基于梯度學(xué)習(xí)的多層網(wǎng)絡(luò)最簡(jiǎn)單的形式就是迭代一個(gè)模塊了,每個(gè)模塊就是模型的一層了。這個(gè)模塊可以表示為下面的函數(shù):Xn=Fn(Wn, Xn-1)。這就是神經(jīng)網(wǎng)絡(luò)中著名的前向傳播過(guò)程。向量Xn-1輸入到這個(gè)模塊Fn中,然后輸出向量Xn。這個(gè)模型可以表示了一個(gè)可調(diào)參數(shù)的向量Wn。堆疊多個(gè),然后這個(gè)層的輸出是下一層的輸入就行了。第一層的輸入是X0,就是我們的輸入數(shù)據(jù)Zp。

             如果網(wǎng)絡(luò)的誤差Ep對(duì)Xn的導(dǎo)數(shù)是可以知道的,那么Ep對(duì)Wn和Xn-1的導(dǎo)數(shù)就可以通過(guò)反向傳播得到:

             式中,?F(Wn,Xn-1)/?W是F關(guān)于W在點(diǎn)(Wn, Xn-1)上的Jacobian雅可比行列式。一個(gè)矢量函數(shù)的Jacobian是一個(gè)矩陣,矩陣元素是所有的輸出關(guān)于所有的輸入的空間導(dǎo)數(shù)。如果上面的公式從第N層逆序應(yīng)用到第一層,那么代價(jià)函數(shù)對(duì)網(wǎng)絡(luò)所有的參數(shù)的導(dǎo)數(shù)都可以得到了。這種計(jì)算梯度的方式就是BP。

             傳統(tǒng)的多層神經(jīng)網(wǎng)絡(luò)是上面這個(gè)系統(tǒng)的一個(gè)特別例子,這里每個(gè)模塊是交替的矩陣乘法(參數(shù))和逐元素sigmoid函數(shù)(神經(jīng)元):

             Wn是一個(gè)矩陣,列的數(shù)目和Xn-1的維度一致,行數(shù)和Xn的維度一致。F是一個(gè)矢量函數(shù),對(duì)輸入的每個(gè)元素計(jì)算sigmoid函數(shù)。Yn是一個(gè)向量,每個(gè)元素是第n層所有輸入的加權(quán)和。

      對(duì)上面的式子應(yīng)用鏈?zhǔn)椒▌t,經(jīng)典的BP算法就得到了:

             上式可以寫(xiě)成矩陣的形式:

             最簡(jiǎn)單的最小化過(guò)程就是梯度下降了,對(duì)W進(jìn)行迭代的調(diào)整:

             其中,η是學(xué)習(xí)率,最簡(jiǎn)單的情況就是設(shè)置為一個(gè)標(biāo)量常數(shù)值。更多精細(xì)的方法是使用變量,隨著迭代的進(jìn)行發(fā)生改變。還有方法,它是一個(gè)對(duì)角陣,或者是代價(jià)函數(shù)的逆Hessian矩陣的一個(gè)估計(jì)。也就是二階導(dǎo)。例如Newton 和 Quasi-Newton方法。對(duì)學(xué)習(xí)率的選擇實(shí)際上也是很重要的,文中后面會(huì)提到。

       

      四、一些實(shí)踐Tricks

             真正的干貨終于要登場(chǎng)了。上面說(shuō)到,BP是一階梯度方法,所以BP是很慢的。特別是在多層網(wǎng)絡(luò)的時(shí)候,代價(jià)函數(shù)曲面一般是非二次、非凸和高維的,因此有非常多的局部最小值和(或者)平flat的區(qū)域。所以BP算法無(wú)法保證:1)網(wǎng)絡(luò)會(huì)收斂到一個(gè)好的解;2)收斂是迅速的;3)收斂總會(huì)出現(xiàn)。然而,本節(jié)中我們會(huì)討論一系列的tricks,這些tricks一般可以非常有效的增加上述這些情況出現(xiàn)的機(jī)會(huì),也就是在可以數(shù)量級(jí)的降低收斂時(shí)間的基礎(chǔ)上找到一個(gè)不錯(cuò)的解。注意是數(shù)量級(jí)哦。是不是很期待呢。

      1)Stochastic Learning vs Batch Learning

             因?yàn)槲覀兊拇鷥r(jià)函數(shù)是在整個(gè)訓(xùn)練集上取平均,所以在對(duì)權(quán)重的每次迭代更新中,都需要對(duì)數(shù)據(jù)庫(kù)中所有的樣本過(guò)一遍,然后求解平均或者真實(shí)的梯度。這種方式叫batch學(xué)習(xí),因?yàn)槊看蔚膮?shù)更新需要考慮了完整的batch數(shù)據(jù)。相對(duì)的,我們可以使用隨機(jī)或者在線stochastic (online)學(xué)習(xí)的方式,也就是每次從訓(xùn)練集中選擇(例如,隨機(jī)的)一個(gè)樣本{Zt, Dt}來(lái)計(jì)算梯度。這時(shí)候,梯度的估計(jì)只通過(guò)這一個(gè)樣本進(jìn)行估計(jì)獲得,這時(shí)候t時(shí)刻對(duì)模型參數(shù)的更新為:

             因?yàn)檫@個(gè)對(duì)梯度的估計(jì)是有噪聲的,所以在每次的迭代中,參數(shù)可能不是很精確的沿著梯度下降的方式走。但是,我們將會(huì)看到,這種每次迭代引入的“噪聲”實(shí)際上是有利的。隨機(jī)學(xué)習(xí)因?yàn)橄旅嫒齻€(gè)原因而備受青睞:

      A、 隨機(jī)學(xué)習(xí)一般比batch學(xué)習(xí)收斂更快;

      B、 隨機(jī)學(xué)習(xí)一般會(huì)得到更好的解;

      C、 隨機(jī)學(xué)習(xí)對(duì)跟蹤網(wǎng)絡(luò)的變化很有用。

             首先,我們來(lái)分析下第一點(diǎn)。隨機(jī)學(xué)習(xí)在大部分情況下會(huì)比batch學(xué)習(xí)要快,特別是在大規(guī)模的冗余數(shù)據(jù)庫(kù)中。原因很簡(jiǎn)單。假設(shè)我們有這樣一個(gè)數(shù)據(jù)庫(kù),它有1000的樣本,但由于我們不小心,這1000個(gè)樣本是把100個(gè)樣本復(fù)制了10份得到的。所以,對(duì)這全部1000個(gè)樣本進(jìn)行梯度平均,和對(duì)這100個(gè)樣本進(jìn)行梯度平均的結(jié)果是一模一樣的。因此,batch梯度下降就很浪費(fèi)了,因?yàn)閷?duì)一次參數(shù)更新它重復(fù)計(jì)算了10次。做了很多無(wú)用功。而隨機(jī)梯度只是相對(duì)于一個(gè)100樣本(假設(shè)batch包括100個(gè)樣本)的訓(xùn)練集迭代了10次。實(shí)際上,在數(shù)據(jù)庫(kù)中,一個(gè)樣本很少出現(xiàn)兩次,但數(shù)據(jù)庫(kù)里面還是存在很多很相似的樣本的。例如在音素分類(lèi)中,所有包含音素/?/的模式基本上都包含了相似的信息,所以這種冗余就使得batch學(xué)習(xí)要比在線學(xué)習(xí)慢得多。

             第二點(diǎn),隨機(jī)學(xué)習(xí)可以得到更好的解是因?yàn)樗o我們的梯度更新帶來(lái)了噪聲。有利的噪聲可以美其名叫擾動(dòng)。非線性網(wǎng)絡(luò)一般具有很多不同深度的局部極小值。訓(xùn)練的目標(biāo)是找到其中一個(gè)極小值。Batch學(xué)習(xí)發(fā)現(xiàn)的極小值是依據(jù)參數(shù)初始化在代價(jià)函數(shù)表面的某個(gè)坑上面,所以如果參數(shù)一旦初始化了,因?yàn)樘荻认陆刀际峭偷牡胤阶?,所以最后的歸宿一般就確定了,它一定是掉到這個(gè)坑里面。如果人生過(guò)得循規(guī)蹈矩,不信命不行。不過(guò)在隨機(jī)學(xué)習(xí)中,由于噪聲的存在,有時(shí)候會(huì)使參數(shù)跳到另一個(gè)坑中,從而有可能找到更深的局部極小值。更深的局部極小值意味著更小的代價(jià)函數(shù)值,也就是更擬合數(shù)據(jù)的模型。所以人生多姿多彩,還是有不同的收獲的。

             隨機(jī)學(xué)習(xí)還有一個(gè)很有用的場(chǎng)景,就是我們要建模的函數(shù)在時(shí)間上是變化。一個(gè)非常常見(jiàn)的場(chǎng)景是在工業(yè)應(yīng)用領(lǐng)域。這里數(shù)據(jù)的分布隨著時(shí)間會(huì)變化(例如,由于機(jī)器的磨損)。如果我們的模型不能檢測(cè)和適應(yīng)這個(gè)變化,他們它就無(wú)法學(xué)習(xí)數(shù)據(jù),從而導(dǎo)致非常大的泛化誤差。時(shí)代在發(fā)展,思想得改革。對(duì)batch,由于我們需要在少數(shù)的rules中進(jìn)行平均,所以這種變化很難被檢測(cè),從而獲得不好的結(jié)果。但在線學(xué)習(xí),如果操作得當(dāng),可以跟蹤這個(gè)變化,從而得到更近似的結(jié)果。

             盡管隨機(jī)學(xué)習(xí)是有上述這些討人喜歡的地方,但batch學(xué)習(xí)也并非一無(wú)是處,還是存在一些理由讓我們考慮batch學(xué)習(xí)的。Batch學(xué)習(xí)的優(yōu)點(diǎn):

      A、 收斂條件易于理解;

      B、 很多加速的方法,例如共軛梯度,只在batch學(xué)習(xí)中有效;

      C、 對(duì)參數(shù)變化和收斂率的理論分析更簡(jiǎn)單。

             為了平等,我們也來(lái)分析下batch的這些優(yōu)點(diǎn)。凡事都有兩面性,這個(gè)“噪聲”也有利有弊,它的“利”成就了隨機(jī)學(xué)習(xí),而它的“弊”也將大家對(duì)隨機(jī)學(xué)習(xí)的一部分愛(ài)推向了batch學(xué)習(xí)。換句話說(shuō),batch學(xué)習(xí)上述這些優(yōu)點(diǎn)就是因?yàn)闆](méi)有這個(gè)“噪聲”而帶來(lái)的。這個(gè)噪聲對(duì)找到更好的局部極小值很關(guān)鍵,但它也會(huì)阻止完全的收斂到局部極小值,它會(huì)讓代價(jià)函數(shù)在極小值周?chē)腔?,它很想下去,但卻有心無(wú)力,因?yàn)樗谠肼暥辉肼暿`。這種噪聲會(huì)導(dǎo)致模型的參數(shù)發(fā)生抖動(dòng),就算在局部極小值附近,也不穩(wěn)定,一直折騰。這個(gè)抖動(dòng)的大小也取決于隨機(jī)更新的噪聲大小。在局部極小值附近的抖動(dòng)的方差和學(xué)習(xí)率是成比例的。所以為了減小這種抖動(dòng),我們有兩種方法:1)減小學(xué)習(xí)率(退火);2)使用一個(gè)自適應(yīng)的batch大小。對(duì)第一種方法,有理論說(shuō)明了對(duì)學(xué)習(xí)率調(diào)整最優(yōu)的退火過(guò)程是:η=c/t。c是一個(gè)常數(shù),t是樣本個(gè)數(shù)。實(shí)際應(yīng)用中,這個(gè)學(xué)習(xí)率還是有點(diǎn)大。

             另一種方法也很自然,解鈴還須系鈴人,誰(shuí)帶來(lái)的爛攤子就誰(shuí)來(lái)收拾。那就是想辦法去掉噪聲。咦?那隨機(jī)學(xué)習(xí)的那些優(yōu)點(diǎn)不是也因?yàn)樵肼暤娜コ??凡事都有中庸之道,存在中庸之法,極端不可取,那就取矛盾的折衷。mini-batches正式登上歷史舞臺(tái)來(lái)平衡這各方壓力。很簡(jiǎn)單,訓(xùn)練一開(kāi)始,我們的參數(shù)剛初始化,離最小值還很遠(yuǎn),這時(shí)候我們就要加快它前進(jìn)的步伐,因此借助隨機(jī)學(xué)習(xí)的收斂速度,我們采用一個(gè)很小的mini-batches,也就是每個(gè)batch包含的訓(xùn)練樣本數(shù)不多。隨著訓(xùn)練的進(jìn)行,離最小值越來(lái)越近,我們就得減速了,否則沖過(guò)界了,又得抖來(lái)抖去了。因此我們?cè)黾觤ini-batches的大小,從而降低噪聲。然而,每種方法的引入都會(huì)引入另外需要考慮的超參,在這里就是應(yīng)該對(duì)mini-batches的大小選擇怎樣的增長(zhǎng)率?這實(shí)際上和選擇學(xué)習(xí)率是同樣困難的。殊途同歸,有效的調(diào)整學(xué)習(xí)率和有效的調(diào)整mini-batches的大小增長(zhǎng)率效果差不多。

             不過(guò),值得注意的一點(diǎn)是,因?yàn)榭紤]到模型的泛化能力,所以也有認(rèn)為去除數(shù)據(jù)中的噪聲就顯得不那么關(guān)鍵了。因?yàn)檫€沒(méi)遇到噪聲的這些弊病的時(shí)候就已經(jīng)過(guò)訓(xùn)練(過(guò)擬合)了。

             另一個(gè)batch訓(xùn)練的優(yōu)點(diǎn)是可以使用二階優(yōu)化方法來(lái)加速學(xué)習(xí)過(guò)程。二階方法不僅估計(jì)了代價(jià)函數(shù)曲面在某點(diǎn)處的梯度(一階信息),同時(shí)還估計(jì)了曲面的曲率(二階信息)。拿到曲率后,它就可以估計(jì)真實(shí)最小值的近似位置,以此進(jìn)行強(qiáng)有力的加速。

             盡管batch學(xué)習(xí)有這樣那樣的優(yōu)點(diǎn),隨機(jī)學(xué)習(xí)還是大家比較青睞的方法,特別是訓(xùn)練的數(shù)據(jù)庫(kù)非常大的時(shí)候,它的確更快。天下武功,唯快不破!

      2)Shuffling打亂樣本的學(xué)習(xí)順序

             有一個(gè)原則是,網(wǎng)絡(luò)從意料之外的樣本中學(xué)習(xí)最快。槍打出頭鳥(niǎo),就像如果第一天上課,你很突出,很搗蛋,那你老師肯定記住了你,而不是其他“平凡”的學(xué)生。所以思想就很簡(jiǎn)單了,為了加速學(xué)習(xí),在每次迭代的時(shí)候我們挑選一個(gè)和系統(tǒng)最不相似、最不和諧的樣本讓網(wǎng)絡(luò)去學(xué)習(xí)。把“出頭鳥(niǎo)”拎出來(lái),擒賊先擒王。很明顯,這個(gè)方法只對(duì)隨機(jī)學(xué)習(xí)有效,因?yàn)閎atch是不管順序的,不管先來(lái)后到,都得等齊人了,才發(fā)糧草(計(jì)算全部樣本的總誤差再去做梯度更新)。當(dāng)然了,沒(méi)有很簡(jiǎn)單的方法可以知道到底哪個(gè)輸入樣本攜帶了對(duì)系統(tǒng)最豐富的信息量,不過(guò)有個(gè)簡(jiǎn)單的trick就是粗糙地選擇來(lái)自不同類(lèi)的樣本,換句話來(lái)說(shuō),就是,如果在第t次迭代,我是用第i類(lèi)的樣本來(lái)學(xué)習(xí)的,那么在第t+1次迭代的時(shí)候,就選擇除i類(lèi)外的其他類(lèi)的一個(gè)樣本來(lái)學(xué)習(xí)。因?yàn)橥粋€(gè)類(lèi)的訓(xùn)練樣本很大可能攜帶的是相似的信息,所以我這次見(jiàn)到你了,下次就不想見(jiàn)到和你長(zhǎng)得差不多的人了,沒(méi)什么信息量,審美疲勞。

             另一種啟發(fā)式的判斷到底一個(gè)訓(xùn)練樣本攜帶了多少新信息的方法,就是測(cè)試當(dāng)將這個(gè)樣本輸入到網(wǎng)絡(luò)的時(shí)候,網(wǎng)絡(luò)的輸出值和目標(biāo)輸出值的誤差大小。誤差越大,那就表示網(wǎng)絡(luò)還沒(méi)學(xué)習(xí)到這個(gè)樣本,因此它具有更多的新的信息。就像突然你的世界出現(xiàn)了一個(gè)新鮮事物一樣,那種“哎呀”的感覺(jué)。所以,我們偏心的將這個(gè)樣本多次輸入網(wǎng)絡(luò)去學(xué)習(xí)也是有意義的。當(dāng)然了,這個(gè)誤差的“大”是相對(duì)于其他訓(xùn)練樣本來(lái)說(shuō)的。隨著網(wǎng)絡(luò)的訓(xùn)練,每個(gè)輸入樣本的這個(gè)誤差都會(huì)變化,所以每個(gè)樣本被輸入網(wǎng)絡(luò)訓(xùn)練的次數(shù)也會(huì)變化。有個(gè)修改每個(gè)樣本的這個(gè)概率或者次數(shù)的方法叫emphasizing scheme:

      A、 打亂訓(xùn)練集,使得鄰近的樣本幾乎不會(huì)屬于同一個(gè)類(lèi);

      B、 挑會(huì)使網(wǎng)絡(luò)產(chǎn)生更大誤差的樣本輸入網(wǎng)絡(luò)學(xué)習(xí)。

             然而,需要小心的是,打亂輸入樣本被學(xué)習(xí)的正常頻率,會(huì)改變每個(gè)樣本對(duì)網(wǎng)絡(luò)的重要程度,這可能不是那么好。讓一部分人先富起來(lái),富起來(lái)后他們就不管后富了,這貧富差距就大了。千萬(wàn)寵愛(ài)集于幾人,朱門(mén)酒肉臭,路有被冷落死的樣本。這種不利于社會(huì)和諧的政策還是不要太極端的好。舉個(gè)極端的例子,如果訓(xùn)練集中有離群點(diǎn)outliers,那將帶來(lái)災(zāi)難性的后果。因?yàn)殡x群點(diǎn)可以產(chǎn)生很大的誤差,但很明顯,不應(yīng)該將它多次地送給網(wǎng)絡(luò)去訓(xùn)練,這樣會(huì)擾亂這個(gè)網(wǎng)絡(luò)的正常學(xué)習(xí)。網(wǎng)絡(luò)為這個(gè)樣本調(diào)整了半天的參數(shù),然后發(fā)現(xiàn)這個(gè)是個(gè)很不正常的樣本,那乖乖,無(wú)力吐槽。不過(guò),這個(gè)trick對(duì)一種情況非常有用,那就是可以對(duì)那些正常的但很少出現(xiàn)的輸入模式進(jìn)行性能的加速,例如在音素識(shí)別中/z/這個(gè)音素。如果這個(gè)樣本是個(gè)正常的小眾,那讓網(wǎng)絡(luò)多次學(xué)習(xí)它是有益的。關(guān)注弱小群體,構(gòu)建和諧社會(huì)。

      3)對(duì)輸入進(jìn)行標(biāo)準(zhǔn)化Normalize

             如果訓(xùn)練樣本中每個(gè)輸入變量(特征維度)的均值接近于0,那收斂一般都會(huì)更快。我們考慮個(gè)極端的情況。也就是網(wǎng)絡(luò)所有的輸入都是正數(shù)。第一個(gè)隱層的神經(jīng)元的參數(shù)更新值是和δx成比例的,δ是這個(gè)神經(jīng)元的誤差,x是輸入的向量。當(dāng)x所有的元素都是正數(shù)的時(shí)候,對(duì)這個(gè)神經(jīng)元的參數(shù)的更新值都具有相同的符號(hào)(因?yàn)閤是正數(shù),所以更新值的符號(hào)和δ的符號(hào)一致,而δ是一個(gè)標(biāo)量)。這就導(dǎo)致了,這些參數(shù)對(duì)一個(gè)給定的輸入樣本,要么全部增加(δ是正數(shù)),要么全部減小(δ是負(fù)數(shù))。所以,如果一個(gè)參數(shù)向量到達(dá)到最優(yōu)值是必須要改變方向的話,那么它就會(huì)沿著“之”形狀的路徑前進(jìn),這是非常低效的,所以會(huì)導(dǎo)致收斂非常慢。

             上述例子中,所有的輸入都是正數(shù)。然而,實(shí)際上,如果訓(xùn)練樣本的輸入變量的均值遠(yuǎn)離于0,都會(huì)讓參數(shù)的更新傾向于一個(gè)特定的方向,從而降低了學(xué)習(xí)的速度。因此,將整個(gè)訓(xùn)練集每個(gè)樣本的輸入變量的均值偏移到0處是有好處的。而且,這種啟發(fā)式的方法應(yīng)該在網(wǎng)絡(luò)的每一層都使用上,換句話說(shuō),我們希望每個(gè)節(jié)點(diǎn)的輸出的均值都接近于0,因?yàn)檫@些輸出實(shí)際上是下一層的輸入。不過(guò)這個(gè)問(wèn)題,可以將對(duì)輸入的變換和對(duì)sigmoid激活函數(shù)的選擇共同考慮。這里我們討論對(duì)輸入的變換。后面再討論sigmoid函數(shù)。

             除了對(duì)樣本進(jìn)行平移外,還有一個(gè)加速收斂的方法是對(duì)樣本進(jìn)行縮放,讓每一個(gè)特征維度都具有相同的協(xié)方差??s放為什么會(huì)加速學(xué)習(xí)?因?yàn)樗梢云胶馀c輸入節(jié)點(diǎn)連接的參數(shù)的學(xué)習(xí)率。什么意思呢?上面提到第一個(gè)隱層的神經(jīng)元的參數(shù)更新值是和δx成比例的,那如果x中有些元素的值很大,而有些元素的值很小,那很明顯,值大的會(huì)導(dǎo)致參數(shù)的更新值也很大。值小的更新值也小,哦,貧富差距又來(lái)了。不過(guò),上面只是他們的方差值要相同,那應(yīng)該取多少呢?這個(gè)值應(yīng)該和sigmoid的選擇相匹配。對(duì)下面給定的sigmoid函數(shù)(說(shuō)了下面給定,那肯定得在下面才能看到啦,囧),協(xié)方差取1是個(gè)不錯(cuò)的選擇。

             不過(guò)也有例外的情況,那就是當(dāng)你事先知道某些輸入變量的重要性要比其他輸入變量弱的時(shí)候。這種情況下,可以將重要性小的輸入變量縮小,這樣就可以讓學(xué)習(xí)算法輕微的“忽略”它了。人的先驗(yàn)為大嘛。

      上述對(duì)輸入進(jìn)行平移和縮放的tricks是很容易實(shí)現(xiàn)的。還有一個(gè)也很有效,但比較難實(shí)現(xiàn)的tricks是對(duì)輸入進(jìn)行解相關(guān)。考慮下圖所示的簡(jiǎn)單網(wǎng)絡(luò)。如果輸入是獨(dú)立的,也就是不相關(guān)的,那么就可以通過(guò)最小化而得到w1的解,而不用去考慮w2,反之亦然。如果輸入是相關(guān)的,那么就需要同時(shí)解兩個(gè)參數(shù)w,這明顯要更難點(diǎn)。那如何去對(duì)輸入變量進(jìn)行解相關(guān)呢?鼎鼎大名的PCA登上歷史舞臺(tái)。不過(guò)它能力也有限哦,只能用來(lái)移除輸入的線性相關(guān)性(只能搞定二階,高階就鞭長(zhǎng)莫及了)。

             實(shí)際上,如果輸入是線性獨(dú)立的(相關(guān)的極端情況)也可能會(huì)產(chǎn)生某種降低學(xué)習(xí)速度的退化。考慮一種情況是,當(dāng)一個(gè)輸入變量總是另一個(gè)輸入的兩倍z2=2z1。那網(wǎng)絡(luò)沿著線W2=v-(1/2)W1(v是個(gè)常數(shù))的輸出就都是常數(shù)。因此,在這個(gè)方向的梯度就都是0了。因此在這些線上移動(dòng)對(duì)學(xué)習(xí)不會(huì)起到任何的效果。我們本來(lái)是想嘗試解決一個(gè)二維的問(wèn)題的,但這個(gè)問(wèn)題實(shí)際上在一維的時(shí)候才是有效的。吃力不討好。因此,理想情況下,我們希望去掉這一個(gè)輸入,減小網(wǎng)絡(luò)的大小。

             總結(jié)來(lái)說(shuō),對(duì)輸入的變換如下:

      A、 訓(xùn)練集的每個(gè)輸入變量的均值要接近于0;

      B、 對(duì)輸入變量進(jìn)行縮放,使他們的方差具有相同的值;

      C、 輸入變量最好是不相關(guān)的。

             這個(gè)過(guò)程可以表達(dá)如下:1)平移輸入讓他們的均值為0;2)對(duì)輸入解相關(guān);3)均衡化協(xié)方差。如下圖所示:

      4)sigmoid函數(shù)

             非線性激活函數(shù)的使用賦予了神經(jīng)網(wǎng)絡(luò)對(duì)非線性函數(shù)的建模能力。如果沒(méi)有他,無(wú)數(shù)隱層的神經(jīng)網(wǎng)絡(luò)還是一個(gè)線性網(wǎng)絡(luò)。家喻戶曉的激活函數(shù)非sigmoid莫屬了。它是單調(diào)遞增的,通過(guò)在正負(fù)無(wú)窮大的時(shí)候是漸進(jìn)于某個(gè)有限值。一般取標(biāo)準(zhǔn)的邏輯函數(shù)f(x)=1/(1+e-x)和雙曲線正切函數(shù)f(x)=tanh(x)。人們往往更喜歡關(guān)于原點(diǎn)對(duì)稱版本的Sigmoid函數(shù)(雙曲線正切函數(shù)),因?yàn)樯厦嫖覀兲岬捷斎霊?yīng)該要滿足標(biāo)準(zhǔn)化,所以這個(gè)函數(shù)的輸出更有可能為下一層創(chuàng)造均值接近于0的輸入。相反,Logistic函數(shù)因?yàn)檩敵隹偸钦龜?shù),因此它的均值也總是正數(shù)。

      (a)標(biāo)準(zhǔn)Logistic函數(shù)。(b) 雙曲線正切函數(shù)f(x)=1.7159tanh(2x/3)

             對(duì)Sigmoids函數(shù)的Tricks如下:

      A、 對(duì)稱性的sigmoids函數(shù)例如雙曲線正切函數(shù)往往比標(biāo)準(zhǔn)的Logistic函數(shù)收斂更快。

      B、 一個(gè)建議的激活函數(shù)是f(x)=1.7159tanh(2x/3)。因?yàn)閠anh函數(shù)計(jì)算挺耗時(shí)的,所以一般可以用多項(xiàng)式的系數(shù)來(lái)近似。

      C、 有時(shí)候,增加一個(gè)線性項(xiàng)會(huì)很有用,例如f(x)=tanh(x)+ax,這樣可以避免代價(jià)函數(shù)曲面flat的地方。

             我們上面建議你使用的那個(gè)激活函數(shù),連參數(shù)都給你選擇好了。因?yàn)楫?dāng)你使用的是標(biāo)準(zhǔn)化的輸入后,這個(gè)激活函數(shù)輸出的方差也會(huì)接近于1,因?yàn)閟igmoid的effective gain(有效增益?)在它的有效范圍內(nèi)大致為1。這個(gè)特別版本的sigmoid具有以下性質(zhì):a)f(正負(fù)1)=正負(fù)1;b) 最大的二次導(dǎo)數(shù)出現(xiàn)在x=1的地方;c)有效增益接近于1。

             當(dāng)然了,凡事依然有兩面性,使用對(duì)稱性sigmoid也有它的缺點(diǎn),那就是它會(huì)使得誤差表面在接近原點(diǎn)的地方會(huì)非常平flat。因?yàn)檫@個(gè)原因,所以最好可以避免將網(wǎng)絡(luò)參數(shù)初始化為很小的值。因?yàn)閟igmoids的飽和,誤差表面在遠(yuǎn)離原點(diǎn)的時(shí)候也是flat的。在sigmoid中增加一個(gè)線性的項(xiàng)有時(shí)候可以避開(kāi)這些flat的區(qū)域。

      5)目標(biāo)值的選擇

             在分類(lèi)問(wèn)題上,目標(biāo)值一般都是二值的,例如{-1,+1}。很多智者都建議把目標(biāo)值設(shè)置為sigmoid的漸進(jìn)線的地方。然而,這種做法有些弊端:

             首先,會(huì)導(dǎo)致不穩(wěn)定。我們知道,網(wǎng)絡(luò)的訓(xùn)練會(huì)盡自己的最大努力讓網(wǎng)絡(luò)的輸出盡可能的接近于目標(biāo)值,當(dāng)然了,只能漸進(jìn)的接近。這樣,網(wǎng)絡(luò)的參數(shù)(輸出層,甚至隱層)會(huì)變得越來(lái)越大,而在這些地方,sigmoid的導(dǎo)數(shù)值接近于0。這些非常大的參數(shù)會(huì)增加梯度的值,然而,這些梯度接下來(lái)會(huì)乘以非常小的sigmoid導(dǎo)數(shù)(除非增加一個(gè)twisting扭曲項(xiàng),也就是之前說(shuō)的增加個(gè)線性項(xiàng)ax)從而導(dǎo)致最后的參數(shù)更新值也接近于0。最終導(dǎo)致的慘不忍睹的結(jié)果就是參數(shù)被卡住了,動(dòng)不了啦。

             第二,當(dāng)輸出飽和時(shí),網(wǎng)絡(luò)無(wú)法給出置信度的指示。首先,置信度是個(gè)啥?說(shuō)白了,置信度就是當(dāng)你給神經(jīng)網(wǎng)絡(luò)輸入一個(gè)樣本的時(shí)候,我,神經(jīng)網(wǎng)絡(luò),要給你分類(lèi)是不是。我經(jīng)過(guò)一輪辛勤的計(jì)算,給你一個(gè)分類(lèi)結(jié)果對(duì)不對(duì)。那你就百分比相信我給你的結(jié)果是正確的?作為一個(gè)負(fù)責(zé)任的網(wǎng)絡(luò),我是不是還得告訴你,我做出這個(gè)分類(lèi)判斷的可信度是多少?這樣才會(huì)給你的下一步?jīng)Q策提供參考,信不信由你。例如,當(dāng)一個(gè)輸入樣本落在決策邊界附近的時(shí)候,網(wǎng)絡(luò)輸出的決策值實(shí)際上是不確定的。理想情況下,這種置信度應(yīng)該要被反映在網(wǎng)絡(luò)中,比如輸出一個(gè)在兩個(gè)可能的目標(biāo)值之間的某個(gè)值,而不是在兩端漸進(jìn)線的地方。然而,大的參數(shù)會(huì)強(qiáng)制所有的輸出都落在sigmoid的尾部,而不去考慮不確定性。典型的妄自尊大呀。因此,在沒(méi)有給出任何關(guān)于這個(gè)結(jié)果置信度很低的指示,網(wǎng)絡(luò)就可能給的是一個(gè)錯(cuò)誤的類(lèi)別結(jié)果,這不坑人嘛。大的參數(shù)會(huì)導(dǎo)致神經(jīng)元的飽和,蒙蔽了它的雙眼,從而使其喪失了對(duì)樣本基本的區(qū)分能力。

             解決這個(gè)問(wèn)題的一個(gè)方法就是把目標(biāo)值設(shè)置在sigmoid的有效范圍內(nèi),而不是在漸進(jìn)線的區(qū)域。還需要小心的是,為了保證節(jié)點(diǎn)不會(huì)只被限制在sigmoid的線性部分,可以把目標(biāo)值設(shè)置在sigmoid的最大二階導(dǎo)數(shù)的位置,這樣不但可以利用非線性的優(yōu)點(diǎn),還可以避免sigmoid的飽和。這也是上圖b中的sigmoid函數(shù)是個(gè)不錯(cuò)的選擇的原因。它在正負(fù)1的地方具有最大的二階導(dǎo)數(shù),而正負(fù)1對(duì)應(yīng)的恰好是分類(lèi)問(wèn)題的典型二值目標(biāo)值。

             Trick:目標(biāo)值:將目標(biāo)值選擇在sigmoid函數(shù)最大二階導(dǎo)數(shù)的位置。從而避免輸出節(jié)點(diǎn)的飽和。

      6)參數(shù)的初始化

             參數(shù)的初始值對(duì)訓(xùn)練過(guò)程有著重大的影響。我們對(duì)參數(shù)初始化的原則是:參數(shù)應(yīng)該隨機(jī)初始化在能讓sigmoid函數(shù)在線性區(qū)域激活的值。如果參數(shù)全部都很大,那sigmoid一開(kāi)始就飽和了,這樣就會(huì)得到一個(gè)非常小的梯度值,那參數(shù)更新就會(huì)很慢,訓(xùn)練也會(huì)很慢。如果參數(shù)太小了,那梯度也會(huì)很小,同樣也會(huì)導(dǎo)致訓(xùn)練很慢。中庸之道!參數(shù)處于sigmoid線性范圍的那段區(qū)域有幾個(gè)優(yōu)點(diǎn):1)梯度可以足夠的大,從而使得學(xué)習(xí)能正常進(jìn)行;2)網(wǎng)絡(luò)可以在學(xué)習(xí)映射的非常困難的非線性部分之前學(xué)習(xí)映射的線性部分。

             達(dá)到這個(gè)目標(biāo)并非sigmoid一家之力可以完成。它需要數(shù)據(jù)標(biāo)準(zhǔn)化、sigmoid的選擇和參數(shù)初始化的選擇這三者的協(xié)調(diào)。首先,我們要求每個(gè)節(jié)點(diǎn)的輸出的標(biāo)準(zhǔn)差應(yīng)該接近于1,這可以通過(guò)使用之前提到的數(shù)據(jù)標(biāo)準(zhǔn)化來(lái)對(duì)訓(xùn)練集進(jìn)行變換獲得。為了可以在第一個(gè)隱層的輸出同樣獲得標(biāo)準(zhǔn)差為1的輸出,我們只需要使用上面建議的sigmoid函數(shù),同時(shí)要求sigmoid的輸入的標(biāo)準(zhǔn)差也為1。假設(shè)一個(gè)結(jié)點(diǎn)的輸入yi是不相關(guān)的,而且方差為1,那結(jié)點(diǎn)的標(biāo)準(zhǔn)差就是參數(shù)的加權(quán)和:

             因此,為了保證上述這個(gè)方差近似于1,參數(shù)就應(yīng)該從一個(gè)均值為0,標(biāo)準(zhǔn)差為:σw=m-1/2的分布中隨機(jī)采樣得到(m是fan-in,也就是與這個(gè)結(jié)點(diǎn)連接的輸入個(gè)數(shù),也就是前一層的節(jié)點(diǎn)個(gè)數(shù),如果是全連接網(wǎng)絡(luò)的話)。

             Trick:參數(shù)初始化:

      假設(shè):1)訓(xùn)練集已經(jīng)被標(biāo)準(zhǔn)化;2)sigmoid是選擇f(x)=1.7159tanh(2x/3)。

      那參數(shù)就應(yīng)該從一個(gè)均值為0,標(biāo)準(zhǔn)差為σw=m-1/2的分布(例如正態(tài)分布)中采樣得到。

      7)學(xué)習(xí)率的選擇

             對(duì)學(xué)習(xí)率的選擇也是一個(gè)大學(xué)問(wèn)。和上面說(shuō)的batch的大小選擇一樣。學(xué)習(xí)率,就是參數(shù)更新每一步走多遠(yuǎn),這個(gè)參數(shù)很關(guān)鍵。如果設(shè)置的太大,那么很容易就在最優(yōu)值附加徘徊,因?yàn)槟悴椒ヌ罅?。例如要從廣州到上海,但是你的一步的距離就是廣州到北京那么遠(yuǎn),沒(méi)有半步的說(shuō)法,自己能邁那么大步,是幸運(yùn)呢?還是不幸呢?事物總有兩面性嘛,它帶來(lái)的好處是能很快的從遠(yuǎn)離最優(yōu)值的地方回到最優(yōu)值附近,只是在最優(yōu)值附近的時(shí)候,它有心無(wú)力了。但如果設(shè)置的太小,那收斂速度就太慢了,像蝸牛一樣,雖然會(huì)落在最優(yōu)的點(diǎn),但是這速度如果是猴年馬月,我們也沒(méi)這耐心啊。所以有的改進(jìn)就是在這個(gè)學(xué)習(xí)率這個(gè)地方下刀子的。我開(kāi)始迭代是,學(xué)習(xí)率大,慢慢的接近最優(yōu)值的時(shí)候,我的學(xué)習(xí)率變小就可以了。所謂采兩者之精華?。?/span>

             實(shí)際上,學(xué)習(xí)的方法經(jīng)過(guò)那么久的發(fā)展,對(duì)學(xué)習(xí)率的研究還是有不少的成果或者經(jīng)驗(yàn)的。至少存在著一個(gè)很好的估計(jì)理想學(xué)習(xí)率的方法。而且還存在著很多其他的自動(dòng)調(diào)整學(xué)習(xí)率的方法,不過(guò)大部分都是經(jīng)驗(yàn)性的。

             大部分這些方法都是在參數(shù)發(fā)生震蕩的時(shí)候減小學(xué)習(xí)率,而在參數(shù)相對(duì)穩(wěn)定的朝著一個(gè)方向前進(jìn)的時(shí)候增加學(xué)習(xí)率。這個(gè)方法的主要問(wèn)題在于它對(duì)隨機(jī)梯度或者在線學(xué)習(xí)是不合適的,因?yàn)閰?shù)在所有的訓(xùn)練過(guò)程中都是抖動(dòng)的。從一開(kāi)始,到最后,它都是抖動(dòng)的。人生如此坎坷,希望在哪。

             與為所有參數(shù)選擇一個(gè)同樣的全局學(xué)習(xí)率相對(duì),可以為每個(gè)參數(shù)選擇不同的學(xué)習(xí)率,這樣一般都可以加快收斂速度。有種不錯(cuò)的方法就是計(jì)算二階導(dǎo)數(shù)來(lái)實(shí)現(xiàn)的,這個(gè)會(huì)在后面提到。這個(gè)方法最需要確定的是網(wǎng)絡(luò)中的所有參數(shù)都會(huì)以差不多的速度收斂。這具體取決于誤差表面的曲率,一些參數(shù)可能需要小的學(xué)習(xí)率來(lái)避免發(fā)散,而一些參數(shù)需要大的學(xué)習(xí)率要加快收斂速度。因?yàn)檫@個(gè)原因,低層的學(xué)習(xí)率一般要比高層的大。這是因?yàn)閷?duì)大部分的神經(jīng)網(wǎng)絡(luò)框架而言,代價(jià)函數(shù)對(duì)低層網(wǎng)絡(luò)參數(shù)的二階導(dǎo)數(shù)要比對(duì)高層參數(shù)的小。

             如果網(wǎng)絡(luò)中使用了共享參數(shù),例如TDNN或者CNN,那學(xué)習(xí)率應(yīng)該和共享參數(shù)的連接個(gè)數(shù)的平方根成比例。因?yàn)槲覀冎?,梯度是一些或多或少?dú)立的項(xiàng)的和。

             Tricks:

      A、 給每個(gè)參數(shù)自己的學(xué)習(xí)率;

      B、 學(xué)習(xí)率應(yīng)該和該節(jié)點(diǎn)的輸入個(gè)數(shù)的平方根成比例;

      C、 低層參數(shù)的學(xué)習(xí)率應(yīng)該比高層的大。

             還有一些加快收斂的tricks包括:

      Momentum:

             當(dāng)代價(jià)函數(shù)表面是高度非球形的,Momentum可以提高收斂速度。因?yàn)樗梢韵拗拼笄史较虻牟介L(zhǎng)過(guò)大,因此可以在低曲率方向得到一個(gè)更有效的學(xué)習(xí)率。(μ衡量的是矩項(xiàng)的強(qiáng)度)。江湖中,有種說(shuō)法,就是矩在batch學(xué)習(xí)比在隨機(jī)模式中要有效得多,但這個(gè)說(shuō)法沒(méi)有什么系統(tǒng)的研究。

      自適應(yīng)學(xué)習(xí)率:

             主要是在訓(xùn)練中根據(jù)誤差來(lái)實(shí)時(shí)調(diào)整學(xué)習(xí)率。(因?yàn)閱?wèn)題比較大,此處略去。有興趣的參考原文)。

      8)RBF vssigmoid 節(jié)點(diǎn)

             盡管大部分的系統(tǒng)都是使用基于點(diǎn)積和sigmoid的神經(jīng)元,不過(guò)還是存在其他選擇的。一個(gè)比較典型的就是RBF徑向基網(wǎng)絡(luò)了。在RBF網(wǎng)絡(luò)中,參數(shù)和輸入向量的點(diǎn)積被替換為兩者的歐式距離,同時(shí)sigmoid函數(shù)變?yōu)橹笖?shù)函數(shù)。例如對(duì)一個(gè)輸入x,它的輸出為:

             vii)是第i個(gè)高斯的均值和標(biāo)準(zhǔn)差。這些節(jié)點(diǎn)可以替換標(biāo)準(zhǔn)的節(jié)點(diǎn),也可以和他們共存。他們一般是通過(guò)梯度下降(對(duì)輸出層)和非監(jiān)督聚類(lèi)算法對(duì)RBF節(jié)點(diǎn)的均值和方差進(jìn)行學(xué)習(xí)。這個(gè)可以參考我的這個(gè)博文。

             與sigmoid節(jié)點(diǎn)不同,sigmoid可以覆蓋整個(gè)空間。但一個(gè)RBF節(jié)點(diǎn)只能覆蓋輸入空間的一小局部區(qū)域。這樣對(duì)快速學(xué)習(xí)是有利的。RBF還可以構(gòu)建一組能更好的對(duì)輸入空間進(jìn)行建模的基函數(shù),不過(guò)這是問(wèn)題獨(dú)立的。RBF還是有缺點(diǎn)的,它的局部特性可能會(huì)帶來(lái)一些不好的性能,特別是在高維空間中,就需要非常多的節(jié)點(diǎn)才可以覆蓋整個(gè)空間。不過(guò),有人也得到了一些網(wǎng)絡(luò)設(shè)置的經(jīng)驗(yàn),就是在網(wǎng)絡(luò)的低層(高維)用sigmoid,在高層(低維)使用RBF。

             


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多