Reforcement Learning
什么叫RL
和监督学习的区别是,Agent会通过观察(Observation)当前环境(Environment),获得当前的State,接着Action后能够得到Environment的反馈:Reward,然后Agent根据Reward再调整做出正确的Action去改变Environment- Agent:学习主体,可以是一个NN或者其它,作用:Learns to take actions maximizing expected reward
- Environment:外部环境,比如下围棋就是对手,玩电玩的时候,就是主机
- State:Agent通过观察获取到的当前环境的输入状态
- Action:根据当前状态做出的动作,当然此动作会影响Environment,比如下围棋的时候会影响对手下一步落棋
- Reward:做出action,当前Environment给予的评价
Look for a function
举例
- state:输入为当前画面(像素值)
- action:左移,右移或者开火
- reward:Score
- outline
Policy-based Approach(Learining an Actor)
总体分三步
First step:
Second step:
Third step(pick the best function):
Policy Gradient作用
如果Actor,Env,Reward都看做是DNN,那么本质上就是一个NN网络,求极值就很容易。但实际上Env,Reward不是一个NN网络,所以就不能进行微分,不能求出极值,解决办法就是用policy gradient进行处理
Value-based Approach(Learning a critic)
- 是评价一个agent(actor)的好坏,$V^{\pi}(s)$表示给定一个Agent(Actor:$\pi$),并给定一个State:s,到最后游戏完成后,得到最后的reward expects的值
- 比如下面坐标的图,有很多怪,到游戏结束期望分数就容易获得比较高的值,右边图就比较小(因为这个图看到到最后游戏结束,能杀的怪已经很少了)
- 同一个state,不同的actor,那么$V^{\pi}(s)$值也会不一样
How to estimate $V^{\pi}(s)$
Monte-Carlo,观察到两个state,$S_a,S_b$,并且最后episode结束,Greed为$G_a,G_b$,这个时候,只需要让$V^{\pi}(s_a)\approx G_a,V^{\pi}(s_b)\approx G_b$
Temporal-difference,不会等到episode才开始计算(不用等到游戏结束就可以更新参数),原理是$V^{\pi}(s_t),V^{\pi}(s_{t+1})$中间是相差的$r_t$,所以只需要$V^{\pi}(s_t)-V^{\pi}(s_{t+1})\approx r_t$
Q Learning
Another Critic
- 输入为state和action,可以对所有action做穷举(如果不能穷举,其实还有其他的方法的),看哪一个reward得分最高(得到Q function)
- 输入为state和action,可以对所有action做穷举(如果不能穷举,其实还有其他的方法的),看哪一个reward得分最高(得到Q function)
每一次都找最大的Qfunction数值的action a
Actor+Critic
- 核心原理:不会像Actor那样跟着环境去学习,因为环境变化是比较多的,所以Actor-Critic是跟着critic去学习
- A3C
Inverse Reforcement learning
- 背景:其实生活中的大多数场景,都不好找reward的,不像围棋或者是电玩,有很明确的规则.
- 比如如果交通违规,如何处罚等。还比如说让机器人放盘子,之前并没有告诉摔坏盘子会扣分,机器人就不知道
- 原来的方案:
- Inverse Reforcement learning方案:
- 正好相反,并不知道Reward Function,是通过学习学习到Reward Function后,然后使用它选择出最好的actor
- 正好相反,并不知道Reward Function,是通过学习学习到Reward Function后,然后使用它选择出最好的actor
步骤:
- expert和IRL都会自己学习,获得最终Reward,我们假设专家的Reward总数比学习到的好
- 然后从中我们找到一个最好的Reward Function R
- 再通过R去得到Actor $\pi$
- 要注意下是,如果规则变化了,那么下面的循环圈需要不断的重新循环取学习
发现和GAN比较像