众所周知,当AlphaGO战胜了世界围棋冠军李世石之后,整个工业界都为之振奋,越来越多的学者意识到强化学习在人工智能领域是一个非常令人exciting的。在此我就分享一下本人的强化学习学习笔记。
机器学习可以分为三类,分别是 supervised learning,unsupervised learning 和reinforcement learning。而强化学习与其他机器学习不同之处为:
agent执行的动作会影响之后的数据。
强化学习的关键要素有:environment,reward,action 和 state。有了这些要素我们就能建立一个强化学习模型。强化学习解决的问题是,针对一个具体问题得到一个最优的policy,使得在该策略下获得的reward最大。所谓的policy其实就是一系列action。也就是sequential data。
强化学习可用下图来刻画,都是要先从要完成的任务提取一个环境,从中抽象出状态(state) 、动作(action)、以及执行该动作所接受的瞬时奖赏(reward)。
reward通常都被记作
action是来自于动作空间,agent对每次所处的state用以及上一状态的reward确定当前要执行什么action。执行action要达到最大化期望reward,直到最终算法收敛,所得的policy就是一系列action的sequential data。
就是指当前agent所处的状态。具体来讲,例如玩pong游戏,该游戏的状态就是当前time step下小球的位置。而Flappy bird状态就是当前小鸟在平面上的位置。
policy就是只agent的行为,是从state到action的映射,分为确定策略和与随机策略,确定策略就是某一状态下的确定动作
因为强化学习今本上可以总结为通过最大化reward来得到一个最优策略。但是如果只是瞬时reward最大会导致每次都只会从动作空间选择reward最大的那个动作,这显然不是我们想要的,所以为了很好地刻画是包括未来的当前reward值最大(即使从当前时刻开始一直到状态达到目标的总reward最大)。因此就够早了值函数(value function)来描述这一变量。表达式如下:
model就是用来预测环境接下来会干什么,即在这一状态的情况下执行某一动作会达到什么样的状态,这一个动作会得到什么reward。所以描述一个模型就是用动作转移概率与动作状态reward。具体公式如下:
大家应该都很熟悉马尔科夫过程,其实就是状态以及某状态的转移,最重要的就是一步转移概率矩阵,只要有了这个一步转移概率矩阵就能刻画整个马尔科夫过程。
下面来讲解一下最著名的bellman方程的推导,首先推导如何迭代值函数,即更新值函数:
1.value function
下面举一个例子:(状态图如下)
clear close allclcP = [0.9 0.1 0 0 0 0 0; 0.5 0 0.5 0 0 0 0; 0 0 0 0.8 0 0.2 0; 0 0 0 0 0.6 0 0.4; 0 0 0 0 0 1 0; 0 0 0 0 0 1 0; 0 0.2 0.4 0.4 0 0 0];gamma = 1;R = [-1 -2 -2 -2 10 0 1];%% update iterationmaxiteration = 200;V = zeros(size(P,2), maxiteration);i = 1;while i <= maxiteration v = zeros(size(P,1),1); for j = 1:7 v(j) = bellman_equ(gamma,P(j,:),R(j),V(:,i)); end V(:,i+1) = v; i = i+1;endplot(V'), title('MRP');legend('Facebook','class1','class2','class3','pass','sleep','pub');axis([0,210,-25,12])grid on;V(:,size(V,2))
bellman equation:
function v = bellman_equ(gamma,P,R,v_old)v = R + gamma*P*v_old;end
本次课程就更新到这里,希望能帮助到大家。
联系客服