本帖最后由 皓月光兮非自明 于 2023-11-10 00:26 编辑
第一章:深度强化
深度神经网络由多层简单函数构成。每层函数由一个矩阵乘法紧跟一个非线性激活函数组成。
数据从左侧流入L1函数。然后流入L2函数,并变成右侧的输出。符号k、m和n表示向量的维度。函数L1的输出是一个长度为k的向量,L1产生一个长度为m的向量,然后该向量传递给L2,L2最终产生一个n维向量。
神经网络层由矩阵乘法和激活函数两部分组成。一个长度为n的向量从左侧进入,然后乘一个矩阵(通常称为参数或权重矩阵),输出向量现在的长度为m。深度神经网络将这些层堆叠在一起,我们通过对权重矩阵应用梯度下降来对其进行训练。其中权重矩阵是神经网络中的参数。
深度强化学习(Deep Reinforcement Learning,DRL)是机器学习中的一个子领域,它将深度学习模型(神经网络)应用于强化学习(Reinforcement Learning,RL)任务中。
1. 深度强化学习中的“深度”
深度学习模型只是众多用于图像分类的机器学习模型之一。通常来说,我们只需要某种类型的函数,用于接收一幅图像并返回一个类别标签。通常该函数拥有固定的可调参数集,我们把这类深度学习模型称为参数模型(parametric model)。首先,我们将参数模型的参数初始化为随机值,这将为输入图像生成随机的类别标签;然后,利用训练过程对参数进行调整,使该函数在正确分类图像的任务上表现得越来越好。在某种程度上,这些参数将处于一组最优值组合,这意味着模型无法在分类任务上变得更优。参数模型也可用于回归(regression),我们试着用模型拟合一组数据,以对未知数据进行预测。如果模型有更多参数或更好的内部架构,那么复杂的方法可能会取得更好的一些结果。
深度神经网络在很多情况下是特定任务下(例如图像分类)准确率最高的参数化机器学习模型,这很大程度上归因于它们的数据表示方式。深度神经网络包括很多层,这会引导模型学习输入数据的分层表示。这种分层表示是一种组合形式,这意味着复杂的数据可以表示为更基本的组件组合,而这些组件可以进一步分解成更简单的组件,以此类推,直至得到原子单元。深度学习之所以如此强大,很大程度上依赖于它利用组合表示法处理复杂问题的能力。
2. 强化学习
正确区分问题及其解决方案非常重要。深度学习算法能够运用于很多类型的问题和任务。分类和预测任务是深度学习的常见应用,鉴于图像的复杂性,深度学习之前的自动图像处理能力非常有限。但有很多其他类型的任务希望实现自动化。例如驾驶汽车涉及一些图像处理任务,但更重要的是算法需要学习如何行动,而不仅是分类或预测。这类必须做出决策或采取某些动作的问题,统称为控制任务(control task)。
交往学习是表示和解决控制任务的通用框架,在该框架中,我们可以自由选择运用于特定控制任务的算法。深度学习算法是很自然的选择,因为它能够有效的处理复杂数据。
在控制任务中,我们同样有一个要处理的数据空间,但每个数据块也有一个时间维度——数据存在于时间和空间中,这意味着算法在某一时刻的决定会受前一时刻所发生事情的影响。而对于普通的图像分类和类似的问题来说,情况并非如此。时间的流逝使得训练任务动态化——训练算法的数据集不是固定的,而是会根据算法做出的决策而变化的。
在强化学习中,我们并不知道每一步中正确的做法是什么,而只需知道最终目标是什么以及要避免做什么。强化学习算法只有一个目标,即最大化其奖励。我们使用奖励信号来正向/负向地强化某些动作。
3. 动态规划与蒙特卡洛
动态规划(Dynamic Programming,DP)最早由Richard Bellman于1957年提出。动态规划将问题不断分解成更小的子问题,直到分解成不需要进一步信息就可以解决的简单子问题,以此来解决复杂的高级问题。从这个角度看,动态规划或许更应该称为目标分解(goal decomposition)。
试错策略通常属于蒙特卡洛法的范畴,蒙特卡洛法本质上是对环境进行随机抽样。在很多现实世界的问题中,我们至少对有关环境的运行原理有一些了解,所以最终会采用一种结合试错和利用已知环境信息的混合策略来直接解决简单的子问题。
4. 强化学习框架
在强化学习框架中,首先要做的是定义总体目标。把多个子目标合并成一个新的复合目标函数(objective function),这个函数返回一个误差值,我们通过强化学习算法来最小化该目标函数在给定输入数据下的返回值(误差)。
输入数据由环境生成。环境是一个动态过程(一个时间函数),所以会产生不同大小和类型的连续数据流。为了使事情对算法友好,我们需要接收这些环境数据并将其封装成离散(互不关联)的包(称之为状态),然后在每个离散的时间步上将其传递给算法。
|