機器學習全靠調參?這個思路已經過時了。

谷歌大腦團隊發佈了一項新研究:

只靠神經網絡架構搜索出的網絡,不訓練,不調參,就能直接執行任務。

這樣的網絡叫做WANN,權重不可知神經網絡。

它在MNIST數字分類任務上,未經訓練和權重調整,就達到了92%的準確率,和訓練後的線性分類器表現相當。

除了監督學習,WANN還能勝任許多強化學習任務

團隊成員之一的大佬David Ha,把成果發上了推特,已經獲得了1300多贊:

David Ha,把成果發上了推特,已經獲得了1300多贊

那麼,先來看看效果吧。

效果

谷歌大腦用WANN處理了3種強化學習任務。

(給每一組神經元,共享同一個權重。)

第一項任務,Cart-Pole Swing-Up。

這是經典的控制任務,一條滑軌,一台小車,車上一根杆子。

這是經典的控制任務,一條滑軌,一台小車,車上一根杆子。

小車在滑軌的範圍里跑,要把杆子從自然下垂的狀態搖上來,保持在直立的位置不掉下來。

(這個任務比單純的Cart-Pole要難一些:

Cart-Pole杆子的初始位置就是向上直立,不需要小車把它搖上來,只要保持就可以。)

難度體現在,沒有辦法用線性控制器 (Linear Controller) 來解決。每一個時間步的獎勵,都是基於小車到滑軌一頭的距離,以及杆子擺動的角度

WANN的最佳網絡 (Champion Network) 長這樣:

它在沒有訓練的狀態下,已經表現優異:

它在沒有訓練的狀態下,已經表現優異

表現最好的共享權重,給了團隊十分滿意的結果:只用幾次擺動便達到了平衡狀態。

第二項任務,Bipedal Waker-v2。

一隻兩足「生物」,要在隨機生成的道路上往前走,越過凸起,跨過陷坑。獎勵多少,就看它從出發到掛掉走了多長的路,以及電機扭矩的成本 (為了鼓勵高效運動) 。

一隻兩足「生物」,要在隨機生成的道路上往前走,越過凸起,跨過陷坑。獎勵多少,就看它從出發到掛掉走了多長的路,以及電機扭矩的成本 (為了鼓勵高效運動) 。

每條腿的運動,都是由一個髖關節、和一個膝關節來控制的。有24個輸入,會指導它的運動:包括「激光雷達」探測的前方地形數據,本體感受到的關節運動速度等等。

比起第一項任務中的低維輸入,這裡可能的網絡連接就更多樣了:

所以,需要WANN對從輸入到輸出的布線方式,有所選擇。

這個高維任務,WANN也優質完成了。

你看,這是搜索出的最佳架構,比剛才的低維任務複雜了許多:

它在-1.5的權重下奔跑,長這樣:

第三項任務,CarRacing-v0。

這是一個自上而下的 (Top-Down) 、像素環境里的賽車遊戲。

一輛車,由三個連續命令來控制:油門、轉向、制動。目標是在規定的時間裏,經過儘可能多的磚塊。賽道是隨機生成的。

研究人員把解釋每個像素 (Pixel Interpretation) 的工作交給了一個預訓練的變分自編碼器 (VAE) ,它可以把像素表徵壓縮到16個潛在維度。

這16維就是網絡輸入的維度。學到的特徵是用來檢測WANN學習抽象關聯 (Abstract Associations) 的能力,而不是編碼不同輸入之間顯式的幾何關係。

這是WANN最佳網絡,在-1.4共享權重下、未經訓練的賽車成果:

雖然路走得有些蜿蜒,但很少偏離跑到。

而把最佳網絡微調一下,不用訓練,便更加順滑了:

總結一下,在簡單程度和模塊化程度上,第二、三項任務都表現得優秀,兩足控制器只用了25個可能輸入中的17個,忽略了許多LIDAR傳感器和膝關節的速度。

WANN架構不止能在不訓練單個權重的情況下完成任務,而且只用了210個網絡連接 (Connections) ,比當前State-of-the-Art模型用到的2804個連接,少了一個數量級。

做完強化學習,團隊又瞄準了MNIST,把WANN拓展到了監督學習的分類任務上。

一個普通的網絡,在參數隨機初始化的情況下,MNIST上面的準確率可能只有10%左右。

而新方法搜索到的網絡架構WANN,用隨機權重去跑,準確率已經超過了80%

如果像剛剛提到的那樣,餵給它多個權值的合集,準確率就達到了91.6%

對比一下,經過微調的權重,帶來的準確率是91.9%,訓練過的權重,可以帶來94.2%的準確率。

再對比一下,擁有幾千個權重的線性分類器:

也只是和WANN完全沒訓練、沒微調、僅僅餵食了一些隨機權重時的準確率相當。

論文里強調,MINST手寫數字分類是高維分類任務。WANN表現得非常出色。

並且沒有哪個權值,顯得比其他值更優秀,大家表現得十分均衡:所以隨機權重是可行的

不過,每個不同的權重形成的不同網絡,有各自擅長分辨的數字,所以可以把一個擁有多個權值的WANN,用作一個自給自足的合集 (Self-Contained Ensemble) 。

實現原理

不訓練權重參數獲得極高準確度,WANN是如何做到的呢?

神經網絡不僅有權重偏置這些參數,網絡的拓撲結構、激活函數的選擇都會影響最終結果。

谷歌大腦的研究人員在論文開頭就提出質疑:神經網絡的權重參數與其架構相比有多重要?在沒有學習任何權重參數的情況下,神經網絡架構可以在多大程度上影響給定任務的解決方案。

為此,研究人員提出了一種神經網絡架構的搜索方法,無需訓練權重找到執行強化學習任務的最小神經網絡架構。

谷歌研究人員還把這種方法用在監督學習領域,僅使用隨機權重,就能在MNIST上實現就比隨機猜測高得多的準確率。

論文從架構搜索、貝葉斯神經網絡、算法信息論、網絡剪枝、神經科學這些理論中獲得啟發。

為了生成WANN,必須將權重對網絡的影響最小化,用權重隨機採樣可以保證最終的網絡是架構優化的產物,但是在高維空間進行權重隨機採樣的難度太大。

研究人員採取了「簡單粗暴」的方法,對所有權重強制進行權重共享(weight-sharing),讓權重值的數量減少到一個。這種高效的近似可以推動對更好架構的搜索。

操作步驟

解決了權重初始化的問題,接下來的問題就是如何收搜索權重不可知神經網絡。它分為四個步驟:

1、創建初始的最小神經網絡拓撲群。

2、通過多個rollout評估每個網絡,並對每個rollout分配不同的共享權重值。

3、根據性能和複雜程度對網絡進行排序。

4、根據排名最高的網絡拓撲來創建新的群,通過競爭結果進行概率性的選擇。

然後,算法從第2步開始重複,在連續迭代中,產生複雜度逐漸增加的權重不可知拓撲(weight agnostic topologies )。

拓撲搜索

用於搜索神經網絡拓撲的操作受到神經進化算法(NEAT)的啟發。在NEAT中,拓撲和權重值同時優化,研究人員忽略權重,只進行拓撲搜索操作。

上圖展示了網絡拓撲空間搜索的具體操作:

一開始網絡上是最左側的最小拓撲結構,僅有部分輸入和輸出是相連的。

然後,網絡按以下三種方式進行更改:

1、插入節點:拆分現有連接插入新節點。

2、添加連接:連接兩個之前未連接的節點,添加新連接。

3、更改激活函數:重新分配隱藏節點的激活函數。

圖的最右側展示了權重在[2,2]取值範圍內可能的激活函數,如線性函數、階躍函數、正弦餘弦函數、ReLU等等。

權重依然重要

WANN與傳統的固定拓撲網絡相比,可以使用單個的隨機共享權重也能獲得更好的結果。

雖然WANN在多項任務中取得了最佳結果,但WANN並不完全獨立於權重值,當隨機分配單個權重值時,有時也會失敗。

WANN通過編碼輸入和輸出之間的關係起作用,雖然權重的大小的重要性並不高,但它們的一致性,尤其是符號的一致性才是關鍵。

隨機共享權重的另一個好處是,調整單個參數的影響變得不重要,無需使用基於梯度的方法。

強化學習任務中的結果讓作者考慮推廣WANN方法的應用範圍。他們又測試了WANN在圖像分類基礎任務MNIST上的表現,結果在權重接近0時效果不佳。

有Reddit網友質疑WANN的結果,對於隨機權重接近於0的情況,該網絡的性能並不好,先強化學習實驗中的具體表現就是,小車會跑出限定範圍。

對此,作者給出解釋,在權重趨於0的情況下,網絡的輸出也會趨於0,所以後期的優化很難達到較好的性能。

傳送門

源代碼:
https://github.com/weightagnostic/weightagnostic.github.io

本文轉載於公眾號 人工智能學家,原文地址