== Task 1 ==
线性回归
涉及到损失函数 (-> 本节用到的是MSE)、优化函数(一般用的是梯度下降SGD)
- (优化函数在实操中常用的方法是Adam (
A Method for Stochastic Optimization
),该方法是一种可以替代传统随机梯度下降(SGD)过程的一阶优化算法,它能基于训练数据迭代地更新神经网络权重。)
Softmax
Softmax(回归模型)进行的是输入特征与权重做线性叠加的操作,(在分类模型中Softmax层的输出的个数为标签的类别数),相当于一个单层神经网络。
损失函数 - 使用交叉熵
交叉熵只关心对正确类别的预测概率(只要值足够大,就可以确保分类的结果正确)
【公式推导参考知乎回答】
多层感知机
多层感知机,“多层”是指加入了隐藏层,目的是为了使线性神经网络复杂化,以便更有效地拟合函数需求。于是就涉及到非线性函数(激活函数)的选取问题。
激活函数的选择
-
ReLU - 最常用的激活函数,只可在隐藏层中使用;由于改激活函数的计算量相对较少,所以一般也会在网络层数较多时使用;用于分类器模型中的效果一般会比sigmoid效果好
-
Sigmoid
-
Tanh(双曲正切函数)
**/!\ 注意** 使用sigmoid、tanh函数时,需要使用梯度消失问题。(两种函数的导数范围均为[0, 1])
Task 3
梯度消失/梯度爆炸
当神经网络层数较多时,模型的数值稳定性容易变差。
梯度爆炸(Gradient Exploding):即偏导数很大 -> 会造成训练时不稳定,且不收敛。
在网络进行训练时,损失函数沿梯度方向呈下降趋势,若梯度很大,则损失函数可能会收敛不到最值
解决方法:
1. 梯度剪裁
把沿梯度下降方向的步长限制在一个范围之内,计算出来的梯度的步长的范数大于这个阈值的话,就以这个范数为基准做归一化,使这个新的的梯度的范数等于这个阈值。
梯度消失(Gradient Vanishing):偏导无限接近0,导致长时记忆无法更新。
一般来说梯度消失更容易出现,
解决方法:
1. 可以添加正则项
2. 优化激活函数,例如将sigmoid函数变为relu函数
过拟合/欠拟合
欠拟合
出现原因
模型复杂度过低;特征量过少 【大多出现在训练前期】
常见解决方法
1. 增加新特征,考虑加入特征组合、高次特征来增大假设空间。
2. 添加多项式特征,ex.将线性模型通过添加二次项或者三次项使模型泛化能力更强。
3. 减少正则化参数。(正则化的目的是用来防止过拟合的)
4. 使用非线性模型,如核SVM、决策树、深度学习等模型进行训练。
5. 调整模型的容量(Capacity) -> 指其拟合各种函数的能力。
过拟合
出现原因
1. 样本数量太少、选样方法错误、样本标签错误等,这样会导致选取的样本数据不足以代表预设的分类规则。
2. 样本噪音干扰过大,使得机器将部分噪音认为是特征,从而扰乱了预设的分类规则
3. 模型复杂度过高,参数太多,模型学习到了不必要的特征。
4. 在决策树模型中,如果对其生长没有合理的限制,其自由生长可能会使节点只包含单纯的事件数据(event)或非事件数据(no event),使其虽然可以完美拟合训练数据,但是无法适应到其他的数据集。
5. 对于神经网络模型,
常见解决方法
1. Regularization
2. Data augmentation
3. Dropout
4. Early stopping