聊一聊我对强化学习的理解
对应的代码请访问我的GitHub:fxyang-bupt(可能你进去之后发现什么都没有,那是因为我注册了新的账号还在整理,这并不影响你先follow一下我的GitHub~)
目前正在把我的文字内容和代码整理成网络书籍的方式发布出来,敬请期待…
我很想把它做成一套简单易懂的白话系列,奈何做这种事真的不简单。我参考了很多资料,比如:
《白话强化学习与PyTorch》
《深入浅出强化学习:原理与入门》
《强化学习入门:从原理到实践》
“莫烦Python”
博客园 “刘建平Pinard” 的博客
北大 “ShusenTang” 的GitHub
……
这是一门比较前言的理论,目前正在发光发热。我并不推荐大家一开始就阅读大部头的《Reinforcement Learning》这本书,假期我花了一个月的时间去啃,效果并不好。反而是这种“平易近人”的教程更适合入门。不过各种“平易近人”的教程都会充斥着笔者自己的理解,这种事容易陷入到自嗨的怪圈,笔者自认为自己举了一个特别通俗的例子,而读者却一头雾水。
所以我把我在学习和实践过程中遇到的困惑,又做了二次解读的加工。有了这个系列的文章,希望能够有所贡献。成为帮助你入门的N多资料的其中之一。
我的代码用的框架比较杂,PyTorch TensorFlow1 TensorFlow2……都有。有人会在意TensorFlow2出来以后,1不是被淘汰了,为什么还要用?
5G都出了多长时间了,你那个卡的要死的4G手机换了吗?企业也是一样的。所以还是得用…
希望毕业后我也能成为像 莫烦 和 Charlotte77 一样的知识分享者~这是自己的一个小兴趣
马尔可夫性
系统的下一个状态只与当前状态有关。
马尔可夫过程
是一个二元组(S,P)(S,P)(S,P),SSS是有限状态集合,PPP是状态转移概率
P=[P11⋯P1n⋮⋮Pn1⋯Pnn]P=\begin{bmatrix}P_{11} &\cdots&P_{1n}\\ \vdots&&\vdots\\P_{n1}&\cdots&P_{nn}\end{bmatrix}P=⎣⎢⎡P11⋮Pn1⋯⋯P1n⋮Pnn⎦⎥⎤
如一个学生的状态S=娱乐,课程1,课程2,课程3,考过,睡觉,论文S={娱乐,课程1,课程2,课程3,考过,睡觉,论文}S=娱乐,课程1,课程2,课程3,考过,睡觉,论文。各状态的概率转移概率为:
学生从课程1开始,一天状态的可能序列为:课1-课2-课3-考过-睡觉。这种状态序列称为马尔科夫链。
马尔可夫决策过程
对于强化学习问题,马尔可夫过程不足以描述其特点,因为在它里面不存在动作和奖励。将动作(策略)和奖励考虑在内的马尔可夫过程称为马尔可夫决策过程。
由元组(S,A,P,R,γ)(S,A,P,R,\gamma)(S,A,P,R,γ)描述,其中:SSS为有限的状态集,AAA为有限的动作集,PPP为状态转移概率,RRR为回报函数,γ\gammaγ为折扣因子。
与马尔可夫过程不同,状态转移概率是包含动作的,Pss′a=P[St+1=s′∣St=s,At=a]P_{ss'}^a=P[S_{t+1}=s'|S_t=s,A_t=a]Pss′a=P[St+1=s′∣St=s,At=a]。
对策略π\piπ也做了马尔可夫性假设,在状态sss时采取动作aaa的概率只与当前状态sss有关。
π(a∣s)=P(At=a∣St=s)\pi(a|s)=P(A_t=a|S_t=s)π(a∣s)=P(At=a∣St=s)
此外还有价值函数也一样,vπ(s)v_\pi(s)vπ(s)仅仅依赖于当前的状态,
vπ(s)=Eπ(Gt∣St=s)=Eπ(Rt+1+γRt+2+γ2Rt+3+…∣St=s)v_\pi(s)=E_\pi(G_t|S_t=s)=E_\pi(R_{t+1}+\gamma R_{t+2}+\gamma^2 R_{t+3}+…|S_t=s)vπ(s)=Eπ(Gt∣St=s)=Eπ(Rt+1+γRt+2+γ2Rt+3+...∣St=s)