從拉霸機紅利到廣大世界
UCB 教會我們:不確定性會隨嘗試次數而縮小——它的紅利取決於一個計數。計數式探索(count-based exploration)把這個想法直接帶進完整的強化學習:為每個狀態 s 維護一個造訪次數的計數 N(s),並發給智慧體一份 探索紅利(exploration bonus),對很少看到的狀態很大、對熟悉的狀態很小。常見形式是與 1/√N(s) 成正比的紅利,呼應 UCB。
機制上,這份紅利只是在學習前加到環境的獎勵上。智慧體的價值方法(Q-learning、actor-critic,任何都行)於是把「去新地方」當成本質上有獎勵的事。這正是把 面對不確定時的樂觀表達成一種獎勵:新奇狀態看起來很有價值,直到被造訪得夠多、足以更清楚了解為止。
# count-based exploration bonus, added to the real reward N[s] += 1 # update the visit count for state s bonus = beta / sqrt(N[s]) # large for rare states, decays as N grows reward_for_learning = env_reward + bonus
問題:沒有東西會重複
在小型、表格式(tabular)的世界裡,計數運作得完美——一個 10×10 的格子世界有 100 個你能精確計數的狀態。但在任何有意思的問題中,狀態是原始影像或連續向量,智慧體永遠不會看到完全相同的狀態兩次。每個計數 N(s) 都卡在 0 或 1。紅利就變得毫無用處:所有東西永遠同等「新奇」。
可交互的 Q 学习智能体在离散且可计数的网格世界中探索。
偽計數:用密度模型來計數
偽計數(pseudo-counts)靠一個巧妙的觀察,在高維度中恢復了計數能力。訓練一個密度模型——一個能估計任何狀態在目前所見資料下機率 ρ(s) 的模型。智慧體常造訪的狀態會得到高機率;真正全新的狀態則得到低機率。這個模型會泛化:造訪一個狀態也會抬高相似狀態的機率,恰如一個合理的計數該有的樣子。
訣竅是:一個偽計數可以從「你再用該狀態的一次出現去訓練密度模型之後,密度上升了多少」推導出來。如果再看一次 s 幾乎不改變 ρ(s),模型實際上已經看過它很多次——高偽計數。如果一次目擊就讓 ρ(s) 猛升,那它幾乎是全新的——低偽計數。把這個偽計數餵進同樣的 1/√N 紅利,計數式探索就突然能在原始像素上運作。這正是第一批在《蒙特祖瑪的復仇》上取得真正進展的智慧體背後的引擎。
伪计数通过密度模型在对该状态多训练一次后概率上升的幅度,反推出有效的访问计数。
新奇性搜尋:把新奇本身當成目標
計數與偽計數紅利,是對新奇性(novelty)的一種低調投票。新奇性搜尋(novelty search)把這個想法推到極致:在最純粹的形式中,它完全忽略任務獎勵,只因為智慧體抵達了與過去任何到達過的狀態都不同的狀態而給予獎勵,並以「與過往行為檔案的距離」來量度。違反直覺的是,追求純粹新奇有時能解開直接追求獎勵所無法解開的欺騙性任務——因為它拒絕陷在打磨一個平庸策略的泥淖裡。
實務上最強的智慧體會混用兩者:保留真實獎勵,並加上新奇/計數紅利,讓智慧體既追求目標、又拒絕停止探索。這個組合是 稀疏獎勵問題(sparse-reward problems)的家常配方,也是最後一篇的重點。
内在探索奖励 β/√N(s) 被加到真实奖励上:状态越新越大,每访问一次就衰减,因此权重 β 必须谨慎调节并逐步衰减。