的層次強(qiáng)化學(xué)習(xí)架構(gòu))
2017年前后是深度強(qiáng)化學(xué)習(xí)最熱鬧的幾年但也是大家開始產(chǎn)生懷疑的幾年。深度Q網(wǎng)絡(luò)證明了像素輸入可以直接學(xué)出策略各種“模型玩游戲”的工作層出不窮可這些模型到底是在“解決任務(wù)”還是在“背下任務(wù)”誰也說不清楚。一個很多人認(rèn)同的判斷是機(jī)器缺少人處理長任務(wù)時那種“拆成子目標(biāo)、分時間尺度決策”的能力。Option-Critic就是在那個時間點(diǎn)出現(xiàn)的。它做的事情一句話能講完把原本需要手工設(shè)計的“選項/技能”option變成一個能完全端到端訓(xùn)練、自動從回報里涌現(xiàn)出來的架構(gòu)。它同時學(xué)三樣?xùn)|西——每個選項內(nèi)部的低級策略、選項之間的選擇策略、以及選項何時終止——而且三者用同一個價值函數(shù)串聯(lián)全部靠策略梯度聯(lián)合優(yōu)化。如果你在研究層次強(qiáng)化學(xué)習(xí)或者想在項目里引入“時間抽象”的能力這篇論文值得仔細(xì)拆。下面我把這套架構(gòu)的來龍去脈、關(guān)鍵公式怎么來的、以及復(fù)現(xiàn)時那些文檔里不會寫的坑全部攤開講一遍。1. 項目概述與核心思路拆解1.1 先搞清楚Option到底是個什么東西Option一般翻譯成“選項”但我更愿意叫它的本名“時序擴(kuò)展動作”temporally extended action。普通強(qiáng)化學(xué)習(xí)的動作是單步的這一幀移動一格、這一次往前走、這一拍發(fā)一個指令。而Option是一段被命名好的行為序列比如“從當(dāng)前房間走到門口”“走到目標(biāo)房間”“繞開障礙物”。人的行為組織方式本來就是分層的我“去廚房”是一個高層動作里面包含了站起來、邁步、轉(zhuǎn)彎一大堆底層動作但我規(guī)劃的時候只思考“去廚房”這一條不會去摳每一步怎么邁。在這個語境里一個option有三個組成部分它允許在哪些狀態(tài)下啟動初始集I、被選中后內(nèi)部如何執(zhí)行內(nèi)部策略π、以及每一步結(jié)束后以多大概率把這個option交還給高層終止函數(shù)β。經(jīng)典框架里這三個部分要么手工設(shè)計要么靠很別扭的方式單獨(dú)學(xué)而Option-Critic做的是把π和β的梯度都算出來讓它們和價值函數(shù)一起聯(lián)合訓(xùn)練。換句話說你不再需要告訴模型“什么是好的option”只需要告訴它“我給你N個option的名額”至于每個option具體長成什么樣、在什么狀態(tài)下該激活、什么情況下該結(jié)束全部交給回報信號自己去長。1.2 為什么要動“時間抽象”這個念頭最直接的理由是稀疏回報。拿論文里反復(fù)出現(xiàn)的四房間網(wǎng)格環(huán)境舉例一個11x11的格子世界被墻壁分成四個房間每面墻上有門通向隔壁目標(biāo)固定在某個格點(diǎn)到達(dá)才給獎勵。對一個隨機(jī)游走的平坦策略來說想在上百步的無頭探索里正好踩中那個目標(biāo)格點(diǎn)概率非常低。更糟糕的是就算僥幸到過一次它也記不住“先到門口、再穿門、再去目標(biāo)”這種規(guī)律因?yàn)槌俗詈笠桓衩坎降募磿r獎勵都是零。層次化思路是在兩個尺度上做決策高層只在房間之間選擇“我去哪個門口”低層負(fù)責(zé)把“走向那個門口”執(zhí)行成幾十步的動作。這樣一來規(guī)劃深度從上百步壓縮到幾步探索也從瞎走變成了有方向性的探索。Option-Critic真正貢獻(xiàn)的不是這個思想——這個思想九十年代末就有了——而是把“選擇哪個門、腳步怎么邁、什么時候算到達(dá)門口”這三層結(jié)構(gòu)全部變成可微參數(shù)直接用一個統(tǒng)一的目標(biāo)端到端訓(xùn)練。1.3 與經(jīng)典選項框架的根本區(qū)別經(jīng)典選項框架的核心操作是“只學(xué)習(xí)高層策略”給定一組設(shè)計好的option比如“向上走到頂”“向左走到邊”然后用Sarsa或Q-learning去學(xué)在什么狀態(tài)下應(yīng)該選哪個option。這個路線的問題在于option本身是任務(wù)相關(guān)的知識換個環(huán)境就得重新設(shè)計而設(shè)計一個能用的option往往比學(xué)一個策略還難。Option-Critic的變革在于它把option內(nèi)部策略、終止函數(shù)、option選擇策略看成同一個計算圖的三條分支價值函數(shù)critic作為中間的監(jiān)督信號用兩個梯度定理把信號分別傳導(dǎo)給三條分支。為了更直觀我把三種方案的差別列成一張表方案動作粒度需要人工設(shè)計什么端到端學(xué)到什么平坦策略單步獎勵函數(shù)狀態(tài)到動作的映射經(jīng)典選項框架多步option內(nèi)部策略、終止函數(shù)狀態(tài)到option選擇的映射Option-Critic多步只指定option數(shù)量內(nèi)部策略、終止函數(shù)、選擇策略表格里最后一行就是這篇論文的核心買賣把人工設(shè)計的部分砍到只剩一個“數(shù)量”超參數(shù)剩下的全部交給優(yōu)化。2. 原理拆解關(guān)鍵公式與推導(dǎo)直覺2.1 從MDP到Option半馬爾可夫視角先把標(biāo)準(zhǔn)設(shè)定擺出來。一個馬爾可夫決策過程由狀態(tài)集、動作集、轉(zhuǎn)移概率、獎勵函數(shù)和折扣因子組成策略輸出每個狀態(tài)下選動作的概率目標(biāo)是最小化長期折扣累計回報的負(fù)期望。普通策略梯度定理說的是回報的期望對策略參數(shù)的梯度等于在軌跡上對“選這個動作的log概率”乘以“這個動作后續(xù)的回報”求期望。Option-Critic把“一個動作”替換成“一個時序擴(kuò)展動作”——也就是option。這樣一來整個過程的視角拉長了高層看到的不是一個“狀態(tài)→動作”的馬爾可夫過程而是一個“狀態(tài)→option”的半馬爾可夫過程因?yàn)橐粋€option的決策效果要跨越多個時間步才能顯現(xiàn)。但真正棘手的問題在于option本身不是一個黑盒它的內(nèi)部策略、終止函數(shù)都是有參數(shù)的梯度需要穿過option內(nèi)部。2.2 選項的三元組定義與符號約定一個option由三部分構(gòu)成。初始集I規(guī)定了option在哪些狀態(tài)下可以被選擇內(nèi)部策略π_o(a|s)規(guī)定了這個option被選中后在每個狀態(tài)下以多大概率執(zhí)行哪個原子動作終止函數(shù)β_o(s)是一個0到1之間的概率表示到達(dá)狀態(tài)s后這個option是否結(jié)束、把控制權(quán)交還給高層。執(zhí)行節(jié)奏需要格外注意在狀態(tài)s處高層按π_Ω(o|s)選一個option然后agent執(zhí)行內(nèi)部策略產(chǎn)生的動作a轉(zhuǎn)移到達(dá)s拿到獎勵r。到s之后才裁定以概率β_o(s)決定option終止并重新選擇或者以概率1?β_o(s)繼續(xù)執(zhí)行同一個option?!敖K止發(fā)生在轉(zhuǎn)移之后”這個時序后面會反復(fù)用到也是很多錯誤實(shí)現(xiàn)的根源。一個重要特例是如果β_o(s)恒等于1這個option退化成了一步即終止的單步動作。也就是說選項集合是原子動作集合的自然擴(kuò)展而不是替代。這保證了Option-Critic的表達(dá)能力不會比普通策略更弱至少從結(jié)構(gòu)上講。2.3 三個價值函數(shù)怎么互相嵌套為了給三條分支提供監(jiān)督信號需要三個價值函數(shù)。第一個是option價值Q_U(s,o)表示從狀態(tài)s開始執(zhí)行option o直到它終止為止的期望折扣回報。第二個是Q_U(s,o,a)表示在option o被選中的情況下先執(zhí)行動作a、之后繼續(xù)遵循option內(nèi)部策略的期望回報。第三個是高層狀態(tài)價值V_U(s)表示從狀態(tài)s開始、按照當(dāng)前高層策略π_Ω選擇option的期望回報。三者關(guān)系如下Q_U(s,o) Σ_a π_o(a|s) · Q_U(s,o,a)Q_U(s,o,a) r(s,a) γ Σ_{s} P(s|s,a) · [ (1?β_o(s)) · Q_U(s,o) β_o(s) · V_U(s) ]V_U(s) Σ_o π_Ω(o|s) · Q_U(s,o)中間那個方括號是關(guān)鍵如果option在s處不終止那么未來繼續(xù)由同一個option兜著價值是Q_U(s,o)如果終止了控制權(quán)回到高層價值變成V_U(s)。這其實(shí)就是把“是否終止”這一個隨機(jī)決策嵌進(jìn)了標(biāo)準(zhǔn)Bellman方程里。實(shí)際寫TD更新時目標(biāo)就是target r γ · [ (1?β(s)) · Q_U(s,o) β(s) · V_U(s) ]這個target既用來更新價值函數(shù)本身也用來構(gòu)造后面各種advantage。2.4 兩個核心梯度定理內(nèi)部策略梯度和終止梯度論文最實(shí)質(zhì)的貢獻(xiàn)是兩個梯度定理。第一個是內(nèi)部策略梯度定理近似寫成?_θ Q_U(s,o) E[ Σ_t γ^t · Q_U(s_t,o_t,a_t) · ?_θ log π_θ(a_t|s_t,o_t) ]用大白話說option內(nèi)部策略更新時把“在這個option下執(zhí)行這個動作之后的價值”當(dāng)作評價走的是標(biāo)準(zhǔn)策略梯度。所以option內(nèi)部并不是在憑空學(xué)技能它是在學(xué)習(xí)如何最好地實(shí)現(xiàn)頂層的選擇。實(shí)際實(shí)現(xiàn)里會再扣一個baseline降方差于是評價量變成advantage而不是原始Q值。第二個是終止函數(shù)梯度定理形式上更反直覺?_θ Q_U(s,o) ?E[ Σ_t γ^t · (Q_U(s_t,o_t) ? V_U(s_t)) · ?_θ log β_θ(s_t) ]這里的負(fù)號特別重要。令A(yù)(s,o)Q_U(s,o)?V_U(s)它表示“當(dāng)前這個option比高層平均水平好多少”。如果優(yōu)勢為正說明這個option正在做正確的事應(yīng)該讓它繼續(xù)跑下去也就是終止概率要下降——負(fù)號保證了這一點(diǎn)。反過來如果優(yōu)勢為負(fù)說明這個option拖后腿應(yīng)該提高終止概率把它換掉。落到最小化loss的實(shí)現(xiàn)層面終止函數(shù)對應(yīng)的loss是L_β A(s,o) · log β(s)A為正時最小化它會把log β往負(fù)方向壓也就是β變小、option不容易終止A為負(fù)時則推著β變大、加速終止。終止函數(shù)的學(xué)習(xí)信號不是獎勵本身而是“當(dāng)前option比平均好多少”的優(yōu)勢這是整個架構(gòu)最核心的直覺。2.5 別被公式嚇住它本質(zhì)上是一條鏈?zhǔn)椒▌t從直覺上理解option級過程構(gòu)成一個半馬爾可夫決策過程動作是“option執(zhí)行一整段”時間步是“從選option到終止”。目標(biāo)對β參數(shù)和內(nèi)部策略參數(shù)的梯度本質(zhì)上是在問兩件事改變終止概率會怎樣改變option的持續(xù)時間進(jìn)而怎樣改變回報分布改變內(nèi)部動作選擇會怎樣改變option在執(zhí)行過程中的即時回報分布。這兩個問題和普通策略梯度問的是一模一樣的事只不過這里的“決策”分成了兩個層次——每一步是否終止、每個時刻選哪個動作。需要說明的是論文給出的定理是在比較規(guī)范的條件下證明的但一旦上了深度網(wǎng)絡(luò)和函數(shù)近似實(shí)際訓(xùn)練效果主要由標(biāo)準(zhǔn)的actor-critic技巧控制比如value是否正確detach、advantage要不要?dú)w一化、學(xué)習(xí)率怎么配。定理保證了更新方向的合理性卻不保證網(wǎng)絡(luò)不會在某個局部行為里抽搐。所以看公式時記住“終止看優(yōu)勢、內(nèi)部看價值”這兩個方向就夠了真正的功夫在實(shí)現(xiàn)細(xì)節(jié)里。3. 實(shí)操過程與核心實(shí)現(xiàn)要點(diǎn)3.1 網(wǎng)絡(luò)結(jié)構(gòu)一個共享主干四個輸出頭Option-Critic的實(shí)現(xiàn)不復(fù)雜常見的網(wǎng)絡(luò)結(jié)構(gòu)是一個共享特征層負(fù)責(zé)把狀態(tài)轉(zhuǎn)成向量然后分出四個輸出頭。高層選擇策略π_Ω在option集合上做softmaxcritic頭輸出每個option的Q_U值內(nèi)部策略頭為每個option分別輸出動作概率也就是N個option就對應(yīng)N個softmax動作頭終止函數(shù)頭為每個option輸出一個sigmoid概率。一個能跑通四房間的最小配置是兩層全連接、每層128個隱藏單元、激活函數(shù)用ReLU或者tanh。如果狀態(tài)是像素輸入就把主干換成卷積層后面再接同樣結(jié)構(gòu)的頭。option數(shù)量N是先驗(yàn)超參數(shù)四房間這種有四個門的環(huán)境取4完全沒頭緒的任務(wù)先取4到8不要貪多后面我會解釋為什么option太多反而容易壞事。一個小建議不同option的內(nèi)部策略頭不要共享初始化。給每個option的最后一層加不同的偏置能讓它們在訓(xùn)練初期就各自偏向不同的動作方向避免“長得一模一樣”的可悲開局。3.2 訓(xùn)練流程A2C風(fēng)格的單步更新下面是我常用的單步更新偽代碼每個環(huán)境step都執(zhí)行一遍# 輸入狀態(tài)特征 phi_s q_values critic(phi_s) # 每個option的Q_U(s,o)形狀[N] v_s (pi_options(phi_s) * q_values).sum() # 高層價值 V_U(s) option sample(policy_over_options(phi_s)) # 高層選option action sample(intra_policy(phi_s)[option]) # 內(nèi)部策略選動作 phi_s2, reward, done env.step(action) # 關(guān)鍵到了s之后才算終止概率 beta_s2 termination(phi_s2)[option] dial Bernoulli(beta_s2).sample() option2 sample(policy_over_options(phi_s2)) if dial or done else option # 1) critic更新用期望beta構(gòu)造TD目標(biāo) q_next (1 - beta_s2) * critic(phi_s2)[option] beta_s2 * (pi_options(phi_s2) * critic(phi_s2)).sum() target reward gamma * (1 - done) * q_next critic_loss (target.detach() - q_values[option]).pow(2) # 2) 高層option選擇策略更新 adv target.detach() - v_s.detach() option_loss -log_pi(phi_s, option) * adv # 3) 內(nèi)部策略更新評價當(dāng)前option內(nèi)的動作 intra_loss -log_pi(phi_s, option)[action] * adv # 4) 終止函數(shù)更新最小化 A * log beta A (q_values[option].detach() - v_s.detach()) termination_loss A * torch.log(beta_s2 1e-8) total_loss critic_loss option_loss intra_loss termination_loss total_loss.backward()這里有三件事必須解釋清楚。第一構(gòu)造TD target時用的是期望beta而不是伯努利采樣出來的那個0/1開關(guān)因?yàn)锽ellman方程里算的就是期望真正的采樣開關(guān)只用來決定下一個時刻到底執(zhí)行哪個option。第二所有作為監(jiān)督信號傳給別的頭的估計值都要detach否則價值函數(shù)和策略會互相咬尾巴訓(xùn)練很容易發(fā)瘋。第三嚴(yán)格來說內(nèi)部策略梯度的理論上界應(yīng)該用Q_U(s,o,a)減去baseline但工程實(shí)現(xiàn)里直接用單步TD advantage效果也穩(wěn)定而且方差更小。先按這個簡單版本跑通再往上加GAE也不遲。3.3 超參數(shù)與調(diào)參經(jīng)驗(yàn)把我在四房間和各種小控制任務(wù)上試過的經(jīng)驗(yàn)參數(shù)整理成表格超參數(shù)建議范圍說明option數(shù)量N4~8與任務(wù)天然子結(jié)構(gòu)數(shù)量同量級學(xué)習(xí)率1e-4~3e-4Adam為主終止函數(shù)頭單獨(dú)用小學(xué)習(xí)率β初始化logit?0.5~0對應(yīng)β約0.38~0.5防止崩向0或1內(nèi)部策略熵系數(shù)0.01~0.05保證option內(nèi)部有探索終止函數(shù)熵系數(shù)0.01~0.1防止過早鎖死在“永遠(yuǎn)不終止”折扣γ0.99長回報路徑任務(wù)步數(shù)n5步累計回報單步TD容易方差大5步通常夠值得注意的是終止函數(shù)的更新對學(xué)習(xí)率非常敏感。我給終止函數(shù)頭單獨(dú)配一個優(yōu)化器學(xué)習(xí)率通常是主網(wǎng)絡(luò)的十分之一效果明顯比全家桶一起更新穩(wěn)定。另外每跑幾百個episode就把各option的β均值打出來看一眼如果所有option都穩(wěn)定在0.5附近沒動說明優(yōu)勢信號沒進(jìn)來多半是critic出了問題而不是策略問題。3.4 復(fù)現(xiàn)基準(zhǔn)四房間環(huán)境里該看到什么四房間是最好的調(diào)試場因?yàn)樗Y(jié)果直觀、算力開銷極小。訓(xùn)練結(jié)束后應(yīng)該看到兩類現(xiàn)象。第一終止函數(shù)的熱力圖明顯集中在門口附近——這意味著option“走到門口”正是它們認(rèn)為該結(jié)束的地方。第二option內(nèi)部策略呈現(xiàn)空間分化比如某個option的軌跡集中在上方門附近另一個集中在下門高層策略則學(xué)會按目標(biāo)位置編排這些option的先后順序。如果訓(xùn)練完看不到門口附近的終止集中先別懷疑算法先問三件事option數(shù)量是不是太多導(dǎo)致每個option都分?jǐn)偛坏矫鞔_的子任務(wù)β是不是已經(jīng)崩到0或1終止函數(shù)的優(yōu)勢是不是被錯誤地detach掉了。彈球環(huán)境也是論文里用過的連續(xù)域示例里面有若干擋板option-critic能學(xué)出“貼近擋板、蓄力、朝目標(biāo)彈出”這類的技能結(jié)構(gòu)終止點(diǎn)恰好落在擋板附近。四房間跑通了再上彈球這類連續(xù)環(huán)境你會對“時間抽象”這四個字有真正的體感。4. 常見問題與排查技巧實(shí)錄4.1 選項退化所有option變成單步動作最常遇到的問題是β快速逼近1每個option選擇之后執(zhí)行一個動作就終止層次結(jié)構(gòu)徹底消失訓(xùn)練曲線和普通平坦強(qiáng)化學(xué)習(xí)一模一樣。原因是多方面的β初始化太靠近1、終止函數(shù)學(xué)習(xí)率過大、優(yōu)勢沒有做歸一化導(dǎo)致偶爾的大梯度把β推過頭。解決的思路也很直接。β的logit初始值設(shè)成?0.5甚至更低讓訓(xùn)練從“傾向于持續(xù)執(zhí)行”開始。給β的logit加一點(diǎn)熵正則防止概率鎖死在邊界。更穩(wěn)的辦法是把終止函數(shù)的優(yōu)化器和主網(wǎng)絡(luò)分開把它的學(xué)習(xí)率壓到主網(wǎng)絡(luò)的十分之一。最后一定記得對優(yōu)勢做標(biāo)準(zhǔn)化至少也要做一個裁剪不然終止信號忽大忽小很容易把β拍向極值。4.2 另一個極端選項永不終止和上面相反β也可能一路掉到接近0第一個選中的option從此陪跑到回合結(jié)束高層決策形同虛設(shè)。這種情況在稀疏回報任務(wù)里尤為常見。原因通常是所有option的價值估計差不多優(yōu)勢長期處于零附近終止梯度根本沒有有效的推動力。一個實(shí)在的救法是把β的初始化往上抬一點(diǎn)比如logit設(shè)為0.2同時在終止logit上保留較大的熵正則逼它不要靜止不動。另一個辦法是加一個很小的、恒定的“終止傾向”項讓每個option在每個狀態(tài)都有最低限度的終止概率相當(dāng)于給層次結(jié)構(gòu)一條呼吸的縫。如果某個option長期不終止還有一個歪招單獨(dú)把這個option的終止熵系數(shù)調(diào)大讓它在猶豫中分化出更多的終止行為。4.3 所有option長得一模一樣option數(shù)量設(shè)得過大或者初始化完全對稱會出現(xiàn)所有option的內(nèi)部策略收斂到同一個分布高層選誰都一樣整個架構(gòu)退化成一個帶冗余頭的平坦策略。我自己踩過這個坑N16時四個房間的實(shí)驗(yàn)里16個頭全學(xué)會了向右走看著既好笑又心疼。破法從易到難排先減少N四房間用4就夠別貪心再給每個option的內(nèi)部策略頭和終止函數(shù)頭加不同的偏置初始化破壞對稱性然后給內(nèi)部策略加熵正則鼓勵每個頭自主探索出不同的行為。如果這些都試過還是同質(zhì)化就需要上一點(diǎn)顯式的多樣性約束了比如讓option內(nèi)部策略的分布彼此拉開距離但這類方法比較復(fù)雜我建議先把它當(dāng)成最后的手段。4.4 復(fù)現(xiàn)結(jié)果不穩(wěn)定、跑不出論文的熱力圖如果代碼邏輯看起來都對但訓(xùn)練結(jié)果忽好忽壞大概率是幾個隱蔽的細(xì)節(jié)問題。我列一張排查表現(xiàn)象可能原因建議全是噪聲熱力圖無結(jié)構(gòu)TD target里用了采樣的0/1開關(guān)而不是期望β確認(rèn)target用的是β(s)本身訓(xùn)練開始就發(fā)散監(jiān)督信號沒detach所有advantage和target作為監(jiān)督時都要detachβ很快鎖死在0或1學(xué)習(xí)率太大或熵正則缺失終止頭單獨(dú)低學(xué)習(xí)率加熵正則結(jié)果依賴隨機(jī)種子環(huán)境獎勵尺度太大歸一化獎勵或做advantage標(biāo)準(zhǔn)化不穩(wěn)定單步TD方差大改用5步累計回報或GAE另外提醒一句論文報告的結(jié)果往往是多次隨機(jī)實(shí)驗(yàn)里的代表性曲線不是每次都能復(fù)現(xiàn)一模一樣的熱力圖。多跑幾個隨機(jī)種子看中位數(shù)趨勢比盯著某一次實(shí)驗(yàn)的曲線更靠譜。4.5 一個反復(fù)出現(xiàn)的時序理解錯誤最后這點(diǎn)值得單獨(dú)拿出來說。β(s)的s是轉(zhuǎn)移之后到達(dá)的新狀態(tài)不是轉(zhuǎn)移之前的老狀態(tài)s。執(zhí)行順序是在s處選option執(zhí)行動作a到s拿獎勵r然后才在s處決定“這個option還繼不繼續(xù)”。TD target里那個β參數(shù)應(yīng)該來自s。我見過不少實(shí)現(xiàn)把β(s)放在轉(zhuǎn)移前的位置看起來公式差不多實(shí)際價值計算全錯而且很難查出來因?yàn)閘oss照樣會下降只是訓(xùn)練出的行為完全不符合理論。判斷你的實(shí)現(xiàn)有沒有踩這個坑只需要檢查TD target一行的狀態(tài)符號如果β取的是下一個狀態(tài)的特征那就對了如果取的是當(dāng)前狀態(tài)的特征請立刻改掉。5. 延伸思考與個人體會5.1 從Option-Critic長出來的研究方向這篇論文之后層次強(qiáng)化學(xué)習(xí)的研究方向分出去好幾條線。一條是把“終止”這個動作賦予成本讓終止函數(shù)在“繼續(xù)執(zhí)行”和“終止重選”之間學(xué)會一種經(jīng)濟(jì)的平衡高層決策不再免費(fèi)從而更接近真實(shí)系統(tǒng)里規(guī)劃成本高昂的設(shè)定。另一條是把優(yōu)勢函數(shù)換成興趣函數(shù)只學(xué)習(xí)那些“值得專門為之啟動一個option”的狀態(tài)避免在無關(guān)緊要的狀態(tài)上白費(fèi)option維度。還有一條影響更大的線是徹底改變訓(xùn)練方式先離線預(yù)訓(xùn)練一組技能skill凍結(jié)之后高層只學(xué)技能之間的組合調(diào)度不再端到端回傳梯度。這些后續(xù)工作你都會看到Option-Critic的影子尤其是“終止函數(shù)由優(yōu)勢驅(qū)動”這個設(shè)定幾乎成了所有skill-based方法的標(biāo)準(zhǔn)組件。換句話說理解了這篇論文后面很多分層RL論文你都能一眼看出它們在哪里改了終止規(guī)則、在哪里換了訓(xùn)練信號。5.2 我的親測體驗(yàn)Option-Critic什么時候真能用說點(diǎn)扎心的大實(shí)話。我先后在幾個環(huán)境里復(fù)現(xiàn)過這個架構(gòu)結(jié)論是它不是一個開箱即用的提分機(jī)器。在連續(xù)控制的標(biāo)準(zhǔn)benchmark上一個調(diào)好的平坦策略常常更快更強(qiáng)因?yàn)檫@類任務(wù)沒有明顯的瓶頸狀態(tài)層次結(jié)構(gòu)反而成了束縛。但在四房間這種天然帶子結(jié)構(gòu)、獎勵又稀疏的任務(wù)里Option-Critic能穩(wěn)定地長出比手工設(shè)計還干凈的空間技能這是平坦策略做不到的。所以我給自己定了三條判斷標(biāo)準(zhǔn)三條里中了兩條才考慮上層次化第一任務(wù)是否存在自然的子結(jié)構(gòu)或瓶頸狀態(tài)比如走廊、門口、擋板第二低層執(zhí)行是否比高層決策更昂貴比如機(jī)械臂需要平滑軌跡而規(guī)劃只需決定目標(biāo)點(diǎn)第三是否需要跨任務(wù)遷移共享技能池。沒有這些前提說實(shí)話層次化是給自己找麻煩。5.3 復(fù)現(xiàn)時最值得記住的三條實(shí)操建議最后收個尾給真想動手復(fù)現(xiàn)的你三條建議。第一先在四房間這類小網(wǎng)格環(huán)境把整套流程跑通、把熱力圖看順眼再考慮上大環(huán)境因?yàn)榇蟓h(huán)境下你根本分不清是算法問題還是顯示問題。第二β單獨(dú)用一個低學(xué)習(xí)率優(yōu)化器并且堅持加熵正則終止區(qū)間兩端是重災(zāi)區(qū)幾乎所有訓(xùn)練事故最后都發(fā)生在β上。第三永遠(yuǎn)檢查detach的位置監(jiān)督信號是“評價量”而不是“被優(yōu)化的量”這個界限一旦模糊理論再漂亮也救不了訓(xùn)練曲線。我不敢說Option-Critic是那種能讓你在測評榜上直接提分的算法在不少標(biāo)準(zhǔn)任務(wù)上它甚至不如一個調(diào)好的平坦策略。但我認(rèn)為它是層次強(qiáng)化學(xué)習(xí)里最重要的轉(zhuǎn)折點(diǎn)之一——它第一次把“如何終止、如何執(zhí)行、如何選擇”放進(jìn)了同一個可微框架里讓時間抽象成了一個可以靠梯度涌現(xiàn)出來的性質(zhì)。我后來看任何分層方法都會下意識地去找這三個信號分別由誰在什么地方提供。這個思維習(xí)慣比跑通一個demo值錢得多。