神经网络

在机器学习和认知科学领域,人工神经网络(英文:artificial neural network,缩写ANN),简称神经网络(英文:neural network,缩写NN)或类神经网络,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统。现代神经网络是一种非线性统计性数据建模工具。

Neural Networks and Deep Learning

归一化

为什么要归一化?不同的算法,在归一化中得到的好处各不相同。不过目前大部算法,都比较需要归一化,特别是常用的梯度下降法(或梯度下降的衍生方法)。

  • 使网络快速的收敛,更方便的求解。
  • 无容置疑,归一化的确可以避免一些不必要的数值问题。
  • 避免神经元饱和:与权值阈值相乘后,才是sigmoid的输入值,初始化得好的话,并不会饱和输出。若果使用“把权值和阈值随机初始化为[-1,1]之间的值”这种初始化方法,那不归一化就会引起神经元输出饱和现象。
  • 大数吞小数:若果我们找到适合的权值,是不会吞掉的。

关于使用matlab工具箱:

  1. Matlab2012b已经会自动将输入数据归一化,所以不必再自己去做数据的预处理,直接用原始数据建立网络就可以。
  2. 使用matlab神经网络工具箱,而又要用梯度下降法的话,输出一定要做归一化。因为工具箱计算误差的时候,使用的是原始数据的误差,因此误差数量级可能很大,这样一来梯度就很大了,在学习率还没来得及自适应减小的时候,梯度就一下子把原来初始化好的权重给吞掉了,使网络的权重掉到一个离最优解非常远的地方。
  3. 使用matlab2012b(或以上)工具箱得到的网络权值,是面向作了归一化后的数据的。所以使用时,需要先对数据进行归一化,再将归一化后的输入数据放到网络中计算网络输出,再将输出反归一化,才是真正的预测结果。由于归一化和反归一化都是线性运算,而权值阈值与输入输出也是线性运算,能否将它们合并成一个线性运算?答案当然是可以的!

梯度消失

神经网络梯度与归一化问题总结


谢谢鼓励,欢迎留言反馈
0%
Title - Artist
0:00