深度Q網路(deep Q-network, DQN)
/ deep kyoo NET-werk /
深度 Q 網路,即 DQN,是把兩個想法——Q學習與深度神經網路——熔鑄成「能直接看著螢幕學會玩電子遊戲」之物的那次突破。它所解決的問題很直白:經典 Q學習為每一種情形單記一個數字,可一款遊戲可能出現的螢幕畫面,多到你永遠列不完。DQN 用一個神經網路替下了那本不可能的筆記本:網路看著原始像素,為每個按鈕估出一個 Q 值——並能推廣到它從沒見過的畫面。
然而,把神經網路生硬地拴到 Q學習上,會炸:訓練變得不穩定,常常發散。DQN 真正的貢獻,是兩個馴服了它的把戲。經驗回放把過去的片刻存進一個記憶緩衝區,再從中隨機取樣來訓練,打破了相鄰幀之間那種有害的相關性。一個獨立的、緩慢更新的目標網路,則為貝爾曼更新提供一個穩定的參照,於是網路不必去追一個每一步都猛地亂晃的目標。兩者合起來,才讓深度 Q學習真正運轉了起來。
在 2013 至 2015 年,DeepMind 展示了單單一個 DQN——同一套演算法、同樣的結構、同樣的設定——僅憑像素與分數,從零學會了幾十款雅達利遊戲(每款分別訓練一份新副本),並在許多款上擊敗了人類高手。這是「從原始感知出發進行通用學習」的一座里程碑。但要誠實面對它的侷限:它需要海量的遊玩,遠多於任何人類;它在需要長遠規劃的遊戲上束手無策(《蒙特祖瑪的復仇》臭名昭著);而且它只在動作是一小撮離散選項時才管用,這就是為什麼連續控制需要別的方法。
玩雅達利《打磚塊》時,DQN 只看到螢幕像素和分數。它壓根不知道什麼是「球」或「擋板」,卻在數百萬幀之中學會了移動擋板、讓球不死——甚至自行發現了那個高手才會的訣竅:從一側鑿出通道,把球彈到磚塊後面去。
僅憑像素學玩雅達利——靠經驗回放和凍結的目標網路撐起來。
DQN 那句招牌「一套演算法,玩遍多款遊戲」是真的,卻極易被誇大:每款遊戲都是從零另訓一個網路,而非一個網路同時通吃所有。而且它在需要長程規劃或獎勵稀疏的遊戲上栽了大跟頭——這恰恰證明,「從像素學習」與「理解這款遊戲」並不是一回事。