根據(jù) Simple statistical gradient-following algorithms for connectionist reinforcement learning
5. 段落式(Episodic)的REINFORCE算法
該部分主要是將我們已有的算法進(jìn)行擴(kuò)展, 擴(kuò)展到擁有temporal credit-assignment component的問題上.
特別地, 我們假設(shè)一個網(wǎng)絡(luò), 基于一段一段這樣來訓(xùn)練, 每一段都包含
個時間步, 每一個時間步, 許多單元會重新計算它們的輸出, 整個環(huán)境可能會改變其非強(qiáng)化的輸入, 在每一段的結(jié)束的時候, 一個強(qiáng)化值
將會被傳遞到網(wǎng)絡(luò)
.
該算法的引出是基于使用按時間展開(unfolding-in-time)進(jìn)行映射, 即當(dāng)任意的一個網(wǎng)絡(luò)在一個時間周期中進(jìn)行操作, 另一個網(wǎng)絡(luò)
沒有周期但是展現(xiàn)對應(yīng)的行為. 展開的網(wǎng)絡(luò)
通過在每一個時間步對
進(jìn)行復(fù)制來獲得.
形式化來說, 這相當(dāng)于和每一個在中的時間依賴的變量
聯(lián)系起來, 對應(yīng)的
以時間為索引的集合
, 其中
中的變量并不依賴于時間, 在
中的
就對應(yīng)
中的
.
給出參數(shù)的增量形式:
上述形式和我們之前給的形式有點類似, 唯一出現(xiàn)改動的地方就是變?yōu)?img class="math-inline" src="https://math.jianshu.com/math?formula=%5Csum_%7Bt%3D1%7D%5Ek%7Be_%7Bij%7D(t)%7D" alt="\sum_{t=1}^k{e_{ij}(t)}" mathimg="1">
這個對應(yīng)于非周期的網(wǎng)絡(luò), 即
我們舉個例子吧, 一個內(nèi)部全連接的遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network), 使用伯努利-邏輯斯蒂單元, 有
需要注意的是baseline是獨立于其他變量和輸出的, 我們稱具有以上格式的算法為段落式的REINFORCE算法
給出完整的權(quán)值修改公式:
定理2:
對于任意的段落式REINFORCE算法, 和
的內(nèi)積是非負(fù)的, 更進(jìn)一步, 如果
, 那么當(dāng)僅當(dāng)
, 內(nèi)積才為0, 如果
是和
獨立的話, 有
,
在段落式的REINFORCE算法中, 性能度量應(yīng)該改為
6. 多參數(shù)分布的REINFORCE
REINFORCE框架的一個有趣的應(yīng)用就是對于單元的學(xué)習(xí)算法的發(fā)展決定了它們的隨機(jī)標(biāo)量輸出, 輸出來自于多參數(shù)分布而不是使用半線性隨機(jī)單元的單參數(shù)分布. 舉個例子, 試想一個這樣的單元, 首先得到確定性的計算結(jié)果, 基于權(quán)值和輸入, 來獲得所有參數(shù)來控制的隨機(jī)數(shù)值生成過程的值, 接著將符合一個合適的分布的輸出隨機(jī)輸出. 特別地, 正態(tài)分布具有兩個參數(shù), 均值和標(biāo)準(zhǔn)差
, 一個單元根據(jù)這樣的一個分布來進(jìn)行輸出, 那么將要首先計算出
和
的值, 然后根據(jù)該正態(tài)分布隨機(jī)進(jìn)行輸出, 保證均值和標(biāo)準(zhǔn)差.
一種高斯單元(Gaussian Unit)的可能的有用特征是它輸出的均值和變化是單獨地可控的, 只要分離的權(quán)值(或者可能是輸入)被用來確定這兩個參數(shù), 有趣的點是控制標(biāo)準(zhǔn)差就相當(dāng)于控制單元的搜索行為. 通俗來講, 使用多參數(shù)分布的隨機(jī)單元就有可能控制探索行為的等級, 并且和在哪里進(jìn)行探索無關(guān), 這就與使用單參數(shù)分布的單元不一樣.
這里我們注意到對于任意單元的REINFORCE算法是易于推導(dǎo)出來, 我們用高斯單元來作為一個例子. 為了保證確定這種單元輸出的均值和標(biāo)準(zhǔn)差的特定方法, 而不是它的輸入和它的權(quán)重, 我們將會簡單地將單元的均值和標(biāo)準(zhǔn)差它們看作是單元的自適應(yīng)的參數(shù). 在實際的自適應(yīng)參數(shù)和輸入上這些參數(shù)的任何更多的通用的函數(shù)依賴需要鏈?zhǔn)椒▌t, Gullapalli提出來一個計算這些參數(shù)的方法是, 使用通過輸入行的共同集合的分離的權(quán)值的和(并且使用一些不同的學(xué)習(xí)規(guī)則), 為了簡化這種方法, 我們關(guān)注于單一的單元并且自始至終忽略單元索引的下標(biāo).
給出這樣的密度函數(shù):
進(jìn)而
我們可以得到一個更新的表達(dá)式
我們令可以得到簡化的版本
推廣到指數(shù)分布簇上
對于均值, 仍然有
7. 和反向傳播的兼容性
當(dāng)我們使用強(qiáng)化算法的時候, 會忽略掉所有單元之間連接的信息, 作為有監(jiān)督學(xué)習(xí)的算法, 反向傳播就完全利用了這樣的信息, 注意到我們的強(qiáng)化學(xué)習(xí)是針對目標(biāo)函數(shù)和環(huán)境的, 所以不像有監(jiān)督的學(xué)習(xí)那樣, 但是我們可以將反向傳播和我們的強(qiáng)化學(xué)習(xí)結(jié)合起來.
7.1 使用確定性的隱藏單元的網(wǎng)絡(luò)
考慮一個前饋的網(wǎng)絡(luò), 擁有確定的隱藏單元, 使用隨機(jī)的輸出單元, 使用這樣的一個網(wǎng)絡(luò)對于強(qiáng)化學(xué)習(xí)系統(tǒng)是有意義的, 因為對于輸出單元有隨機(jī)性的限制使得發(fā)生必要的探索.
記是網(wǎng)絡(luò)的輸入向量,
是輸出向量, 我們可以定義
為概率質(zhì)量函數(shù), 描述了網(wǎng)絡(luò)的輸入和輸出.
只不過整個網(wǎng)絡(luò)的輸出是一個向量而不是標(biāo)量, 對于網(wǎng)絡(luò)里面的任意一個權(quán)值, 有
的無偏估計是
記是輸出單元的索引集合, 因為所有的隨機(jī)性都在輸出單元上, 并且輸出單元的隨機(jī)性是獨立的. 我們有
是由于將模式
呈現(xiàn)給網(wǎng)絡(luò)而出現(xiàn)在第
個單元的輸入處的模式
有
故, 可以得到
以上的求和可能可以使用反向傳播來計算出來, 特別地, 如果是伯努利非線性單元, 我們可以直接使用參數(shù)作為中間變量, 故有:
我們可以直接計算得到
我們只需要將無偏估計進(jìn)行反向傳播即可
7.2 通過隨機(jī)數(shù)字生成器的反向傳播
考慮一個隨機(jī)的半線性單元, 并且假設(shè)有這么一個函數(shù),
對輸出
有一定的確定性的依賴, 這種條件下, 我們假設(shè)這個單元是輸出單元并且
, 我們可以利用
來計算
我們還可以推出決定了
不幸的是, 這種性質(zhì)并不是通用的. 如果是
的非線性函數(shù)的話. 然而, 如果輸出是一個隨機(jī)數(shù)生成器, 可以被寫成一個參數(shù)可微的函數(shù), 那么我們就可以利用確定性的計算.
考慮一個正態(tài)隨機(jī)數(shù)生成器, 比如高斯單元, 輸出根據(jù)
和
隨機(jī)生成
其中是標(biāo)準(zhǔn)正態(tài)離差(standard normal deviate), 注意到
以及
因此, 我們可以將高斯隱藏單元和REINFORCE結(jié)合起來