前言
强化学习在各大论文中经常出现,而且决策在生活中方方面面都能体现,学习强化学习对理解DPO\REFT\RLHF等非常有意义,此专栏将从0开始学习强化学习,集理论和代码实践于一体,入门强化学习!由于强化学习涉及到的数学公式会比较多,本专栏将以一个高中毕业生的视角来学习,对于大学学习到的高等数学、概率论以及高中的重点知识都会以补基础:xxx和相应的示例的方式进行补充,旨在人人都能够理解和使用强化学习。
注意虽然本专栏以高中生的知识水平作为目标来看懂强化学习,但实践部分涉及的python基本语法不会作解释,默认需要懂得python的基本语法!
在机器学习领域,有一类重要的任务和人生选择很相似,即序贯决策(sequential decision making)任务。决策和预测任务不同,决策往往会带来“后果”,因此决策者需要为未来负责,在未来的时间点做出进一步的决策。实现序贯决策的机器学习方法就是本书讨论的主题—强化学习(reinforcement learning)。预测仅仅产生一个针对输入数据的信号,并期望它和未来可观测到的信号一致,这不会使未来情况发生任何改变。
强化学习是什么
广泛地讲,强化学习是机器通过与环境交互来实现目标的一种计算方法。机器和环境的一轮交互是指,机器在环境的一个状态下做一个动作决策,把这个动作作用到环境当中,这个环境发生相应的改变并且将相应的奖励反馈和下一轮状态传回机器。这种交互是迭代进行的,机器的目标是最大化在多轮交互过程中获得的累积奖励的期望。强化学习用智能体(agent)这个概念来表示做决策的机器。相比于有监督学习中的“模型”,强化学习中的“智能体”强调机器不但可以感知周围的环境信息,还可以通过做决策来直接改变这个环境,而不只是给出一些预测信号。
智能体和环境之间具体的交互方式如图1-1所示。在每一轮交互中,智能体感知到环境目前所处的状态,经过自身的计算给出本轮的动作,将其作用到环境中;环境得到智能体的动作后,产生相应的即时奖励信号并发生相应的状态转移。智能体则在下一轮交互中感知到新的环境状态,依次类推。
这里,智能体有3种关键要素,即感知、决策和奖励。
- 感知。智能体在某种程度上感知环境的状态,从而知道自己所处的现状。例如,下围棋的智能体感知当前的棋盘情况;无人车感知周围道路的车辆、行人和红绿灯等情况;机器狗通过摄像头感知面前的图像,通过脚底的力学传感器来感知地面的摩擦功率和倾斜度等情况。
- 智能体根据当前的状态计算出达到目标需要采取的动作的过程叫作决策。例如,针对当前的棋盘决定下一颗落子的位置;针对当前的路况,无人车计算出方向盘的角度和刹车、油门的力度;针对当前收集到的视觉和力觉信号,机器狗给出4条腿的齿轮的角速度。策略是智能体最终体现出的智能形式,是不同智能体之间的核心区别。
- 奖励。环境根据状态和智能体采取的动作,产生一个标量信号作为奖励反馈。这个标量信号衡量智能体这一轮动作的好坏。例如,围棋博弈是否胜利;无人车是否安全、平稳且快速地行驶;机器狗是否在前进而没有摔倒。最大化累积奖励期望是智能体提升策略的目标,也是衡量智能体策略好坏的关键指标。
从以上分析可以看出,面向决策任务的强化学习和面向预测任务的有监督学习在形式上是有不少区别的。首先,决策任务往往涉及多轮交互,即序贯决策;而预测任务总是单轮的独立任务。如果决策也是单轮的,那么它可以转化为“判别最优动作”的预测任务。其次,因为决策任务是多轮的,智能体就需要在每轮做决策时考虑未来环境相应的改变,所以当前轮带来最大奖励反馈的动作,在长期来看并不一定是最优的。
强化学习的环境
强化学习的智能体是在和一个动态环境的交互中完成序贯决策的。我们说一个环境是动态的,意思就是它会随着某些因素的变化而不断演变,这在数学和物理中往往用随机过程来刻画。其实,生活中几乎所有的系统都在进行演变,例如一座城市的交通、一片湖中的生态、一场足球比赛、一个星系等。对于一个随机过程,其最关键的要素就是状态以及状态转移的条件概率分布。这就好比一个微粒在水中的布朗运动可以由它的起始位置以及下一刻的位置相对当前位置的条件概率分布来刻画。
如果在环境这样一个自身演变的随机过程中加入一个外来的干扰因素,即智能体的动作,那么环境的下一刻状态的概率分布将由当前状态和智能体的动作来共同决定,用最简单的数学公式表示则是
这个公式的符号可能不太容易看懂,其实表达的意思很简单:
在给定的公式 (下一状态∼P(⋅∣当前状态,智能体的动作)下一状态∼P(⋅∣当前状态,智能体的动作)) 中,符号 "~" 和 "(⋅⋅)" 有以下含义:
符号 "~" 表示“服从”或“遵循”的意思。在这个上下文中,它表示“下一状态”是根据条件概率分布 (P) 随机抽取的。
符号 "(⋅⋅)" 是一个占位符,表示概率分布 (P) 的输出。在这里,它表示“下一状态”是 (P) 的一个可能的输出,这个输出是根据给定的“当前状态”和“智能体的动作”来确定的。
因此,整个公式可以解释为:“下一状态”是根据给定的“当前状态”和“智能体的动作”作为条件,从概率分布 (P) 中随机抽取的。
根据上式可知,智能体决策的动作作用到环境中,使得环境发生相应的状态改变,而智能体接下来则需要在新的状态下进一步给出决策。
由此我们看到,与面向决策任务的智能体进行交互的环境是一个动态的随机过程,其未来状态的分布由当前状态和智能体决策的动作来共同决定,并且每一轮状态转移都伴随着两方面的随机性:一是智能体决策的动作的随机性,二是环境基于当前状态和智能体动作来采样下一刻状态的随机性。通过对环境的动态随机过程的刻画,我们能清楚地感受到,在动态随机过程中学习和在一个固定的数据分布下学习是非常不同的。
补基础:条件概率
条件概率是指在给定某个事件已经发生的情况下,另一个事件发生的概率。用数学符号表示,条件概率通常写作 ( P(A|B) ),表示在事件 ( B ) 发生的条件下,事件 ( A ) 发生的概率。条件概率的概念在概率论中非常重要,因为它允许我们考虑事件之间的依赖关系。
在随机过程中,条件概率用于描述状态转移的规律。例如,在一个动态环境中,智能体的当前状态和未来状态之间的关系可以通过条件概率来刻画。具体来说,如果我们知道智能体当前的状态,条件概率可以帮助我们预测它在下一时刻可能转移到的其他状态的概率分布.
例子1:掷骰子
假设我们有一个标准的六面骰子,每个面分别标有数字1到6。我们进行两次掷骰子的实验,考虑以下两个事件:
- 事件 A:第一次掷骰子的结果是偶数(即2、4或6)。
- 事件 B:两次掷骰子的结果之和为7。
我们首先计算事件 A 的概率 ( P(A) ):
- 骰子有6个面,其中3个面是偶数(2、4、6),因此 ( P(A)=36=12P(A)=63=21)。
接下来,我们计算事件 B 的概率 ( P(B) ):
- 两次掷骰子的结果之和为7的组合有:(1,6), (2,5), (3,4), (4,3), (5,2), (6,1),共有6种组合,因此 ( P(B)=636=16P(B)=366=61 )(因为每次掷骰子有6种可能,两次掷骰子共有36种可能的组合)。
现在我们来计算条件概率 ( P(B|A) ),即在第一次掷骰子结果为偶数的条件下,两次掷骰子的结果之和为7的概率:
- 如果第一次掷骰子的结果是2,那么第二次掷骰子必须是5才能使和为7。
- 如果第一次掷骰子的结果是4,那么第二次掷骰子必须是3才能使和为7。
- 如果第一次掷骰子的结果是6,那么第二次掷骰子必须是1才能使和为7。
因此,在第一次掷骰子结果为偶数的情况下,有3种组合可以使两次掷骰子的结果之和为7。由于第一次掷骰子结果为偶数有3种可能(2、4、6),所以 ( P(B∣A)=P(AB)P(A)=3/361/2=1/6P(B∣A)=P(A)P(AB)=1/23/36=1/6 )。
例子2:踢足球
假设在一个班级中,有30个学生,其中15个男生和15个女生。已知15个男生中有9个喜欢踢足球,10个女生中有4个喜欢踢足球。如果我们想计算“随机选择一个喜欢踢足球的学生是男生的概率”,我们可以使用条件概率。
- 事件 AA:学生喜欢踢足球。
- 事件 BB:学生是男生。
我们要求的是 P(B∣A),即在喜欢踢足球的学生中,学生是男生的条件概率。
-
计算联合概率 P(A∩B):表示喜欢踢足球且是男生的概率。因为有9个男生喜欢踢足球,所以:
P(A∩B)=930P(A∩B)=309
-
计算事件 B 的概率P(B):男生的概率是:
P(B)=1530=12P(B)=3015=21
-
应用条件概率公式:
P(B∣A)=P(A∩B)P(A)P(B∣A)=P(A)P(A∩B)
现在我们需要计算 P(A)P(A),即喜欢踢足球的学生的概率。喜欢踢足球的总学生数为 9+4 = 13,因此:
P(A)=1330P(A)=3013
然后,代入公式计算 P(B∣A):
P(B∣A)=9301330=913P(B∣A)=3013309=139
因此,喜欢踢足球的学生是男生的条件概率是 913139。
强化学习的目标
在上述动态环境下,智能体和环境每次进行交互时,环境会产生相应的奖励信号,其往往由实数标量来表示。这个奖励信号一般是诠释当前状态或动作的好坏的及时反馈信号,好比在玩游戏的过程中某一个操作获得的分数值。整个交互过程的每一轮获得的奖励信号可以进行累加,形成智能体的整体回报(return),好比一盘游戏最后的分数值。根据环境的动态性我们可以知道,即使环境和智能体策略不变,智能体的初始状态也不变,智能体和环境交互产生的结果也很可能是不同的,对应获得的回报也会不同。因此,在强化学习中,我们关注回报的期望,并将其定义为价值(value),这就是强化学习中智能体学习的优化目标。
价值的计算有些复杂,因为需要对交互过程中每一轮智能体采取动作的概率分布和环境相应的状态转移的概率分布做积分运算。强化学习和有监督学习的学习目标其实是一致的,即在某个数据分布下优化一个分数值的期望。不过,经过后面的分析我们会发现,强化学习和有监督学习的优化途径是不同的。
有监督学习和强化学习的区别
接下来我们从数据层面谈谈有监督学习和强化学习的区别。
有监督学习的任务建立在从给定的数据分布中采样得到的训练数据集上,通过优化在训练数据集中设定的目标函数(如最小化预测误差)来找到模型的最优参数。这里,训练数据集背后的数据分布是完全不变的。
在强化学习中,数据是在智能体与环境交互的过程中得到的。如果智能体不采取某个决策动作,那么该动作对应的数据就永远无法被观测到,
点击【高中生也能懂的强化学习】【1】什么是强化学习查看全文。