强化学习(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更新公式,这样一定程度上可解决贪心问题。
表示对远期收益的重视程度。
整个训练过程,在某一步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最后两个全连接层。