增量式實作(Incremental Implementation)

Photo by Andriyko Podilnyk on Unsplash
Photo by Andriyko Podilnyk on Unsplash
在強化學習(Reinforcement Learning, RL)中,許多演算法在形式上看似不同,但其核心更新機制卻高度一致。它們在實作層面都依賴一種共同的數值估計方式。這種方式並不是一個獨立的演算法,而是一種用來逐步逼近期望值的計算技巧。理解這個機制,有助於看清不同強化學習方法之間真正的差異所在。

在強化學習(Reinforcement Learning, RL)中,許多演算法在形式上看似不同,但其核心更新機制卻高度一致。它們在實作層面都依賴一種共同的數值估計方式。這種方式並不是一個獨立的演算法,而是一種用來逐步逼近期望值的計算技巧。理解這個機制,有助於看清不同強化學習方法之間真正的差異所在。

增量式實作(Incremental Implementation)

在強化學習(Reinforcement Learning, RL)中,增量式實作(incremental implementation)不是一個獨立的演算法,而是一種估計期望值(expectation)的數值計算方法。它的想法是,不要一次用全部的資料來重新計算期望值,而是在每次得到新的樣本時,對估計值做小幅度的修正。

\text{new estimate} \space \leftarrow \space \text{old estimate} \space + \space \text{step size} \space (\text{target} \space - \space \text{old estimate})

其中,目標(target)與舊估計值(old estimate)之差可視為當前估計的誤差(error)。Incremental update 的本質,便是沿著此 error 方向修正估計值。

\text{error} \space = \space (\text{target} \space - \space \text{old estimate})

增量式的數學本質(The Mathematical Essence of Incremental)

給定樣本 X_1, X_2, \cdots, X_n,則樣本平均的計算如下。這是樣本平均的 batch 形式。

\displaystyle \bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i

然而,也可以用樣本平均的 incremental 形式來計算,如下。這是典型的 incremental update。

\displaystyle \bar{X}_n = \frac{1}{n} \sum_{i=1}^n X_i \\\\ \hphantom{\bar{X}_n} = \frac{1}{n} (X_n + \sum_{i=1}^{n-1} X_i) \\\\ \hphantom{\bar{X}_n} = \frac{1}{n} \Big( X_n + (n-1) \frac{1}{n-1} \sum_{i=1}^{n-1} X_i \Big) \\\\ \hphantom{\bar{X}_n} = \frac{1}{n} \Big( X_n + (n-1) \bar{X}_{n-1} \Big) \\\\ \hphantom{\bar{X}_n} = \frac{1}{n} (X_n + n\bar{X}_{n-1} - \bar{X}_{n-1}) \\\\ \hphantom{\bar{X}_n} = \bar{X}_{n-1} + \frac{1}{n} (X_n - \bar{X}_{n-1})

其中,step size \alpha_n = \frac{1}{n},而 target 是 X_n。在 incremental form 中,每次 update 皆可視為以新觀測到的樣本 X_n 作為當前的 sample target。

值得注意的是,隨著新的樣本不斷地獲得,step size \alpha_n 會越來越小。因此,就算新的資料顯示平均值已經改變很多,但是由於 step size 變得很小,於是估計值會僵住,跟不上變化。在非平穩(non-stationary)資料分佈下,隨著 \alpha_n = \frac{1}{n} 趨近於 0,估計值將逐漸喪失對新資料的適應能力。在此情境下,若希望估計值對近期樣本保持敏感,則可改採常數步長(constant step size)\alpha。使用 constant step size 的 incremental update 如下:

\bar{X}_n = \bar{X}_{n-1} + \alpha (X_n - \bar{X}_{n-1})

將上式展開後,我們可以看到越舊的樣本的影響會越小。

\displaystyle \bar{X}_n = \bar{X}_{n-1} + \alpha (X_n - \bar{X}_{n-1}) \\\\ \hphantom{\bar{X}_n} = \alpha X_n + (1-\alpha)\bar{X}_{n-1} \\\\ \hphantom{\bar{X}_n} = \alpha X_n + (1-\alpha) \Big( \alpha X_{n-1} + (1-\alpha) \bar{X}_{n-2} \Big) \\\\ \hphantom{\bar{X}_n} = \alpha X_n + (1-\alpha) \alpha X_{n-1} + (1-\alpha)^2 \bar{X}_{n-2} \\\\ \hphantom{\bar{X}_n} = \alpha X_n + (1-\alpha) \alpha X_{n-1} + (1-\alpha)^2 \alpha X_{n-2} + \cdots + (1-\alpha)^{n-1} \alpha X_2 + (1-\alpha)^n \bar{X}_1 \\\\ \hphantom{\bar{X}_n} = (1-\alpha)^n \bar{X}_1 + \sum_{i=2}^n \alpha (1-\alpha)^{n-i} X_i

結語

Incremental implementation 提供了一個統一的視角,來理解 RL 中各種價值估計的更新方式。透過 step size 與 target 的設定,演算法得以在有限記憶與線上互動的情境下,持續修正對期望值的估計。當 step size 隨樣本數遞減時,估計值會趨近於傳統的樣本平均;而在使用 constant step size 時,則能在 non-stationary 環境中保有對新資料的適應能力。後續將會看到,不同的 RL 方法,正是透過定義不同的 target,並套用同一套 incremental update 框架,來形成各自的學習行為。

參考

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

You May Also Like