聊一聊我对强化学习的理解
对应的代码请访问我的GitHub:fxyang-bupt(可能你进去之后发现什么都没有,那是因为我注册了新的账号还在整理,这并不影响你先follow一下我的GitHub~)
目前正在把我的文字内容和代码整理成网络书籍的方式发布出来,敬请期待…
我很想把它做成一套简单易懂的白话系列,奈何做这种事真的不简单。我参考了很多资料,比如:
《白话强化学习与PyTorch》
《深入浅出强化学习:原理与入门》
《强化学习入门:从原理到实践》
“莫烦Python”
博客园 “刘建平Pinard” 的博客
北大 “ShusenTang” 的GitHub
……
这是一门比较前言的理论,目前正在发光发热。我并不推荐大家一开始就阅读大部头的《Reinforcement Learning》这本书,假期我花了一个月的时间去啃,效果并不好。反而是这种“平易近人”的教程更适合入门。不过各种“平易近人”的教程都会充斥着笔者自己的理解,这种事容易陷入到自嗨的怪圈,笔者自认为自己举了一个特别通俗的例子,而读者却一头雾水。
所以我把我在学习和实践过程中遇到的困惑,又做了二次解读的加工。有了这个系列的文章,希望能够有所贡献。成为帮助你入门的N多资料的其中之一。
我的代码用的框架比较杂,PyTorch TensorFlow1 TensorFlow2……都有。有人会在意TensorFlow2出来以后,1不是被淘汰了,为什么还要用?
5G都出了多长时间了,你那个卡的要死的4G手机换了吗?企业也是一样的。所以还是得用…
希望毕业后我也能成为像 莫烦 和 Charlotte77 一样的知识分享者~这是自己的一个小兴趣
强化学习的思路
Agent就是我们执行算法的个体,Agent可以做出决策,即选择一个合适的动作(Action) A t A_t At。
Environment是我们要研究的环境,通过对环境的建模,得到它的状态模型。
当选择了动作 A t A_t At之后,环境的状态就会由 S t S_t St转换成 S t + 1 S_{t+1} St+1,同时我们得到一个奖励 R t + 1 R_{t+1} Rt+1,即。奖励值用来打赏你的这个行为。
如此反复下去,就是强化学习的思路。
强化学习的8个基本要素
不同的强化学习模型种要素并不相同,这8个要素是大多数强化学习模型的基本要素。
- t t t时刻,环境的状态 S t S_t St
- t t t时刻,采取的动作 A t A_t At
- t t t时刻,在状态 S t S_t St下执行 A t A_t At得到对应的奖励值 R t + 1 R_{t+1} Rt+1,奖励值会在 t + 1 t+1 t+1时刻得到
- Agent根据状态 S t S_t St选择动作 A t A_t At的依据,称为行为策略(Policy) π \pi π。
- 价值函数,包括状态价值和(状态,行为)价值。
- 奖励衰减因子 γ , γ ∈ [ 0 , 1 ] \gamma,\gamma\in[0,1] γ,γ∈[0,1]。价值函数一般不只由当前延时奖励 R t + 1 R_{t+1} Rt+1决定,还要考虑后续,表达了当前奖励和后续奖励的占比。
- 环境状态转移模型 P s s ′ a P_{ss'}^a Pss′a,在状态 s s s下采取动作 a a a,转移到下一个状态 s ′ s' s′的概率。
- 探索率 ϵ \epsilon ϵ。在执行动作时,以概率 ϵ \epsilon ϵ选择当前最优选择之外的随机动作,以提高对环境的试探。