首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《白话深度学习与Tensorflow》学习笔记(5)强化学习(reinforcement learning)

《白话深度学习与Tensorflow》学习笔记(5)强化学习(reinforcement learning)

作者头像
微风、掠过
发布2018-04-10 14:43:48
1.2K0
发布2018-04-10 14:43:48
举报

强化学习(reinforcement learning)本身是一种人工智能在训练中得到策略的训练过程。

有这样一种比喻:如果你教一个孩子学古筝,他可以躺着,趴着,坐着,用手弹,用脚弹,很大力气弹等等,如果他正确得到要领给他一颗糖表示奖励,如果不对抽他一下。在过程中让他自己慢慢总结规律。

模型核心就是训练他的行为策略。

Action:行为,做出的反应,或者输出。

Reward:反馈和奖励,即对行为之后所产生的结果的评价,如果是好的正向的,就给一个正的奖励,负面的就负的奖励(惩罚),其绝对值衡量了好坏的程度。

1、我们需要定义好惩罚和奖励,让环境中产生的奖励能够有效量化反馈给主体。

2、让主体以较低成本快速的尝试,总结不同state的情况下reward较大的工作方式。

HMM:统计一下状态转换的概率和得到Reward的数学期望值,然后找到一条获取最大Reward的路径。

MDP(markov decision procee,MDP):在一个状态下,会有多大的概率选择某一种动作,以及每一次状态的迁移会获得一个多大的奖励。

S:state A:action P(s,s’)表示两张状态的转化概率R(s,s’)表示从状态s到s’转化后所应该得到就reward。

S是描述棋局盘面的一个向量,每个维度上都有棋子的描述信息

A是描述动作的向量(如车六平二)

R是状态得失的衡量

P则是概率

最后基于大量的观测统计出的结果就是马尔科夫决策过程的模型。

可以表示为一个二维表,其中再嵌套一个二维表。

总结时就计算出具体数值填入表格,用的时候就直接查表:去查获得Reward最大且概率最大的那个状态转换。

所以只要能把state向量化,reward数值化,即可使用MDP。

Q-learning解决短视问题:

Q-learning表达式

比如,在贪吃蛇问题中,为了吃一个枪而下一步撞死,则吃枪的意义就不复存在了。所以会给一个严重的惩罚系数,配合Q-learning更新公式,这样一定程度上可解决贪心问题。

Q-learning更新公式

表示对远期收益的重视程度。

整个训练过程,在某一步Reward较大,就推断它的前一步state和action比较靠谱,从而提高前一步的state的reward的评价。哪些经常反复出现有着较高reward的状态会被大量验证和强化,从而学出靠谱的路径来。这些路径由state和action组成。(这些均属于动态规划,DP)这种树也叫做蒙特卡洛树。

DQN:输入state向量,输出是action,收敛过程就是把树靠下的部分的Reward向靠上的部分去移动的过程,每次迭代计算都会发生reward的值从叶子向根部传播,而误差被定义成了传播的量。让网络不断去拟合,映射关系不断调整,是的这个映射满足从一个state到action的映射关系。

输出的action是选择Q值最高的对应的那个action。

误差函数

(E表示error,即误差)是指在全局中优化,后面一项statet+1的reward要和statet的reward接近,要同时经过这张网络来构造出这个损失函数的结果。

Q(s,w)是DQN网络的表达式,Q(s,a)是指Q-learning的表格。把reward从后往前传:

(1)初始化一个经验池,就是样本集;

(2)初始化Q(s,w)这个网络;

(3)做M轮如下工作,做M个mini batch:

3.1以一个概率e做action at,以1-e选取一个值最大的action;这样可以以一定概率接受新的东西,以免陷入局部困境一直执行下去

3.2根据xt和at在环境中的反馈获得相应的reward值和rt和盘面的xt+1;

3.3把xt,at,xt+1,rt这个序列放进经验池

3.4从经验池中随机选择部分序列xj,aj,xj+1,rj,生成一个yj标记,yj标记的定义如下:

如果xj+1已经是最后一个状态,那么yj=rj;

如果xj+1不是最后一个状态,那么yj=rj+rmaxQ(xj+1,a’;theta)

3.5对误差值做梯度下降优化,一边生成样本,一边对损失函数进行优化。

总结:网络拟合出来的是一个评价值,训练过程是伴随着那个由短视慢慢通过Reward传播来形成的不短视的过程中的state到Q最大值的映射逻辑。损失函数描述的是一个差距,就是一个state到它后面的一个state评估的差距,目标是让这个差距最小化。

开源框架:open Gym

使用TensorFlow训练神经网络玩Atari游戏:

DQN前三层都是卷积层提取特征,输入为84*84*4最后两个全连接层。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.11.10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档