强化学习-动态规划
代码和演示可用。 本文探讨了强化学习中的状态,动作和奖励是什么,以及代理如何通过模拟学习来确定在任何给定状态下采取的最佳动作。
直觉
经过一整天的工作后,您要在两种选择之间做出选择:回家然后写一篇文章或在酒吧和朋友一起闲逛。 如果您选择与朋友一起出去玩,朋友会让您感到开心; 而回家写一篇文章,结果是您在漫长的一天工作后会感到疲倦。 在这个例子中,享受自己是一种奖励,而感到疲倦则被视为一种消极的奖励,那么为什么写文章呢?
因为在生活中,我们不仅仅考虑立即获得回报; 我们计划采取一系列行动,以确定未来可能产生的回报。 也许写一篇文章可能会很好地增进您对特定主题的理解,获得认可,并最终使您获得梦always以求的工作。 在这种情况下, 获得理想的工作是从您执行的一系列操作中获得的延迟奖励,然后我们希望为处于这些状态的人分配一些价值 (例如“回家写一篇文章”)。 为了确定状态的值 ,我们将其称为“值函数”。
那么我们如何从过去中学习呢? 假设您做出了一些伟大的决定,并且生活处于最佳状态。 现在,回顾一下为达到此阶段而做出的各种决定:您将成功归因于什么? 导致您取得成功的先前状态是什么? 您过去采取过哪些行动导致您进入这种获得奖励的状态? 您现在正在采取的行动与您将来可能获得的报酬有什么关系?
奖励与价值功能
奖励是立即的。 在收集硬币,赢得井字游戏或确保您梦想的工作的游戏中,这可能是得分。 该奖励是您(或代理商)想要获得的。
为了获得奖励 ,价值函数是确定处于状态的价值的有效方法。 用V(s)表示 ,该价值函数衡量的是我们可能从处于s状态得到的潜在未来回报 。
定义值函数
在图1中,我们如何确定状态A的值 ? 在接下来的两个可能的状态(状态B或C)中,有50–50的机会结束。状态A的值就是所有下一个状态的概率之和乘以达到该状态的奖励之和。 状态A的值是0.5。
在图2中,您发现自己处于状态D,只有到状态E的一条可能路线。由于状态E给出的奖励为1,所以状态D的值也为1,因为唯一的结果就是获得奖励 。
如果你在状态F(在图2中),其只能导致状态G,随后状态H.由于状态h具有-1的负奖励 ,状态G的值也将是-1,同样对于状态F.
在此井字游戏中 ,连续获得2 X s(图3中的状态J)不会赢得游戏,因此没有奖励 。 但是,处于状态J会使您更接近达到状态K,完成X列以赢得游戏,因此处于状态J会产生很好的价值 。
在图4中,您会发现自己处于状态L,正在考虑将下一个X放置在何处。 您可以将其放在顶部,从而使您在同一行中的状态为2 X。 另一个选择是将其放置在最底行。 与状态N相比,状态M应该具有更高的意义和价值 ,因为它导致胜利的可能性更高。
因此,在任何给定状态下,我们都可以通过选择产生最高价值的状态来执行使我们(或代理人)更接近获得奖励的行动 。
井字游戏-初始化值功能
井字游戏的价值函数V(s)是赢得状态s的概率。 完成此初始化以定义获胜和失败状态。 我们将状态初始化如下:
-V(s) = 1-如果座席在状态s赢得比赛,则该状态为最终状态
-V(s) = 0-如果座席在状态s输球或将比赛扳平,则为终局状态
-V(s) = 0.5-非终端状态为0.5,将在训练期间进行微调
井字游戏-更新值功能
更新价值功能是代理人通过更新训练过程中已通过状态的价值来从过去的经验中学习的方法。
状态s'是当前状态s的下一个状态。 我们可以通过添加状态S和S'之间的价值差异更新的当前状态s的值 。 α是学习率 。
由于可以在任何给定状态下采取多种行动,因此在一个曾经带来成功的状态下不断选择一项行动可能最终会错过其他更好的状态。在强化学习中,这就是“ 探索-利用”困境 。
使用探索策略,代理会采取随机动作尝试未探索状态,这可能会找到其他赢得游戏的方法。 使用漏洞利用策略,代理可以增加过去为获得奖励而进行的那些操作的信心。 在探索与开发之间保持良好的平衡,并且通过无限次玩游戏,每个州的价值都将接近其真实概率。 探索与利用之间的良好平衡取决于epsilon贪婪参数 。
我们只能在知道代理是赢(奖励= 1)还是输/平局(奖励= 0)之后,当游戏结束时,代理才能更新该特定游戏在该特定游戏中所玩过的每个状态的值 。 终端状态只能是0或1,我们确切地知道初始化期间定义的终端状态是哪些。
代理程序的目标是在玩完游戏以了解已执行动作的列表后更新值功能。 在每个游戏结束时,由于使用下一个状态的值更新每个状态的值 ,因此更新过程会向后读取该特定游戏的状态历史记录,并微调每个状态的值 。
井字游戏-利用价值功能
如果进行了足够的培训,代理将可以了解任何给定状态的价值 (或获胜的可能性)。 因此,当我们与训练有素的代理商进行游戏时,代理商会利用漏洞利用策略最大化获胜率。 看看您是否可以与代理商对抗 。
在游戏的每个状态下,座席都会遍历所有可能性,选择具有最高值的下一个状态,从而选择最佳行动方案。 在图6中,座席将选择右下角赢得比赛。
结论
在最终阶段以外的任何进展状态下(记录赢,输或平局),特工采取的行动会导致下一个状态,该状态可能不会产生任何回报,但会导致特工更接近获得奖赏 。
价值函数是一种算法,用于确定处于一种状态的价值 ,即获得未来奖励的可能性。
每个状态的值通过游戏的状态历史记录按时间顺序反向更新,并通过使用探索和利用策略进行足够的训练,代理将能够确定游戏中每个状态的真实值 。
定义值函数的方法有很多种,这只是一种适用于井字游戏的方法。
嗨! 我是洪静(Jingles) ,目前是阿里巴巴集团的数据科学家,南洋理工大学的博士研究生,也是《 迈向数据科学》和《 哈克农恩》的热情作家。 在Medium上关注我,或在LinkedIn上与我联系。
本文最初发表于 走向数据科学
翻译自: https://hackernoon.com/reinforcement-learning-the-value-function-hl1a83wwi
强化学习-动态规划