以AlphaGo為例,如何理解神經網路的存儲容量(storage capacity)?

監督學習策略網路(SL Policy Network)是AlphaGo的重要組成部分。AlphaGo決策時,總是由策略網路提供一個先驗概率,並作為決策的依據之一。然而,策略網路p(a|s)(其中a=action,s=state)的容量實際上極大。已知圍棋的總合法局面(state)數為~10^170, a~10^2, 因此|p(a|s)|~10^172. 這無疑是一個天文數字。請問深度卷積神經網路是如何「存儲」,並在需要時及時提取這些信息?


自答一個。 @Tattletale 答主說得很好,不過沒有深入到我最想要的方面。我希望能再探討一下。

以一個多層人工神經網路為例,其中的每一個連接線對應一個權值(weight)的參數。神經網路「學習」的過程實質就是,通過調整這些參數去擬合樣本、最小化誤差的過程。在完成學習後,對於任意一個樣本的輸入,神經網路都能依據最終確定的權值給出輸出。

以AlphaGo為例。AlphaGo的策略網路是13層。每一層的神經元(在DCNN里是filter)數量為k (實戰中取k=192),,那麼一共有12k^2個參數構成權值sigma. 在三千萬個樣本(圍棋局面)輸入的過程中,策略網路不斷調整權值中的12k^2個參數,最終將它們確定下來。實戰中,對於任意局面s的輸入,策略網路都能輸出一個矢量a,是為各招法的概率。

換句話說,AlphaGo的策略能夠以10^7個訓練樣本,確定12k^2, 約為5*10^5個參數,能夠正確識別10^170個潛在樣本中的絕大多數(至少現在看來是如此)。這在我看來也是很神奇的。

我想要的答案是,對於某一類神經網路,能否給出一個漸近公式O(f(n)),使得我們在知道參數總數n的情況下,估計該神經網路能夠正確識別樣本數的下限?


神經網路有泛化(generalization)能力。用通俗的語言說,神經網路記住的是規律,而不是訓練集里所有局面下的應法,更不是任何局面下的最佳應法。

如果神經網路(相對於訓練集)太小,會發生underfitting,也就是說找到的規律太粗疏。

如果神經網路(相對於訓練集)太大,會發生overfitting,也就是說記住的規律太多太具體,更像是死板地記住了訓練集里局面與應法的一一映射,不夠抽象。

做圍棋AI的運氣好,拿kgs上(也許再加上gogod和tygem)區區幾十萬局遊戲當訓練集,就可以用一個適當大小的神經網路提取出足夠多的規律。如果我們在公元1800年想做圍棋AI,那麼肯定會碰到數據不夠的情況,必須減小神經網路的規模才能有效訓練,而神經網路規模小了,可以存儲的規律也就少了。

把應用範圍推廣,判斷什麼東西是可以有效訓練的,什麼樣的tuning方法才可以有效訓練,以及訓練集與神經網路大小的關係,都還是算命和鍊金術,離science的程度還有點遠。

補充一個例子:google translate的神經網路版更新,個人估計在碰到小語種的時候會有麻煩,因為小語種的文字資料不夠神經網路塞牙縫的。這就是為什麼他們想方設法要弄zero shot learning,重用大語種的訓練結果,把現成結果硬拿給小語種用。


神經網路當然沒有存儲所有局面的情況。它學習的人類棋譜和它的自我對局共同組成了它的經驗,至於經驗以外的局面怎麼應對要靠舉一反三,也就是泛化。

不過神經網路的存儲容量是個很有意思的問題。比如說,可以考慮一定規模的神經網路,可以學習多大容量的訓練數據。當訓練好的神經網路受到一定損傷,又會失去多少習得的規矩。這些都是值得研究的課題。


直接存儲肯定是不行的。

如果有足夠大的存儲和運算速度,計算機靠硬算就能贏了人類了。

所有的技巧和演算法都在於,怎麼在有限的存儲和有限的計算資源下,取得最大概率的勝利,這時,壓縮存儲,省略調無用和重複的信息就是一直在研究的工作。


推薦閱讀:

機器學習怎麼應用於流行病學研究?
如何評價微軟在Build 2015上發布的Project Oxford?
factorization machine和logistic regression的區別?
為什麼工業界喜歡用LR模型?
打劫對於AlphaGo來說,真的增加了難度嗎(周志華的觀點正確嗎)?

TAG:人工智慧 | 圍棋 | 機器學習 | 神經網路 | AlphaGo |