---
# System prepended metadata

title: '深度強化學習 Ch2.4 : 策略函數 & 價值函數 & Return'
tags: [reinforcement learning]

---

###### tags: `reinforcement learning`
# 深度強化學習 Ch2.4 : 策略函數 & 價值函數 & Return
<br>

在深度學習中**代理人**會與**環境**互動，目標是為了得到最多的回饋值，
為了使 Reward 越大，要使用價值函數去做衡量，而策略函數會幫助我們計算價值。
:::success
- $s_t$：時間點t的狀態
- $a_t$：時間點t所採取的動作
- $r_t$：時間點t獲得的reward(回饋)
 BTW提醒一下 $r_t$ 並不是做了 $a_t$ 產生的回饋而是 $a_{t-1}$ <br>

>:bangbang:**注意**:  通常"XX"空間(集合)會寫成大寫 ex : 動作空間 $A$, 狀態空間 $S$
但如果是==加上時間戳記(t)則是代表此情況還未知(未來的值) ex : $A_{t+1}$==

:::
---
<br>

## 1. 策略函數 Policy Function
**策略函數**會根據==目前狀態==，決定該執行的==動作==。
### - 策略函數定義
:::warning
<font size=4 color=red>**數學式：$\pi(A|s)=P(A\mid s)$，$s\in S$**</font>
>解釋：策略($\pi$)可以算出在指定狀態中每個可能動作為**最佳動作的機率**
$P(A\mid s)$：s狀態下個動作的機率分布&emsp;A：動作空間&emsp;S：狀態空間
:::

### - 最佳策略函數
:::warning
<font size=4 color=red>**數學式：$\pi^*\rightarrow argmaxE(r\mid \pi)$**</font>
>解釋：能夠產生最高期望回饋值的策略
期望回饋值($E(r\mid \pi)$)：將回饋值長期觀察，並將結果進行平均計算
:::
---
<br>

## 2. 狀態轉移函數
狀態轉移函數是指在==狀態 $s_t$ 時執行動作 $a_t$ 會轉移成新狀態 $S^{'}$ 的機率==
:::warning
<font size=4 color=red>**數學式：$p(S^{'} \mid s_t,a_t)=P(S^{'} \mid s_t,a_t)$**</font>
>解釋 : 當在狀態 $s_t$ 執行 $a_t$ 可能產生不同的狀態，
$p$ 則是產生各狀態的機率
:::

:::spoiler :secret: **舉例** 
![](https://i.imgur.com/7LIOfkd.png =300x) 

**- 策略函數 : 在 State now 產生各動作的機率**
$\pi(A|now)=[0.6,0.4]$

**- 狀態轉移函數 : 在 now 時使用 Action 1 產生各 $S^{'}$ 機率**
$p(S'|now,action1)=[0.6*0.3, 0.6*0.7]=[0.18, 0.42]$
:::
---
<br>

## 3. Return 回報
Return 也叫做未來累計獎勵(Cumulative future reward)，寫為 $U_t$
是之後推導 Q-learning 等演算法很重要的觀念。
### - Return 定義
:::warning
<font size=4 color=red>**數學式：$U_t=R_{t+1}+R_{t+2}+R_{t+3}+R_{t+4}+...$**</font>
R : 未來的回饋 reward
>解釋 : 當在時間 t 時會有此 Return 
指的是"未來"的回饋總和，因為回饋越大越好，當然 $U_t$ 也是。
:::
### - Discounted Return
:::warning
<font size=4 color=red>**數學式：$U_t=R_{t+1}+\gamma R_{t+2}+{\gamma}^2R_{t+3}+{\gamma}^3R_{t+4}+...$**</font>
$\gamma$ : 折扣係數，介於 0-1
>**解釋** : 在 Return 中加入了折扣係數，越是未來的回饋就給予越多折扣(越不重要)
因為最主要還是考慮當前情況，此 Return 在之後 TD-learning 會用到
:::
:::success
**折扣係數想法** :
今天有人讓你選 [ 現在給你 1000 元 ] 或 [ 明年給你 1500 元 ]
也許你會猶豫該怎麼做決定，我們可以發現因為未來的不確定性
導致 [ 1000($R_{t+1}$) ] 和 [ 未來的1500($R_{t+2}$) ] 形成了等價
可將 [ 未來1500 ] 寫成 "$1000=\gamma R_{t+2}$ 
$\gamma$ 就是折扣係數，進而理解 Discounted Return
:::

Return 中的 $R_{t+1}$ (Reward) 與未來的狀態($S_{t+1}$)、動作($A_{t}$) 有關
此二值又取決於 [策略函數] 和 [狀態轉移函數]
所以 $U_{t}$ 會與未來所有動作、狀態有關，對在 t 時刻的我們來說他是個**未知的隨機值**。

---
<br>

## 4. 動作價值函數 Q
動作價值函數可以得到在狀態 $s_t$ 下使用某動作 $a_t$ 的效果好不好(動作的價值)
### 定義
:::warning
<font size=4 color=red>**數學式：$Q_{\pi} (s_t,a_t)= E(U_t\mid s_t,a_t)=E({\sum}_{k=0}^{\infty} {\gamma}^kR_{t+k+1} \mid s_t,a_t)$**</font>
>解釋 : 因為 $U_t$ 是未知隨機值，但可以求其期望值，
>在利用 $s_t$, $a_t$ 對 $U_t$ 積分求期望後，將未來 $S_t,A_t$ 都積掉了
>得到的 $Q_{\pi}$ 為實際變量，==意義為"使用 $\pi$ 策略 在 $s_t$, $a_t$ 情況的期望回饋值"==
:::
補 : $U_t$ 可看成未來 $s_t$, $a_t$ 組成，所以就可對[策略函數] 和 [狀態轉移函數]進行積分(求期望)

:::spoiler :secret:前一章(CH2) 的動作價值函數
<br>

$Q_k(a)=\frac{r(a1)+r(a2)+...+r(an)}{n}$
<br>

其實可以看成 $U_t = r(a1)+r(a2)+...+r(an)$
$Q_k(a)$ 則是對他做平均取 $U_t$ 期望值
:::

### 最大動作價值函數
:::warning
<font size=4 color=red>**數學式：$Q^* (s_t,a_t)= \mathop{max}\limits_{a}Q_{\pi} (s_t,A)$**</font>
>解釋 : $Q_{\pi}$ 有很多因不同策略$\pi$，不同策略又產生不同動作($a_t$)
>==所以可以說 $Q^*$ 是在 $s_t$ 狀態下採取某 $a_t$ 獲得的最大期望回饋==
>
:::
---
<br>

## 5. 狀態價值函數
狀態價值函數可以得到當前狀態 $s_t$ 好不好(狀態價值) ex: 西洋棋當前的局面好壞
### 定義
:::warning
<font size=4 color=red>**數學式：$V_{\pi} (s_t)= E(Q_{\pi}\mid s_t,\pi)=E({\sum}_{k=0}^{\infty} {\gamma}^kR_{t+k+1} \mid s_t)$**</font>
> 解釋 : $Q_{\pi}$ 會得到狀態$s_t$ 執行動作 $a_t$ 的好壞，
> 如果只要狀態 $s_t$ 的好壞，可以求 [ $Q_{\pi}$ 執行動作 $a_t$ ] 的期望值($A\sim \pi$)
> 就可以把 $a_t$ 積分掉(總和掉)，==所以 $V_{\pi}$ 就是在 $s_t$ 狀態下的期望回饋值==
:::
<br>

## 6. 狀態價值 vs 動作價值

---
Reference : 
- [深度強化學習(1/5) : 基本概念 (1/5)|Shusen Wang](https://www.youtube.com/watch?v=vmkRMvhCW5c&t=990s)