检验神经网络
1、为了检验,评价神经网络, 避免和改善这些问题, 我们通常会把收集到的数据分为训练数据 和 测试数据, 一般用于训练的数据可以是所有数据的70%, 剩下的30%可以拿来测试学习结果。
2、评价机器学习可以从误差这个值开始, 随着训练时间的变长, 优秀的神经网络能预测到更为精准的答案, 预测误差也会越少 . 到最后能够提升的空间变小, 曲线也趋于水平。
3、准确度
同样, 除了误差曲线, 我们可以看他的精确度曲线. 最好的精度是趋向于100%精确。
可以引用 R2 分数在测量回归问题的精度, F1 分数 , 用于测量不均衡数据的精度。
4、正规化
在机器学习中, 解决过拟合也有很多方法 , 比如 l1, l2 正规化, dropout 方法。
5、交叉验证
神经网络也有很多参数, 我们怎么确定哪样的参数能够更有效的解决现有的问题呢? 这时, 交叉验证 就是最好的途径了. 交叉验证不仅仅可以用于神经网络的调参, 还能用于其他机器学习方法的调参 。
特征标准化
提到特征数据的标准化, 也可以说正常化, 归一化, 正规化等等。 我们在机器学习训练之前, 先对数据预先处理一下, 取值跨度大的特征数据, 我们浓缩一下, 跨度小的括展一下, 使得他们的跨度尽量统一。
通常用于 特征标准化的途径有两种, 一种叫做 min max normalization, 他会将所有特征数据按比例缩放到0-1的这个取值区间。有时也可以是==-1到1==的区间. 还有一种叫做 standard deviation normalization, 他会将所有特征数据缩放成 平均值为0, 方差为1. 使用这些标准化手段。我们不仅可以快速推进机器学习的学习速度, 还可以避免机器学习 学得特扭曲。
选择好特征
避免无意义的信息、避免重复性的信息、避免复杂的信息
激励函数
我们为什么要使用激励函数? 用简单的语句来概括.,就是因为, 现实并没有我们想象的那么美好, 它是残酷多变的,激励函数也就是为了解决我们日常生活中不能用线性方程所概括的问题。非线性方程 (nonlinear function)。
在卷积神经网络 Convolutional neural networks 的卷积层中, 推荐的激励函数是 relu. 在循环神经网络中 recurrent neural networks, 推荐的是 tanh 或者是 relu 。
过拟合
解决方法:
1、 增加数据量
2、运用正规化, L1, l2 regularization等等
3、还有一种专门用在神经网络的正规化的方法, 叫作 dropout. 在训练的时候, 我们随机忽略掉一些神经元和神经联结 , 是这个神经网络变得”不完整”. 用一个不完整的神经网络训练一次。
加速神经网络训练
包括以下几种模式:
Stochastic Gradient Descent (SGD)
Momentum
AdaGrad
RMSProp
Adam
如果把这些数据拆分成小批小批的, 然后再分批不断放入 NN 中计算, 这就是我们常说的 SGD 的正确打开方式了. 每次使用批数据, 虽然不能反映整体数据的情况, 不过却很大程度上加速了 NN 的训练过程。
处理不均衡数据
批标准化
Batch normalization 的 batch 是批数据, 把数据分成小批小批进行 stochastic gradient descent. 而且在每批数据进行前向传递 forward propagation 的时候, 对每一层都进行 normalization 的处理。
Batch normalization 也可以被看做一个层面. 在一层层的添加神经网络的时候, 我们先有数据 X, 再添加全连接层, 全连接层的计算结果会经过 激励函数 成为下一层的输入, 接着重复之前的操作. Batch Normalization (BN) 就被添加在每一个全连接和激励函数之间。
之前说过, 计算结果在进入激励函数前的值很重要, 如果我们不单单看一个值, 我们可以说, 计算结果值的分布对于激励函数很重要. 对于数据值大多分布在这个区间的数据, 才能进行更有效的传递. 对比这两个在激活之前的值的分布. 上者没有进行 normalization, 下者进行了 normalization, 这样当然是下者能够更有效地利用 tanh 进行非线性化的过程。
L1 / L2 正规化 (Regularization)
过拟合
L1 L2 Regularization
对于刚刚的线条, 我们一般用这个方程来求得模型 y(x) 和 真实数据 y 的误差, 而 L1 L2 就只是在这个误差公式后面多加了一个东西, 让误差不仅仅取决于拟合数据拟合的好坏, 而且取决于像刚刚 c d 那些参数的值的大小. 如果是每个参数的平方, 那么我们称它为 L2正规化, 如果是每个参数的绝对值, 我们称为 L1 正规化. 那么它们是怎么样工作的呢?
核心思想
统一表达形式
最后,为了控制这种正规化的强度, 我们会加上一个参数 lambda, 并且通过 交叉验证 cross validation 来选择比较好的 lambda. 这时, 为了统一化这类型的正规化方法, 我们还会使用 p 来代表对参数的正规化程度. 这就是这一系列正规化方法的最终的表达形式啦.