本文是對Saintinder Pal Signh的論文Transfer of learning by composing solutions of elemental sequential tasks做的一些筆記和解讀,主要圍繞模型的提出、定義和數學解釋,略去了後續實驗的部分,原論文地址:

Transfer of learning by composing solutions of elemental sequential tasks?

link.springer.com

此篇論文主要針對的場景是:

  • 對於複合任務,可以按照時間順序被分解為一系列首尾相接的基礎任務
  • 每個基礎任務都是一個完整的MDP過程,
    • 每個基礎任務只有終態有獎勵(即「成功!」,可以認為此處的獎勵即為基礎任務的目標)
    • 獎勵不衰減( gamma = 1
  • 不同基礎任務只有獎勵不同,但是擁有相同的狀態空間、動作空間和遷移函數(即在同一個世界)
  • 每個狀態下的每個動作會產生一個固定的消耗,該消耗與當前所處任務無關
  • Agent會被給予每個任務的id(即:Agent知道自己何時進入了哪個任務)

此時Agent需要學習的是:

  • 每個基礎任務的價值函數 Q^{T_i}
  • 在複合任務中,如何根據當前所處任務選擇合適的 Q^{T_i}

比如,我告訴Agent:

你要先拿起鑰匙,然後打開門,而後拾起箱子,最後將箱子放在指定的位置

於是我設計四個MDP過程

  1. 在成功開門時獲得獎勵
  2. 在將箱子放在指定位置時獲得獎勵
  3. 在拿起鑰匙時獲得獎勵
  4. 在拾起箱子時獲得獎勵

而後我告訴Agent,有個複合任務3142,並且讓它去學習。在一次次的迭代中,她將分別學會這四個任務,並且知道何時採取何種任務的解決方式


在論文中,作者提出雖然強化學習的Agent可以為每個任務學習一個單獨的模型,但是這種方式對於互相擁有相關性的任務是既費時又費內存的。

考慮到人類個體的行為往往是在一個統一的大環境(即系統動力學不變的情況下)中完成一系列的基礎任務( Elemental Task,例如,「坐下」,「拿起物品」,就是兩個反覆出現在各種任務里的基礎子任務。於是作者對於強化學習,提出了類似的方案,來學習如何將基礎任務組合成統一的任務

論文所採用的方法基於如下假設:

  1. 每個基礎任務都有自己的終止狀態
  2. 所有任務在其MDT(Markov Decision Task)當中擁有相同的狀態空間 S 和動作空間 A 和環境動力學(即遷移函數)
  3. 回饋函數 R 在任務之間有所區別 (可以理解為:不同的任務意味著在同一個世界裡需要完成不同的目標)

在這種情況下,作者定義:

  • 對於任務 T_i ,有 R_i(x, a) = sum_{y in S}{P_{xy}(a)r_i(y) - c(x,a)} ,其中:
    • 在這個回饋函數中有兩個關鍵項:
      • 獎勵函數 r_i(y) ,任務 T_i 在狀態 y 下的獎勵,隨不同任務而不同
      • 代價函數 c(x,a) ,在狀態 x 下採取動作 a 的代價函數,不隨不同任務變化
    • 在這一獎勵函數中,我們假設 r_i(x)x 並非 T_i 的終態時為 0

接下來,作者提出,在這樣定義的 R_i 下,複合任務並非一個MDT,因為回饋函數不僅是關於狀態的函數,還是關於當前任務的函數,即 R: S 	imes T 
ightarrow mathbb{R} ,而非 R: S 
ightarrow mathbb{R} ,於是作者用如下方法來讓最終的複合任務成為一個MDT:

  • 想像一個設備,對於任何基礎任務,其檢測相應的基礎任務終態,記住每個基礎任務終態的第一次訪問
  • 那麼這個設備,既可以被視為這個Agent的一部分,也可以被視為環境的一部分(這一點將在後文詳細解釋)

更具體的來講,對於由 n 個任務 T_1, ... , T_n 順序組成的複合任務,擴展狀態空間 SS ,使得每個 s in S 都擴展了 n 個比特,每個比特代表一個任務(根據下文的定義,可以理解為當第 i 個任務執行完畢或正在執行時,第 i 位為1,否則為0)。 那麼狀態空間 S 和原來的動作空間 A 將為複合任務構建一個MDT,其中:

  • 代價函數 c(x,a) 依舊作用於原來的 s in S
  • 而對於每個由一系列 T_i 構成的複合任務 C_j ,其 r^C_j(x) 定義成:
    • x 是某一 T_i 的終止狀態,並且對於上文所述的 n 比特擴展,第 1 ... i (包括 i ) 項為 1 ,且第 (i+1) ... n 項為0時, R^C_j(x) > 0
    • 其他情況下, R^C_j(x) = 0
  • (即只有當達到某一任務的終止狀態並且這一終止狀態對應Agent正在執行的任務時,總任務才有獎勵)

從另一種視角看,也可以視作存在一種映射,通過去除標記任務的 n 個比特位,將複合任務的狀態空間 S 映射到基礎任務的狀態空間 S

於是作者定義了一種對於複合任務的約束,論文中提出的方法適用的MDT需要滿足:

  1. 每個基礎任務都有且僅有一個的終止狀態
  2. 對於所有基礎任務及複合任務,對於最優策略的無衰減總回饋的預期,對於所有的狀態都是有上下限的
  3. 代價函數 c(x,a) 與當前正在執行的任務無關
  4. 對於每個基礎任務 T_ir_i 對於所有的非終止狀態都是 0 。而對於每個複合任務 C_j ,只有對於其中每個基礎任務的終態,其 r^{c_j}>0 ,其他情況下 r^{c_j} = 0

接下來作者提出了複合Q-learning( Compositional Q-learning, 也稱 CQ-learning )的概念,在CQ-learning中定義了兩種Q值函數:

  1. Q^{T_i}(x,a) : 在 原始狀態空間 x in S 中,對於 T_i 的Q值函數
  2. Q^{C_j}_{T_i}(x, a) : 在針對複合任務 C_j擴展狀態空間  x in S 中,對於其中任務 T_i 的Q值函數

考慮一個 gamma = 1 的無衰減複合MDT,根據上面提到的約束,其Q值函數可以被定義為: Q^{C_j}_{T_i}(x,a) = Q^{T_i}(x,a) + K(C_j, l)

其中 x in Sx in S 的狀態擴展,而 K(C_j, l) 是一個關於複合任務 C_jl 的函數,其中 l 代表 C_j 中的第 l 個任務, K 是一個與狀態和動作無關的函數。

那麼如果我們能夠擁有每個基礎任務的策略,Agent便只需要學習函數 K 即可學習到複合任務的行為方式,此處函數 K 接收兩個參數:現在在執行什麼複合任務,以及當前在執行的任務編號。

論文中對上面公式的證明:

===== ? ? ? =====

對於一個MDT: T_i ,設其終態為 x_g in S ,回饋函數為 :

R_i(x,a) = sum_{y in S}P_{xy}(a)r_i(y)-c(x,a)

根據上文提到的約束,對於所有x 
eq x_g ,我們有 r_i(x) = 0

那麼設 Phi(y, x_g) 為在 T_i 的最優策略 pi_i^* 下,狀態從 y 一路轉移到 x_g預期總代價,有:

Q^{T_i}(y,a) = r_i(x_g) - c(y,a) - Phi(y, x_g)

記得這裡因為 gamma = 1 ,並且我們假定終態 x_g 在基礎任務中始終是可達的,所以Q值中始終有 gamma^n r_i(x_g) equiv r_i(x_g) 這一項,而 Phi 則是從當前狀態到終態 x_g 的最優策略下,動作序列的總代價

那麼對於符合約束的複合任務 C_j ,不失一般性地,我們假定對於 C_j = [T(j,1), T(j,2), ..., T(j, k)] ,存在 l in [1,k] 使得 T(j, l) = T_i

對於 T_i ,設 L subset S 為滿足下述條件的擴展狀態集

  • 對於表示任務的擴展比特序列的那一部分,所有 m < i 的項都為 1 ,所有 m geq i 的項都為 0

這裡可以理解為,L 代表複合任務中所有 T_i 之前的任務所構成的狀態空間。注意雖然我們認為所有的基礎任務 T_i 擁有相同的狀態空間,但是對於複合任務的擴展狀態空間 S ,相同的狀態 x in S 對應的 x in S 對於不同的任務是不同的。

並且設 y in L subset S 對應相應的 y in S ,令 x_g in S 對應任務終態 x_g in S (即 x_g 擴展部分第 m leq i 的項為 1 ,且第 m>i 的項為 0 ),

注意上面的兩個描述,對於 T_iL 中的擴展部分,第 i 項為 0 ,而對於 x_g ,第 i 項為 1 ,所以 x_g 
otin L

那麼對於所有的 x in L ,我們都有 r^C_j(x) = 0 ,且 c(x,a) = c(x, a)

根據定義,我們知道,要完成任務 T_i ,Agent必須到達狀態 x_g ,令 Phi(y, x_g) 為在最優策略下從 T_ix_g 的預期總代價,根據上文提到的 T(j,l) = T_i ,根據Bellman公式下Q值的定義我們有:

$Q^{C_j}_{T_i}(y,a) = Q^{C_j}_{T_{(j, l+1)}}(x_g,b) + r_i^c(x_g) - c(y,a) - Phi(y, x_g)

這其中, b 代表在執行任務 T_{(j, l+1)} 時,最優策略下,在 x_g 狀態時採取的動作。

(註:這個公式當時我看了挺久,其實想明白了之後並不難理解,就是Bellman遞歸定義式下的Q-value公式,其中  r_i^c(xg) - c(y,a) - Phi(y, x_g) 即是上式中 Q^{T_i} S 下的映射,而 Q^{C_j}{T(j, l+1)} 則是 gamma Q^{C_j}{T(j, l+1)} gamma = 1 下的特例)

根據最優子結構原則, Phi(y, x_g) = Phi(y,x_g)

注意到Q^{C_j}_{T_{(j, l+1)}}(x_g, b) + r^c_i(x_g) - r_i(x_g)

這一項與當前狀態 y 和當前動作 a 無關

K(C_j, l) equiv Q^{C_j}_{T_{(j, l+1)}}(x_g, b) + r^c_i(x_g) - r_i(x_g) ,於是推出:

Q^{C_j}_{T_i}(y, a)  = Q^{T_i}(y,a) + K(C_j, l)

===== ? ? ? =====

接下來還有一個問題,就是上面的方法需要由人類指定如何將複合任務分解為子任務,然而一個聰明的Agent應該能夠學習到如何自行在合成任務中判斷每個子任務。於是作者給出了一種叫做 CQ-L 的結構,基於Jacob於1991年提出的任務分解架構進行改進,實現了子任務的自動探測。

Jacob在1991年發布的兩篇論文(1,2)提出了一種模塊化的門控方法來進行多個任務的學習,其主要思路為:

  • 對於預期學習 n 個任務的系統,有 n 個子系統 A_i |_{i in [1, n]} ,每個子系統對應一個門控單元 g_i |_{i in [1, n]}
  • 對於每個輸入,每個子系統 A_i 都給出一個輸出 y_i
  • 系統的最終輸出為 y = sum_i g_i y_i ,論文2中對g_i 做Softmax變換將之轉化為Gibbs分布
  • 所有的子系統和門控單元都通過梯度同步更新
  • 當某一子系統 A_i 呈現顯著的優勢時,更改門控網路的參數,使得 g_i 的分布更傾向於在該情況下選擇 A_i

Task decomposition through competition in a modular connectionist architecture: The what and where vision tasks?

www.sciencedirect.com圖標http://papers.nips.cc/paper/430-a-competitive-modular-connectionist-architecture.pdf?

papers.nips.cc

在本論文中作者指出,Jacob的方法只適用於非序列任務的監督學習,於是乎作者做了如下改進:

  • 每個專家子系統,在作者的論文中被映射為一個獨立的Q-Value Approximator (Q-Module),來學習基礎任務的 Q: S 	imes A 
ightarrow mathbb{R}
  • 相應的門控網路,接受擴展狀態 S 的擴展比特部分,以及相應的task command(論文中task command代表對相應任務目標的語義化描述)
  • 額外增加偏置網路(Bias Network),與門控網路共享輸入,用以近似上文提到的 K(C_j, l)
  • 門控網路每個在每個時間 t 處都選擇一個 Q-module 的輸出 q_i(t) ,並將之與偏置網路近似的 K 相加,作為最終 Q 值(以近似 Q^{C_j}_{T_i}(y, a)  = Q^{T_i}(y,a) + K(C_j, l)

整個架構的大體運行方式為,在 t 時刻:

  1. 對於當前任務與當前的相應狀態 x_t ,根據歸一化後 g_i 的值作為概率選擇相應的Q-Module
  2. 對於選擇的Q-Module,設其當前輸出為 q_t ,對於所有的 a in A ,估計相應的 q_t(x_t,a) 值並將之轉換為相應的Gibbs分布 frac{1}{Z}e^{eta q_t(x_t, a)} ,進而選擇要執行的動作 a_t
  3. 執行動作後,根據系統的反饋,計算所有Q-Module的 q_i(x_t, a_t)
  4. 設偏執單元的輸出為 K(t) ,令當前 Q 的估計值為 hat{Q}(x_t, a_t) = q_t(x_t, a_t) + K(t) ,那麼根據TD-learning,那麼在 t+1 時刻,我們可以計算出 t 時刻關於 hat{Q}(x_n, a_t) 的error為: e(t) = R(x_t, a_t) + hat{Q}(x_{t+1}, a_{t+1}) - hat{Q}(x_t, a_t) ,那麼系統在 t 時刻的輸出也可以被定義為 D(t) = e(t) + Q(t)

這一系統的具體學習過程:

===== ? ? ? =====

我們認為每個Q-module的輸出 q_i(t) 實際上是一個高斯分布 mathcal{N}(q_i(t), sigma) 的均值, 而選擇 q_i 的概率由門控系統的輸出 s_i 決定:

g_i = frac{e^{s_i}}{sum_j e^{s_j}}

系統在 t 時刻的輸出為 hat{Q}(t) = q_t(t) + K(t) 對應的預期輸出為 D(t) = R(t) + hat{Q}(t+1)

那麼第 i 個Q-Module產生預期輸出的概率為:

p_t(D(t)) = frac{1}{Nsigma}e^{frac{||(D(t)-K(t))-q_i(t)||^2}{2sigma^2}}

那麼如果我們的系統能夠輸出 D(t) ,另系統最終輸出預期Q值的(似然)概率為 L(D(t)) ,選擇到 i後驗概率為:

p(i|D(t)) = frac{g_i(t)p_i(D(t))}{L(D(t))} = frac{g_i(t)p_i(D(t))}{sum_j{g_j(t)p_j(D(t))}}

鑒於系統的目標是最大化系統在當前任務下的 L(D(t)) ,我們即可令 log{(L(D(t)))} 對各個 q_js_i 求導

Delta q_j(t) = alpha_q frac{partial log(L(t))}{partial q_j(t)}

Delta s_i(t) = alpha_s frac{partial log(L(t))}{partial s_i(t)}

則最終學習過程為:

q_j(t+1) = q_j(t) + Delta q_j(t)

s_i(t+1) = s_i(t) + Delta s_i(t)

b(t+1) = b(t) + alpha_b(D(t) - Q(t))

===== ? ? ? =====

系統結構可以由下圖表達:

在這種情況下,因為每個Q-module的更新程度與其被選擇的概率相關,最終每個Q-module將自行適配到其所擅長的任務上,而相應的門控單元也將更新以致於選擇每個模塊的概率接近於其後驗概率,即學會選擇最合適的模塊。

推薦閱讀:

相关文章