DeepLearning--Part2--Chapter6:Feedforward-Deep-Networks(1)

Part 2 : Deep Networks: Modern Practices

本书的这部分内容主要介绍一些已经有实际应用的深度学习方法。

深度学习拥有很长的历史,也有宏大的愿景。一些深度学习方法尚未成熟,充满野心的目标也尚未实现,这些待发展的深度学习分支将在本书的最后一部分讨论。

这部分讨论那些早已在工业界落地,正在大规模使用的深度学习方法。

现在的深度学习提供了的一个强有力的监督学习的框架(framework)。通过增加layers数量以及增加layer内的单元(units)数量,一个深度网络能够表示越来越复杂的模式。一些将输入向量映射成输出向量的简单任务(比如:看图,语音),能够通过深度学习实现。而一些不能将事物简单描述为向量间关系的更复杂的任务(比如:人们要花时间思考与反思的任务),这类任务就超出了现在深度学习的范围。

此部分讲述基本上所有实际应用的深度学习背后的技术–core parametric function approximation technology。包括:如何用ConVNet卷积网络处理图片数据,如何用RNN网络处理序列数据;以及一些数据预处理和网络参数设置的建议。

这部分内容的章节对于那些想实现深度学习算法,去解决实际工程任务的人是很有帮助的。

Chapter 6 : Feedforward Deep Networks

前馈深度网络(Feedforward Deep Networks),也称为多层感知机(multi layer perceptrons)。他们其实是多个参数方程构成大的参数方程,其中每一个参数方程都是多输入多输出。在神经网络的术语当中,组成大参数方程的子参数方程被称为网络的一个layer,而一个子参数方程的每个标量输出被称作unit或者feature。尽管单个unit的输入到输出的转换相当简单,但是整个网络一叠加起来就变得有些复杂了。

并不是所有的深度学习算法都可以理解为像前馈深层网络一样,依据于定义单个确定的的参数方程,但是layer内unit数量多,layer数量多是所用深度学习共有的特点。我们把了layer内units的数量定义为width,layer的数量定义为depth。前馈深度网络作为一个简单的例子,揭示了深度学习模型获得的许多优点来源于其depth和width的增加。前馈深度网络也是目前许多深度学习结合大数据进行商业应用的核心基础技术。

在章节5,我们介绍了一些传统的机器学习算法,包括线性回归,线性分类器,逻辑回归以及核方法(kernel machines)。但是这些算法都是对给定的features作线性转换。虽然这些模型也能添加非线性,但是非线性的部分是固定不变的。也就是说,在输入x的区域是非线性的,但是在其他的一些预定义的区域又是线性的(译者理解为非线性是人为添加的,不是模型自己学习到的)。

神经网络使得我们可以获得新的非线性(non-linearity)特征。换个角度看,神经网络可以将学习到的features提供给线性模型。从这个角度看,神经网络可以自己设计features–这个特性目前仍在全体研究员社区的共同努力下慢慢发展。

6.1 : MLPs from the 1980’s

前向有监督神经网络可以说是第一个,也是最成功的一个非线性学习算法(Rumelhart et al., 1986e,c)。这类模型通常包括至少一个定义features的方程,以及一个将features映射到output的的方程(通常是线性)。网络中包含features的层通常称为隐含层(hidden layer)。称为隐含层是因为features事先是不知道的,是通过训练算法训练得到的。网络中的输入输出层则被称为可视层。Figure 6.1 给出了一个典型的MLP的结构,包含一个隐含层。而要使这个网络更深(deeper),只需简单的叠加隐含层即可。目前的一些新网络则改变了网络中的非线性函数或者训练的方法。

Example 6.1.1 介绍了一个浅层的MLP,Figure 6.1 是其插图。我们会在接下来的几个章节中推导MLP。

Example 6.1.1 :应用于回归的浅层神经网络(Shallow Multi-Layer Neural Network for Regression)

  • 基于上面的一些定义,现在我们可以写出从输入到输出的总方程:fθ(x) = b theta + V sigmoid(c + Wx),其中sigmoid(a) = 1/(1 + e−a)的运算方式是element-wise,输入向量 x∈Rni。隐含层由h = sigmoid(c + Wx) 计算得到,包含nh个元素。网络中的总参数θ = (b, c, V ,W ),通常θ 是flatten操作后的向量形式。b ∈ no ,和output层的维数(no)一致。c ∈ nh,和隐含层的维数(h)一致。V ∈ Rnh×noW ∈ ni×nh 是权重矩阵。
  • 典型的损失函数(loss function)是均方差(squared error):L( ˆy, y) = ||ˆy − y||2 (6.2 章节会讨论如何使ˆy作为E[Y | x]的estimator)。正则项(regularizer)可以是L2范式: ||ω||2 = (sum{ W2ij} + sum{V2ij})。ω 是W和V的集合。从公式可以看出,L2范式会“惩罚”权重,系数lambda越大,“惩罚”后的权重就越小。在训练的时候,我们将损失函数以及正则项一起最小化:

  • (x(t), y(t))表示的是第t对example –(input,target)。经典的训练方法便是SGD,通过算法的不断迭代来修改网络的参数θ:

  • 其中β = (b, c)是偏置参数,ω = (W , V )是权重矩阵,epsilon是学习率。t随着迭代次数的增加而增大,直到n(训练集总数)。章节 6.4.3 会介绍反向传播如何使得梯度能够高效的进行计算。

MLPs可以通过训练获得一个很好地非线性转换:实际上,如果有足够多的隐含层,MLPs可以表示成任意复杂但平滑的函数,他们可以作为通用的逼近器(universal approximators),6.6章节会详细介绍。这是通过组合简单的非线性变换而得到的效果。通过将原始数据非线性转换至另一个空间上,一个线性不可分的问题能变成线性可分的问题(即原来线性分类器不能有效分类,经过MLPs的非线性转换后能够使用线性分类器进行有效分类)。

如图 6.2 以及 6.3 :

  • Figure 6.2: 非线性神经网络中的每一层都会非线性转换其输入,扭曲数据空间,使得任务(如分类)更容易完成。如上图所示,该网络包含2-D的输入及隐含层,还有一个1-D的输出层,上图展示了神经网络如何非线性转换2-D的输入空间,使得任务变得线性可分。

本篇译文系作者原创,转载前请先联系作者: 18254275587@163.com,欢迎勘误。