前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用“小红的下任男友是谁”通俗解释强化学习中的 基于模型方法 与 免模型方法

用“小红的下任男友是谁”通俗解释强化学习中的 基于模型方法 与 免模型方法

作者头像
Piper蛋窝
修改2020-11-19 17:30:11
5300
修改2020-11-19 17:30:11
举报
文章被收录于专栏:Piper蛋窝Piper蛋窝

之前纠结了很久 Model-based 与 Model-free 。突然想出来的一个点子,觉得蛮有意思、蛮直观的,便写下来,希望能帮到和我一样的初学者。

我说的可能有错误,请以娱乐+批判性眼光阅读此文,有问题欢迎 私信/邮箱 来 指正/交流:PiperLiu@qq.com。

小红同学比较..嗯,风流。就是经常更换男朋友。

我朋友最近不知哪根弦不对劲,特别八卦。他特别特别想“预测”出小红的下任男友是谁。于是他找我来帮忙。

“这么办吧,”我说,“不如我们用强化学习的思想解决这个问题?”

“怎么讲?”

我便一本正经地胡说八道起来——

我们首先做五点假设:

  • 小红选哪个男票只与其选择当时的状态(心情、心智、性格本身)有关;
  • 小红的性格、心智、选择原则一直没怎么发生过变化;
  • 小红每次都会尽力去选择其认为的,会带来最好的结果的那个;
  • 小红分手后会根据心情立刻去找下一个男朋友;
  • 小红每次“分手”后,都会发朋友圈,通过朋友圈文案,可以看出小红对这个男友的满意程度,也就是这个男友实际上到底处的值不值。

因此,我们可以根据“历史数据”,得到一个个(状态-动作-收益-下一个状态-下一个动作)元组,从而可以根据小红的状态(心情)预测出其动作(选择哪个男朋友)。如下表。

元组元素

状态

动作

收益与后续状态

解释

小红当前心情

小红在该心情下选了哪个男朋友

与这个男友分手后,发的朋友圈内容

数据 1

小红不高兴

选了个很温柔的男友

分手后朋友圈很怀念(收益:+5),小红很尴尬

数据 2

小红很尴尬

选了个很暴躁的男友

分手后朋友圈疯狂吐槽(收益:-5),小红很尴尬

数据 3

小红很尴尬

选了个很体贴的男友

分手后朋友圈有点怀念(收益:+1),小红很平静

数据 4

小红很平静

选了个不爱说话的男友

分手后朋友圈较怀念(收益:+3),小红很平静

...

...

...

...

新数据

小红很开心

请你预测小红将找个什么样的男朋友?

???

数据抽象好了,我们就可以用 Sarsa 的思想来解决。

所谓 Sarsa 就是我们运用了 S A R S A 元素的意思。

我们通过已有的、或者测试得到的在线数据,来估计小红在各个状态下选择各个动作的“价值”,就可以估计出其会选谁当自己男朋友了。

心情()

选择()

价值

不高兴

选择温柔的

+10

不高兴

选择暴躁的

-10

不高兴

选择体贴的

+15

不高兴

...

...

不高兴

选择不爱说话的

-5

S_t

)选择(

A_t

)价值

Q(S_t, A_t)

不高兴选择温柔的+10不高兴选择暴躁的-10不高兴选择体贴的+15不高兴......不高兴选择不爱说话的-5

如果有了上面这张表,我们就知道小红在不高兴的心情下,最可能选择谁了。或者说,知道了选谁是对小红最好的。

我们的数据就是用来得到上面这张表的。更新公式如下(Sutton's Reinforcement Learning - An Introduction 2018, P129, 6.7):

Q(S_t,A_t) \leftarrow Q(S_t,A_t) + \alpha [ R_{t+1} + \gamma Q(S_{t+1}, A_{t+1}) - Q(S_t,A_t)]

“小红有过多少男朋友来着?”我问朋友。

“200多个吧。”

嗯...不多不少,我们应该更进一步:用 基于模型方法 (Model-based)还是 免模型方法(Model-free )?

啥是基于模型的方法?

基于模型,就是不单单把数据用来更新公式,还用来建模。

比如,上面提到了,数据是被放在公式

Q(S_t,A_t) \leftarrow f(S_t,A_t,R_t,S_{t+1},A_{t+1})]

里面更新的。但除此之外,我们还可以拿这些数据对小红这个人进行建模:

  • 通过小红的行为,判断小红这个人的心智、性格、选择男朋友的原则(前面假设中提到了,小红的心智、性格、选择原则是不变化的);
  • 这样,除了小红产生的真实的200多个数据,我们还可以自己“推演”出一些虚拟数据(根据对小红心智、性格、选择男朋友的原则的假设,模拟小红接下来该选谁当男朋友)。

这就是所谓的 基于模型方法(Model-based)。

基于模型方法有好有坏,好处是:

  • 更充分地利用数据,有些数据对于
Q(S_t,A_t)

的更新是没什么用的,但对于判断小红是个什么样人有用(对于建模有用);

  • 基于模型,我们再产生一些数据,喂给
Q(S_t,A_t)

,这样,那些本来没什么用的数据也能间接地发挥价值;

  • “基于模型的方法则在一些控制问题中,相比于免模型方法,通常有 10^2 级的采样率提升。”[1]

但问题是:

  • 模型可能有偏差,则产生的数据也是不准的,更加误导了
Q(S_t,A_t)

  • 这个问题本身难以建模。

免模型方法(Model-free )则是不建模,只更新

Q(S_t,A_t)

说罢,我们就开心地去给小红的数据打标签了。

跑模型的时候,我问我朋友,这么关心小红,难道你也跟大家一样喜欢他吗?

朋友大方承认了,还问我:“你呢?”

我跟这位朋友向来都是坦诚相待,我的回答在文章末尾。

故事还没完,我们先聊点别的发散一下。

免模型方法很好理解,基于模型则有点抽象了。我们来看一个经典的基于模型方法:Dyna。

其迭代过程如下(Sutton's Reinforcement Learning - An Introduction 2018, P164):

可以看到,每获得一个数据,其都会进行 n 次自我模拟(基于自己的模型,产生 n 个仿真出来的数据)。

Talk is cheap, show me the codes.

案例的代码可以阅读我在这章的笔记:

https://github.com/PiperLiu/Reinforcement-Learning-practice-zh/blob/master/practice/07-01-Maze-Problem-with-DynaQ-and-Priority.ipynb

代码使用的是 Shangtong Zhang 版的 python 解决方案。他的代码很优美,并且不晦涩,我对其进行了一些中文标注:

欢迎交流。

在故事中,我尽量把案例描绘成一个简单的、同轨策略的、马尔科夫过程。

解释一下我在故事中做的假设:

  • 小红选哪个男票只与其选择当时的状态(心情、心智、性格本身)有关;(马尔科夫过程)
  • 小红的性格、心智、选择原则一直没怎么发生过变化;(环境是稳定的,建模有其合理性)
  • 小红每次都会尽力去选择其认为的,会带来最好的结果的那个;(尽管我们不直接控制小红,但小红自己本身就在寻找最优策略,因此看作同轨策略控制)
  • 小红分手后会根据心情立刻去找下一个男朋友;(状态-动作是连续的)
  • 小红每次“分手”后,都会发朋友圈,通过朋友圈文案,可以看出小红对这个男友的满意程度,也就是这个男友实际上到底处的值不值。(价值函数的依据)

最后贴一段昨天读的文章[1]中提到的两段话,更好地理解基于模型的方法(Model-based)与免模型的方法(Model-free):

RL 算法可以分为基于模型的方法(Model-based)与免模型的方法(Model-free)。前者主要发展自最优控制领域。通常先通过高斯过程(GP)或贝叶斯网络(BN)等工具针对具体问题建立模型,然后再通过机器学习的方法或最优控制的方法,如模型预测控制(MPC)、线性二次调节器(LQR)、线性二次高斯(LQG)、迭代学习控制(ICL)等进行求解。而后者更多地发展自机器学习领域,属于数据驱动的方法。算法通过大量采样,估计代理的状态、动作的值函数或回报函数,从而优化动作策略。

基于模型的方法一般先从数据中学习模型,然后基于学到的模型对策略进行优化。学习模型的过程和控制论中的系统参数辨识类似。因为模型的存在,基于模型的方法可以充分利用每一个样本来逼近模型,数据利用率极大提高。基于模型的方法则在一些控制问题中,相比于免模型方法,通常有 10^2 级的采样率提升。此外,学到的模型往往对环境的变化鲁棒, 当遇到新环境时,算法可以依靠已学到的模型做推理,具有很好的泛化性能。

回来讲故事,我是怎么回答我朋友的呢?

...

我说,我不喜欢。毕竟,我对男的不感兴趣。

References:

[1] 83篇文献-万字总结 || 强化学习之路 https://mp.weixin.qq.com/s/_OS2q7-9Y7HcsoSXx-YBIQ

[2] Sutton R S, Barto A G. Reinforcement learning: An introduction[M]. MIT press, 2018.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Piper蛋窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档