神经网络技巧

神经网络技巧

1、检验神经网络

Reference:

检验神经网络 (Evaluation)

2、特征标准化 (Feature Normalization)

1、minmax normalization (0 , 1)

2、std normalization (mean = 0, std = 1)

Reference:

特征标准化 (Feature Normalization)

3、选取好用的特征(Good Features)

以分类问题为例

1、避免无用信息,即:对于区分类别不大的特征要忽略掉

2、避免选取重复的特征,如:距离:1公里 = 2里,这两个特征是具有同样的意义的

3、避免复杂的特征,如:描述距离,两个地点的经纬度(A: 10,98 B:25,97)可以算出距离,但是已经有了一个A、B间的距离:3KM,我们选取复杂度更小的

Reference:

3.3 选择好特征 (Good Features)

4、处理不均衡的数据

不均衡的数据,预测多的那一方准确率就能达到很高,神经网络在学习时,也会变成“多数派”

1、想办法获取更多的数据,使得数据均衡

2、换个评判方式

​ 原因:对于不均衡数据,Accuracy和Cost变得不在那么重要(为什么不重要了?)

​ 使用F1 score(or F-score)评判:

​ Confusion Matrix —-> Precision & Recall ——> F1 Score(or F-score)

3、重组数据

  • 砍掉多数部分的一些数据
  • 对少数部分的数据进行复制和生成(具体怎么做?)

4、使用其他机器学习方法

​ 如:决策树,不均衡类别的数据并不会对所生成的决策树的性能有所影响

​ 原因:决策树的每一个非叶子节点都是样本的特征,只有叶子节点是分类,在最终分类之前决策树只利用到了样本的特征和特征值,在最终分类时

5、修改算法

​ 例如:Sigmoid函数,在x = 0 时,f(0) = 0.5

  • 当f(x) > 0.5 时划分为正例

  • 当f(x) < 0.5 时划分为反例

我们可以适当的提升 f(x) > ? 时的正反例划分,如:f(x) > 0.8时划分为正例,f(x) < 0.8时划分为反例

Reference:

处理不均衡数据 (深度学习)!

5、激活函数(Activation Function)

​ 使得线性不可分问题转化为一个非线性可分问题

Reference:

激励函数 (Activation Function)

6、过拟合问题(Overfitting)

模型在训练集性能上很好,在实际问题中性能很差

1、L1/L2/… regularization

2、dropout

Reference:

过拟合 (Overfitting)

7、加速神经网络的训练

  • SGD

  • Momentum

  • AdaGrad

  • RMSprop

  • Adam

Reference:

加速神经网络训练 (Speed Up Training)

8、批标准化(Batch Normalization)

问题:输入层/隐藏层神经元的激活函数对于输入饱和

例如:对于Sigmoid函数,对于x <= -5,x >= 5的输入数据,神经元的输出变化值非常小(即:梯度会非常小),激活函数对于过大过小的输入不敏感

我们可以说,输入数据的分布对于激活函数来说是很重要的

Reference:

批标准化 (Batch Normalization)

9、L1/L2 正规化(Regularization)

Reference:

L1 / L2 正规化 (Regularization)

神经网络的黑盒不黑

对于神经网络的每一层进行查看

特征(输入)——>代表特征——>更高级(抽象)的代表特征——>…..——>输出

​ 其中:

​ ‘’——>“: 表示神经网络的一层对于上一层的输出的处理

​ 输入、输出是我们人类所能理解的

​ 而神经网络中间层的特征抽象是人类很难以理解的,但是对于计算机来说很容易理解

Reference:

科普: 神经网络的黑盒不黑 (深度理解神经网络)

神经网络的进化

​ 基于遗传算法、进化策略使得神经网络得以‘’代代进化‘’,即:每代神经网络对于目标问题的解更优,或说泛化误差更低。

Reference:

​ [什么是神经网络进化? What is Neuro-Evolution?](