雞年小結
2017年底沒有來得及寫小結,想想咱們中國人的年底應該是指過年,於是就拖到雞年年底,也當作送雞迎狗過本命年的一個儀式吧。
這裡又要提一下Pedro Domingos這位思維銳利的學者,思維銳利的人總是讓人欣賞。他在CACM上指出機器學習主要包含「表示+評價+優化」三個部分,這個看法其實不少資深研究者都有,只不過Pedro的話畢竟寫了下來,引用起來有個出處。
首先是優化
優化是使得學習得以實現的途徑,我們一致以來都在嘗試拓展優化工具的能力,發展非梯度優化,從而為學習系統的設計提供更多的自由,例如可以不必為了眼前函數的一點非凸性,而絞盡腦子把精力都消耗在與學習本質的探索沒有太大關係的地方。
過去一年在噪音環境下的非梯度優化上有了一些進展,在連續空間帶噪優化上發現了更簡單但是更有效的方法[AAAI18],同時在離散空間優化的帶噪子集選擇問題上,得到了超越目前所有演算法的結果[NIPS17]。
更值得一提的是,綜合過去這些年的研究,開發的 ZOOpt https://github.com/eyounx/ZOOpt 優化工具包發布新版本了,感謝我的學生劉馭壬等寫了數萬行代碼,還被逼著學了新的語言。新版本包含單線程版、以及一個輕量級分散式版,為大規模應用作準備。與工具包一同公開的報告中對ZOOpt分散式性能進行了簡單的測試。在測試中,單線程1小時的優化結果,128核(6台機器)使用3分半鐘完成 (我手上暫時沒有更多的核了。。。)
其次是評價
如果我們考慮多步決策長期累積回報作為評價準則,即是強化學習問題。AlphaGo引起了大家對強化學習的注意。通過強化學習,機器自己去跟環境打交道,並且從中學會如何達到我們預設的目標,中間不需要人進行太多的干涉,數據也是機器自己去收集的,看起來非常好。然而強化學習在物理世界中卻是非常難用的。為了學得好,必不可少需要探索,探索的意思就是看看這樣做好還是那樣做好,不把壞的決策試出來,是不知道好的決策是哪個的。在物理世界中,我們可以設想一下機器手臂學習做手術的場景,試一下用力一刀,病人死了,收到回報 -1,下一個病人 。。。更不幸的是,目前的強化學習演算法,都需要大量的探索,例如學習Atari遊戲大概用1億樣本。因此我們目前聽到的強化學慣用得好的地方,多是可以放在計算機中快速模擬的場景,例如Atari遊戲本來就是計算機遊戲,而圍棋棋盤就是個表格,走一步就填一個格子。在物理世界中,走一步會是什麼樣,這本身就是個難題。
過去一年對強化學習的多個方面開展了研究,但最值得一提的是與阿里合作的「虛擬淘寶」項目。當時我認為,即使強化學習演算法再發展幾年,仍然無法做到如人類般高效,因此要在物理世界中用強化學習,唯一的低成本途徑就是把物理世界拉到計算機虛擬世界中,在虛擬世界中學習,再把學習結果用於物理世界。阿里的業務,淘寶搜索,面臨大量形形色色的商品和千差萬別的用戶,如何拉到虛擬世界中,非常棘手。我們設計了一個沒有人嘗試過的方案,起名虛擬淘寶,提交給阿里審核,結果被認為該目標無法達成。確實,我自己也沒有太大的底氣,只能解釋說,我們這麼學一個模擬器,是用來看看哪個強化學習演算法更好一點,並不指望對著么複雜的物理環境能學得有多好,阿里這麼多錢,做點探索性的事也不壞嘛,萬一成了呢。好在參與項目的學生侍競成毫不動搖,躺了很多坑,最後的結果出乎意料,在虛擬淘寶訓練的策略可以直接用在真實淘寶上。該工作還沒有完全公開,不過可以在阿里的強化學習技術書中(第八章)看到一部分內容。
最後是表示
目前最流行的模型表示,應該就數神經網路了。然而在很多任務中,目前的神經網路模型已經顯露出力不從心。例如,號稱強化學習超越人類水平的Atari遊戲,真正超越人類的都是在考反應的遊戲上,碰巧這一類遊戲占多數,而少部分遊戲死活學不好,遠遠不如人類稍微動一下手指頭,另外,對抗樣本顯示出,深度網路在那些看起來做得很好的複雜任務(例如QA)上,也僅僅是看起來好而已。實際上大家也都了解,神經網路缺少很多重要的功能,包括持續記憶、理解關係、開展推理、執行遞歸、學習結果可理解等。然而這些急需的功能,其實脫離神經網路,很容易實現。回顧人工智慧歷史,早在六、七十年代,就發展了推理方法,第二波AI浪潮,知識表示與推理結合,專家系統爆發。上世紀人工智慧的發展,就是在解決這些問題。如果使用基於邏輯的系統,馬上就可以獲得所有這些能力。第三波AI浪潮,機器學習領頭,然而目前的機器學習方法,與前兩波的技術成果難以兼容,40年的研究成果在現在的學習系統中沒有發揮太大的作用。
一旦學習系統,例如神經網路,具備了邏輯推理能力,那一定能做到現在做不到的事。最近已經有一些工作試圖把記憶、關係、程序、邏輯模塊連續化,從而與神經網路兼容。我問過幾個同行,邏輯推理過程,例如樹搜索,如此複雜的離散過程,用連續化的模塊加上梯度優化有可能完全做到嗎?我個人目前是傾向於否定的。即使來看我們的生物神經網路,人自己,在推理能力上是不如計算機的,早在70年代計算機就趕上來了,深藍下象棋就是靠純搜索戰勝人類。那麼既然離散邏輯系統發展了這麼多年,為什麼不能直接用上去呢?就是因為一邊是連續的、一邊是離散的,能否打通兩種系統呢。
我們提出的反繹學習框架為打通這兩類系統提供了一種思路。我們設定了一個目前學習系統無法完成的任務,等式正誤識別,從字元圖像數據中構造等式,不告訴每個字元圖像是什麼意義,只給每一條等式標記正/誤標籤;如果能夠成功從等式圖像學習到等式背後的算術意義,那麼這樣的系統應當可以學會做算術,從而正確識別更複雜的等式。這也是一個巨大的冒險,既然是目前學習系統無法完成的任務,我們一下子做成的概率肯定不高,並且戴望州同學面臨畢業壓力,如果做不成又會耽誤時間,不過還是決定冒冒險。我們實現了反繹學習的一個實例,神經邏輯機,將一個離散邏輯層夾在感知神經層(CNN)和決策神經層(MLP)之間,輸入等式圖像,輸出等式正誤標記,這樣來學習。感謝小夥伴們共同努力,踏平了無數的坑,修正了Prolog中的隱藏bug,碼了上萬行代碼。神經邏輯機從8符號長度的等式訓練集中學習,在長度超過20符號的等式上成功取得了高精度(體現泛化能力的突破),並且從邏輯層中發現,它確實正確學到了算術運算規則(體現可理解性)。另外,在神經邏輯機中用上了ZOOpt,也算是體現了「為學習系統的設計提供更大自由」的初衷。
希望狗年能做得更好。
推薦閱讀:
※什麼是ANI、AGI、ASI?
※人工智慧隨想錄
※世界類腦AI巨系統研究綜述,論ET大腦是不是全球首個類腦架構AI
※摩根大通:懂人工智慧的投顧將脫穎而出!
※TensorFlow 的常用模塊介紹