學習強化學習《Reinforcement Learning An Introduction》,總結第二章的知識,包含一個問題,兩個算法。
問題:the 10-armed bandit problem
算法:e-greedy、剃度上升
仿真代碼見附帶資料:the 10-armed bandit problem
1. 問題描述:the 10-armed bandit problem
這是一個重複做選擇的問題。一共有10個選擇,重複選擇1000次。
每次選擇都會有獎勵,獎勵是符合固定的正態分佈的。
所以做不同的選擇,獲得的獎勵不同;每次做的選擇,儘管選擇相同,但獎勵也不同。
你的目的是,連續做了1000次選擇後,得到的回報總和越高越好。
這個圖是一個特殊的 10-armed bandit problem。特殊之處在於的值。
重要:10-armed bandit problem是一個系列問題的總稱,每個特殊的10-armed bandit problem之間的不同之處在於的值的不同。選擇選項後,獲得獎勵是符合正態分佈的。
2. 算法總結
2.1 算法1: algorithm
你是不知道的具體值的,所以首先要對每個選擇的行爲值做個估計,因爲這個估計值是在不斷更新的,所以定義爲,意思是在時刻,選擇行爲後,估計得到的獎勵值。
這個算法的大概步驟是:每次選擇執行的行爲是估計值最大的行爲,小概率的情況下,隨機選擇其他的行爲。
算法步驟如下:
-
輸入:每個行爲的真值,,,算法參數$ \epsilon $
-
初始化:
- for a = 1~N_action
- ;
- ;
- R_total_bar(1) = 0;
- for a = 1~N_action
-
for t = 1~N_step
-
with probability ;
a random action with probability ;
-
計算回報;
-
更新全局均值回報R_total_bar(t+1) ;
-
;
-
;
-
-
輸出:全局均值回報R_total_bar(t)
2.2 算法2:Gradient Bandit Algorithms
類似於:隨機梯度上升算法
在t時刻,行爲a的偏好程度
在t時刻,選擇行爲a的概率:策略
算法對每個行爲偏好的更新公式:
是時刻之前獲得的獎勵的均值,這個作爲一個參考值,如果當前獲得的獎勵大於均值,就增加偏好值,如果小於均值,就減小偏好值。其他沒有選擇的行爲的偏好值就向相反方向移動。
算法總結
首先給每個行爲都初始化一個偏好程度,每次選擇行爲的時候,根據偏好程度,計算選擇每個行爲的概率(策略),然後根據概率選擇一個行爲,然後更新每個行爲的偏好程度。
算法步驟如下:
- 輸入:,,,
- 初始化:
- for a = 1~N_action
- ,每個行爲的次數;
- ,每個行爲的偏好值;
- ,每個行爲的均值回報;
- 全局均值回報 R_total_bar(1) = 0;
- for a = 1~N_action
- for t = 1 ~ N_step
- for a = 1~N_action
- 計算;
- 生成隨機數,根據概率選擇一個行爲;
- ;
- 計算回報;
- 計算均值回報:;
- 更新全局均值回報:R_total_bar(t+1) = R_total_bar(t)+1/t*(R-R_total_bar(t));
- 更新偏好值
- for a = 1~N_action
- if a==A
- else
- if a==A
- for a = 1~N_action
- for a = 1~N_action
- 輸出:R_total_bar
3. 仿真
因爲存在不確定性,每次的回報都是服從一個正態分佈,所以每次做實驗的結果也是不一樣的。爲了說明問題,我們做2000次仿真實驗,每次仿真實驗都是,然後取平均值。
對於某一$\epsilon $的仿真步驟如下:
- ;
- $N_{step} = 1000 $;
- $N_{normlize} = 2000 $;
- for i = 1:N_normlize
- 初始化問題:
- for a = 1~N_action
- ;
- for a = 1~N_action
- 運行強化學習算法;
- for j = 1~4 (前三次是算法1,第4,5次是算法2)
- alpha = 0.1; 0.4
- 運行強化學習算法
- 得出
- for j = 1~4 (前三次是算法1,第4,5次是算法2)
- 計算隨時間變化的均值回報
- 初始化問題:
- for i = 1:N_step
- 對求均值;
- 作圖,在一個圖中,畫出三個與時間的曲線圖
4. 仿真結果分析
紅色曲線:e-greedy算法 e=0
綠色曲線:e-greedy算法 e=0.01
藍色曲線:e-greedy算法 e=0.1
黃色曲線:梯度上升,alpha=0.1
黑色曲線:梯度上升,alpha=0.4