深度学习基础(明确深度学习和强化学习的关系及其作用)
传统强化学习并不能解决高维度的复杂问题,将深度学习和强化学习结合起来,利用深度学习网络强大的拟合能力通过将状态、动作等作为输入,来估计对应的状态价值和动作价值等等。
4.1 强化学习与深度学习的关系
预测的主要目的是根据环境的状态和动作来预测状态价值和动作价值,而控制的主要目的是根据状态价值和动作价值来选择动作。换句话说,预测主要是告诉我们当前状态下采取什么动作比较好,而控制则是按照某种方式决策。深度学习就是用来提高强化学习中预测的效果的,因为深度学习本身就是一个目前预测和分类效果俱佳的工具。
PS:比如
Q
−
l
e
a
r
n
i
n
g
Q-learning
Q−learning 的
Q
Q
Q 表就完全可以用神经网络来拟合。注意,深度学习只是一种非常广泛的应用,但并不是强化学习的必要条件,也可以是一些传统的预测模型,例如决策树、贝叶斯模型等等,因此读者在研究相关问题时需要充分打开思路。类似地,在控制问题中,也可以利用深度学习或者其他的方法来提高性能,例如结合进化算法来提高强化学习的探索能力。
4.2 线性回归
深度学习基础:线性回归 逻辑回归 对应 回归问题和分类问题。
PS:过拟合是指在训练集上表现很好,但在测试集上表现很差,而欠拟合则是指在训练集上表现很差,但在测试集上表现很好。这两种情况都是不理想的,本质上都是陷入了局部最优解的问题,因此我们有时候需要一些方法来解决这个问题,比如正则化、数据增强等。
4.3 梯度下降
梯度下降思想和步骤:
几个trick:
1、除了调整学习率和批量大小之外,我们还可以对梯度下降的机制进行一些处理,比如加入动量、Adam 等,这类工具我们一般称之为优化器(optimizer)。动量法的基本思想是在梯度下降的过程中,不仅仅考虑当前的梯度,还要考虑之前的梯度,这样可以加快梯度下降的速度,同时也可以减少梯度下降过程中的震荡。
2、Adam 是一种自适应的优化算法,它不仅仅考虑了当前的梯度,还考虑了之前的梯度的平方,这样可以更加准确地估计梯度的方向,从而加快梯度下降的速度,也是目前最流行的优化器之一。注意在做强化学习应用或研究的时候,我们并不需要太纠结于优化器的选择,因为这些优化器的效果并没有太大的差别,而且我们也不需要去了解它们的具体原理,只需要知道它们的大致作用就可以了。
3、从训练中样本选择的方式来看,梯度下降可以分为单纯的梯度下降和随机梯度下降( stochastic gradient descent, SGD)。前者是按照样本原本的顺序不断迭代去拟合模型参数,后者则是随机抽取样本,这样做的好处就是利用随机性可能帮助算法跳出一些局部最优解,从而使得算法的收敛性更高,增强鲁棒性。从批的大小来看,又可以分为批量梯度下降和小批量梯度下降(
mini batch gradient descent),前者每次使用整个训练样本来迭代,也就是 batch 很大,这样做的好处是每次迭代的方向比较准确,但是计算开销比较大。
4.4 逻辑回归
逻辑回归的主要优点在于增加了模型的非线性能力,只能解决二分类问题,如要解决多分类问题,将sigmoid函数换成softmax回归函数(输入样本,输出对应多个类别的概率,选取概率最大的作为该样本的类别)。
4.5 全连接网络
如下图所示,将线性层横向堆叠起来,前一层网络的所有神经元的输出都会输入到下一层的所有神经元中,这样就可以得到一个全连接网络。其中,每个线性层的输出都会经过一个激活函数(图中已略去),这样就可以增加模型的非线性能力。
将线性层横向堆叠起来,前一层网络的所有神经元的输出都会输入到下一层的所有神经元中,这样就可以得到一个全连接网络。其中,每个线性层的输出都会经过一个激活函数(图中已略去),这样就可以增加模型的非线性能力。
在强化学习中我们会用神经网络来近似动作价值函数,动作价值函数的输入是状态,输出是各个动作对应的价值,在有些连续动作问题中比如汽车方向盘转动角度是 -90度 到 90度之间,这种情况下使用tanh激活函数能够使得神经网络负值以便于更好地近似状态动作函数。顺便提一句,这里还有一种做法是我们可以把动作空间映射到正值的范围,例如(0,180)区间,这样一来对应的神经网络模型激活函数使用函数会更好些。总而言之,激活函数的选择需要根据具体的问题来定,没有一种激活函数适用于所有的问题。
4.6 更高级的神经网络