径向基函数神经网络_神经网络(1)

这是《ESL》

第11章"neural networks"

1~5节

1.introduction

神经网络的核心是通过线性组合进行自动特征提取,然后对这些特征进行非线性建模。以下我们先讨论半参数统计和平滑中投影模型(projection pursuit model),然后介绍神经网络。

2.projection pursuit regression (PPR)

PPR模型的形式,

b3cb25f8ee85bace3930e8851e320472.png

原始输入

被转换为
函数没有预先具体指定为何种函数,而是在训练的过程中和向量
同方向通过平滑化方法得到,而且这个函数外面也没有参数。

被称为岭函数。
可以看成是
线性组合,它也是内积可以看成
在向量
方向的投影,所以
负责拟合
在方向
变化。模型
中共有
个投影方向,也就是说模型把输入
投影到
个方向,然后分别使用
来拟合。因此把这个方法称为'projection pursuit'。

PPR模型的一个特点是增大了模型的表达能力,它先进行线性组合再进行非线性变换,可以产生很多其它新的属性。如假设

,就可以得到
这个属性。

实际上如果

可以任意大,再选择合适
,PPR模型可以逼近
空间的任何连续函数,这种模型被称为广义逼近器(universal approximator)。

然而缺点是解释性差,普通的线性模型我们可以清楚地看到响应变量随某个自变量的变化,比例模型(cox模型)可以看到各个属性间的比例风险,但在PPR模型中,经过组合产生了大量类似

等复杂的特征,而无法进行合理解释。但 M=1 时,在经济学中称为 single index model 还是可以解释的。

目标函数,

9f705f9909cd5cf03a36bb76f5d21bf2.png

优化这个函数时我们同样要考虑由于模型过于复杂而导致过拟合的问题。

我们首先从 M=1 开始,此时去掉下标

只写个

(1)给定

,问题为
,此时拟合点
是一个实值,此时这是一维平滑问题,可以使用平滑样条来估计
,于是可以防止过拟合问题。

(2)给定

,对
做一阶泰勒展开,

6bd105669ae156c460250543a0876471.png

代入目标函数得,

9951d36c8cb6a39d27fc0aea03f4f287.png

问题变为如何最小化上图右边的式子,右边的式子可以看成是对点

进行加权最小二乘回归,损失权重为
,注意这个回归没有截距项和
对应。这个回归获得的系数就是

总的过程是初始随机给定

,由(1)得到
,再由(2)
,再回来由(1)得到新的
,二者交替更新,直到收敛。

如果有更多的

,逐个加入拟合即可。

实际中

不调整,确定 M 可使用交叉检验。在R语言中可使用ppr( )函数建模,使用 ?ppr 可查看算法。

3.neural networks

介绍神经网络的基本结构。

9dc2cddb4effa53920e094688b974182.png
图11.2

上图就是一个带一个隐藏层的神经网络,输入层-隐藏层-输出层。把每个圈都称为一个神经元,神经元之间的连接称为突触。这个模型既可以用来做回归也可以用来分类,回归是输出仅有一个神经元

,多输出回归则有多个输出神经元;K分类问题则有K个输出神经元,样本为第 k 类时,对应的标记为
,训练时输出为一个K向量,第k位置上的数值代表分类为第 k 类的概率。

神经网络的训练分为前向过程和逆向过程,这里先讲前向过程,下节为逆向过程。

前向过程(上图从左到右),

e6384ec3b21ead8828e8852c07a77158.png

称为激活函数,用来引进非线性因素。一般使用sigmoid函数,也有用高斯径向基函数称为径向基函数网络。引进非线性因素的好处是显而易见的,它使得模型的表达能力更好,没有非线性因素时上图的隐藏层实际没有存在的必要,因为无论有多少隐藏层实际都是对 X 进行线性变换,但有了激活函数情况就会变得复杂,增加隐藏层会产生意想不到的效果,当然本质还是特征的变换及提取。当隐藏层很多时,我们就把这个神经网络改称为深度学习。

,注意输入层神经元的输出没有激活函数,仅隐藏层神经元的输出经过激活函数,而输出层神经元的输出则经过函数
。当问题是回归时,
,即不做改变;当问题是分类时
,实际是使得输出均为正且做归一化,这样输出就可以当作概率使用。

激活函数实际是模仿生物神经元的域电位,当刺激达到阈值时神经元细胞才产生兴奋介质或抑制介质,生物神经细胞中的阈值是“硬”的,即仅但刺激超过阈值才产生兴奋或抑制,对应的数学模型中的激活函数是RELU=max(0,x)函数,如下图

ffc29dcd9036e69da11ccbaf4ff0a407.png

sigmoid函数则属于“软”阈值,

,下图还画出两种较极端情况的
(s=100,s=0.01),
称为激活率,这里
取0。可以看到当 s 很大的时候,只有当
时才输出为1(即产生兴奋),实际是“硬”阈值;当 s 很小的时候,无论什么刺激都会产生一个几乎相同的程度的兴奋,这并不是一件好事,这意味着回归的结果将是一条直线,当我们训练时遇到这种情况时可以尝试改变激活率。sigmoid函数还有一个好处是可导,在优化时很方便计算。

1354bfe18b2e7f67571d2e99d14443ca.png

可以看到带一个隐藏层、输出只有一个y的NN和PPR模型几乎相同,先对输入 X 进行线性变换,然后经过一个非线性函数,最后将上一步的输出组合起来作为最终输出。

4.fitting neural networks

这里仅使用链式规则推导只带一个隐藏层的NN,关于多层的使用链式和优化方法推的看这里

逆向传播,

参数总个数为,

,从左到右每个连接上都有一个参数,加1指的是偏置

回归问题时的目标函数,使用误差平方和,

acf77163c727e903586370fa18de1432.png
这里K,N 遍历还是交换下好

这里

是一个向量代表案例
的输入,
代表案例
的标记的第
个元素的值,
表示模型关于案例
的输出的第
个元素的值。

分类问题时的目标函数,使用交叉熵,

db4edb67b01d26ea54b2286d4f3a993e.png

说明下经过softmax函数,使用交叉熵为目标函数,实际是使用极大似然估计。

案例

发生的概率为,

对数似然,

,注意最后一个等式是因为
中只有一个取1其它取0。

总的误差,

57bf31b67e4ed04e712d3d39692f6015.png
式11.11

所以总的误差对参数的偏导先求每个
对参数的偏导,在求和即可。
对参数的偏导,这里将参数分为两部分,

一部分是最后的隐藏层到输出层的参数,

91d61a3dfe21b50d84ffee9f39eb7bcb.png

另一部分是最后的隐藏层直到输入层的参数,

e95aa8e2cf37d4f685714b853a156172.png

上面似乎没有说到偏置

,只需将它们作为变量恒为1的系数即可,相对应的参数更新方法只需将上式中的
改为1即可。

上两式可以简写为,

4260d2a5a6e598e73b62e95f82825f6b.png

被称为逆向传播公式。可以看到其中的

可以用
(也称为局部梯度)表示,
,从这个式子中可以看到局部梯度在进行逆向的线性组合,用下面这个图更好理解(这个图和本文使用符号不同注意转换),

755eeab6211cc2d8c001cd66dc2df29f.png

表示误差。因此这种方法被称为逆向传播。

接着是梯度下降,

68c2e7db9430294ea36589430ec9c9e0.png
式11.13

总的过程:

(1)初始化参数;

(2)前向传播,将案例一个个输入模型,保留每个案例在每个神经元的输出值;

(3)逆向传播,使用前向传播保留的值计算每个参数在每个案例的梯度,然后求和为总梯度,如参数

总梯度为
。对每个参数进行更新。

(4)重复(2)(3)直到参数收敛。

BGD(批量梯度下降)

上述过程每次参数更新都使用了所有案例,使得

每次迭代都往局部极小值点走,这称为批量学习。批量学习还有另一个优点是学习过程可以并行地进行,即在电脑中同时计算所有案例的前向传播过程,而不是一个接一个地计算。

但批量计算也有缺点,任意选一个初始值,目标函数只会往附近局部极小值点走,且无法跳出这个局部极小值点(目的自然是希望获得最小值点);另一个缺点是如果训练集很大,则每次迭代计算所有案例前向传播过程,并保存每个案例的所有神经元的输出值,会导致设备的内存不够。

OGD(在线梯度下降)

即在线学习,取出训练集的第一个案例,进行前向传播,然后逆向传播更新参数;接着取出第二个案例,前向传播,逆向传播;... ... 取出最后一个后,又从训练集的第一个案例开始,直到参数收敛。和BGD的不同点是BGD每次迭代对

进行优化,而OGD每次迭代是对
进行优化。

SGD(随机梯度下降)

对训练集的所有案例进行一次随机排序,取出第一个案例进行前向逆向传播,取出第二个案例进行前向逆向传播,...,取出最后一个后,再对重新整个训练集进行随机排序,然后取出第一个案例... ...,循环至参数收敛

MBGD(小批量梯度下降)

每次从训练集中随机选择较少样本(如10个),对这10个样本进行批量梯度下降,迭代固定次数后,再随机选择10个进行批量梯度下降迭代固定次数,... ... 至参数收敛。

显然OGDSGDMBGD每次迭代都对存储要求少,且易跳出局部极小值点。

关于学习率

,实际就是优化中的迭代步长,它可以是固定值,也可以在迭代的过程中逐渐变化,如使用直线搜索,式11.13右边除
外均为已知,将式11.13右边代入式11.11的模型
中,则式11.11右边为一个关于
的二次函数,求得使这个函数最小的
即为选择的
。这在优化中称为精确直线搜索,原本的目标函数就是一个优化过程,为了确定
每次迭代又加了一次优化过程。还有一种方法称为回溯的直线搜索则操作起来简单些。

BP算法仅使用一阶逼近收敛很慢,一种常见的加快方法是使用二阶逼近,但NN的参数很多导致二阶逼近方法需要的Hessian 矩阵很大,不一定可逆且求逆很困难,一般不用。

到这里我们就对神经网络有了一个初步的了解,这里我们来看看网上有人编的可视化的神经网络训练实例 Tensorflow — Neural Network Playground

5.some issues in training neural networks

NN中的重要问题

[1]初始化参数

初始化参数不能过于接近0,也不能太大,服从标准正态分布或均匀分布是一个较好的选择。我们看看参数更新过程就明白了,

39436f20c72d36c231659dc92b92184b.png

其中的sigmoid函数的导函数为,

当所有参数初始值均十分接近于0,导致

接近于0,导致
接近于1,即无论
取什么,经过sigmoid函数时导数均取1,sigmoid变换实际是线性变换。那么
从输入层到隐藏层是线性变换,在隐藏中经激活函数是线性变换,从隐藏层到输出是线性变换,整个过程都是线性变换,这就是线性模型。那么这个NN结构的隐藏层也就没有作用了。(?)

当所有参数初始值直接取0,初始值取接近于0时参数向量有方向,

还是在做投影,训练过程实际在做主成分分析然后对主成分进行拟合。而参数直接全取0,会导致模型的0导数、网络结构完全对称、算法不动(?)。

初始值很大时,
接近于0或接近于1,接近于0导致
接近0使得
接近于0,接近于1导致
接近于无穷大使得
接近于无穷大,使得参数更新要么不动,要么直接变得很大。

[2]过拟合

显然一旦NN的输入维度高及增加层数和每层的神经元个数,参数会迅速变多,于是模型会很容易过拟合。

防止过拟合的一般方法,

(1)提前终止训练

(2)对损失函数加正则项(如

正则)

(3)dropout 方法。即随机将某些参数直接变为0。

[3]标准化输入

[4]NN隐藏层的层数及每层上神经元个数的决定

没有激活函数时,没有隐藏层的NN和含有多个隐藏层的NN是等价。有隐藏层时,实际一个隐藏层只要有足够多的神经元就可以拟合任何函数,但同样多的隐藏层神经元可以分配到更多的隐藏层中去,这样的NN结构训练更加高效。

隐藏层神经元过少可能无法表达过于复杂的问题,过多额外的参数会被正则项压缩到0。最常见的方法就是尽量选个较大的模型然后用正则自动压缩。

[5]众多的极小值

目标函数是非凸的, 因此有许多极小值点,初始点的不同选择可能会得到不同极小值点,而我们的目的是获得最小值点。

一个好的方法是多选几个初始点,分别进行训练,选择误差最小的版本;

更好的办法如使用不同的初始点训练得到多个NN,将这些NN的结果平均为最终结果,这比将这些NN的每个对应的参数进行平均获得一个NN的预测要好;

还有一种办法是使用bagging的方法,先对训练样本添加了随机扰动,然后使用不同初始点获得多个NN,结果为多个NN预测的平均值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
径向函数神经网络和BP神经网络在结构和工作原理上有几个关键的区别。首先,径向函数神经网络的隐含层中添加了径向函数,这是它与BP神经网络最大的区别之一。这些径向函数在隐含层中起到关键作用,用于对输入数据进行非线性变换和特征提取。而BP神经网络没有这种径向函数的特性。 其次,径向函数神经网络是线性的,可以被视为线性模型来优化。因此,在优化过程中,不需要进行反向传播的步骤,这使得径向函数神经网络的训练速度相对较快。而BP神经网络是非线性的,并且使用反向传播算法进行权值的训练。 此外,径向函数神经网络没有偏置项(bias),而BP神经网络通常包含偏置项。 在训练径向函数神经网络之前,需要先确定一些中心点,这些中心点在输入空间中起到了关键的作用。这些中心点可以通过不同的方法来确定,例如k均值聚类算法。 最后,径向函数神经网络的隐含层节点数量通常比输入层节点数量多,这起到了增加网络维度的作用。而BP神经网络的隐含层节点数量可以根据具体任务和数据集的要求进行设置。 综上所述,径向函数神经网络和BP神经网络在结构和工作原理上存在一些关键的区别,这些区别包括径向函数的引入、线性性质、训练速度、偏置项的有无、中心点的确定和隐含层节点数量等。这些区别使得径向函数神经网络在某些情况下能够展现出与BP神经网络不同的性能和效果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值