Skip to content

Commit

Permalink
docs: 9.7 非线性函数近似:人工神经网络
Browse files Browse the repository at this point in the history
  • Loading branch information
qiwihui committed May 13, 2019
1 parent d493104 commit 5426b36
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 0 deletions.
Binary file added source/partII/chapter9/images/figure-9.14.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added source/partII/chapter9/images/figure-9.15.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
117 changes: 117 additions & 0 deletions source/partII/chapter9/on-policy_prediction_with_approximation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -940,6 +940,123 @@ RBF网络,特别是非线性RBF网络的缺点是计算复杂度更高,并
9.7 非线性函数近似:人工神经网络
---------------------------------

人工神经网络(ANN)广泛用于非线性函数近似。ANN是一个互联单元的网络,具有神经元的某些特性,神经元是神经系统的主要组成部分。
人工神经网络历史悠久,最新的深层人工神经网络(深度学习)训练是机器学习系统中最令人印象深刻的能力,包括强化学习系统。
在第16章中,我们描述了使用ANN函数近似的强化学习系统的几个令人印象深刻的例子。

图9.14显示了一个通用的前馈ANN,意味着网络中没有环路,也就是说,网络中没有路径可以通过单元的输出影响其输入。
图中的网络具有由两个输出单元组成的输出层,具有四个输入单元的输入层和两个“隐藏层”:既不是输入层也不是输出层的层。
实值权重与每个链接相关联。权重大致对应于真实神经网络中突触连接的流动性(参见第15.1节)。
如果ANN在其连接中至少有一个循环,则它是一个循环而不是前馈ANN。
虽然前馈和循环人工神经网络都已用于强化学习,但在这里我们只考虑更简单的前馈情况。

.. figure:: images/figure-9.14.png

**图9.14:** 具有四个输入单元,两个输出单元和两个隐藏层的通用前馈ANN。

单元(图9.14中的圆圈)通常是半线性单单元,这意味着它们计算输入信号的加权和,
然后将非线性函数(称为 *激活函数*)应用于结果,以生成单元的输出或激活。
使用了不同的激活函数,但它们通常是S形或sigmoid,例如逻辑函数 :math:`f(x)=1 /\left(1+e^{-x}\right)`,
尽管有时使用整流非线性 :math:`f(x)=\max (0, x)`。
如果 :math:`x\geq\theta`,则阶梯函数如 :math:`f(x)=1`,否则为0,得到具有阈值 :math:`\theta` 的二进制单元。
网络输入层中的单元在将其激活设置为外部提供的值时有些不同,这些值是网络近似的函数的输入。

前馈ANN的每个输出单元的激活是网络输入单元上的激活模式的非线性函数。这些函数由网络的连接权重参数化。
没有隐藏层的ANN只能代表可能的输入输出函数的一小部分。
然而,具有单个隐藏层的ANN包含足够大的有限数量的S形单元,可以在网络输入空间的紧凑区域上近似任何连续函数,
达到任何精确度(Cybenko,1989)。对于满足温和条件的其他非线性激活函数也是如此,但非线性是必不可少的:
如果多层前馈ANN中的所有单元都具有线性激活函数,则整个网络相当于没有隐藏层的网络(因为线性函数的线性函数本身是线性的)。

尽管单隐藏层人工神经网络具有这种“通用近似”特性,但经验和理论都表明,
近似许多人工智能任务所需的复杂函数变得更加容易──实际上可能需要抽象,这些抽象是多层低级的分层组合,
即由具有许多隐藏层的人工神经网络等深层架构产生的抽象。(参见Bengio,2009,进行彻底的复习。)
深层ANN的连续层计算网络“原始”输入的逐渐抽象表示,每个单元提供有助于网络的整体输入-输出功能的分层表示的特征。

因此,训练ANN的隐藏层是一种自动创建适合于给定问题的特征的方法,从而可以在不依赖于手工选择的特征的情况下生成分层表示。
这对人工智能来说一直是一个持久的挑战,并解释了为什么具有隐藏层的人工神经网络的学习算法多年来受到如此多的关注。
人工神经网络通常通过随机梯度法学习(第9.3节)。每个权重的调整方向旨在改善网络的整体性能,如通过目标函数测量的最小化或最大化。
在最常见的监督学习案例中,目标函数是一组标记的训练样例的预期误差或损失。
在强化学习中,人工神经网络可以使用TD误差来学习价值函数,或者他们的目标是最大化预期奖励,如梯度老虎机(第2.8节)或策略梯度算法(第13章)。
在所有这些情况下,有必要估计每个连接权重的变化将如何影响网络的整体性能,换句话说,估计目标函数相对于每个权重的偏导数,给定网络权重的所有当前值。
梯度是这些偏导数的矢量。

对于具有隐藏层的人工神经网络(如果单元具有不可激活的激活函数),最成功的方法是反向传播算法,它包括通过网络的交替前向和后向传递。
在给定网络输入单元的当前激活的情况下,每个前向传递计算每个单元的激活。在每次前进之后,后向传递有效地计算每个权重的偏导数。
(与其他随机梯度学习算法一样,这些偏导数的向量是对真实梯度的估计。)
在15.10节中,我们讨论了使用强化学习原理而不是反向传播来训练具有隐藏层的ANN的方法。
这些方法不如反向传播算法有效,但它们可是能更接近真实神经网络的学习方式。

反向传播算法可以为具有1或2个隐藏层的浅网络产生良好的结果,但是对于更深的ANN可能不能很好地工作。
实际上,训练具有 :math:`k+1` 个隐藏层的网络实际上可能导致比使用 :math:`k` 个隐藏层的网络训练更差的性能,
即使更深的网络可以代表更浅网络的所有功能(Bengio,2009)。解释这些结果并不容易,但有几个因素很重要。
首先,典型深度ANN中的大量权重使得难以避免过度拟合的问题,即,未能正确地泛化到网络未训练过的情况的问题。
其次,反向传播对于深度神经网络效果不佳,因为其向后传递计算的偏导数
要么快速衰减到网络的输入端,使得深层学习极慢,要么偏导数快速向输入侧增长,使学习不稳定。
处理这些问题的方法是使用深度神经网络的系统所取得的许多令人印象深刻的最新结果的主要原因。

过拟合是任何函数近似方法的问题,该方法基于有限的训练数据调整具有多个自由度的函数。
对于不依赖有限训练集的在线强化学习而言,这不是一个问题,但有效泛化仍然是一个重要问题。
过拟合一般是人工神经网络的问题,但对于深度人工神经网络尤其如此,因为它们往往具有非常大的权重。
已经开发了许多方法来减少过度拟合。这些包括在不同于训练数据(交叉验证)的验证数据上性能开始下降时停止训练,
修改目标函数以阻止近似的复杂性(正则化),以及引入权重之间的依赖性以减少自由度的数量(例如,权重分享)。

一种用于减少深度神经网络过度拟合的特别有效的方法是由Srivastava,Hinton,Krizhevsky,Sutskever和Salakhutdinov(2014)引入的dropout方法。
在训练期间,单元及其连接随机从网络中删除。这可以被认为是训练大量“稀疏”网络。在测试时结合这些稀疏网络的结果是提高泛化性能的一种方法。
dropout方法通过将单元的每个输出权重乘以训练期间保留该单元的概率来有效地近似该组合。
Srivastava等人发现这种方法显着提高了泛化性能。它鼓励个别隐藏单元学习与其他特征的随机集合配合良好的特征。
这增加了由隐藏单元形成的特征的多功能性,使得网络不会过度专注于很少发生的情况。

Hinton,Osindero和Teh(2006)在深度信念网络,与这里讨论的深层人工神经网络密切相关的分层网络中,
在解决深层人工神经网络深层训练问题上迈出了重要一步。在他们的方法中,使用无监督学习算法一次一个地训练最深层。
在不依赖于整体目标函数的情况下,无监督学习可以提取捕获输入流的统计规律的特征。
首先训练最深层,然后通过该训练层提供输入,训练下一个最深层,依此类推,直到网络层中所有或多个层中的权重设置为现在作为初始的值用于监督学习。
然后通过关于整体目标函数的反向传播来微调网络。研究表明,这种方法通常比使用随机值初始化的权重的反向传播更好。
以这种方式初始化的权重训练的网络的更好性能可能是由于许多因素造成的,
但是一种想法是该方法将网络置于权重空间区域中,基于梯度的算法可以从中获得良好的进展。

*批量标准化* (Ioffe和Szegedy,2015)是另一种可以更容易地训练深度人工神经网络的技术。
人们早就知道,如果网络输入被标准化,则ANN学习更容易,例如,通过将每个输入变量调整为具有零均值和单位方差。
用于训练深度ANN的批量标准化将深层的输出在进入下一层之前进行标准化。
Ioffe和Szegedy(2015)使用来自训练样例的子集或“小批量”的统计来归一化这些层间信号,以提高深度ANN的学习率。

另一种用于训练深度ANN的技术是 *深度残差学习* (He,Zhang,Ren和Sun,2016)。有时,学习函数与恒等函数的区别比学习函数本身更容易。
然后将该差值,即残差函数添加到输入产生所需的函数。
在深度人工神经网络中,只需在块周围添加快捷方式或跳过连接,就可以制作一个层块来学习残差函数。
这些连接将块的输入添加到其输出,并且不需要额外的权重。He等人(2016)使用深度卷积网络评估该方法,
该网络具有围绕每对相邻层的跳过连接,在没有基准图像分类任务上的跳过连接的情况下发现对网络的实质性改进。
批量标准化和深度残差学习都用于我们在第16章中描述的围棋游戏的强化学习应用程序。

已经证明在应用中非常成功的一种深度ANN,包括令人印象深刻的强化学习应用(第16章),是 *深度卷积网络*。
这种类型的网络专门用于处理以空间阵列(例如图像)排列的高维数据。
它的灵感来自早期视觉处理在大脑中的运作方式(LeCun,Bottou,Bengio和Haffner,1998)。
由于其特殊的结构,深度卷积网络可以通过反向传播进行训练,而无需采用上述方法来训练深层。

图9.15说明了深度卷积网络的体系结构。这个例子来自LeCun等人(1998),旨在识别手写字符。
它由交替的卷积和子采样层组成,接着是几个完全连接的最终层。每个卷积层产生许多特征映射。
特征映射是对单元阵列的活动模式,其中每个单元对其感受域中的数据执行相同的操作,
该感受域是从前一层(或第一卷积层的情况下来自外部输入)中“看到”的数据的一部分。
特征映射的单元彼此相同,只是它们的感受域(大小和形状都相同)被移动到输入数据数组上的不同位置。
同一特征映射中的单元共享相同的权重。这意味着无论在输入数组中的哪个位置,特征映射都会检测到相同的特征。
例如,在图9.15的网络中,第一个卷积层产生6个特征映射,每个映射由 :math:`28 \times 28` 个单元组成。
每个特征映射中的每个单元都有一个 :math:`5 \times 5` 的感受域,这些感受域重叠(在这种情况下是四列四行)。
因此,6个特征映射中的每一个仅由25个可调整权重指定。

.. figure:: images/figure-9.15.png

**图9.15:** 深度卷积网络。经过IEEE会议论文的许可,重新发布,从基于梯度的学习应用于文档识别,
LeCun,Bottou,Bengio和Haffner,第86卷,1998年;通过Copyright Clearance Center, Inc传达许可。

深度卷积网络的子采样层降低了特征映射的空间分辨率。子采样层中的每个特征映射由在前一个卷积层的特征映射中的单元的感受域上平均的单元组成。
例如,图9.15的网络的第一个子采样层中的6个特征映射中的每一个中的每个单元
在由第一卷积层产生的特征映射之一上的 :math:`2 \times 2` 非重叠感受域上平均,产生六个 :math:`14 \times 14` 特征映射。
子采样层降低了网络对检测到的特征的空间位置的敏感度,也就是说,它们有助于使网络的响应在空间上不变。
这很有用,因为在图像中的某个位置检测到的特征也可能在其他地方有用。

人工神经网络的设计和训练的进展──我们只提到了一些,都有助于强化学习。
虽然目前的强化学习理论主要局限于使用表格或线性函数近似方法的方法,
但值得注意的强化学习应用的令人印象深刻的表现很大程度上归功于多层人工神经网络的非线性函数近似。
我们将在第16章讨论其中的几个应用程序。


9.8 最小二乘TD
----------------------
Expand Down

0 comments on commit 5426b36

Please sign in to comment.