机器学习中使用神经网络第三讲笔记

博客已经迁移至Marcovaldo’s blog (http://marcovaldong.github.io/)

Geoffrey Hinton教授的Neuron Networks for Machine Learning的第三讲主要介绍了线性/逻辑神经网络和BackPropagation,下面是整理的笔记。

Learning the weights of a linear neuron

这一小节介绍线性神经网络的学习算法。线性神经网络很像感知机,但又有不同:在感知机中,权值向量总是越来越接近好的权值设定;在线性神经网络中,输出总是越来越接近目标输出。在感知机中,每一次更新权值向量,其就更接近每一个“一般可行”的权值向量,这限制了感知机不能应用于更加复杂的网络,因为两个好的权值向量的平均可能是一个坏的。故在多层神经网络中,我们不能使用感知机的学习流程,也不能使用类似的方法来证明学习的可行性。

在多层神经网络中,我们通过判断实际输出是否越来越接近目标输出来判断学习的性能是否在提高。这一策略在解决非凸问题时仍然奏效,但不适合应用于感知机的学习。最简单的例子是使用平方误差的线性神经网络(linear neurons),也称为线性过滤器(linear filter)。如下图所示,y是神经网络对期望输出的一个估计,w是权值向量,x是输入向量,学习的目标是最小化在所有训练样本上犯的错误之和。

3_1

这里很直接就可以写出一系列的等式,每一个等式对应一个训练样本,从中解出最优的权值向量。这是标准的工程方法,为什么不使用它呢?一方面,我们想要得到一个真正的神经网络可以使用的方法;另一方法,我们又希望最终的方法可以一般化的应用于多层神经网络、非线性神经网络。分析的方法比较依赖于已有的线性特性和平方误差的衡量方法,而迭代的方法则更容易一般化更加复杂的模型上去。

下面使用一个简单的例子来介绍和证明迭代方法。假设你每天都去自助餐厅吃午饭,你点了鱼(fish)、薯条(chips)、番茄酱(ketchup),每天点的东西一样但量不同,服务员仅告诉你每天的价格。吃了几天后,你应该就可以推断出每个菜的价格了。首先,你随机的给出一组菜价,然后使用迭代的方法来不断修正菜价,直至得到一个恰当的菜价。下面给出了计算公式:

3_2

下图给出了一顿午餐每个菜的份额和花费,是已知的;图中红色的数字是每个菜的实际单价,是未知的,也就是我们要求的。

3_3

我们首先随机的猜出一组菜价(50, 50, 50),然后计算整顿饭的价格,如下图所示,可以看到误差为350。然后给出了“delta-rule”,用来调整权值向量,其中的 ϵ 是参数。当参数 ϵ 取值 1/35 时,算出了每个权值的变化分别是+20,+50,+30,从而得到了新的权值向量(70, 100, 80)。

3_4

下图给出了delta-rule:

3_5

其实这里讲的还是感知机,我们在Andrew Ng的课程里已经学过了。通过迭代得到的权值向量可能不是perfect的,但应该是使得误差足够小的一个解。如果学习步长足够小,学习时间足够长,那最终得到的权值向量应该足够接近最优解。

下图给出了online delta-rule和perceptron的联系。

3_6

The error surface for a linear neuron

这一小节我们来观察误差曲面,从而理解线性神经网络是如何学习的。下图给出了一个二维权值向量对应的误差曲面(其实,这里给出的是两个截面,第一个图是纵截面,第二个图是横截面),整个曲面是一个碗装。对于多层或者非线性神经网络,其误差曲面将更加复杂。

3_7

这里给出了在线学习和批量学习分别对应的收敛过程示意图,关于二者的更多内容参见Machine Learning第十周笔记:大规模机器学习,这里不再展开。

3_8

3_9

Learning the weights of a logistic output neuron

这一小节介绍逻辑神经网络(logistic neurons),这里仅作作图,不再展开,因为这里的逻辑神经网络其实就是逻辑回归算法。

3_10

3_11

3_12

3_13

The backpropagation algorithm

这一小节介绍back propagation算法,其在多层神经网络的训练中是一个举足轻重的算法。前面已经学习了逻辑回归,现在我们来看一下如何学习到隐匿单元的权值。添加了隐匿单元的神经会变得更加强大,但通过人工提取特征的方式来添加隐匿单元实在太困难了,我们希望能有一种方法来代替人工提取特征的过程。人工提取特征通常是猜一些特征,然后重复进行跟踪、计算犯错率、修正的一系列循环,我们希望让机器来实现这一循环。

我们通常是随机扰动一个权值,然后观察是否会提高学习的性能。若是的话,则保留该扰动。这可以看做是增强式学习(reinforcement learning)的一种形式。一个一个去扰动权值的方法效率实在太低了,这其中可能包含了许多无用功,而back propagation则好多了。

3_14

我们可以同时扰动所有的权值,然后衡量权值的改变是否带来了性能的提升,但这种方法需要我们做大量工作,跟踪模型在每一个训练样本上的影响。一个更好的idea是随机的扰动隐匿单元,一旦我们知道隐匿单元基于给定训练样本需要作出什么样的改变时,我们就可以计算出如何修正权值。

3_15

back propagation背后的思想是,我们不必了解隐匿单元具体应该做什么,但我们可以计算随着隐匿单元的活动误差会发生怎样的变化,可以在同一时间求得所有隐匿单元的error derivatives。

3_16

下面几张图给出了backpropagation的一个简述,这里运用了链式法则。想深入了解backpropagation请阅读知乎上各位大神的解释:如何直观的解释back propagation算法?

3_17

3_18

Using the derivatives computed by backpropagation

弄清楚如何求得多层网络中所有权值的误差导数是学习到有效的神经网络的关键。在得到一个实际的学习流程之前我们还有很多问题有待解决,例如我们需要确定权值的更新频率。再或者,我们需要搞清楚如何来防止过拟合现象。

对于单个训练样本,back propagation算法是计算出每一个权值的导数的有效方法,但其还不是一个完整的算法,我们还需要给出算法的各个细节。例如,最优化问题和一般化问题,这两个问题将在第六讲和第七讲展开,这里做一个简要概述。

3_19

下面是最优化问题(optimization issue)的一个简述,其中关于online vs batch可以参见Machine Learning第十周笔记:大规模机器学习

3_20

训练数据中包含了从输入到输出这一映射的规律性等信息,但它同时还包含了下面的两种噪声:

  • The target values may be unreliable (usually only a minor worry).
  • There is sampling error. There will be accidental regularities just because of the particular training cases that were chosen.

在去拟合模型时,我们无法分辨哪些规律性是真实的那些是由样本误差造成的,模型同时拟合了这两种规律性。如果模型适应性很强,很好得拟合了样本误差,那对模型则是一个灾难。下图给出了过拟合的一个简单例子。

3_21

下面列出了避免过拟合的几种方法,这些方法将在第七讲中展开。

  • Weight-decay
  • Weight-sharing
  • Early stopping
  • Model avraging
  • Bayesian fitting of neural nets
  • Dropout
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值