首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深度学习入门教程 第二讲

深度学习入门教程 第二讲

作者头像
用户1107453
发布2018-06-21 16:25:18
8750
发布2018-06-21 16:25:18
举报

1.2 S 型神经元

学习算法听上去非常棒。但是我们怎样给一个神经网络设计这样的算法呢?假设我们有一 个感知机网络,想要用它来解决一些问题。例如,网络的输入可以是一幅手写数字的扫描图像。 我们想要网络能学习权重和偏置,这样网络的输出能正确分类这些数字。为了看清学习是怎样 工作的,假设我们把网络中的权重(或者偏置)做些微小的改动。就像我们⻢上会看到的,这一 属性会让学习变得可能。这里简要示意我们想要的(很明显这个网络对于手写识别还是太简单了!):

如果对权重(或者偏置)的微小的改动真的能够仅仅引起输出的微小变化,那我们可以利用 这一事实来修改权重和偏置,让我们的网络能够表现得像我们想要的那样。例如,假设网络错 误地把一个“9”的图像分类为“8”。我们能够计算出怎么对权重和偏置做些小的改动,这样网 络能够接近于把图像分类为“9”。然后我们要重复这个工作,反复改动权重和偏置来产生更好 的输出。这时网络就在学习。

问题是当我们给实际网络加上感知机时,结果并不像我们想象的那样。实际上,网络中单 个感知机上一个权重或偏置的微小改动有时候会引起那个感知机的输出完全翻转,如 0 变到 1。 那样的翻转可能接下来引起其余网络的行为以极其复杂的方式完全改变。因此,虽然你的“9” 可能被正确分类,网络在其它图像上的行为很可能以一些很难控制的方式被完全改变。这使得 逐步修改权重和偏置来让网络接近期望行为变得困难。也许有其它聪明的方式来解决这个问题。 但是目前为止,我们还没发现有什么办法能让感知机网络进行学习。

我们可以引入一种称为 S 型神经元的新的人工神经元来克服这个问题。S 型神经元和感知机 类似,但是经过修改后,权重和偏置的微小改动只引起输出的微小变化。这对于让神经元网络 学习起来是很关键的。

好了, 让我来描述下 S 型神经元。我们用描绘感知机的相同方式来描绘 S 型神经元:

正如一个感知机,S 型神经元有多个输入,x1,x2,...。但是这些输入可以取 0 和 1 中的任 意值,而不仅仅是 0 或 1。例如,0.638 . . . 是一个 S 型神经元的有效输入。同样,S 型神经元 对每个输入有权重,w1,w2,...,和一个总的偏置,b。但是输出不是 0 或 1。相反,它现在是σ(w · x + b),这里 σ 被称为 S 型函数,定义为:

把它们放在一起来更清楚地说明,一个具有输入 x1, x2, . . .,权重 w1, w2, . . .,和偏置 b 的 S型神经元的输出是:

初看上去,S 型神经元和感知机有很大的差别。如果你不熟悉 S 型函数的代数形式,它看上 去晦涩难懂又令人生畏。实际上,感知机和 S 型神经元之间有很多相似的地方,跨过理解上的 障碍,S 型函数的代数形式具有很多技术细节。

为了理解和感知机模型的相似性,假设 z ≡ w · x + b 是一个很大的正数。那么 e−z ≈ 0 而σ(z) ≈ 1。即,当 z = w · x + b 很大并且为正,S 型神经元的输出近似为 1,正好和感知机一样。 相反地,假设 z = w·x+b 是一个很大的负数。那么 e−z → ∞,σ(z) ≈ 0。所以当 z = w·x+b是一个很大的负数,S 型神经元的行为也非常近似一个感知机。只有在 w · x + b 取中间值时, 和感知机模型有比较大的偏离。

顺便提一下,σ 有时被称为逻辑函数,而这种新的神经元类型被称为逻辑神经元。既然这些术语被很多从事于神 经元网络的人使用,记住它是有用的。然而,我们将继续使用 S 型这个术语。

σ 的代数形式又是什么?我们怎样去理解它呢?实际上,σ 的精确形式不重要 —— 重要的是这个函数绘制的形状是这样:

这个形状是阶跃函数平滑后的版本:

如果 σ 实际是个阶跃函数,既然输出会依赖于 w · x + b 是正数还是负数2,那么 S 型神经元 会成为一个感知机。利用实际的 σ 函数,我们得到一个,就像上面说明的,平滑的感知机。确 实,σ 函数的平滑特性,正是关键因素,而不是其细部形式。σ 的平滑意味着权重和偏置的微小 变化,即 ∆wj 和 ∆b,会从神经元产生一个微小的输出变化 ∆output。实际上,微积分告诉我 们 ∆output 可以很好地近似表示为:

其中求和是在所有权重 wj 上进行的,而 ∂ output/∂wj 和 ∂ output/∂b 符号表示 output 分 别对于 wj 和 b 的偏导数。如果偏导数这个概念让你不安,不必惊慌。上面全部用偏导数的表达 式看上去很复杂,实际上它的意思非常简单(这可是个好消息):∆output 是一个反映权重和偏 置变化 —— 即 ∆wj 和 ∆b —— 的线性函数。利用这个线性特性,我们比较容易细微地修改权重 和偏置的值,从而获得我们需要的细微的输出变化。所以,因为S 型神经元具有与感知机类似的 本质行为,它们可以帮助我们了解权重和偏置的变化如何影响输出值。

实际上,当 w · x + b = 0 ,感知机输出 0,而同时阶跃函数输出 1。所以严格地说,我们需要修改阶跃函数来符合这点。但是你知道怎么做。

如果对 σ 来说重要的是形状而不是精确的形式,那为什么要在公式 (3) 中给 σ 使用特定的 形式呢?事实上,在下文我们还将不时地考虑一些神经元,它们给其它激活函数 f(·) 输出是f (w · x + b)。当我们使用一个不同的激活函数,最大的变化是公式 (5) 中用于偏导数的特定值 的改变。事实证明当我们后面计算这些偏导数,用 σ 会简化数学计算,这是因为指数在求导时 有些可爱的属性。无论如何,σ 在神经网络的工作中被普遍使用,并且是这本书中我们最常使用 的激活函数。

我们应该如何解释一个 S 型神经元的输出呢?很明显,感知机和 S 型神经元之间一个很大的 不同是 S 型神经元不仅仅输出 0 或 1。它可以输出 0 到 1 之间的任何实数,所以诸如 0.173 . . .和 0.689 . . . 的值是合理的输出。这是非常有用的,例如,当我们想要输出来表示一个神经网络 的图像像素输入的平均强度。但有时候这会是个麻烦。假设我们希望网络的输出表示“输入图 像是一个 9”或“输入图像不是一个 9”。很明显,如果输出是 0 或 1 是最简单的,就像用感知 机。但是在实践中,我们可以设定一个约定来解决这个问题,例如,约定任何至少为 0.5 的输出 为表示“这是一个 9”,而其它小于 0.5 的输出为表示“不是一个 9”。当我们正在使用这样的约 定时,我总会清楚地提出来,这样就不会引起混淆。

练习

• S 型神经元模拟感知机,第一部分

假设我们把一个感知机网络中的所有权重和偏置乘以一个正的常数,c > 0。证明网络的行 为并没有改变。

• S 型神经元模拟感知机,第二部分 假设我们有上题中相同的设置 —— 一个感知机网络。同样假设所有输入被选中。我们不需 要实际的输入值,仅仅需要固定这些输入。假设对于网络中任何特定感知机的输入 x,权 重和偏置遵循 w · x + b ̸= 0。现在用 S 型神经元替换所有网络中的感知机,并且把权重 和偏置乘以一个正的常量 c > 0。证明在 c → ∞ 的极限情况下,S 型神经元网络的行为 和感知机网络的完全一致。当一个感知机的 w · x + b = 0 时又为什么会不同?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 UAI人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档