# Lecture 1:概括与基础

和 supervised learning 的区别:

* 强化学习是Sequential data作为input,每次输入并不是独立同分布
* 没有ground truth, learner不会被告知什么action是正确的。需要不断去尝试
* Trail-and-error exploration(balance between explioration and exploitation)
* reward signal是延迟的

rollout:sample actions

Full observation: $O_t=S_t^e=S_t^a$
Partial observation: Partially observation Markov decision process(POMDP)



Agent: Policy, Value function, Model(agent对世界的理解)
Stochastic policy: $\pi$
Deterministic policy:$a*=\mathop{\arg\max}_{a}\pi(a|s)$


Value-function:
$$v_{\pi}(s)\equiv\mathbb{E}_{\pi}[G_t|S_t=s]=\mathbb{E}_{\pi}[\sum\limits_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s], s\in\mathcal{S}$$
Q-function:
$$q_{\pi}\equiv\mathbb{E}_{\pi}[G_t|S_t=s, A_t=a]=\mathbb{E}_{\pi}[\sum\limits_{k=0}^{\infty}\gamma^kR_{t+k+1}|S_t=s, A_t=a]$$

## Model
预测下一步环境将会怎么做
$$\mathcal{P}_{ss'}^{a}=\mathbb{P}[S_{t+1}=s'|S_t=s, A_t=a]$$
$$\mathcal{P}_{s}^a=\mathbb{E}[R_{t}| S_t=s, A_t=a]$$


## 不同的表征:
* Value-based agent: 显式输出value,隐式输出policy
![](Image/2022-01-16-09-31-22.png)

* Policy-based agent: 显式输出policy, 没有value function


* Actor-Critic agent:策略函数和价值函数都学习了

* Model based: 显式学习model

* Model free:没有model,显式学习value和policy function
![](Image/2022-01-16-09-33-01.png)




![](Image/2022-01-16-09-44-50.png)

# Lecture2: Markov
## Markov Property
state历史:$h_t=\{s_1, s_2, ..., s_t\}$
称一个 $s_t$ 是Markovian,当且仅当:$$p(s_{t+1}|s_t)=p(s_{t+1}|h_t)$$$$p(s_{t+1}|s_t, a_t)=p(s_{t+1}|h_t,a_t)$$


## Markov Process/Markov Chain
*P_{s,s'}(s_{t+1}=s'|s_t=s)$
![](Images/2022-05-28-04-54-55.png)
* 思考:如何通过sample一些trajectory来还原$P$?直接根据出现频率计算即可(利用Markov Property)

## Markov Reward Process
* 奖励是state的函数
* 随波逐流的小船
* Horizon:一个episode中最大的步数(可以是$\infty$)
*G_t=R_{t+1}+\gamma2}+...+\gamma^{T-t-1}R_T$$
为什么用折扣因子?
(1)防止有环
(2)未来有不确定性,尽可能尽快获得奖励
(3)对人来说,也是希望尽可能尽快收获奖励
(4)当然也可以设置成0或者1
*V_t(s)=\mathbb{E}[G_t|s_t=s]$$
Bellman equation:$$V(s)=R(s)+\gamma\sum\limits_{s'\in$$![](Image/2022-01-16-21-10-09.png)
如何计算?
(1)蒙特卡洛:直接sample足够多的trajectory
(2)动态规划:不断迭代Bellman方程直到收敛

## Markov Decision Process
* MDP可以由确定。加入action之后的变化:
$$P(s_{t+1}=s'|s_t=s,a_t=a)\\ R(s,a)=R(s_t=s,a_t=a)=\mathbb{E}[r_t|s_t=s,a_t=a]$$
*(S,A,P,R,\gamma)$ 和 $\pi$,就可以将MDP转化为Markov Reward Process:$(S,P^{\pi},R^{\pi},\gamma)$,其中:$$P^{\pi}(s'|s)=\sum\limits_{a\in\pi(a|s)P(s'|s,a)\\ R^{\pi}(s)=\sum\limits_{a\in\pi(a|s)R(s,a)$$
*v^\pi(s)=\mathbb\pi[G_t|s_t=s]\\ q^\pi(s,a)=\mathbb\pi[G_t|s_t=s,A_t=a]\\ v^\pi(s)=\sum\limits_{a\in\pi(a|s)q^\pi(s,a)$$
* Backup:当前状态是下一状态的线性组合
$$v^\pi(s)=\sum\limits_{a \in\pi(a|s)R(s,a)+\gamma\sum\limits_{a \in\pi(a|s)P(s'|s,a)v^\pi(s')  \\ q^\pi(s,a)=R(s,a)+\gamma\sum\limits_{s'\in\sum\limits_{a'\in\pi(a'|s')q^\pi(s',a')$$

#### Policy Evaluation(Prediction):根据 $\pi$ 求 $v^\pi$
> $\textbf{Synchronous backup}$
$$v_{t+1}=\sum\limits_{a\in\mathcal{A}}\pi(a|s)R(s,a)+\gamma\sum\limits_{s'\in\mathcal{S}}\pi(a|s)P(s'|s,a)v_t(s')$$不断迭代直到收敛
[动态演示](https://cs.stanford.edu/people/karpathy/reinforcejs/gridworld_dp.html)
#### Control: 输入MDP,输出最优价值函数和最优policy
$$\pi^*(a|s)=\left\{
\begin{array}{lll}
1\argmax\limits_{a\in\mathcal{A}}q^*(s,a)  \\
0    &     else
\end{array} 
\right.$$

> $\textbf{Value Iteration Algorithm}$
Initialize $k=1$ and $v_0(s)=0$ for all state s
$For\ k=1:H$
\ \ \ \ \ For\ each\ state\ s:$$$q_{k+1}(s,a)=R(s,a)+\gamma\sum\limits_{s'\in\mathcal{S}}P(s'|s,a)v_k(s')\\v_{k+1}(s')=\max\limits_{a}q_{k+1}(s, a)$$
$\ \ \ \ \ k\larr1$
To get optimal policy:$$\pi(s)=\argmax\limits_{a}R(s, a)+\gamma\sum\limits_{s'\in\mathcal{S}}P(s'|s,a)v_{k+1}(s')$$




# 第三讲 无模型的价值函数估计和控制
前提:不知道MDP的模型
什么是已知MDP?已知R和P

### Monto-Carlo算法:
##### 特点:
* 不需要知道reward和转移概率,只需要sample足够多的trajectory然后进行平均来估计价值函数。
* booststrap:一种非参数统计方法:
在原有样本中通过重抽样(有放回的抽取,完全独立同分布)抽取一定数量的新样本,每次得到一个统计量,将这些统计量进行平均即可近似算出总体的参数估计值
* no bootstrapping(DP用的就是bootstrapping)
* 不假设是MArkov的
* 使用empirical mean return而不是expected return
* 只能应用于episodic MDPs(each episode terminates)

##### Empirical Mean:
*\mu_t\frac{1}{t}\sum_i\frac{1}{t}(x_t+\sum_{i=0}^{t-1} x_i)=\frac{1}{t}(x_t+(t-1)\mu_{t-1})=\mu_{t-1}+\frac{1}{t}(x_t-\mu_{t-1})$

##### 算法:
![](Images/2022-06-22-00-23-50.png)

##### Running Mean
忘记old带来的影响
$v(S_{t})=v(S_t)+\alpha(G_t-v(S_t))$ 
$\alpha$越大新的带来的影响越大,大于$\frac{1}{n}$将会有遗忘效果


### Temporal-Difference(TD)Learning
特点:
* 直接从trajectory经验中学习
* model-free:不需要知道R和P
* 可以从incomplete episodes中学习,通过bootstrapping