Neural Network and Deep Learning-学习笔记1-基本概念

发布于:2023-01-06 ⋅ 阅读:(504) ⋅ 点赞:(0)

1. 感知器

感知器是神经网络的基础,成千上万个感知器通过不同的连接方式组成了复杂的网络。

 条件\sum_{j}\omega _{j}x _{j}看上去有些冗⻓,我们可以创建两个符号的变 动来简化。第⼀个变动是把 \sum_{j}\omega _{j}x _{j}改写成点乘,\omega \cdot x=\sum_{j}\omega _{j}x _{j},这⾥\omega  和 x 对应权重和输入的向量。第⼆个变动是把阈值移到不等式的另⼀边,并⽤感知器的偏置 b ≡ −threshold 代替,如上图所示。

以上图的感知器为例,x1、x2是输入,两个-2是权重w,3是偏置(阈值)。

组合感知器可以描述一个电路

种对有⼀个输出但没有输⼊的感知器,我们称它为输入层。

2. S型神经元

上节描述的阈值函数为二值型函数,其函数图像如下

在实际应用中,⽹络中单个感知器上⼀个权重或偏置的微⼩改动有时候会引起那个感知器的输出完全翻转,如 0 变到 1。那样的翻转可能接下来引起其余⽹络的⾏为以极其复杂的⽅式完全改变。我们想要任何权重(或偏置)中的微⼩改变引起⼀个输出的微⼩改变。

为解决这个问题,引⼊⼀种称为 S 型神经元的新的⼈⼯神经元来克服这个问题。S 型神经元和感知器类似,但是被修改为权重和偏置的微⼩改动只引起输出的微⼩变化。

 σ 的平滑意味着权重和偏置的微⼩变化,即 ∆wj 和 ∆b,会从神经元产⽣⼀个微⼩的输出变化 ∆output。实际上,微积分告诉我们 ∆output 可以很好地近似表⽰为:

感知器和 S 型神经元之间⼀个很⼤的 不同是S型神经元不仅仅输出0或1。它可以输出0和1之间的任何实数,所以诸如 0.173 . . . 和 0.689 。σ的偏导数有很多好的性质,在神经⽹络的⼯作中被普遍使⽤,并且是这本书中我们最常使⽤的激活函数。

假设我们把⼀个感知器⽹络中的所有权重和偏置乘以⼀个正的常数,c > 0。⽹络的⾏为并没有改变。

与上述一样,同样假设所有输⼊被选中。我们不需 要实际的输⼊值,仅仅需要固定这些输⼊。假设对于⽹络中任何特定感知器的输⼊ x,权 重和偏置遵循 w · x + b ̸= 0。现在⽤ S 型神经元替换所有⽹络中的感知器,并且把权重和 偏置乘以⼀个正的常量 c > 0。在 c → ∞ 的极限情况下,S 型神经元⽹络的⾏为和感 知器⽹络的完全一致。

3. 神经网络的架构

设计⽹络的输⼊输出层通常是⽐较直接的。例如,假设我们尝试确定⼀张⼿写数字的图像上是否写的是“9”。我们可以将图⽚像素的强度进⾏编码作为输⼊神经元来设计⽹络。 如果图像是⼀个 64 × 64 的灰度图像,那么我们会需要 4096 = 64 × 64 个输⼊神经元,每个强度取 0 和 1 之间合适的值。输出层只需要包含⼀个神经元,当输出值⼩于 0.5 时表⽰“输⼊图像不 是⼀个 9”,⼤于 0.5 的值表⽰“输⼊图像是⼀个 9”。

⽬前为⽌,我们讨论的神经⽹络,都是以上⼀层的输出作为下⼀层的输⼊。这种⽹络被称为前馈神经⽹络。这意味着⽹络中是没有回路的 —— 信息总是向前传播,从不反向回馈。然⽽,也有⼀些⼈⼯神经⽹络的模型,其中反馈环路是可⾏的。这些模型被称为递归神经⽹络。这种模型的设计思想,是具有休眠前会在⼀段有限的时间内保持激活状态的神经元。这种 激活状态可以刺激其它神经元,使其随后被激活并同样保持⼀段有限的时间。这样会导致更多 的神经元被激活,随着时间的推移,我们得到⼀个级联的神经元激活系统。

 4. 手写数字mnist分类网络

⽹络的输⼊层包含给输⼊像素的值进⾏编码的神经元。就像下⼀节会讨论的,我们给⽹络的 训练数据会有很多扫描得到的 28 × 28 的⼿写数字的图像组成,所有输⼊层包含有 784 = 28 × 28 个神经元。为了简化,上图中我已经忽略了 784 中⼤部分的输⼊神经元。输⼊像素是灰度级的, 值为 0.0 表⽰⽩⾊,值为 1.0 表⽰⿊⾊,中间数值表⽰逐渐暗淡的灰⾊。

⽹络的第⼆层是⼀个隐藏层。我们⽤ n 来表⽰神经元的数量,我们将给 n 实验不同的数值。 ⽰例中⽤⼀个⼩的隐藏层来说明,仅仅包含 n = 15 个神经元。

⽹络的输出层包含有 10 个神经元, 我们把输出神经元的输出赋予编号 0 到 9,并计算出哪个神经元有最⾼的激活值。⽐如,如果编号为 6 的神经元被激活,那么我们的⽹络会猜到输⼊的数字是 6。

文中讨论了为什么用10个输出神经元而不是4个(2^{4}=16>10,可囊括所有可能的输出值),最终的判断是基于经验主义的:实验两种不同的⽹络设计,结果证明10 个输出神经元的神经⽹络⽐ 4 个的识别效果更好。

为了理解为什么我们这么做,我们需要从根本原理上理解神经⽹络究竟在做些什么。⾸先考 虑有 10 个神经元的情况。我们⾸先考虑第⼀个输出神经元,它告诉我们⼀个数字是不是 0。假设隐藏层的第⼀、二、三、四个神经元只是⽤于检测如下的图像是否存在:

这四幅图像组合在⼀起构成了前⾯显⽰的⼀⾏数字图像中的 0:

如果我们有 4 个输出,那么第⼀个输出神经元将会尽⼒去判断数字的最⾼有效位是什么,显然这二者之间的关系很难确定。书中提到,以上说的只是⼀个启发性的⽅法。没有什么理由表明这个三层的神经⽹络必须按照我所描述的⽅式运⾏,即隐藏层是⽤来探测数字的组成形状。可能⼀个聪明的学习算法将会找到⼀些合适的权重能让我们仅仅⽤ 4 个输出神经元就⾏。但是这个启发性的⽅法通常很有效,它会节省你⼤量时间去设计⼀个好的神经⽹络结构。

5. 梯度下降算法

我们希望有⼀个算法,能让我们找到权重和偏置,以⾄于⽹络的输出 y(x) 能够拟合所有的训练输⼊x。为了量化我们如何实现这个⽬标,我们定义⼀个代价函数:

符号 ∥v∥ 是指向量 v 的模,也称为v的2范数。如果我们的学习算法能找到合适的权重和偏置,使得 C(w, b) ≈ 0,它就能很好地⼯作。梯度下降技术可以解决这样的最⼩化问题。

想象 C 是⼀个只有两个变量 v1 和 v2 的函数C(v),即用v1和v2代替w 和 b

对于上图的函数,我们⼀眼就能找到C的最⼩值,是因为我们假设的函数过于简单了,通常C是一个更复杂的多元函数,看⼀下就 能找到最⼩值可是不可能的。

一种解决这个问题的⽅式是⽤微积分来解析最⼩值。

为了更精确地描述这个问题,让我们思考⼀下,当我们在 v1 和 v2 ⽅向分别移动⼀个很⼩的量,即 ∆v1 和 ∆v2 时,微积分告诉我们 C 将会有如下变化:

 我们要寻找⼀种选择 ∆v1 和 ∆v2 的⽅法使得 ∆C 为负,达到“下降”的效果。为了弄明⽩如何选择,需要定义 ∆v 为 v 变化的向量,∆v ≡ (\bigtriangleup v1,\bigtriangleup v2) ^{T},定义 C 的梯度为偏导数的向量,⽤ ∇C 来表⽰梯度向量:

有了这些定义,∆C 的表达式可以被重写为:

这个⽅程真正让我们看到了如何选取 ∆v 才能让 ∆C 为负数。假设我们选取:

 这⾥的 η 是个很⼩的正数(称为学习速率)。

由于 ||\bigtriangledown C||^{2} ≥ 0,这保证了 ∆C ≤ 0,如果我们按照这个规则去改变 v,那么 C 会⼀直减⼩。

 梯度下降算法⼯作的⽅式就是重复计算梯度 ∇C,然后沿着相反的⽅向移动,沿 着⼭⾕“滚落”。我们可以想象它像这样:

 这种计算方式有⼀个主要的缺点:它最终必需去计算 C 的 ⼆阶偏导,代价⾮常⼤。假设我们想求所有的⼆阶偏导 \partial^{2}C/\partial v_{j}\partial v_{k},如果我们有上百万的变量 vj,那我们必须要计算数万亿(即百万次的平⽅)级别的⼆阶偏导,这会造成很⼤的计算代价。有⼀些避免这类问题的技巧,故寻找梯度下 降算法的替代品也是个很活跃的研究领域。

我们怎么在神经⽹络中⽤梯度下降算法去学习呢?其思想就是利⽤梯度下降算法去寻找能使得代价函数取得最⼩值的权重 w_{k} 和偏置b_{l}。为了清楚这是如何⼯作的,我们将⽤权重和偏置代替变量 vj。也就是说,现在“位置”变量有两个分量组成:w_{k}b_{l},⽽梯度向量 ∇C 则 有相应的分量 ∂C/∂w_{k}和 ∂C/∂b_{l}。⽤这些分量来写梯度下降的更新规则,我们得到:

回顾本节开篇定义的代价函数表达式,有着这样的形式C=\frac{1}{n}\sum_{}^{x}\bigtriangledown C_{x}, 它是遍及每个训练样本代价C_{x}\equiv \frac{||y(x)-a||^{2}}{2} 的平均值。在实践中,为了计算梯度 ∇C,我们 需要为每个训练输⼊ x 单独地计算梯度值 ∇Cx,然后求平均值,当训练输⼊的数量过⼤时会花费很⻓时间,这样会使学习变得相当缓慢。

有种叫做随机梯度下降的算法能够加速学习。其思想就是通过随机选取⼩量训练输⼊样本来计算 ∇Cx,进⽽估算梯度 ∇C。通过计算少量样本的平均值我们可以快速得到⼀个对于实际梯 度 ∇C 的很好的估算,这有助于加速梯度下降,进⽽加速学习过程。

更准确地说,随机梯度下降通过随机选取⼩量的m个训练输⼊来⼯作。我们将这些随机的训练输⼊标记为 X1, X2, . . . , Xm,并把它们称为⼀个⼩批量数据(mini-batch)。假设样本数量m⾜够⼤,我们期望 ∇CXj 的平均值⼤致相等于整个 ∇Cx 的平均值,即,

这⾥的第⼆个求和符号是在整个训练数据上进⾏的。交换两边我们得到

 证实了我们可以通过仅仅计算随机选取的⼩批量数据的梯度来估算整体的梯度。


网站公告

今日签到

点亮在社区的每一天
去签到