西瓜书学习-神经网络

感知机与多层网络

感知机

感知机不能实现异或这样简单的非线性可分问题。

感知机和逻辑回归函数的异同

损失函数两者不同:逻辑斯蒂回归使用极大似然(对数损失函数),感知机使用的是均方损失函数(即错误点到分离平面的距离,最小化这个值)

逻辑斯蒂比感知机的优点在于对于激活函数的改进。

前者为sigmoid function,后者为阶跃函数。这就导致LR是连续可导,而阶跃函数则没有这个性质。

LR使得最终结果有了概率解释的能力(将结果限制在0-1之间),sigmoid为平滑函数,能够得到更好的分类结果,而step function为分段函数,对于分类的结果处理比较粗糙,非0即1,而不是返回一个分类的概率。

多层神经网络

使用两层感知机就可以解决异或问题。

例子一

从隐层两个激励函数提取特征将非线性问题转化为线性问题

位于红色区域的两个点判断类别为1,红色区域外边的两个点判别类别为0,可以看一下f1=x1+x2-0.5 和 f2 = -x1-x2+1.5 正是红色区域的两条边界线,就f1而言,在f1左下方的点都为负,f1右上方都为正,再看f2,如果f2是x1+x2-1.5,则仍然与f1相同,左下方为负,右上方为正,但这里对f2取了-1,所以对于f2而言,f2左下方为正,右上方为负,这样的话,对于红色区域的点来说,他们带入f1,f2永远为正,从而由sigmoid函数可以得到两个1,而对于红色区域外的点,他们的f1,f2永远一正一负,从而sigmoid函数永远得到一个1一个0,这样两个1和一个1一个0则转化为一个简单的线性可分问题,从而分类。

例子二

例子二可以解释为从三维提取特征来解决问题

其中直线上的数字为权重。圆圈中的数字为阀值。第二层,如果输入大于1.5则输出1,否则0;第三层,如果输入大于0.5,则输出1,否则0. 我们来一步步算。 第一层到第二层(阀值1.5)

第二层到第三层(阀值0.5)

可以看到第三层输出就是我们所要的xor的答案。 经过变换后的数据是线性可分的(n维,比如本例中可以用平面),如图所示:

不要误解是指这个函数去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来,这是神经网络能解决非线性问题关键。

误差逆传播算法

假定神经网络的输出为 ,则均方误差为,下面以隐层到输出的来举例子

然后根据链式法则:

已知 假设隐层和输出层神经元都使用Sigmoid函数,根据Sigmod的性质:

有:

则有

可得基于单个的 Ek的反向传播算法

基于累积误差最小化的更新规则的最优化目标:

区别:标准 BP 算法往往需进行更多次数的法代.累积 BP 算法直接针对累积误差最小化,它在读取整个训练集 D 一遍后才对参数进行更新,其参数更新的频率低得多.但在很多任务中,累积误差下降到一定程度之后,进一步下降会非常缓慢,这时标准 BP 往往会更快获得较好的解,尤其是在训练集 D 非常大时更明显。类似于随机梯度下降(stochastic gradientdescent,简称 SGD)与标准梯度下降之间的区别。

防止过拟合方法

第一种策略是"早停" (early stopping): 将数据分成训练集和验证集,训练、集用来计算梯度、更新连接权和阔值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

第二种策略是"正则化" (regularization) 误差目标函数改为:

全局最小和局部最小

转载于:https://juejin.im/post/5cb578696fb9a068736d352b

你可能感兴趣的:(人工智能,数据结构与算法)