连接:https://www.zhihu.com/question/47908908/answer/110987483php
1. 输入特征最好不相关。若是某些维输入的相关性太强,那么网络中与这些输入神经元相连的权重实际上起到的做用就是类似的(redundancy),训练网络时花在调整这些权重之间关系上的力气就白费了。(仅仅是多费了点时间?)算法
2. 上面说的输入的相关是指全部训练数据某些维度上相关,而不是说某些训练数据在全部维度上相关。在你举的例子中,若是类似数据都很是接近,那么这些数据实际上是冗余的,能够去掉一部分;若是类似数据之间的方差足够大,那么这种方差就能加强模型的鲁棒性。数组
3. 若是你不使用minibatch,那么没有影响。网络
4. 须要归一化,不然训练过程当中容易遇到数值上的困难。
样本之间的相关性不怕,特别是数据量大的时候。
输入特征之间最好仍是不要相关,可是若是数据量够大,问题也不大。性能
给题主分享一些实验的经验。首先分析一下你的问题,从题主的描述中,我感受题主问题两个方面; 学习
数据量纲,能够理解为数据在相应度量单位下的数值;好比温度和高度等度量单位,单位分别为摄氏度和厘米;大数据
若是剔除单位,单纯的从数据上来讲,很明显身高数据的幅值范围要大并且其数值也更大,网站
因此在相同的处理下,同时乘除同一个系数,身高对于结果的影响要大一些。spa
固然你能够说温度乘以一个大的系数,身高乘以一个小的系数,这种方式来平衡或者抵消量纲的影响,这个确实正确,最小二乘回归分析也是这么处理的,可是这个增长了模型训练的难度,并且大的系数很容易致使过拟合。ci
特征重要程度,其次从面对问题的角度来分析,
以上两种问题中对于温度和身高的分析都是基于咱们的常识经验,其实也能够看作一种机理分析,即咱们已经先验地知道了问题的因果关系,能够直观的断定变量的做用;
然而现实中咱们遇到的问题,每每很难作机理分析;更一般的作法是咱们经过观察测定了一些对于结果有影响的变量,至于which变量对于结果是相当重要的咱们每每不可以经过经验或者机理分析直接给出,那么这个时候最好的作法就是认为全部变量一样重要。
那么,体现变量同样重要的广泛作法就是去除量纲,即归一化处理到相同或相近的数值和幅值范围,一般的方法有最大最小值归一化和方差归一化两种,
最大最小值归一化把数据归一化到[0,1]或[-1,1]区间,
方差归一化更倾向于经过变量自身的离散程度(方差)来自身归一化,此种归一化后的数据范围一般不是[0 ,1]或[-1,1]区间。
数据相关,一般指不一样变量(度量维度)之间联系的程度,例如
人的身高和体重具备很大的相关性,通常身高高的体重都大;
还有就是颜值和受欢迎程度也是相关的;
那么若是相关性比较大的两个变量同时出如今数据中,会形成变量的重复使用和数据冗余,
假设咱们要预测某个省份的gdp,那么一般会在统计局网站中找一些相似人口,用电量,教育投入,高等教育人口比例,消费水平等相似的数据,那么咱们假设教育投入决定了高等人口比例,即两者之间有因果关系,那么此时若是把上述变量不加处理都扔进去模型中,就等价于教育投入这个变量使用的两次,不只影响结果,还会增长了计算量 。
解决数据相关性问题主要是
先计算数据变量间的相关系数,把相关系数高的两个变量提出一个,
或者用万金油PCA,不只可以消除相关性还可以下降维度。
其实主要指训练过程当中的一些trick,网络结构,神经元类型,学习方法,学习率,迭代次数,收敛精度,学习批量,乱序操做,权值初始值,权值惩罚项,权值约束,稀疏性,固然还有很重要的数据量;
每一个参数的设置都会影响你最终的训练时间和结果,全部参数都设置对告终果不必定好,可是有一个参数设置很差结果必定很差,神经网络就是这么任性的。一个好的模型和参数组合,在不进行数据处理时也能够获得不错的结果;并且一样的模型偶尔也会出现使用原始数据的结果反而比预处理后的结果要好,固然只是偶尔;因此从数据到结果是一个系统,哪个环节出了问题都得不到很好的结果;若是某一个环节表现特别优异能够在必定程度上弥补其它环节的不足。
上面扯了这么多,来正面回答一下题主的问题。
相关性问题是一个无肯定解的问题,特征之间的相关性是否会影响到网络的性能,致使了比特征间独立的状况下性能要差。
对于神经网络而言,数据的相关性会影响到网络性能,可是若是训练方法得当,参数选取正确其结果不必定比特征独立差
其次因为神经网络强大的拟合能力,有的数据集在不去除相关性和不使用pca降维时结果要更好,这个要看数据的特色和质量。
问题中题主用一个实例是(5,3,6)另一个是(5.1,3.3,6.1)来描述数据相关性有些不太恰当,从例子来看感受题主描述的应该是数据分布的密集读或者散布程度;
数据异常的点越少,散布越均匀,数据量越大,越可以提升准确性;相反则会致使很差的结果。
因为神经网络一般使用监督引导学习,经典的BP算法就是经过预测残差来引导网络学习的,若是数据分布不均匀,那么数据相对密集的地方会产出更多的引导学习,即网络更偏向数据密集的地方拟合,这时对于非密集处的数据就会产生坏的影响,能够理解成拔河,数据密集且多的地方可以把神经网络“拉”(引导)过来。
那么解决这种问题最好的方法能够考虑一下svm,若是题主坚持神经网络模型,那么能够尝试增大数据量,经过复制或者插值增长数据相对稀少位置的数据,也能够删除一部分密集处的数据。
也是一个无固定解的问题;就我的的经验而言大部分状况下归一化比不归一化要好,可是也存在一些特别的数据集,不归一化的状况下反而结果会更好;
至于两种归一化方法感受旗鼓至关了,从经验来讲基于最大最小值的[0,1]归一化要稍微好一些。可是图像数据必定要归一化,不归一化结果很烂。因此最终是否归一化,选择哪一种归一化方法须要题主用实验来验证你的数据适合哪一种状况。
是否对于数据进行乱序操做,要看题主使用的是哪一种学习方法了,目前主要分为:
经过以上分析,感受题主要骂娘了,说了半天和没说同样,那个状况都是不绝对,我只能说臣妾冤枉啊,以前在UCI数据上刷数据的时候,被害惨了,只能各类试验,找到每一个数据集最适合的处理方法。
神经网络是一个系统的工程,以前深度神经网络的学习不少状况下依靠参数的设置,其实就是依靠trick和经验,以前听过一个说法:
一个学习几天的本科生和一个研究神经网络的教授均可以用神经网络来解决一个问题,那么这个不一样就在于经验和感受上,可能本科生要获得好的结果要经过蛮力实验更多的次数。
感受这也是神经网络的魅力所在,使用网络模型很简单,只要有数据,不须要机理分析,就能够训练模型,可是模型结果的好坏则须要不少的trick,这也是神经网络简单,同时也不简单的地方了。
最后要多啰嗦一句,从解决问题的角度,感受题主应该首先基于机理分析,分析一下输入数据,而后去寻找适合的模型,
有时候非线性回归和偏最小二乘就能够解决问题;
此外简单的模型在修改的时候更加好控制,也具备更大的灵活性;
如果其余模型效果都不太理想,再考虑神经网络,由于神经网络多少有些黑箱模型,只要数据量足够,结果不会太差,多少有些暴力。
这是一个很大的话题,持续中...