神经网络的权值,到底该怎么调整呢?

摘录自张玉宏的《深度学习之美》,这本书真的不错哦!

我们都知道,神经网络学习的本质,其实就是利用损失函数来调节网络中的权重。 而“减肥”的英文是“weight loss,,,所以你看,我用自身减肥的案例来讲损失函数,是不是很应景啊?

或许你又会说,就算应景,那神经网络的权值,到底该怎么调整呢?

总体来讲,有两大类方法比较好用。

第一类方法从后至前调整网络参数,第二类方法正好相反,从前至后调整参数。

第一类方法的典型代表就是“误差反向传播”,第二类方法的代表就是目前流行的“深度学习”。

对于第一类方法,简单来说就是首先随机设定初值,计算当前网络的输出,然后根据网络输出与预期输出之间的差值,采用迭代的算法,反方向地去改变前面各层的参数,直至网络收敛稳定。

这个例子说起来很抽象,我们还是用减肥的例子感性认识一下。 比如, 影响减肥的两个主要因素是“运动”和“饮食”, 但它们在减肥历程中的权值并不了然。 如果我的减肥目标是150 磅, 而体重秤上给出的实际值是180 磅,根据这个30 磅的落差,我反过来调整“运动”和“饮食”在减肥过程中的权值(是多运动呢,还是吃低热量的食物呢)。

话说最有名气的反向传播算法,莫过于大名鼎鼎的BP算法。 它是由杰弗里 · 辛顿 ( Geoffrey Hinton )和大卫 ·鲁姆哈特( David Rumelhart )等人在1986 年提出来的,其论文“借助反向传播算法的学习表征( Leaming Representations by Back-propagating errors )”发表在著名学术期刊Nature(自然)上。 该论文首次系统而简洁地阐述了反向传播算法在神经网络模型上的应用。

BP 算法非常经典,在很多领域都有着经典的应用。 在当年,它的火爆程度绝不输给现在的深度学习。 但后来,人们发现,实际应用起来, BP 算法还是有些问题的。 比如, 在一个层数较多的网络中,当它的残差反向传播到最前面的层(即输入层)时,其影响已经变得非常之小, 甚至出现梯度弥散,导致参数调整失去方向性。 最终导致 BP神经网络的层数非常有限,通常不会超过 7 层。

其实,这也是容易理解的。 因为在“信息论”中有一个信息逐层缺失的说法,就是说信息在被逐层处理时,信息量是不断减少的。 例如,处理A信息而得到B,那么B所带的信息量一 定是小于A 的。 这个说法再往深层次探寻,那就是信息熵的概念了。 推荐读者阅读一部影响我世界观的著作一一 《’熵: 一种新的世界观》。

根据热力学第二定律我们知道,能量虽然可以转化,但是无法100%利用。 在转化过程中, 必然会有一部分能量会被浪费掉。 这部分无效的能量就是“熵”。 把“熵”的概念迁移到信息理论中,它就表示信息的“无序程度”。

当一种形式的“有序化(即信息)”转化为另一种形式的“有序化”时,必然伴随产生某种 程度上的“无序化 ( 即熵)”。 依据这个理论,当神经网络层数较多时(比如大于 7 层),反向传播算法中的“误差信息”就会慢慢“消磨殆尽”,渐渐全部变成无序的“熵”,自然它也就无法指导神经网络的参数调整了。

再后来,第二类神经网络参数调整方法产生了,它就是当前主流的方法,也就是深度学习常用的“逐层初始化”训练机制,不同于反向传播算法中的“从后至前”的参数训练方法, 深度学习采取的是一种“从前至后”的逐层训练方法(后面的章节会详细讲解, 此处暂不展开)。

猜你喜欢

转载自blog.csdn.net/YPP0229/article/details/94546802