category
欢迎回到我的博客,欢迎那些想学习人工智能的工程师!在我上一篇文章中,我谈到了如何提升你的机器学习职业道路。今天,我将通过介绍强化学习来帮助您继续您的旅程。
除了定义强化学习(RL)外,本文还将为您提供一个简单但重要的图片,说明它在实际应用中的样子。
到最后,您将掌握以下基本知识:
- 什么是强化学习;
- 如何将你的任务转化为强化学习问题;
- RL与监督/无监督学习之间的关系;
- 使用OpenAI Gym运行一个带有简单策略的RL演示。
我们如何定义强化学习?
强化学习是机器学习的一个子领域,它教智能体如何在特定环境中从其动作空间中选择动作,以便随着时间的推移获得最大的回报。
强化学习有四个基本要素:
- 智能体(Agent)。你训练的程序,目的是做你指定的工作。
- 环境。代理执行动作的真实或虚拟世界。
- 行动。代理所做的一个动作,导致环境中的状态发生变化。
- 奖励。对行动的评价,可以是积极的,也可以是消极的。
强化学习任务建模的真实示例
对强化学习任务建模的第一步是确定如上所述的4个元素是什么。一旦定义了每个元素,您就可以将任务映射到它们。
这里有一些例子可以帮助你培养强化学习直觉。
确定网页上广告的位置
代理:程序决定一个页面适合多少广告。
环境:网页。
行动:三种之一:(1)在页面上再放一个广告;(2)从页面上下架广告;(3)不得增减。
奖励:收入增加时为正;当收入下降时为负值。
在这种情况下,代理观察环境并获取其当前状态。状态可以是网页上有多少广告,以及是否有更多的空间。
然后,代理选择在每一步采取三个动作中的哪一个。如果编程为每当收入增加时获得正奖励,每当收入下降时获得负奖励,它就可以制定有效的政策。
创建个性化学习系统
Agent:决定在在线学习目录中显示下一个内容的程序。
环境:学习系统。
动作:播放新的课堂视频和广告。
奖励:如果用户选择点击呈现的课堂视频,则奖励为正;如果用户选择点击广告,则获得更大的正奖励;如果用户离开,则为负。
这个程序可以使个性化的课堂系统更有价值。用户可以从更有效的学习中受益,系统可以通过更有效的广告受益。
控制步行机器人
Agent:控制步行机器人的程序。
环境:真实的世界。
行动:四分之一移动(1)向前;(2)向后;(3)向左;(4)向右。
奖励:当接近目标目的地时,奖励为正;当它浪费时间、朝着错误的方向前进或倒下时,它就是消极的。
在最后一个例子中,机器人可以通过根据收到的奖励调整其策略来教会自己更有效地移动。
监督学习、无监督学习和强化学习:有什么区别?
区别#1:静态与动态
监督和无监督学习的目标是搜索和学习训练数据中的模式,这是相当静态的。另一方面,RL是关于开发一个策略,告诉代理在每个步骤中选择哪个动作,使其更具动态性。
区别2:没有明确的正确答案
在监督学习中,正确答案由训练数据给出。在强化学习中,正确的答案并没有明确给出:相反,智能体需要通过反复试验来学习。唯一的参考是它在采取行动后获得的奖励,当它取得进展或失败时,它会告诉代理。
区别3:强化学习需要探索
强化学习代理需要在探索环境、寻找获得奖励的新方法和利用它已经发现的奖励来源之间找到适当的平衡。相比之下,监督和无监督学习系统直接从训练数据中获取答案,而无需探索其他答案。
区别4:强化学习是一个多决策过程
强化学习是一个多决策过程:它在完成特定工作所需的时间内形成了一个决策链。相反,监督学习是一个单一的决策过程:一个实例,一个预测。
OpenAI健身房简介
OpenAI Gym是一个用于开发和比较强化学习算法的工具包。它支持从走路到打乒乓球等游戏的教学代理。
OpenAI Gym为我们提供了游戏环境,我们的程序可以在其中采取行动。每个环境都有一个初始状态。在您的代理采取行动后,状态会更新。
当你的代理观察到变化时,它会使用新的状态及其策略来决定下一步要采取什么行动。策略是关键:它是您的程序继续工作的基本要素。您的代理学习的策略越好,您从中获得的性能就越好。
这是OpenAI的CartPole游戏的演示。我们可以在第六行看到策略:代理可以从其动作空间中采取随机动作。
import gymenv = gym.make("CartPole-v1")
observation = env.reset()
for _ in range(1000):
env.render()
action = env.action_space.sample() # your agent here (this takes random actions)
observation, reward, done, info = env.step(action)
if done:
observation = env.reset()
env.close()
第二行创建CartPole环境。
第三行初始化状态参数。
第五行显示了游戏。
第6行提示一个具有“随机”策略的操作。
在第7行,采取行动,环境给出四个返回值:
- 观察:游戏状态的参数。不同的游戏返回不同的参数。在CartPole,总共有四个。第二个参数是极点的角度。
- 奖励:采取此行动后获得的分数。
- 完成:游戏结束或未结束。
- 信息:额外的调试信息。这可能是作弊。
第八行表示游戏是否结束;重新启动它。
强化学习演示
该政策可以按照你喜欢的任何方式进行编程。它可以基于if-else规则或神经网络。这是一个简单的演示,其中包含CartPole游戏最简单的策略。
import gym
def policy(observation):
angle = observation[2]
if angle < 0:
return 0
else:
return 1
env = gym.make("CartPole-v1")
observation = env.reset()
for _ in range(1000):
env.render()
action = policy(observation)
observation, reward, done, info = env.step(action)
if done:
observation = env.reset()
env.close()
当然,策略函数内容可以用神经网络代替,以观测参数作为输入,以动作作为输出。
结论:
强化学习是机器学习的一个子领域,在几个方面与监督/无监督学习平行但不同。
因为它需要模拟数据和环境,所以很难应用于实际的业务情况。
然而,它的学习过程对于顺序决策场景来说是自然的,这使得强化学习技术无疑具有前景。
目前,强化学习中常用的主要方法有两种:基于概率的策略梯度和基于价值的Q学习。
我已经在以下帖子中介绍了其中的许多主题:
- 登录 发表评论
- 3 次浏览
最新内容
- 3 hours ago
- 3 hours ago
- 3 hours ago
- 15 hours 25 minutes ago
- 15 hours ago
- 16 hours ago
- 4 days 16 hours ago
- 1 week ago
- 1 week ago
- 2 weeks 1 day ago