如何高效的通過BP算法來訓練CNN


      《 Neural Networks Tricks of the Trade.2nd》這本書是收錄了1998-2012年在NN上面的一些技巧、原理、算法性文章,對於初學者或者是正在學習NN的來說是很受用的。全書一共有30篇論文,本書期望里面的文章隨着時間能成為經典,不過正如bengio(超級大神)說的“the wisdom distilled here should be taken as a guideline, to be tried and challenged, not as a practice set in stone”。

     本博文意在介紹其中第一篇論文《Efficient BackProp》,這是yann  lecun他們(超級大神)在1998年寫的,雖然文中有些觀點略顯過時,不過仍不乏借鑒之處,按歷史潮流,取其精華即可。

一、引言

       BP算法正因為它的概念簡單、計算高效和總是能夠work受到大家的青睞。不過對於設計和訓練一個網絡來說,很多的東西看起來是藝術大過於學術,比如神經元的數量、類型,網絡的層數,學習率,訓練和測試集等等。不過它們是數據依賴的,所以沒有任何的簡單明了的規則告訴我們應該怎么設定。不過還是有一些潛在的原理有助於我們在這些參數的選擇上有理可依。

  本文工作安排:先介紹下標准的BP然后討論下一些簡單的啟發式方法和技巧;然后討論收斂的問題;接着介紹一些經典的二階非線性優化算法,並且介紹它們在NN的訓練上的限制。最后提出了一個新的二階方法使得能夠在某些情況下能夠加速學習。

1.2、學習和泛化

       雖然有着很多的方法能夠進行網絡的訓練,不過大多數成功的方法都可以歸為基於梯度學習的方法。正如下圖:



其中表示第P個輸入的之間的函數,即預測函數,這里表示系統中可調節的參數。損失函數表示真實的目標和預測的目標之間的差距。其中表示損失函數在訓練集上的平均誤差。最簡單來說,學習問題就是找到參數能夠讓最小(個人:當然這里是最簡單的理解,否則一味的最小化訓練集的誤差會造成過擬合的)。當然人們並不關心在訓練集上的表現,而是看重模型系統在測試集上(與訓練集不相交)的表現。最常用的損失函數就是均值平方誤差了,也就是上面的這個函數(個人:當然還有交叉熵函數等等)。

        我們在關注如何提升最小化損失函數過程的同時也要注意最大化網絡的泛化能力(即預測那些未出現在訓練集中樣本的目標的能力)。為了理解什么是泛化,先假設我們有一個數據集,而該數據集是某個理想函數的輸入和輸出。因為測量過程通常都是有噪音的,所以樣本中自然會有錯誤。我們可以想像假設我們有多個數據集,每個數據集因為噪音和采樣的點的不同而有着輕微的不同。每個這樣的數據集在訓練的網絡的最小化的時候所得到的值都和理想(即真實的函數)函數都會有着些許差別。學習當然就是讓某個具體的數據集在一個模型上最小化誤差。而泛化技術是試圖修正因為選擇不同的數據集造成的引入網絡的錯誤(個人:說白了就是不同的數據集上效果都好,那么泛化性能就是好)。

       而且也有一些原理性的實驗來分析最小化訓練集誤差的學習過程(有時候這個過程被稱之為經驗風險最小化)比如(《The Nature of Statistical Learning Theory》這本書)。這些原理性的分析都是基於將泛化誤差分解成兩項:偏置和方差。偏置指的是測量基於所有可能數據集上網絡的輸出與理想函數輸出之間的差別(即高偏置就是欠擬合,說明模型根本不能代表理想的函數);而方差是指數據集之間的網絡輸出的變化(高方差就是過擬合,說明模型對某個或者某些數據集擬合的足夠好,而對於其他數據集卻表現很差)。在訓練的早期自然是高偏置,因為網絡的輸出離理想函數還很遠。而在訓練的后期,隨着網絡學習的變好,離理想函數越來越近,然而,如果訓練的太久,網絡會把數據集中的噪音也給學了過來,這就是過學習了。所以當偏置和方差的都達到最小的時候,才是總的錯誤最小的時候。許多方法(比如早點停止、正則化)都是為了在使用BP的時候最大化網絡泛化能力。

       模型的選擇、模型的結構和損失函數都是獲得好泛化的關鍵。所以記得如果使用了錯誤的模型並且沒有合適的模型選擇,那么即使一個極好的最小化都沒有任何幫助。事實上,一些作者認為不精確的最小化算法可以比精確的算法更好。

1.3、標准的BP

        雖然本文中的技巧在多層前饋NN部分,不過大多數技巧仍然適用於基於梯度學習的方法。最簡單的通過基於梯度學習的多層學習機就是模型的堆疊形式。每個模型都是為了執行函數,即通過下層模型的輸出作為該層模型的輸入然后計算得到該層的輸出。而其中就是輸入的特征。如果關於的偏導數已經知道了,那么關於的偏導數可以通過后向遞歸得到:


這里關於的jacobian矩陣上點的值。而關於的。一個向量函數的jacobian是一個包含着所有輸出關於所有輸入的偏導數的矩陣(其實就是輸出關於輸入的一階導數矩陣)。當將上面的等式逆序的用到模型中,從第N層到第1層,那么損失函數關於所有參數的偏導數都可以計算出來了。這種計算梯度的方法就叫做BP。

        傳統的多層NN就是上面系統的一個特殊形式,其中的模塊是交替的一層一層累積起來的,先通過矩陣計算然后是進行sigmoid 函數的映射:


通過使用求導鏈式規則,可以求得如下的BP過程:

 

上面的式子寫成矩陣形式為:


其中最簡單的學習方法是梯度下降算法,其中的迭代方式如下:

                                                                           (1.3.11)

通常來說,是學習率,最簡單的情況就是其是一個標量常量,或者通過一些自適應算法讓其變成變量。在其他方法(例如,牛頓法,擬牛頓法)中,這是一個對角矩陣的形式,或者是一個損失函數的逆hessian矩陣的估計(個人:即不能得到准確的,只是個逼近)形式。

1.4、一些實踐性的技巧

        Bp在多層網絡中是很慢的,特別是網絡的損失表面(即損失函數在矩陣空間中形成的曲面)通常是非二次的、非凸的、高維並且有着許多的局部最小 和/或 平坦區域。沒有公式說能夠保證:a)網絡可以收斂到一個很好的解;b)迅速收斂;3)每次都能收斂。本節就是介紹一些技巧來幫助我們找到一個好的解並且減少收斂所需的時間。

1.4.1 隨機vs批量學習

     隨機(在線)學習是一次隨機挑選一個樣本,然后求梯度,更新權重;而批量學習是一次更新一批樣本,然后求這些樣本上的平均梯度,然后更新梯度:


因為梯度的計算是有噪音的,所以權重的每次迭代中移動的可能不那么准確,即不是一直朝着最小值方向。不過正如我們將要說的,每次迭代中的“噪音”可以變成有利的。隨機學習通常更適合於BP,因為:

    a)隨機學習通常比批量更快;

    b)隨機學習通常得到更好的解;

    c)隨機學習可以用來追蹤樣本的變化。

        在大型冗余數據集上,隨機學習通常比批量學習更快。原因很簡單,假設我們有一個1000個樣本的訓練集,其中由100個不同類的副本組成,即每個類中的10個樣本是完全一樣的。對整個1000個樣本求平均梯度,就等於求每個類中一個樣本的梯度。所以批量梯度下降通常是比較浪費的,因為它在一個參數更新之前重復計算了10次;另一方面來說,隨機梯度是迭代了了10次(epoch)完整的長為100的訓練集。不過在實際中,很少樣本會在一個數據集中出現2次,不過對於同類的樣本來說其實還是挺相似的。例如在音素分類中,所有的音素樣本通常都會包含很多一樣的信息,這也會造成冗余使得批量學習慢於在線(隨機)學習。

        隨機學習通常得到更好的解是因為迭代中存在的噪音。非線性網絡通常有着多個不同深度的最小值。訓練的目標就是為了找到其中的一個最小值。批量學習找到的最小值通常都是初始化時候的那個最小值區域;而隨機學習中,迭代更新中的噪音會讓權重從一個最小值區域跳到另一個最小值區域,可能是一個更深的局部最小。這在下面的參考文獻[15][30]中被證明了。

       隨機學習在當被建模的函數在隨着時間變化的時候也是很有用的,一個很常見的情況是在工業應用中,數據的分布是會隨着時間的變化而變化的,比如采樣數據用的機器的磨損。如果學習的算法沒檢測並且適應這種變化的話,那么就不可能很好的學到數據中的信息,並且會有較大的泛化誤差出現。使用批量學習的話,變化是沒法檢測的,而且會得到相當壞的結果,就因為會有個平均操作;而對於在線學習來說,如果操作是恰當的,那么就會追蹤這個變化,並且一直會有個很好的效果。

         暫且不說隨機學習,還是有很多原因使得我們會使用批量學習:

       a)收斂的條件很容易理解;

       b)許多技術只有在批量學習中才可以用來加速(例如共軛梯度);

       c)在權重動態性和收斂比率的原理性分析更容易。

雖然在隨機學習中噪音有利於跳過一些局部最小值,但是這些讓找到更好的局部最小的噪音同樣會阻止完整的收斂到最小值。而且會因為權重的動盪導致收斂停滯。動盪的程度取決於隨機更新的噪音的程度。而且關於局部最小值的動盪的方差是與學習率成比例的。為了減少這些動盪,我們可以減小(退火)學習率或者使用一個自適應batch_size。在文獻[13,30,35,36]中,顯示學習率的最優的退火策略是:


 這里是樣本的個數(個人:指的是batch_size中樣本的個數還是整個訓練集樣本的個數?,不過按照這里還未介紹mini-batch的順序來說,這里指的是整個訓練集的樣本個數),是常量。在實際操作中,這也許會太快了。

       另一個移除噪音的方法就是使用“mini-batches”。先以一個小的batch size 開始,然后隨着訓練的次數增加,加大size。在文獻[25,31]中有較詳細的說明,然而,決定增大多少size,和何時增大並且哪些樣本該被放入某個batch都是很困難的。在隨機學習中學習率的size的影響就和mini batch 有關的size一樣。

       不過移除數據中的噪音有時候不那么重要,因為我們需要考慮到泛化問題,而且在噪音真的具備影響力之前還有很長的時間。批量學習的另一個優勢在於它可以使用二階方法來加速學習過程。二階方法加速是不止使用梯度而是使用損失表面的曲率來計算的。在給定曲率的基礎上,就可以計算得到真實最小值的近似位置了。

      不過總的來說,在大規模數據集的情況下使用隨機學習還是更好,因為它更快。

1.4.2 打亂樣本

        網絡可以從最不期望的樣本中最快的學習,所以每次迭代的時候選擇一個與系統最不相似的樣本是最明智的。不過這只適用於隨機學習,因為輸入的順序是無關緊要的(在batch中梯度是需要相加然后求平均的,當梯度的值存在一個明顯的范圍的時候,順序可能會被舍入誤差影響到)。當然沒有簡單的方法來辨識哪個輸入的信息量更多,不過一個非常簡單的技巧就是從不同類中挑選后續的樣本,因為來自一個類的樣本之間或多或少會包含更多的相似性信息。

       另一個判斷一個訓練樣本包含多少新信息的方法是 通過將其作為網絡的輸入檢查其網絡預測輸出與目標值之間的誤差。一個較大的誤差意味着該輸入樣本沒有被網絡學到,所以其包含着較多的信息。所以可以將該輸入的出現頻率提高。這里的較大時相對於所有的其他訓練樣本來說的。當網絡訓練的時候,這些相關的誤差是會變的,同樣的對於某個具體的輸入樣本來說其出現的頻率也是要變得。一個修改每個樣本出現次數的概率的方法叫做強調方案(emphasizing scheme)

      使用最大信息內容來選擇樣本:

      a)打亂訓練集使其后續的訓練樣本不再(幾乎)有相同的類別;

      b)讓能夠生成更大誤差的樣本的出現頻率大於能夠生成更小誤差的樣本

值得注意的是,當微擾動正常的輸入樣本的頻率的時候需要特別的小心,因為這會改變網絡在不同樣本上的相對重要性。這有好有壞,比如對於離群點來說,這就是壞的,因為離群點本來就是會產生更大誤差的,而其出現的次數不能被增加。另一方面來說,該技術對於,例如音素識別中出現次數較低的來說,有助於提升模型的性能。

1.4.3 歸一化輸入樣本(0均值,1 方差)

       如果訓練集中的每個輸入變量的均值接近於0的話,收斂通常可以更快。例如,假設所有的輸入都是正的。對於第一層權重層中的某個節點上關聯的權重,他們更新都是與成比例的,這里是一個在該節點上的(標量)誤差,而是輸入向量。當輸入向量的所有成分都是正的時候,那么該節點對應的權重的所有更新都是有着相同的符號()。也就是說,這些權重在給定的一個樣本的情況下:要不都減少,要不都上升。所以如果一個權重向量必須改變方向,到達最優解的話,那么就只能通過 Z字形來完成了,明顯這會很慢。

      上面的例子中,輸入都是正的,然而,通常來說,任何輸入向量的均值平移都會讓更新以某個方向進行偏移,所以這會減慢學習。所以最好的平移輸入的方法就是將訓練集的均值盡可能的接近0。該策略應該用到所有的層上,因為我們希望節點的輸出的均值也盡可能的接近0,因為這些輸出就是下一層的輸入。這里先介紹下輸入轉換。

       不止是輸入如上那樣平移有助於加速收斂,而且可以通過縮放使得所有的樣本都有相同的協方差(covariance),


這里 P 是訓練樣本的個數,是第 i 個輸入變量的協方差,是第 p 個訓練樣本的第 i 個成分。縮放有助於加速學習是因為它能夠平衡連接到輸入節點的權重的學習速率。該協方差的值應該匹配所使用的sigmoid函數。對於給定的下面的sigmoid,協方差的值選1 是一個好選擇。

      不過當已經知道某些輸入重要性明顯不如比其他輸入時,就不能縮放所有的協方差到相同的值。在這樣的情況下,將較不重要的輸入進行縮放使得它們對於學習過程來說不那么顯眼是有利的。(個人:其實就是對不重要的輸入進行縮放就行)   

        轉換輸入樣本:

       a)基於整個訓練集對每個輸入向量的均值應該接近於0;

       b)將輸入變量進行縮放使其的協方差都是一樣的;

       c) 如果可以的話,輸入變量之間應該不相關.

上面的a 和 b 執行起來還是比較簡單的。剩下的一個相當的有效,不過卻比較難執行。考慮圖1.2的那個簡單的網絡結構:


如果輸入是不相關的,那么在計算當最小化誤差時候的值就不需要考慮了(即可以獨立考慮)。換句話說,這兩個變量是獨立的(系統的等式是對角化的);如果輸入是相關的,一個解決的時候就必須捎帶上另一個,也就是兩個必須同時考慮,這是相比更困難的。PCA(也被稱之為karhunen -loeve 擴展),可以被用來移除輸入中的線性相關性。

        如果輸入是線性依賴的(相關性的極端例子)也可能產生依賴性使得學習減慢。假如一個輸入總是另一個輸入的兩倍()。該網絡的輸出總是沿着線:,這里是一個常量。所以梯度為0的時候是沿着圖1.2中的方向的,移動這些線對於學習來說沒有什么影響。這里,我們是試圖在2D中解決一個1D問題。理想情況下我們想移除其中一個輸入從而降低網絡的size,從而能夠簡化問題。

      圖1.3介紹了整個輸入轉換的過程,第(1)布是將輸入平移到均值為0的地方;(2)是解相關輸入;(3)是使協方差相等:


1.4.4 sigmoid

       非線性激活函數可以給網絡非線性的能力。最常用的激活函數就是sigmoid,其中最常用的例子就是標准的邏輯函數,和雙曲線正切,如圖1.4(個人:當然12年hinton提出的relu,和之后的prelu等等其他激活函數)sigmoid是原點對稱的(圖1.4b),所以這也是一個需要輸入必須歸一化的原因:


因為他們生成的輸出的均值通常都是接近於0 的。而對於邏輯函數來說,輸出總是正數,所以輸出得到的值的均值總是為正的。(個人:即使用邏輯函數得到的輸出的均值總是偏向正的,這也是一個為什么不推薦而 推薦正切函數的原因,當然現在大都使用relu激活函數)

       sigmoid

        a)對稱的sigmoid例如雙曲線正切通常比標准的邏輯函數收斂更快;

       b)一個推薦的sigmoid為:。因為該tanh函數有時候計算代價比較大,可以通過使用一個多項式系數來逼近代替它。詳細內容查閱參考文獻[19]

       c)有時候增加一個小的線性項是有幫助的,例如來避免平坦區域。

        選擇上面推薦的sigmoid中的約束,是因為就算使用轉換后的輸入,輸出的方差還是會接近於1 的,因為sigmoi的有效區域大多是接近1的(個人:因為在1的附近 導數變化才大)。具體來說,該sigmoid的特性為:a);b)二階導數在 x =1 的時候得到最大值;c)有效的區域接近於1.

       使用對稱sigmoid函數的一個潛在的問題是該誤差表面可以在接近於原點的時候非常平坦。基於此,最好避免使用非常小的權重來初始化。而且因為sigmoid的飽和問題,誤差表面同樣是平坦的。通過增加一個小的線性項有時候有助於避免平坦區域

1.4.5 選擇目標值

        在分類問題中,目標值通常是二值的(即,+1 ,-1)。通常明智的是目標值設置成sigmoid的漸近線。不過這會有幾個缺陷。

       首先,導致學習不穩定。訓練的過程是試圖讓輸出盡可能的接近目標值,而這只能漸進的實現。所以,當sigmoid的導數接近0時,權重(輸出和甚至隱藏層)會變得越來越大,非常大的權重雖然會增大梯度,然而這些梯度隨后被一個很小的sigmoid導數相乘(當加一個扭曲項到sigmoid的時候除外,即如上面的,在tanh后面增加一個線性項)生成一個接近於0的權重更新項,所以權重就卡住了。

      其次,當輸出飽和的時候,網絡並沒有任何有關置信程度的指示。當一個輸入樣本落在了決策邊緣附近時,輸出的類別是不確定的。理想情況下,這應該輸出一個介於兩個類之間的輸出值,即,不是在漸近線附近。然而,大的權重傾向於讓所有的輸出都位於sigmoid的尾巴位置,而不管是否確定。所以,網絡會預測一個錯誤的類別而沒有給出任何有關該結果是低置信度的指示。大的權重會飽和該節點使得沒法區分正常和異常的樣本。

       一個解決上面的問題的方法是讓目標值位於sigmoid的范圍之內,而不是在漸近線的值上。然而,必須小心確保該節點不是被限制成sigmoid的線性部分。設置目標值為sigmoid 的二階導數的最大值上的點是最好的方法了,這有了非線性的優勢而且沒有飽和該sigmoid。這也是另一個推薦圖1.4b的sogmoid函數的原因。它的最大二階導數值在+1和-1上(對應着分類問題中二值分類)。

      目標:

     選擇目標值為sigmoid的二階導數最大值上的點有助於避免輸出單元的飽和。

1.4.6  權重初始化

        初始化的權重的值對於訓練的過程來說影響是很明顯的。權重應該被隨機選擇,不過這時候sigmoid主要在它的線性區域上被激活。如果權重都非常大,那么sigmoid將會飽和並生成很小的梯度,這會讓學習慢下來。如果權重非常小,那么梯度同樣也是很小的。能夠覆蓋sigmoid的線性區域的中等權重的優勢有:a)梯度足夠大使得學習能夠繼續下去;b)網絡會學到更復雜的非線性部分前的線性部分。

        達到這樣的目的,需要協調訓練集歸一化、sigmoid的選擇、權重初始化選擇之間的關系。我們在初始時,會要求 每個節點輸出的分布的標准差都接近1,這可以通過在開始對訓練集進行歸一化實現。為了使得第一層隱藏層輸出的標准差接近1 ,我們只需要使用之前推薦的sigmoid,然后輸入到sigmoid的值的標准差。假設一個單元的輸入是不相關的,並且方差為1,那么該單元的權重的標准差為:


所以,為了確保逼近1,權重應該是從一個有着0均值,標准差為下面式子的分布中隨機采樣得到的:


這里 m 是指輸入到該單元的權重個數。

       初始化權重:

       假設:a)訓練集已經歸一化了,並且b)選擇的是圖1.4b的sigmoid函數。那么權重應該如上面那樣隨機采樣得到,即取均勻分布,其中的上下限為:[-1/sqrt(m),1/sqrt(m) ]。

1.4.7 選擇學習率

       存在至少一種原理良好的方法(在下面1.9.2部分介紹)來計算理想的學習率。許多其他方法(大多數更像是經驗式的)在以往文獻中提出了很多方法用來自動的調節學習率。大多數的方法都會選擇在權重向量“震盪”的時候降低學習率,並且在權重向量有了一段較為平穩的方向時升高學習率。這些方法的一個重要的問題在於他們不適合隨機梯度或者在線學習,因為這時候權重向量是一直在震盪的。

       在基於選擇一個全局學習率的基礎上,可以對每個獨立的權重都挑選一個不同的學習率,以此來改善收斂情況。在基於計算二階導數的基礎上,一個原理良好的方法在后面的1.9.1中會有介紹。這里體現的想法是需要讓網絡中所有的權重都已大致相同速度進行收斂。

       基於誤差表面的曲面基礎上,許多權重需要一個小的學習率來避免發散,同時其他權重需要一個大的學習率來以合理的速度收斂。因此,低層中的學習率應該要大於高層中的學習率(下面的圖1.21)。這基於的事實是:在大多數nn結構中,損失函數關於低層的權重的二階導數要通常小於高層的。

      如果共享的權重,如延時nn(tdnn)或者cnn中那樣,學習率應該與共享該權重的連接數的平方根成比例,因為我們知道梯度或多或少是一個獨立項的和。

      平衡學習速度:

     a)給每個權重一個自己的學習率;

     b)學習率應該與該單元的fan-in個數的平方根成比例;

     c)更低層的權重通常比更高層的權重要大

      其他加速收斂的技巧有:

     動量

       

當損失表面是高度非球形的時候,可以提升速度,因為它會衰減高曲率方向上的步長,從而產生更大的有效的沿着低曲率方向上的學習率(表示動量項的強度)。已經被證實動量項通常有助於在批量學習中而不是隨機學習中,不過暫時沒有系統性研究的作者(本論文發布於1998年,所以這是那時候的事情)。

    自適應學習率

      有包括Sompolinsky , Darken & Moody , Sutton , Murata .等人提出了一些自動調節學習率的方法 (參考文獻[9,38,28,16]),通過基於誤差增加或減少學習率來控制收斂的速度。並基於假設以下事實來探討學習率自適應算法:a)hessian的最小特征值明顯要小於第二小的特征值;b)在經過大量的迭代之后,參數向量會沿着hessian的最小特征向量的方向達到最小。基於這些約束下,所需要計算的參數可以作為一維來處理,並且最小的特征向量可以通過如下式子計算(大量的迭代,如圖1.5)得到:


這里表示范式,所以我們可以使用到逼近的最小值特征向量的投影作為衡量到最小值的距離(1維的):


該距離可以用來控制學習率(可參閱參考文獻【28】):

(1.4.7.4、1.4.7.5、1.4.7.6)

這里控制着leak size of average(個人:暫時不知道怎么翻譯,不過應該是說逼近值與真實值之間的差距吧),是常量,並且作為輔助變量來計算梯度的leaky average。

       這些規則是很容易計算的,並且容易實現。我們只需要保持追蹤一個額外的向量(式子 1.4.7.5):平均梯度。隨后該向量的范數可以用來控制學習率的size(式子1.4.7.6)該算法的動機在於:遠離最小值的時候(大距離)生成一個大步長;靠近最小值的時候退火該學習率(參考文獻[10])。


1.4.8 徑向基函數vs sigmoid 單元

      雖然大部分系統使用的都是先點積然后是sigmoid,不過還是有許多其他類型的神經元(或者層)。一個通常的替代方法是徑向基網絡。在RBF網絡中(參考文獻【5,7,26,32】),權重和輸入向量的點積被換成了輸入和權重之間的歐式距離,sigmoid也換成了一個指數函數。輸出的激活計算形式為(對於一個輸出):


這里是第 i  個高斯的均值(標准差)。這些單元可以被標准單元替換或者共存,他們通常可以通過梯度下降無監督聚類一起來訓練,並用來決定RBF單元的均值和方差。

      不同於sigmoidal的單元能夠覆蓋整個空間,一個RBF單元只能覆蓋輸入空間的一個小的局部區域。這帶來的優勢就是學習可以更快。RBF單元通常可以用來形成一個更好的基函數的集合,並用來對輸入空間進行建模,這比sigmoid單元要好,雖然這是高度問題依賴的。不過另一方面來說,RBF的局部特性在高維空間中可能是個劣勢,因為許多單元需要覆蓋整個空間。所以通常來說RBF單元更適合在高層(低維度),而sigmoid適合在低層(高維度)中。

1.5 梯度下降的收斂

1.5.1 一個簡短的原理介紹

      我們先簡單介紹下對於一維的梯度下降更新式子:

                                                                   (1.5.1.1)

我們想要知道學習率是如何影響收斂和學習速率的。圖1.6可以看到幾個不同的學習率下的學習行為,這期間權重都是已經朝着局部最小前進了:


對於一維的來說,是很容易定義最優學習率的,就如圖1.6b那樣准確的可以一步到位。如果小於那么,步長就比較小了,然后就需要好幾個時間步來收斂,如果位於和 2*之間,那么權重將會圍繞着盤旋,不過最后還是會收斂的(圖1.6c)如果大於其兩倍(圖1.6d),那么步長會大到權重最后遠離,導致結果發散。

     那么到底最優解是多少呢?我們來首先考慮1維的情況,假設可以通過二次函數逼近,可以通過在當前權重的泰勒展開式的一階展開求導得到:

                       (1.5.1.2)

這里。如果是二次的,那么其二階導數就是常量,而且更高階的導數項就是為0。那么將兩邊關於進行求導得到:

                                                           (1.5.1.3)

,並且。得到的解為:

                                                                           (1.5.1.4)

通過(1.5.1.1)式子,我們可以一步就得到最優解:

                                                                                             (1.5.1.5)

也許一個更簡單獲得該結果的方法如圖1.6(ii),其中下面的圖:的梯度為的函數。因為是二次的,梯度就是簡單的一條直線,其中在最小值的時候值為0,並且在當前權重上時是是該線的斜率,並且可以使用標准斜率方程來計算:


通過計算得到式子(1.5.1.4)。

       雖然最速收斂的學習率為,最大學習率可以在不引起發散的時候使用(圖1.6(i)d):


如果不是准確的二次的話,那么式子(1.5.1.2)中更高階的項就不會等於0 了,所以式子(1.5.1.4)只是個近似而已。這種情況下,當使用的時候,需要多次迭代才能定位最小值,不過收斂還是很快的。

      在多維情況中,決定的值是一個更加復雜的事情,因為(1.5.1.5)式子的右邊是一個逆矩陣,而且被稱之為hessian,其中的成分為:


這里,而且等於權重的總的數量。

       是關於的曲率的測量。在二維情況中,關於二次損失的常量的線圍成的是如圖1.7中的橢圓:


的特征向量為其中的主軸和次軸的方向。特征值可以用來計算對應特征方向上的的坡度。

      例子。在最小均方算法中(LMS),我們可以得到一個單層線性網絡,其中的誤差函數為:


這里是訓練向量的個數。這時候的hessian和輸入的協方差居住一樣:


所以,如圖1.8中,的每個特征值同樣可以用來測量協方差或者沿着對應特征方向上輸入的傳播(速度):


        在多維中使用一個標量學習率本身就是有問題的。我們希望學習率能夠足夠大,這樣學習的速度就會很快,而如果太大的話那么權重最好卻會沿着步長的方向發散。為了更詳細的說明該過程,我們和上面一樣對進行擴展。不過這次是位於最小值點上:


對上面式子進行微分,然后使用(1.5.1.1)的更新式子,得到如下結果:


從兩邊減去,得到:


如果是一個變換矩陣,且總是會縮小一個向量(即它的特征值都小於1)那么更新式子就會收斂了。

       這有助於選擇學習率嗎?理想環境下,我們想要在不同的特征方向上有着不同的學習率。如果說特征方向是以權重為坐標軸的方向的話,這還是挺簡單的。在這種情況下,權重都是不耦合的,所以我們可以對每個權重基於他們對應的特征值指定它們自己的學習率。然而,如果權重是耦合的,那么我們首先需要旋轉,使得對角化,即坐標軸是沿着特征方向的(圖1.7b)。這就是之前hessian討論的需要對角化的目的。

      假設是旋轉矩陣:

                                                                                                      (1.5.1.14)

這里是對角化矩陣,並且。損失函數可以寫成:


將坐標系變換成,可以簡化上面的式子得到:


然后轉換后的更新式子就變成了:


注意這里是對角化的,其中的對角成分為。當時, 該等式會收斂。如果對於所有的權重限制成只有一個單一的標量學習率,那么我們必須滿足:


為了防止發散,這里的最大特征值。對於最快收斂來說:


如果小很多,那么沿着方向上收斂就是很慢的。事實上,收斂時間是與條件數成比例的,所以最好的就是傳播的特征值盡可能小。

      然而,因為我們將旋轉成與坐標軸對齊,所以事實上包含了 N 個獨立的1 維等式。所以我們可以對每個獨立的權重選擇不同的學習率。我們發現第 i  個權重的最優的學習率是

1.5.2 例子講解

線性網絡

       圖1.10中是從兩個高斯分布(它們的中心為(-0.4,-0.8)和(0.4和0.8))上采樣得到的100個樣本。該協方差矩陣的特征值分別是0.84和0.036。我們訓練的線性網絡結構為2個輸入、一個輸出、2個權重、1個偏置(圖1.9).使用批量模式的LMS算法。圖1.11中為當訓練的時候使用的學習率分別為1.5和2.5時候的權重軌跡和誤差。注意到學習率會導致發散,所以2.5的時候更會發散。





        圖1.12中的是基於相同的樣本,使用隨機學習而不是批量模式的學習。這里,使用的學習率是0.2。我們可以看到該軌跡比批量模式有更多的噪音,這是因為一次迭代中梯度只算一次。該損失是關於epoch的函數。一個epoch簡單的定義成100個輸入表征,對於隨機學習來說,對應這100個權重的更新。在批量模式中,一個epoch對應一次權重更新。


多層網絡

     圖1.14中為一個非常簡單的多層網絡的結構:1個輸入節點、1個隱藏節點、1個輸出節點。有2個權重和2個偏置。激活函數為


訓練集包含了來自2個類中的10個樣本。兩個類都是高斯分布,他們的標准差為0.4。類1的均值為-1,類2的均值為+1。類1的目標值為-1,類2的目標值為+1.圖1.13是隨機學習的軌跡。

1.5.3 重新審視輸入轉換和誤差表面轉換

       我們可以使用之前介紹的那些結果來決定之前使用的那幾個技巧。

從輸入變量中減去均值

       該技巧是因為在輸入變量中的非0均值會生成一個非常大的特征值。這意味着條件數也會很大,那么損失表面在某些方向上會很深,而在其他方向上很淺,使得收斂會非常慢。該解決方法就是簡單的通過減去他們的均值來預處理輸入。

      對於一個單一的線性神經元,hessian的特征向量(已經減去均值了)指向的是訓練向量群的主軸(圖1.8).在輸入空間中每個不同的方向上有着較大變化的傳播的輸入就會有着較大的條件數,並且學習很慢。所以才需要下面這個技巧

對輸入變量的方差歸一化

      如果輸入變量都是相關的,那么就沒法讓誤差表面成為球面,不過這可能會降低它的中心偏移程度。相關的輸入變量通常會導致的特征向量旋轉到遠離坐標軸(圖1.7a vs 1.7b)所以權重更新是不會解耦的。解耦的權重可以通過“一個權重一個學習率”的方法優化,所以,接着有下面的技巧:

解相關輸入變量

      現在,假設一個神經元的輸入變量都是不相關的,那么該神經元的hessian就是對角化的,並且它的特征值指向坐標軸的方向。在這種情況下,梯度就不是最理想的下降方向了,如圖1.7b。在點P上,該箭頭指向的梯度不是指向最小值的。然而,如果我們讓每個權重有其自己的學習率(等於對應特征值的逆),然后下降的方向就是該點的其他箭頭指向最小值的方向。

對每個權重使用獨立的學習率

1.6 傳統的二階優化方法

      在下面中,我們就簡單的介紹下牛頓,共軛梯度、高斯牛頓、levenberg marquardt 和擬牛頓(BFGS)方法(參考文獻[3,5,11,34]):


1.6.1 牛頓算法

        為了理解Newton的方法,先概括下1.5.1部分的結果。假設有個二次損失函數 (1.5.1.1)如圖1.6(ii)描述的那樣,我們可以按照等式(1.5.1.1)-(1.5.1.3)進行權重更新:

                                                                (1.6.1.1)

因為在真實問題上通常不是二次的,所以學習率的范圍為,當然在這個等式中,hessian矩陣通常也考慮進去了。如果誤差函數是二次的,那么就能一步收斂了。

        通常來說,最小值周圍的能量表面是橢圓的,或者極端情況像一個taco 殼,這些都取決於hessian的情況。一個白化操作(在信號處理的文獻29中眾所周知)可以將該橢圓形狀變化成球形(圖1.15和式子1.5.1.14)。所以式子(1.6.1.1)中的逆hessian在局部的錯誤表面上基本上就是球形的。后面的兩個方法等效於:a)在一個未變換的權重空間中使用newton算法;b)在白化的坐標系系統中使用常用的梯度下降(圖1.15)(參考文獻【19】)

       總結下,如果誤差函數是二次的,那么就可以使用newton算法一次收斂,而且(不同於梯度下降)不受到關於輸入向量的線性變換的影響。這也就是說收斂的時間不受到輸入向量平移、縮放、旋轉的影響。不過這里最大的缺點就是,一個的hessian矩陣必須要存儲起來,而且要求逆,這在每次迭代的時候的復雜度為,所以在變量數量增多之后該方法就不那么實用了。因為誤差函數通常不是二次的,所以不敢保證能夠收斂。如果hessian不是正定的(如果它有一些0或者甚至是負的特征值,那么對應的就是在誤差表面平坦或者某些方向上是向下彎曲的),那么newton算法就會發散了,所以hessian必須是正定的。當然多層網絡的hessian矩陣通常不是每個地方都是正定的。因為這些原因,newton算法的原始形態是不能用來給通用的nn學習的。然而這還是給更復雜的算法提供了很好的見解,如下算法

1.6.2 共軛梯度

在共軛梯度優化中有幾個重要的特性:a)這是一個方法;b)不需要顯式的使用hessian;c)試圖在基於之前迭代得到的結果的基礎上,最小的破壞之前的結果並尋找下降方向;d)使用線性搜索;e)最重要的是,只能用在批量學習上。

      第三個特性呈現圖1.16中。假設我們挑選了一個下降方向,即,梯度。然后我們沿着這個方向進行最小化(線性搜索)。隨后,我們接着找另一個方向,該方向上梯度不會改變它的方向,不過會改變它的length(共軛方向),因為沿着這個方向移動不會破壞之前迭代得到的結果。在第k 次迭代的下降方向的計算如下:

                                                                                      (1.6.2.1)

這里的選擇式子有下面兩種:fletcher 和reeves(參考文獻 34):


或者polak 和 ribiere:


如果滿足下面的式子,那么兩個方向就是共軛的:


即共軛方向是在同一個hessian矩陣的空間中的正交方向(圖1.17).對於收斂來說,在兩個選擇中重要的就是它們都是一個很好的線性搜索過程。對於一個完美的有着N個變量的二次函數,可以證明只要N步就能收斂。對於非二次函數來說,polak 和ribiere 的選擇更加的魯棒。共軛梯度(1.6.2.1)同樣可以被看成是在nn訓練中選擇的動量項。該方法在當數據量中等,並且數據中冗余不太多時,使用多層網絡可以很成功。通常的應用范圍包括函數逼近、機器人控制[39]、時序預測和其他想要高准確的的實值問題等。不過在大的並且冗余的(分類)問題上隨機BP還是更快的。雖然可以使用mini-batch【25】,共軛梯度的主要缺點還是它是一個批量方法(特別是因為線性搜索方法中的准確度要求)。 


1.6.3 擬牛頓(BFGS)

        擬牛頓(BFGS)方法:a)迭代的計算逆hessian的值;b)是一個算法;c)需要線性搜索;d)只用在批量學習上。逆hessian的正定估計可以直接通過使用梯度信息計算而不需要矩陣求逆。算法描述如下:a)首先選擇一個正定矩陣,即;b)然后設置搜索的方向:


c)沿着進行線性搜索,然后得到在時間 t 時的參數更新式子:


最后,d)更新逆矩陣的計算。對比牛頓算法來說,擬牛頓方法只需要梯度信息。而且最成功的擬牛頓算法是broyden-fletcher-glodfarb-shanno(bfgs)。逆hessian的計算的更新規則為:


對一些符號縮寫,得到如下的向量:


雖然如上所說,復雜度為,不過我們仍需要存儲一個的矩陣,所以該算法值適用於小的網絡,並且沒有冗余的訓練集的情況。近年來許多變種提出來就是為了減少存儲的需要([3])

1.6.4 高斯牛頓和levenberg marquardt

        高斯牛頓和levenberg marquardt 算法:a)使用平方jacobi逼近;b)主要設計用於批量學習;c)復雜度為;d)最重要的,他們只用於均值平方誤差損失函數。高斯牛頓就像牛頓算法一樣,不過這里的hessian是通過jacobian的平方逼近計算的(在1.7.2節有更詳細的討論):


levenberg marquardt 方法就像是高斯牛頓一樣,不過如果某些特征值很小的話,它有一個正則化參數可以防止其爆炸,:


這里 是單位矩陣。高斯牛頓的方法對於二次損失函數來說是有效的,同時與使用kullback-leibler損失的一個相似的過程被稱之為自然梯度(natural gradient ,【1,2,44】)

1.7 在多層網絡中hessian信息的計算技巧

         這節介紹幾個用來計算全或者部分hessian矩陣的方法:a)有限差分方法;b)平方jacobian逼近(高斯牛頓和levenberg-marquardt 算法);c)hessian對角化的計算;d)在不計算hessian矩陣的情況下計算hessian矩陣與向量的乘積。其他能夠計算全hessian矩陣的半分析方法這里就不介紹了,因為他們相對來說很復雜,而且需要許多的前饋/反向傳播([5,8])。

1.7.1 有限差分

        hessian的第k 行可計算為:


這里是一個只有第k 個元素為1 而其他位置為0的向量。這可以簡單的用一個組合方法來實現:a)通過多次前饋和反向傳播步驟,計算總的梯度;b)在第 k 參數上加上,然后再次計算梯度;c)兩者的結果相減,並除以。因為這存在的數值誤差會導致hessian計算的結果不會那么完美對稱。這時候需要如下進行對稱化。

1.7.2 gauss-牛頓的平方jacobian逼近和levenberg-marquardt 算法

        假設一個均值平方損失函數:


那么梯度為:


生成的hessian矩陣為:


一個簡單的得到hessian矩陣的逼近方法為使用jacobian的平方形式,其中該jacobian矩陣是一個半正定矩陣,其維度為:


可以看出之前的hessian的第二項被丟棄掉了,這等效於是假設該網絡是一個關於權重參數的線性函數。再一次提醒,這可以通過jacobian的第 k 列很好的實現:a)先前饋傳播;b)然后設置第k 個輸出單元的激活值為1,其他的為0;c)采用BP方法然后累加計算的梯度。

1.7.3 回向傳播二階導數

       我們先來考慮一個多層系統,其中每層有個輸入,個輸出和個參數,函數形式為:。現在假設我們已知了,這是一個的矩陣。然后可以很容易的計算該矩陣:


我們可以把該式子右邊第二項丟棄,然后得到的hessian估計矩陣是半正定的。如果我們忽略其他的部分,只保留的對角線部分的項:


同樣的,采用相似的求導方法,可以得到乘以的矩陣:

1.7.4 在nn中回向傳播對角化的hessian

        在文獻[4,18,19]中介紹了如何用BP來計算對角化的hessian矩陣。假設網絡中每一層都有函數形式為:(圖1.18的sigmoidal網絡)。使用高斯牛頓逼近(丟棄包含的項),我們可以得到:


(個人:這里應該少了等號)

上面是一個高斯的非線性函數,如圖1.18,對於RBF網絡來說,我們得到的:



對角化二階導數的損失計算可以通過將這些式子從最后一層到第一層進行傳統的BP傳播計算得到,只是這時候不使用權重化和(weighted sums)的權重而已,該技術被用在“最優化大腦損傷”修剪過程([21]):

 

1.7.5 計算hessian與一個向量的乘積

        在許多方法中都用到了hessian矩陣,而通常也會涉及到hessian與向量相乘的情況。有趣的是,可以通過不計算hessian自身而直接計算得到這樣的乘積結果。對於任意向量來說,可以使用有限差分方法達到這樣的目的:


只是用了2次梯度計算(在點上),這可以很容易的通過BP計算得到(是一個小的常量)。

        該方法可以用來計算的主特征向量和特征值。通過迭代:


向量可以收斂成的最大特征向量,而對應着的特征值(【10,14,23】).文獻[33]中有個更准確的方法:a)不需要使用有限差分;b)復雜度也差不多。

1.8 多層網絡中hessian的分析

        理解之前介紹的這些技巧如何影響hessian也是個有意思的事情,即hessian是如何隨着結構和實現的細節變化而改變的。通常來說,hessian的特征值分布看起來像圖1.20中概述的一樣:一些小的特征值,許多中等的特征值,一些非常大的特征值。現在我們認為大的特征值是會引起訓練過程中的問題的([22,23]):

       a):輸入或者神經元的狀態的均值是非0的([22])

      b):層到層之間二階導數變化較大;

     c):狀態變量之間是相關的




        為了例證上面的三個理由,圖1.20顯示的是在OCR數據上訓練的網絡的特征值分布情況。可以很清楚的看到特征值跨度還是挺大的(圖1.19),我們可以發現介於第一和第八的特征值之間的比例居然是8。特征值分布的長尾巴(圖1.20)是比較麻煩的,因為介於最大和最小特征值之間的比例會限制網絡的訓練問題。一個較大的比例能夠說明對應着橢圓形狀的誤差函數的軸上的差距:越大的比例,那么就能找到更多taco-shell形狀的最小值,極端情況下這在短軸方向上會很深,而在長軸上會很陡峭。

      在多層網絡中hessian矩陣的另一個特性就是在層之間的傳播了。圖1.21中我們可以粗略看到hessian的形狀變化,是如何從第一層相對較平而變成最后一層相對陡峭的樣子的。這會影響學習的速度並且有助於解釋低層中學習的緩慢和最后層學習的快速(有時候會震盪)的現象。一種彌補這樣學習狀態的方法是使用逆對角化hessian矩陣來控制學習率。(1.6節)

1.9 將二階方法應用到多層網絡中

       在介紹如何將二階方法用於訓練大型網絡之前,先來重復下一些關於傳統二階方法不好的事實:使用全hessian信息的方法(高斯牛頓、levenberg-marquardt和BFGS)只可以用在非常小的網絡上,並以批量模式進行學習,然而,這些小網絡恰恰卻不是最需要加速的網絡。大多數二階方法(共軛梯度,BFGS)需要一個線性搜索,所以沒法用在隨機學習中。從我們的經驗來看,我們知道在大型的分類問題上,經過精心設計的隨機梯度下降法是很難被擊敗的。對於更小的那些需要准確的實數輸出的任務來說,例如函數逼近或者控制問題,我們發現共軛梯度(polak-ribiere)可以將速度、可靠性和簡單性結合的最好。在文獻【17,25,31】中有幾個通過minibatch的方法將共軛梯度用在大型、冗余問題上。共軛梯度的一個變種(縮放cg):其中的線性搜索過程被1D的levenberg marquardt 類型的算法所代替[24]。

1.9.1 一個隨機對角化levenberg marquardt 方法

        為了得到levenberg marquardt算法的隨機版本,一個想法就是基於每個參數的二階導數的運行時估計(running estimate)基礎上計算對角化hessian。這里的二階導數可以通過BP計算得到,一旦我們有了這些導數的運行時估計,我們就能用他們計算每個參數各自獨立的學習率:

                                                                                                  (1.9.1.1)

這里表示全局學習率,是關於的對角化二階導數的運行時估計。是防止二階導數太小而造成學習率爆炸的情況,即當在誤差函數的平緩表面上優化的時候。該運行時估計可以如下計算:


這里是一個小的常量,用來決定使用的內存的數量。這里的二階導數可以先於訓練被直接計算,例如,一個訓練集的子集.因為它們的變化是很慢的,所以他們只需要在每幾個epoch上重新計算即可。注意這里基於常規BP上的額外的損失(cost)是可以忽略不計的,而收斂比一個精心設計的隨機梯度算法要快3倍。

      在圖1.22和1.23中,分別為基於同一個樣本集上兩個不同的學習率集合上的隨機對角化levenberg marquardt 方法的收斂(1.9.1.1)過程。顯然圖1.22中的實驗比圖1.23中的波動要少,這是因為使用了更小的學習率。



1.9.2 計算hessian的主特征值/向量

        下面我們會介紹三個關於計算hessian矩陣的主特征值/向量(而不涉及到計算hessian自身)的技巧,在之前的1.4.7節中,我們介紹了一個通過均化(【28】)來逼近hessian最小特征向量(不涉及到計算hessian自身)的方法。

    power  方法:先隨機初始化向量,然后迭代:


最后收斂到主特征向量(或者主特征空間中的一個向量),收斂到對應的特征值[10,14].


     泰勒展開:另一個方法即:小擾動的梯度同樣可以得到的主特征向量:


這里是一個小的常量。該過程迭代一次需要在訓練集中的每個樣本上兩次前饋和兩次反向傳播。

     在線計算:該規則是通過使用運行時 平均(running average) 來快速的得到平均 hessian(average hessian)的最大特征值:




        總結,特征值/向量的計算步驟如下:

       1、對隨機初始化;

       2、通過一個輸入計算其對應的輸出,一次前饋和反向傳播,然后將梯度存儲起來;

      3、加到當前權重向量上;

     4、在執行一次前饋和反向傳播,不過其中的權重向量是有輕微擾動的(即步驟3的結果),然后將梯度存儲起來;

     5、計算差分然后更新特征向量的運行時平均(running average);

     6、循環步驟2-6,直到得到了一個合理穩定的

     7、得到最優學習率:



在圖1.24中,我們看到特征值的改變就如手寫字符識別任務中nn的樣本表征的個數的函數一樣。實際上,我們調整運行時平均的leak size 是為了得到更小的波動(如圖中所示)。在圖中我們看到在100個樣本表征之后,特征值趨於穩定,即學習率也穩定了。從該實驗中,我們觀察到在訓練的時候平均hessian的擾動是很小的。

       在圖1.25和1.26中,我們先以相同的條件初始化,然后通過預定義的常量乘以預測的學習率得到的學習率在定量的epoch上訓練。常量1 (即,使用預測的最優學習率)的選擇得到的殘差總是接近最優常量得到的誤差,換句話說,“預測的最優學習率”總是最優的。

1.10 總結

        針對上面的這些提到的內容,在面對多層網絡訓練問題的時候的步驟通常為:

       a)打亂樣本的順序;

        b)通過減去均值來中心化輸入的變量;

        c)歸一化輸入變量使其標准差為1;

        d)如果可以的話,讓輸入變量之間解相關(即盡可能的不相關);

        e)挑選一個有着sigmoid函數的網絡;

        f)將目標值設置成sigmoid能夠表示的范圍,通常是 正1 和負 1;

       g)通過前面描述的隨機初始化權重。

在選擇網絡的時候:

       a)如果訓練集很大(超過100個樣本)並且很冗余,如果任務是分類,那么使用隨機梯度算法,並謹慎的進行調整,或者使用隨機對角levenberg marquardt 方法;

       b)如果訓練集不是很大的話,或者任務是回歸,那么使用共軛梯度方法。

傳統的二階方法在幾乎所有的情況下都是不太實用的。多層網絡中的隨機梯度下降法的非線性動態性(其對泛化的程度有很重要關系)還是不能夠很好的被理解,所以還是需要更多的原理性工作和對應的實驗性工作。



參考文獻:

[1] Amari, S.: Neural learning in structured parameter spaces — natural riemannian gradient. In: Mozer, M.C., Jordan, M.I., Petsche, T. (eds.) Advances in Neural Information Processing Systems, vol. 9, p. 127. MIT Press (1997)

[2] Amari, S.: Natural gradient works efficiently in learning. Neural Computation 10(2), 251–276 (1998)

[3] Battiti, R.: First- and second-order methods for learning: Between steepest descent and newton’s method. Neural Computation 4, 141–166 (1992)

[4] Becker, S., LeCun, Y.: Improving the convergence of backbropagation learning with second oder metho ds. In: Touretzky, D., Hinton, G., Sejnowski, T. (eds.) Proceedings of the 1988 Connectionist Models Summer School, pp. 29–37. Lawrence Erlbaum Associates (1989)

[5] Bishop, C.M.: Neural Networks for Pattern Recognition. Clarendon Press, Oxford (1995)

[6] Bottou, L.: Online algorithms and stochastic approximations. In: Saad, D. (ed.) Online Learning in Neural Networks (1997 Workshop at the Newton Institute).
The Newton Institute Series. Cambridge University Press, Cambridge (1998)

[7] Broomhead, D.S., Lowe, D.: Multivariable function interpolation and adaptive networks. Complex Systems 2, 321–355 (1988) 1. Efficient BackProp 47

[8] Buntine, W.L., Weigend, A.S.: Computing second order derivatives in Feed- Forward networks: A review. IEEE Transactions on Neural Networks (1993) (to
appear)

[9] Darken, C., Moody, J.E.: Note on learning rate schedules for stochastic optimization.In: Lippmann, R.P., Moody, J.E., Touretzky, D.S. (eds.) Advances in Neural
Information Processing Systems, vol. 3, pp. 832–838. Morgan Kaufmann, San Mateo (1991)

[10] Diamantaras, K.I., Kung, S.Y.: Principal Component Neural Networks. Wiley,New York (1996)

[11] Fletcher, R.: Practical Methods of Optimization, ch. 8.7: Polynomial time algorithms, 2nd edn., pp. 183–188. John Wiley & Sons, New York (1987)

[12] Geman, S., Bienenstock, E., Doursat, R.: Neural networks and the bias/variance dilemma. Neural Computation 4(1), 1–58 (1992)

[13] Goldstein, L.: Mean square optimality in the continuous time Robbins Monro procedure. Technical Report DRB-306, Dept. of Mathematics, University of Southern
California, LA (1987)

[14] Golub, G.H., Van Loan, C.F.: Matrix Computations, 2nd edn. Johns Hopkins University Press, Baltimore (1989)

[15] Heskes, T.M., Kappen, B.: On-line learning processes in artificial neural networks. In: Tayler, J.G. (ed.) Mathematical Approaches to Neural Networks, vol. 51, pp.
199–233. Elsevier, Amsterdam (1993)

[16] Jacobs, R.A.: Increased rates of convergence through learning rate adaptation. Neural Networks 1, 295–307 (1988)

[17] Kramer, A.H., Sangiovanni-Vincentelli, A.: Efficient parallel learning algorithms for neural networks. In: Touretzky, D.S. (ed.) Proceedings of the 1988 Conference
on Advances in Neural Information Processing Systems, pp. 40–48. Morgan Kaufmann, San Mateo (1989)

[18] LeCun, Y.: Modeles connexionnistes de l’apprentissage (connectionist learning models). PhD thesis, Universitè P. et M. Curie, Paris VI (1987)

[19] LeCun, Y.: Generalization and network design strategies. In: Pfeifer, R., Schreter, Z., Fogelman, F., Steels, L. (eds.) Proceedings of the International Conference
Connectionism in Perspective, University of Zürich, October 10-13. Elsevier, Amsterdam(1988)

[20] LeCun, Y., Boser, B., Denker, J.S., Henderson, D., Howard, R.E., Hubbard, W.,Jackel, L.D.: Handwritten digit recognition with a backpropagation network. In:
Touretsky, D.S. (ed.) Advances in Neural Information Processing Systems, vol. 2.Morgan Kaufmann, San Mateo (1990)

[21] LeCun, Y., Denker, J.S., Solla, S.A.: Optimal brain damage. In: Touretsky, D.S. (ed.) Advances in Neural Information Processing Systems, vol. 2, pp. 598–605
(1990)

[22] LeCun, Y., Kanter, I., Solla, S.A.: Second order properties of error surfaces. In:Advances in Neural Information Processing Systems, vol. 3. Morgan Kaufmann,
San Mateo (1991)

[23] LeCun, Y., Simard, P.Y., Pearlmutter, B.: Automatic learning rate maximization by on-line estimation of the hessian’s eigenvectors. In: Giles, Hanson, Cowan (eds.)
Advances in Neural Information Processing Systems, vol. 5. Morgan Kaufmann, San Mateo (1993)

[24] Møller, M.: A scaled conjugate gradient algorithm for fast supervised learning. Neural Networks 6, 525–533 (1993)

[25] Møller, M.: Supervised learning on large redundant training sets. International Journal of Neural Systems 4(1), 15–25 (1993) 48 Y.A. LeCun et al.

[26] Moody, J.E., Darken, C.J.: Fast learning in networks of locally-tuned processing units. Neural Computation 1, 281–294 (1989)

[27] Murata, N.: PhD thesis, University of Tokyo (1992) (in Japanese) 

[28] Murata, N., Müller, K.-R., Ziehe, A., Amari, S.: Adaptive on-line learning in changing environments. In:Mozer, M.C., Jordan, M.I., Petsche, T. (eds.) Advances
in Neural Information Processing Systems, vol. 9, p. 599. MIT Press (1997)

[29] Oppenheim, A.V., Schafer, R.W.: Digital Signal Processing. Prentice-Hall, Englewood Cliffs (1975)

[30] Orr, G.B.: Dynamics and Algorithms for Stochastic learning. PhD thesis, Oregon Graduate Institute (1995)

[31] Orr, G.B.: Removing noise in on-line search using adaptive batch sizes. In: Mozer, M.C., Jordan, M.I., Petsche, T. (eds.) Advances in Neural Information Processing
Systems, vol. 9, p. 232. MIT Press (1997)

[32] Orr, M.J.L.: Regularization in the selection of radial basis function centers. Neural Computation 7(3), 606–623 (1995)

[33] Pearlmutter, B.A.: Fast exact multiplication by the hessian. Neural Computation 6, 147–160 (1994)

[34] Press,W.H., Flannery, B.P., Teukolsky, S.A., Vetterling,W.T.: Numerical Recipies in C: The art of Scientific Programming. Cambridge University Press, Cambridge
(1988)

[35] Saad, D. (ed.): Online Learning in Neural Networks (1997Workshop at the Newton Institute). The Newton Institute Series. Cambridge University Press, Cambridge
(1998)

[36] Saad, D., Solla, S.A.: Exact solution for on-line learning in multilayer neural networks. Physical Review Letters 74, 4337–4340 (1995)

[37] Sompolinsky, H., Barkai, N., Seung, H.S.: On-line learning of dichotomies: algorithms and learning curves. In: Oh, J.-H., Kwon, C., Cho, S. (eds.) Neural
Networks: The Statistical Mechanics Perspective, pp. 105–130. World Scientific, Singapore (1995)

[38] Sutton, R.S.: Adapting bias by gradient descent: An incremental version of deltabar- delta. In: Swartout, W. (ed.) Proceedings of the 10th National Conference on
Artificial Intelligence, pp. 171–176. MIT Press, San Jose (July 1992)

[39] van der Smagt, P.: Minimisation methods for training feed-forward networks. Neural Networks 7(1), 1–11 (1994)

[40] Vapnik, V.: The Nature of Statistical Learning Theory. Springer, New York (1995)

[41] Vapnik, V.: Statistical Learning Theory. Wiley, New York (1998)

[42] Waibel, A., Hanazawa, T., Hinton, G., Shikano, K., Lang, K.J.: Phoneme recognition using time-delay neural networks. IEEE Transactions on Acoustics, Speech, and Signal Processing ASSP-37, 328–339 (1989)

[43] Wiegerinck, W., Komoda, A., Heskes, T.: Stochastic dynamics of learning with momentum in neural networks. Journal of Physics A 27, 4425–4437 (1994)

[44] Yang, H.H., Amari, S.: The efficiency and the robustness of natural gradient descent learning rule. In: Jordan, M.I., Kearns, M.J., Solla, S.A. (eds.) Advances in
Neural Information Processing Systems, vol. 10. MIT Press (1998) 









 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM