首页 >> 知识 >> 神经网络为什么要归一化

神经网络为什么要归一化

 原创文章,转载请说明来自《老饼讲解神经网络》:www.bbbdata.com

关于《老饼讲解神经网络》:

本网结构化讲解神经网络的知识,原理和代码。

重现matlab神经网络工具箱的算法,是学习神经网络的好助手。 

目录

一、数值问题

二、求解需要

(1)初始化

(2)梯度

(3)学习率

(4)搜索轨迹

三、小实验

四.对使用matlab工具箱的建议

五、其他网友的看法

用神经网络的小伙伴都知道,数据需要做归一化,但是为什么要做归一化,这个问题一直模梭两可,网上也没有较全的回答,小编花费了一段时间,作了一些研究,给大家仔细分析分析,为什么要做归一化。

一、数值问题

无容置疑,归一化的确可以避免一些不必要的数值问题。

常有种错觉,以为输入变量的数量级很难引起数值问题,其实不然,如果没做归一化,在神经网络中要引起数值问题并不是那么困难,由于tansig的非线性区间大约在[-1.7,1.7],意味着要使神经元有效,tansig( w1*x1 + w2*x2 +b) 里的 w1*x1 +w2*x2 +b 数量级应该在 1 (1.7所在的数量级)左右。这时输入较大,就意味着权值必须较小,一个较大,一个较小,两者相乘,就引起数值问题了。

       假如你的输入是421,你也许认为,这并不是一个太大的数,但因为有效权值大概会在1/421左右,例如0.00243,那么,在matlab里输入  421*0.00243 == 0.421*2.43

                                                         

可以看到两者不相等了,说明已经引起数值问题了。

总的来说,不归一化会令输入、权重两极化,从而引起的数值问题,

所以,归一化可以在一定程度上避免这个问题。

二、求解需要

        草莓视频在线观看APP建立了神经网络模型后,只要找到的解足够好,草莓视频在线观看APP的网络就能够正确的预测了。在训练前草莓视频在线观看APP将数据归一化,说明数据归一化是为求解作准备。

        那么,究竟给求解带来了什么方便呢?

         这个问题不能一概而论,不同的算法,在归一化中得到的好处各不相同。假若有一个很牛B的求解算法,那完全用不着归一化,不过目前大部算法,都比较需要归一化,特别是常用的梯度下降法(或梯度下降的衍生方法),归一化和不归一化,对梯度下降法的影响非常大。

        不同的算法,对归一化的依赖程序不同,例如列文伯格-马跨特算法(matlab工具箱的trainlm法)对归一化的依赖就没有梯度下降法(matlab里的traingd)那么强烈。

        既然不同的算法对归一化有不同的理由,篇幅有限,

网站地图