机器学习技法 Lecture12: Neural Network

Motivation

首先用图示看一下对多个感知机模型进行aggregation之后得到的模型的样子:
在这里插入图片描述
每个g都对应了一个感知机函数,然后再通过加权求和再将它们aggregation起来。而这样的函数可以你和什么样的边界呢?

首先来看布尔运算对应的情况,假如有两个线性感知机 g 1 g_{1} g1 g 2 g_{2} g2,它们本身的分类情况以及它们与运算之后结果如图:
在这里插入图片描述
我们发现aggregation之后的感知机可以很轻松的拟合and运算,对应系数如下:
在这里插入图片描述
而且对应的或运算和非运算也可以做到。这样aggregation之后得到的函数有很强大的拟合能力,甚至可以拟合一个圆形区域:
在这里插入图片描述
回忆当初讲解VC维的时候讲过凸集合的设定时,模型的VC维是无穷大的。而aggregation的感知机却可以拟合它,具有够强的拟合能力。

但是这样的函数却有一个很致命的缺陷,就是它居然无法拟合异或操作XOR。
在这里插入图片描述
这是个被证明的结论。那么既然aggregation形式的感知机模型无法拟合XOR,那么如何才能做到呢?

我们想到,既然XOR这种操作无法拟合是因为非线性可分的原因,那么是不是多进行一些数据的转换就可以做到?比如用多层的感知机,把XOR操作分解成and和or。
在这里插入图片描述结果发现这样确实可以。
在这里插入图片描述
实际上这个多层感知机与人类神经元工作原理很像,但又不完全相同。

Neural Network Hypothesis

我们发现多层感知机的输出实际上就是一个多层线性模型的输出,而对于线性模型的使用并没有限制,因此我们学过的线性模型都有可能用上:
在这里插入图片描述
在感知机中我们发现,得到了线性分数s之后还进行了一步取符号的操作sign,这相当于是对数据进行了一次变换。我们仔细考虑这个变换使用的操作,发现假如是像linear regression一样做线性变换,那么整个多层感知机模型就还是线性的,那就和单层的效果一样了。而使用sign函数的话结果是离散的,会遇到优化上的难题。
在这里插入图片描述
而我们一般选择使用tanh作为这个变换操作,它更容易被优化计算,而且更接近神经元的效果。实际上tanh和我们之前学过的sigmoid函数也有简单的对应关系。

因此我们就得到了最终的神经网络的结构与计算过程:
在这里插入图片描述
首先输入x作为第0层,然后使用系数w得到分数s,对分数s进行transformation操作。transformation操作的结果作为下一层的输入,重复这个过程。直到第L层最后一层为止。最后一层transformation是个线性操作,因此这个网络可以用来做回归。
在这里插入图片描述
其中系数 w i j ( l ) w_{ij}^{(l)} wij(l)的下标代表了其作用于第i层与第j层之间,对应的是第l个神经元。

这么做的物理解释可能在于,在计算的过程中,与系数W的方向相符的x能够得到比较大的结果。因此可能能够判断输入x是否具有某种pattern。这样神经网络就能够提取出x中存在的pattern。

Neural Network Learning

但是神经网络中模型如何更新权重呢?
在这里插入图片描述
学习权重w的目标是最小化错误 E i n E_{in} Ein,虽然每一层都是对感知机模型进行aggregation得到的结果,但是使用boosting进行一个个确定参数的方法行不通。因此可以直接进行梯度下降方法。
在这里插入图片描述
根据链式法则,我们写出每一层系数对应的梯度:
在这里插入图片描述
我们发现还需要计算一个中间变量 δ \delta δ的值,而这个值需要前一层中的s来以及后一层的 δ \delta δ来计算:
在这里插入图片描述
也就是说只要有了每一层的s值,那么对应的梯度只需要从后往前进行计算即可得到结果。

于是我们就有了backpropogation算法:
在这里插入图片描述

Optimization and Regularization

虽然我们使用了梯度下降方法来进行优化参数从而进行学习,但是实际上这个方法只能保证在凸函数中收敛到全局最优。而多层感知机的神经网络函数一般而言都是非凸函数。这也就意味着使用backprop算法无法收敛到全局最优而只能得到局部最优。
在这里插入图片描述
实际因为存在多个局部最优,因此系数的初始化可能会影响最终收敛到的位置。而且比较大的系数可能会带来saturate的问题,导致梯度更新变得很慢。一般来说初始化都是用随机的较小的值。

大致来说,神经网络模型的VD维是神经元个数与参数个数的乘积。
在这里插入图片描述
这样来说,神经网络模型的拟合能力一般都比较强,但是也会带来容易过拟合的问题。
在这里插入图片描述
为了防止神经网络过拟合,也有几种常见的方式。比如加正则项。
在这里插入图片描述
一般而言为了得到比较小的系数就使用L2正则,为了得到稀疏的参数从而减小VC维就使用L1正则。但是L2正则对不同大小的参数shrink的程度不同,而L1正则不利于优化。于是又有一种weight-elimination的正则,它能够让不同的系数减小同样大小,从而得到稀疏的系数。

还有一个简单的正则方式就是early stopping。这样做的原理在于,更新的次数越多,我们尝试的系数的组合数量就越多,也就是实际利用的VC维越大,于是更有可能导致过拟合。而较早停止训练就能够避免这种情况。而且以前讲过的 E i n E_{in} Ein E o u t E_{out} Eout同VC维的关系图也显示了这一点。
在这里插入图片描述
而判断何时停止训练的方式就是通过交叉验证的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值