![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbjBZcHRWVkp0bkFOUmR1TzZvUVNhOWN5aWFjSEJySG5UMUpBMFlPbjJSaWMyRzVnVndBOENwRnhwaWN6YUplZG9TeFVQODFDbEVad3VFdy82NDA_d3hfZm10PXBuZw?x-oss-process=image/format,png)
本文约4900字,建议阅读15分钟。
本文介绍了强化学习的基本原理,并通过代码实例来讲解如何找到最优策略。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXB3dFNvcElvUWNRZDhpYktQclFkT3hIa2FpYTVPVjhUNmEwNHQxMGh5NGlhdnFDN1luWVNpYVhsbnBRLzY0MD93eF9mbXQ9cG5n?x-oss-process=image/format,png)
Google在2017年年底发布了AlphaZero,这个零基础的AI系统能够在4小时内自学并掌握国际象棋、围棋和将棋。
极短的训练时间是 AlphaZero击败世界顶级国际象棋程序的致命武器。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBrR1ZpYU94YUFzMUdEOTlWTmozcTRBR21Xbm8wQWx3MFVWTTRvZ2xHanF6SWYzWFV6NGljZWtZQS82NDA_d3hfZm10PXBuZw?x-oss-process=image/format,png)
Andriy Popov / Alamy Stock 照片
最近,OpenAI 展示了强化学习不是一个仅限于虚拟任务的工具。Dactyl的类人机械手已经学会了如何独立解魔方(见下面链接)。
附链接:https://openai.com/blog/solving-rubiks-cube/
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBCN2JtNHJEWU11dFlZREZLdkV4YmtVcjZVcm5yaWJnTHhmN0xLM1BnTW1oNzI3WEVvVXVIanhRLzY0MD93eF9mbXQ9cG5n?x-oss-process=image/format,png)
Google AlphaZero和OpenAI Dactyl的本质都是强化学习算法,它不基于任何相关领域的知识,我们只需要给定游戏的规则。一些AI专家认为这是实现人类或超人类的通用人工智能的最可行方法。
我们之前的文章介绍了强化学习的基础概念(见下面链接)。
附链接:
https://towardsdatascience.com/dont-ever-ignore-reinforcement-learning-again-4d026ee81371
现在让我们继续深入AI智能体的工作原理, 探索它是如何通过自学来采取恰当的行动流程,从而实现全局最优的目标。
什么是策略?
让我们假设一个OpenAI冰湖的简单情景,在此环境下智能体能够控制一个人物在坐标格上运动。网格里的一些是可走的,其他格子则意味着人物将掉进冰洞里。 当智能体发现一条可走的并且能达到目标地点(图中黄色星星)的路径时,它就会得到奖励。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBXRTlKQWdpY01WWHR0TFR0QjljSHhJSWFUTTRjbGdWeVZJejliVE5qaHJCa0FzUkkzU09JcTFnLzY0MD93eF9mbXQ9cG5n?x-oss-process=image/format,png)
在这种很简单的环境下,我们可以有很多策略。比如说,智能体可以一直向前移动,或者随机选择一个方向移动,还可以通过前车之鉴来学习如何绕过障碍,甚至可以原地转圈来娱乐。
从直观上来讲,策略可以被定义为一些能够控制智能体行为的规则集合。不同的策略会给我们不同的收益,因此找到一个好的策略很重要。
策略的正式定义是每个可能状态下采取的行为的概率分布:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBEeTc5S3g5OUF6d0pZeG11ZWRrRURHWkZkMk1GNlg2emVudGc2NERYOTc4ZEthdVY2alBSUUEvNjQwP3d4X2ZtdD1wbmc?x-oss-process=image/format,png)
最优策略
能够最大化预期的值函数 V:
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBhamNxb1ZrRjVaWkR3MWlickVRTGU2bGVpYmFwVlFHQzd4MTJxelh4a1c1eWRrRmljaWJndXdQa3hBLzY0MD93eF9mbXQ9cG5n?x-oss-process=image/format,png)
区分于短期收益,值函数 V(s) 是状态s下含折扣的预期长期收益,它表示智能体所处状态的好坏。对一个从该状态开始的智能体来说,这相当于预期的总收益。换言之,这就是在状态s下采取行动a这一步的总收益,被定义为 V(s)。
如何选择最好的行动?
值函数取决于智能体选择行动所用的策略。学习最优策略需要使用所谓的Bellman方程。
让我们通过下面的例子来直观地了解一下Bellman方程。智能体能够执行行动1, 2, …, N,这会让它转移到未来的状态S1, S2, …, SN, 从而分别得到相应的收益 r1, r2, …, rN。对于未来各个状态来说,预期的长期收益是V1, V2, …, VN。
![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9oZVM2d1JTSFZNbGhkTWRCTWFWbWlhUFFhY29XdkE4UXBtWFJOTGhZaktYUGJWVjJ1SnVicmUwNlkxU3dTWHNTbGNjT1dWZXNhMWg4ZDN4NFdBemh5N2cvNjQwP3d4X2ZtdD1wbmc?x-oss-process=image/format,png)