纲要
1.问题设置:MDP(Markov decision process)
2.学习目标:reward(maximale Bewertung)
3.PL中对应的问题的维度//??
4.策略学习(Policy learning)
RL的学习目标(Lernziel RL)
就是通过寻找一个动作序列
a1,...an
,使得最终可以得到最高的评价。
(Finde eine Aktionssequenz
a1,...,an
) so dass dadurch die maximale Bewertung aufgesammelt wird.)
RL的一般应用
- 控制机器人
- 游戏 :像围棋啊什么的
- 生产线优化或计划优化
Markov decision process(deterministisch)
五元式表示(非确定性的):
指以俄国数学家Andrei Andreijewitsch Markov的名字命名的一种决策模型。一般用五元式(S,A,T,r,
p0
)表示:
S:表示状态集
A:表示动作集合(Action)
T:是一个映射 T:S*A*S
→
[0,1]。T(s,a,s’)=p(s’|s,a)表示从状态s通过动作a到达状态s’的概率
r:就是reward的意思了,表示映射:S*A*S
→
R。
p0
:表示开局分布,就是初始状态为对应状态的概率。
公式表示(确定性的):
在这里我们这样表示状态的转化(一般可通过观察获得)
我们用下面式子表示reward
另外这个模型最重要的一个假设是:从状态s成功过渡到状态s’的概率,只由状态s决定,而与状态s之前的状态无关。//贝叶斯吗??
Policy learning
寻找(最优)目标方法(Zielfunction,target function)
使得累积reward(akkumulierte Bewertung)
最大。
其中0<= γ <= 1,为reward的权值(Diskontierungsfaktor)
若 γ 为零,则表示当前动作无敌关键。
要求 γ 大于零是为了使不会忽略后面的reward
要求 γ 小于一是为了收敛性考虑。
//但是注意到这货的取值范围是可以等于一的,这是为何??
(Ann.:absorbierender Terminalzustand:Alle Aktionen führen kostenfrei wieder in den Zustand???)
最优策略(Optimale Strategie)
最优目标函数(optimale Zielfunktion):
那么对应的最大的累积reward就是:
可以通过递归进行定义:
那么我们的问题就是:如何获得 V∗(s)
Simple Temporal Difference Learning I(Simple Value Iteration)
idea:
V∗^(s)
是
V∗(s)
的估计值
π∗(s)=argmaxa
[
r(s,a)+γV∗^(δ(s,a))
]
学习过程(Lernen):
随机初始化
V∗^(s)
//随机真的好吗?
do forever:{
选取一个状态
st
执行目前最优动作,并得到对应的下一状态:
st+1=δ(st,π∗(st))
V∗^(st)=rt+γV∗^(st+1)
}
上面这个方法的问题是学习过程缓慢(do forever)(und hartes Ersetzen不知指啥??)
另外,在上面的算法中,似乎缺少了调整目标函数的语句??
//感觉思路和EM一样??
//下图左上为初始图,右上为对应的reward,下图为最优路径
Simple Temporal Difference Learning II
稍微修改了点学习过程
随机初始化
V∗^(s)
repeat:{
选择一个状态
st
repeat:{
st+1=δ(st,π∗(st))
;
V∗^(st)=V∗^(st)+α[rt+γV∗^(st+1)−V∗^(st)]
st=st+1
直到
st=terminal
推出循环
}
}
同样这个方法还是存在问题:
1.r(s,a),
δ(s,a)
(也就是状态转化的结构图)必须事先知道。
2.使用
π∗(s),换句话说就是学习速度慢
RL主要关心的几个问题(Problemdimensionen beim RL)
//其中系统模型不太清楚,原文是Modell(Simulatioin) des
Systems.
//注 并非是两项的对比
Q方法(Q-Funktion,aktion value function)
Q(s,a)表示在状态s通过动作a,可以获得的最大的reward。
主要思想是:
1.学习 Q^(s,a),∀(s,a)∈S∗A
2.通过 π∗(s)=argmaxaQ(s,a) 选择最佳动作。
// → In der Anwendung wenig Wissen über Zustandsübergänge nötig.表示理解不能???
Q-学习算法(Q-Lernen Algorithmus)
目标:得出Q方法的估计值
Q^(s,a)
学习方法:
初始化:
∀s,a Q^(s,a)=0
选择状态s
do forever:{
选择动作a并执行他
r=reward
s’=
δ(s,a)
update:
Q^(s,a)=r+γmaxa′Q^(s′,a′)
s=s’
}
//为什么不把对应的max Q记录到V中,这样就不用每次都进行比较了啊,应为改变当前状态的Q,一定会同时改变当前状态的V,所以觉得还是可行的啊??
相较于前面的方法,这里当前状态的最优路径的选择,则比较简单了(naiv):
进行n次循环后会得到:
当满足:
1.|r(s,a)|< c
2.状态转变是确定的
3.每个(s,a)都进行无数次操作
那么可以得到: Q^→Q
//Fehler wird bei jeder Aktualisierung um den Faktor γ kleiner
//每次更新后错误减小 γ ??这个还理解不能???
//和前面的差别,前面的当前状态最优reward并非一定是最优路径选择
还存在的问题:
当处在一个状态时应该如何选择下一个动作??
是应该选择 Q^(s,a) 最大得动作吗??如果直接选择最大者,那么可能会存在下面两个问题:
1.”lokales” lernen nur bestimmter Aktionen//理解不能??什么叫local 学习
2.刚开始没有被选种的动作,以后也不会再被考虑,尽管他可能在某些时候带来更好的结果//为什么可能会有更好的结果???
概率选择(Probabilistische Auswahl):
//k是啥???
k的影响:
当k大时:
1.local学习
2.检测已知的方法(bekannte Aktionen untersuchen)
当k小时:
1.全局学习(global lernen)
2.检测新的方法(neue Aktionen untersuchen)
//指数函数的话应该收到k大于1还是k小于1的影响才对吧???大于1是Q的影响强度是单调递增的,小于1大于0时Q的影响强度应该是单调递减的吧???
最好的方法是:
在学习过程中调整k值,使先全局学习,在局部学习。
优化
每一轮循环都把状态s的
Q^(s,a)
向目标方向进行调整:
存储每对(s,a)的reward值r。因为 Q^(s,a)依赖于Q^(s′,a′) ,当 Q^(s′,a′)改变时Q^(s,a) 要做相应的调整。
通过这种方法,可以调高收敛速度,但相应的它的存储需求也提高了
//不懂这个r是怎么来的,和Q有什么关系??
应用:
这种方法一般在动作(Action)会花费较长的事件的时候才会使用(换句话说就是,他有足够的时间“思考”,比如像机器人)
另外一个优化的策略有点弄不明白,他说把大部分的步骤放在虚拟的环境中运行,而只有少部分的步骤在现实中进行//???
原文是:
Lernen mit(adaptivem) Modell:
meisten Lernschritte auf simulierter Umgebung
wenig Aktionen in reealer Umgebung
Anpassung des Models
一般化(Repräsentation,Generalisierung)
问题:
在连续状态空间中存在的问题(kontinuierlicher Zustandsraum):
1.不可能把Q值存储在一个loop-up表中//????????
(Speichern der Q-Werte in der lookup-Tabelle unmöglich)
2.循环次数过高(sehr hohe Anzhal von Lerniterationen nötig)
解决方案:
与神经元网络结合使用
//这个完全不会?????????等看完神经元网络再说吧???
非确定性的MDP(Nichtdeterministischer MDP)
问题:
状态的转变受概率P(s’|s,a)限制
解决方案:
使用期望值:
相应的就有:
从动作序列中学习(Lernen von Aktionssequenzen)
动机:
为什么需要从动作序列中学习呢?
因为有时候reward必须进过一系列的动作后才能得到.比如下围棋,光看当前一步,觉得下得不咋样,必须多走几步后才能看出他的价值。
而另外有时候只有接近目标了才能对现在的动作做出评价:
后续的动作可能导致差得结果//??不知是啥意思???理解不能
(bei langen Aktionssequenzen kann erst am Ende der Sequenz gelernt werden
nachfolgend Aktionen können für den schlechten Ausgang verantwortlich sein)
Temporal Difference Learning(TD learning)
前面我们已经看过了当只考虑最邻近reward(就是直接相邻)的情况,现在我们要看的是,当我们把往下n步的reward都考虑在内的情况。
首先先看一下状态reward序列:
其中s_T为最终状态
先引入一个概念,在MC(Markov Chain??)方法中,我们使用Return作为 Vπ(st) 的备份(Backup),表示为:
//原文是r的T-t-1次方,感觉不对??
他是MC学习方法的额定值(Sollwert,Lehrersignal)。
当往下看一步时
当往下看两步时:
//那这里的 rt+1 是怎么确定的
以此类推
很多时候我们的Backup并不是由上面单独的一个步数来确定的,而是通过取不同步数的reutrns的中值,比如 Ravet=R(2)t/2+R(4)t/2
更一般的,我们引入了TD( λ ),他是所有n步的return的加权取和。他表示为:
//最后那一小节不知道是怎么来的???
//据说引入 (1−λ) 是为了确保最后权值之和为1。具体原因见往下第二张图???
前面忘记定义了,V方法的向下看n步的backup为:
那么相应的向下看 λ 步的V方法的每回的更新是:
TD学习的Forward View/Backward View(Vorwärts Sicht/Rückwärtige Sicht)
上图中上面的为Forward View,下面的为Backward View。
/*
其中Forward View并不是很了解,看了两份材料,一份说就按照前面提到权值直接判断就是了和往下看一步的情况一样,而另外一份却说,因为Forward View没有很好的因果关系,因此不能直接的被实现。原文就是图中的那句话。
具体咋弄的,等有时间再研究吧
*/
那么就直接看Backward View吧。
Backward View:
Backward View需要为每一个状态附上一个新的变量(trace Variable)e_t(s),他的定义如下:
其中 0<λ<1 ,我们称他为Eligibility Traces。他描述了那些状态是估计V和Q时应该考虑的。当 et(s)>0 表示这个状态将很快被考虑到,至于有多快,则由 γλ 决定。
//就算这么说,还是不理解啊??
(Dabei zeigt et(s)>0 an,dass der Zustand s kürlich besucht wurde. Kürzlich ist hierbei durch die Größe γλ definiert.
et(s) zeigt, für welche Zustände s ∈ S die Funktion V bzw. Q anzupassen ist.)
算法:
1.Initaliye V(s) arbitrarily and e(s)=0; π policy to be evaluated
2.Repeat(for each step of episode){
Initialize s
Repeat(for each step of episode({
a= π (s)
take a, observe reward r, and next state s’
δ =r+ γ V(s’)-V(s)
e(s)=e(s)+1;
For all s:{
V(s)=V(s)+ αδe(s)
e(s)= γλe(s)
}
s=s’
}
知道s为终止状态
}
//好吧确实这个算法描述和前面的算法描述有点出入,因为是我直接从别的地方挖过来的。但相比于课件上得那个算法表达,我只想说这个要好理解多了,虽然他们表述的是一个东西。
//不放到代码箱里是因为,里面不知道怎么输出特殊符号
//另外这个算法虽然看得懂,但对于为什么要这么做确完全不明白。????
//再次吐槽一下,怎么会有用两页ppt就把TD学习带过去的老师啊!!!好吧相对于只用了一页的Sarsa似乎还是不错的
//回头再研究吧
例子:SARSA(不会是贪吃蛇吧):
目标:寻找到达目标的路径
初始所有Q=0;
reward只有在目标出才有
中间图:不用Eligibility-Trace,用Q值就够了
//Miite-Lernen ohen Eligibility-Trace,Nur ein Q-Wert wird angepasst.
右边:使用Eligibility-Trace.
//Rechts-Einfluss der Anpassung mit Eligibility
//上面是课件上关于SARSA的全部内容,感觉邮件智商不管用,下面是补充:
前面介绍Backward View的时候,我们说的都是V方法和 et(s) ,现在我们使用Q方法替代V方法,使用 et(s,a) 替代 et(s) 其中 s∈S,(s,a)∈S∗A ,相应的我们可以得到:
另外有:
//必须承认上面这种写法不是很严谨,但架不住他直接明了
//下面是具体算法,约定一下用d代替 δ ,l代替 λ ,g代替 γ ,就是各自发音的首字母
1.initalize Q(s,a)arbitrarily and e(s,a)=0 all s,a
2.Repeat (for each episode)
initialize s,a
Repeat (for each step of episode):
Take a, observe reward r,and next state s'
Choose a' from s' using policy derived from Q(e.g. €-greedy)
d=r+g*Q(s',a')-Q(s,a)
e(s,a)=e(s,a)+1
For all s,a:
Q(s,a)=Q(s,a)+a*d*e(s,a)
e(s,a)=l*g*e(s,a)
s=s'
a=a'
until s is terminal
//下面还有几个例子,比如电梯操控,TD-Gammon,BISAM。以后在看吧,感觉前面的都还没弄懂呢,总之看完后有种很怪得感觉,很矛盾,像是简单和复杂的综合题。待研究????????