「反向傳播」演算法不行還有什麼行?網友已對Hinton的觀點「炸鍋」
GIF/1.7M
圖:pixabay
「機器人圈」編譯:嗯~阿童木呀、多啦A亮
昨天的文章相信大家都看了吧,如果沒有,請點擊此鏈接(http://mp.weixin.qq.com/s/RGs4bP1r7rV3vGg3qwEKYQ)閱讀。前兩天,大神Geoffrey Hinton對於反向傳播演算法發表了相關看法,認為「反向傳播不一定促進是AI發展的必要方式」。
此言論一出,可謂是一石激起千層浪。這不,在reddit上,大家對Hinton的觀點爭論不休。
討論的主要方向是詢問如果說「反向傳播演算法」不行,那有沒有可選的備用方案呢?而在這波討論浪潮中,我希望我們能夠回答這樣一個問題:反向傳播存在的問題是什麼?實際上,大家並沒能夠真正回答這個問題,而只是簡單提及了無監督學習所存在的難題。「機器人圈」將其編譯如下。
這是我最初提出的想法:
反向傳播本質上所固有的問題:
?連續學習問題(反向傳播會忘記之前學過的知識)
?模塊化(反向傳播自動使用所有可用的連接)(不是非常清楚,可刪除)
?對特定噪音的魯棒性(對抗樣本)
目前,存在的問題引起了很大的困難,我們不確定是否可以使用反向傳播:
?學習推理/規劃
?無監督學習
你同意這些嗎?你在工作中遇到的其他的問題是什麼?
網友們的評論也是相當精彩:
NicolasGuacamole:含有連續的部分,並且要求架構由(幾乎)完全可微的部分組成。
BullockHouse回復NicolasGuacamole:一般來說,似乎如果我們可以通過本地的學習規則獲得類似反向傳播的結果,那麼它會有很多好處。架構可能會在不破壞任何東西的情況下變得相當怪異和不可微,而梯度雜訊和幅度的問題將是無關緊要的。在生物學上也更現實,對於那些關心這種事情的人來說。
asobolev:反向傳播只是一種有效地計算梯度的方法,而不是魔法黑盒子。
1、連續學習的問題源於我們訓練神經網路的一般方法。隨機優化假設梯度樣本來自相同的分布。如果你經歷了分布轉移,那麼沒有理由期望該模式記住過去的東西。
2、我沒有搞懂你關於模塊化的聲明。你可以使用具有多個「頭」的複雜架構,因此當優化其中一個時,網路的其他部分不受影響。
3、同樣,不清楚對抗性的例子是來自於優化方法,還是來自模型本身的複雜性。
SGD(具有反向傳播演算法以計算梯度)是一種非常有效和強大的方法,可以讓我們訓練不同的架構。在優化理論中有一個定理,一般來說,零階優化方法(不使用任何損耗梯度信息的方法)的性能比一階方法(那些使用梯度的方法)要差得多,所以非梯度方法有可能在函數的特殊類別中運行得很好,但仍然有一個問題,如果這類將足以包含所有類型的架構,我們就使用現在的。
mljoe:我認為用更多奇特的想法來探索反向傳播很有趣。例如,不要在每次迭代中訪問或調整整個參數空間。我認為現在大多數神經網路的一個大問題是參數空間與計算成本有關,這限制了網路的規模以及它們可以保留多少信息。如果我們有一個更好的方式只專註於每次迭代的相關部分,我們就可以擁有百萬兆位元組的參數空間。這也可能解決災難性遺忘(catastrophic forgetting),這對於實現更多「真實」AI的廣義/多任務模型很重要。
NichG:我看到的主要問題似乎是關於反向傳播本身(而不是有關如線性代數或連接驅動的東西或...),與增加信息流相比,減少信息流有很強的傾向。
例如,我試圖為N維高斯獨立同分布向量分量(N-dimensional Gaussian-iid-component vector)製作一個多層自動編碼器。我發現,隨著網路的深入,除非中間層至少有一些像2N神經元,網路將無法在不丟失信息的情況下傳輸向量。這是一個非常有趣的例子,但是當嘗試實施智能體時,我也遇到了同樣的問題——要求神經網路使用反向傳播來增加通道容量比要求降低通道容量要困難得多。
我認為這基本上是因為如果我有一些像y = w_1 * w_2 * w_3 * ... * w_n * x和損失L =(yx)…^2,如果任何兩個w_i係數都為零,那麼所有的導數項dL / dw_i = 0,並且該函數變得不可學習。因此,本質上,反向傳播發現如何增加信息流的能力,受到至少以某種痕迹形式開始存在的信息流的約束。這可能是為什麼非常大的層是有用的——它們減少了輸入中有一些信息兩次被乘以零的機會,因此變得不可恢復。
我認為原文中提到的其他內容在很大程度上可以通過架構選擇來確定的。連續學習可以通過匹配網路、記憶增強網路、深度KNN或神經統計學等技術來解決,將非固定問題轉化為固定部分(學習模型空間)和推理部分(學習哪個模型是當前適用的)。模塊化可以被明確地設計到一個架構中,相反如果有一些簡單的正則化術語可以被添加到損失中,以鼓勵模塊化(如同你可以通過L1損失獲得稀疏性),對此我不會感到驚訝。對抗性示例的魯棒性我認為與信息流的維度的變化有關——當你從大層到小層時,獨立同分布(iid)和相關刺激之間的差異變得非常大,這意味著非常弱的刺激可以產生很強的影響。對於學習推理和規劃,最近有一些訓練生成模型(使用反向傳播)的文章,以產生這些能力,然後用它來解決諸如推箱子遊戲Sokoban之類的東西。對於無監督學習,相比反向傳播演算法來說,我認為這與定義有用的隱形損失函數更有關係。比如,生成式對抗網路GAN,使用反向傳播演算法,本質上是無監督學習器。
Lawrencelot:梯度消失(Vanishing gradients)、需要多次迭代,這都是存在的問題,諸如儲備池計算(reservoir computing)和這超限學習機等隨機投影方法可以將這些問題「解決」,但同時也會引入新的問題。
serge_cell:這些都不是反向傳播或梯度下降的問題,而是損失函數和數據集泛化的問題。
Jostmey:我認為Hinton更多地是在闡述我們該如何計算梯度,而不是一個新的參數擬合方法。我認為Hinton知道,在生物神經元中,信息只能從突觸前傳遞到突觸後的細胞中,這意味著生物神經元不能將信息從一個神經元反向傳播到到前一個神經元。所以Hinton是在追求一個更好的方法,只需要一個正向傳播即可(也許是在遞歸循環中設置?)。
namp243:主要是缺乏用於監督學習的標註數據,大多數問題之所以產生就是因為沒有標籤,而我們需要更為先進的無監督方法。
Nickandross回復namp243:也許你需要專門僱傭一個實習生來製作數據集。(我只是在開玩笑)
Megatron_McLargeHuge:我把這個問題理解為:「我們如何超越性地對基於導數的完整模型進行訓練,還要考慮到最後的計算損失?」
也就是說,我們如何才能只訓練模型的一部分而得以優化局部標準,然後將它們組合起來以解決各種問題?遷移學習和小樣本學習都是其中的一部分。從長遠來看,我們需要圍繞自動編碼器和記憶構建相應的方法,從而在我們確定需要處理哪些任務之前,知道該如何從數據流中提取信息。
此外,我們可以將正則化視為反向傳播上的一個黑客,以更改參數搜索中的步驟方向。與梯度剪切(clipping)和動量(Momentum)相同。
當然,可能還會有其他「本地黑客」選擇將包含某種信用分配的參數進行更新,而不是讓模型競賽的所有部分包含任何可用信息,包括雜訊等。我們可以優化模型的一部分,以傳遞那些最終應該有用的信息,而不是不顧長遠利益只貪戀眼前看似有用的信息。
※Hinton大神對反向傳播「深表懷疑」,BP演算法難道要慘遭「摒棄」嗎?
※手勢識別如何搞定?我們需要基於大型視頻資料庫的端到端的學習
※圖像分類、目標檢測、圖像分割、圖像生成……一文「計算機視覺」全分析
※TensorFlow 1.3的Dataset和Estimator?谷歌大神來解答
TAG:機器人圈 |