强化学习

What is Reinforcement Learning?

强化学习是一种机器学习方法,也叫做试错法(Trial and Error),典型的使用强化学习的算法的例子是有alpha Go,它是让计算机在不断的尝试中,更新自己的行为准则,从而进一步学习如何下好围棋,如何得到高分。计算机自己学习是有一个虚拟的老师来给行为打分,得到的分数越高表示行为越好。与监督学习不同的是,强化学习在最开始的时候没有标签,需要自己通过不断的学习来找到适合自己行为的标签。

强化学习中包含的一些算法

1.通过价值选行为:Q-learning、Sarsa、Deep Q Network
2.直接选行为:Policy Gradients
3.想象环境并从中学习:Model Based RL

Q-learning(Off-policy)

举个例子:在我们很小的时候爸妈会告诉我们不写完作业就不准看电视,所以我们在写作业的状态下,好的行为准则是继续写作业,写完作业之后就可以得到奖励,但是不好的行为准则是还没有写完作业就去看电视了。假设我们以写作业这种行为准则为例,我们的选择是继续写作业和看电视,但是之前由于看电视没有被处罚过,所以我选择了还没写完作业去看电视,看电视之后又选择继续看电视,最后爸妈回家,发现我没有写完作业就去看电视了,并狠狠处罚了我,然后我就记下了这种经历,并把没有写完作业就去看电视的这种行为更改为负面行为。

假设我们的行为准则已经学习好了:现在我们处于写作业的状态定义为S1,然后把行为看电视定义为a1,把写作业定义为a2,根据我的经验,在S1的状态下,a2写作业带来的潜在奖励要比a1高,记录表格如下:

a1a2
S1-21

根据上表,我们可以得到现在应该选择a2作为我们接下来的行为。
现在我们的状态更新为S2,我们还是有两个同样的选择a1和a2,有下表:

a1a2
S2-42

同样选择Q表中对应的奖励值较大的那一个a2,然后到达S3并重复上述过程。
这就是Q-Learning的行为过程。

具体一点有:

a1a2
S1-21
S2-42

在实际的Q-Learning过程中,我们是根据奖励值来选择进行哪一个动作的,
Q ( S 1 , a 2 ) 现 实 : R + γ ∗ m a x Q ( S 2 ) Q ( S 1 , a 2 ) 估 计 : Q ( S 1 , a 2 ) } 差 距 = 现 实 − 估 计 \left. \begin{array}{l} \text{$Q(S1,a2)现实$:}&R+γ*maxQ(S2)\\ \text{$Q(S1,a2)估计$:}&Q(S1,a2) \end{array} \right\} 差距 = 现实 - 估计 Q(S1,a2)现实:Q(S1,a2)估计:R+γmaxQ(S2)Q(S1a2)}=

新 Q ( S 1 , a 2 ) = 老 ( S 1 , a 2 ) + α ∗ 差 距 新Q(S1,a2)=老(S1,a2)+ α*差距 Q(S1,a2)=(S1,a2)+α

算法
Initialize Q(s,a) arbitrarily
Repeat (for each episode):
	Initialize s 
	Repeat (for each step of episode):
	Choose a from s using policy derived from Q (e.g., ε-greedy)
	Take action a, observe r , s'
	Q(s,a) <- Q(s,a) + α[r + γmax Q(s',a') - Q(s,a)]
	s <- s';
until s is terminal

Q-Learning不一定说到做到,但是它永远都会通往一条成功的道路,不管这条道路有多危险
如上算法所示,我们每次更新都会用到一个Q(s1,a2)现实和Q(s1,a2)估计,而Q现实中也包含了Q(s2)的最大估计,将对下一步的衰减的最大估计和当前所获得的奖励当成这一步的现实。ε-greedy是用在决策上的一种策略,比如档ε=0.9时说明90%的情况我们会按照Q表的最优值来选择行为,10%的时间使用随机选择行为,α是学习效率(α<1),来决定这一次误差有多少要被学习。γ是对未来奖励的衰减值。

Sarsa(On-policy)

在强化学习中Sarsa和Q-Learning非常相似,和之前的Q-Learning一样,我们使用写作业的例子来阐明Sarsa。没写完作业看电视会被处罚,写完作业会得到奖励。

同样有Q表:

a1a2
S1-21
S2-42

若选择Q-Learning,我们会观察接下来选择哪一个动作会奖励最大化,但是在真正做决定的时候却不一定会选择到会带来最大奖励的那一个动作,Q-Learning只是在这一步估计了一下接下来的动作值。而Sarsa是实践派,在接下来会真正选择到带来最大奖励的那个动作。

Q ( S 1 , a 2 ) 现 实 : R + γ ∗ Q ( S 2 , a 2 ) Q ( S 1 , a 2 ) 估 计 : Q ( S 1 , a 2 ) } 差 距 = 现 实 − 估 计 \left. \begin{array}{l} \text{$Q(S1,a2)现实$:}&R+γ*Q(S2,a2)\\ \text{$Q(S1,a2)估计$:}&Q(S1,a2) \end{array} \right\} 差距 = 现实 - 估计 Q(S1,a2)现实:Q(S1,a2)估计:R+γQ(S2a2)Q(S1a2)}=
新 Q ( S 1 , a 2 ) = 老 ( S 1 , a 2 ) + α ∗ 差 距 新Q(S1,a2)=老(S1,a2)+ α*差距 Q(S1,a2)=(S1,a2)+α
然后更新Q表中的s1和a2.

算法
Initialize Q(s,a) arbitrarily
Repeat (for each episode):
	Initialize s 
	Repeat (for each step of episode):
	Choose a from s using policy derived from Q (e.g., ε-greedy)
	Take action a, observe r , s'
	Choose a' from s' using policy derived from Q (e.g.,ε-greedy)
	Q(s,a) <- Q(s,a) + α[r + γQ(s',a') - Q(s,a)]
	s <- s'; a <- a';
until s is terminal

Sarsa与Q-Learning不同,它比较保守,会绕开危险达到目标。

Deep Q Network(DQN)

DQN是一种融合了神经网络和Q-Learning的方法。当状态太多的时候,传统的表格形式来存储状态会导致计算机的内存不够用和搜索状态耗时的情形。所以加入了神经网络。
1.将状态和动作当作神经网络的输入值,然后经过分析之后得到动作的Q值这样就没有必要在表格中记录Q值了,而是直接在神经网络中生成一个Q值。
2.还有一种形式是只输入状态值,输出所有的动作值,然后按照Q-Learning的原则,直接选择输出最大值的动作作为下一个要做的动作。

基于第二种神经网络来分析:
首先还是选用输出为a1,a2,输入为s2.
Q ( S ′ ) 现 实 : R + γ ∗ m a x Q ( S ′ ) Q ( S 2 ) 估 计 : Q ( S 2 ) } 差 距 = 现 实 − 估 计 \left. \begin{array}{l} \text{$Q(S')现实$:}&R+γ*maxQ(S')\\ \text{$Q(S2)估计$:}&Q(S2) \end{array} \right\} 差距 = 现实 - 估计 Q(S)现实:Q(S2)估计:R+γmaxQ(S)Q(S2)}=
新 N N = 老 N N + α ∗ ( Q 现 实 − Q 估 计 ) 新NN=老NN+ α*(Q现实 - Q估计) NN=NN+α(QQ)
DQN有Experience Replay 和 Fixed Q-targets,它有一个学习库可以用于学习过去的经历,还可以学习当前的经历,甚至可以学习别人的经历,可以随机抽取经历进行学习。

Policy Gradients

前文中有提到,Q-Learning、DQN是学习奖惩的值,根据自己认为的最高价值选择行为,而Policy Gradients是不通过奖励值直接输出行为。我们也可以给Policy Gradients加上一个神经网络来输出预测的动作,这样做的最大好处是能在一个连续区间内选择动作。
Policy Gradients没有误差,但是它确实是在进行反向传递,比如说我们观测的信息通过神经网络分析选出了一个行为,直接进行反向传递,使得这个行为在下一次被选中的可能性增加,但是奖惩信息告诉我们,这一次增加的动作不是好的,那么我们应该相应减小本次动作增加的幅度,这样就可以靠奖励来左右神经网络的反向传递。反之,如果我们选中了一个行为,这个行为进行反向传递,使它在下一次能够被多选一点,这个时候奖励信息告诉我们这个行为是好的,那么我们在这一次反向传递的时候增加动作的幅度,使得这个行为在下一次选择能够被多选择一些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值