Lecture 2:What to do if my network fails to train
第二章节讲的是一些训练的技巧和一些训练的方法,感觉是面试会问的
Genral Guide
Model bias
简单来说就是模型太简单了,所有的function没有能力使loss降低,解决方法就是重新设计模型,可以通过:
- 增加更多的输入维度,例如第一章的例子里,开始是只用了一天的,后面是改成了使用前5天还是几天来着。
- 使用更加深层的函数,在不能修改输入维度的情况下就去增加模型的深度或者添加一下激活函数之类。
Optimization Issue
模型的函数确实存在最优解,但是训练时optimizer卡在了local minimal 局部最优解
optimization vs model bias
Gaining the insights from comparison
Start from shallower networks (or other models), which are easier to optimize.
If deeper networks do not obtain smaller loss on training data, then there is optimization issue.
例如下图所示,1 layer到4layer的模型都有比较低的loss,所以但是到了第5层不可能会出现model bias,只能是因为5layers的优化参数多,optimization失败了。
overfitting
在训练数据上loss很小,在测试数据上loss很大。
原因是模型在训练时学到的参数只针对训练数据很好,具有很强的“freestyle”
解决方法:
- 增加训练资料,或者数据增强(data augmentation)
- 增加限制,减少弹性。减少参数,共用参数,减少使用的特征,early stopping,归一化,Dropout
复杂模型在训练时还会出现在测试集上的loss先降低后升高,这也是一种overfitting
为什么会存在私有的测试集(其实就是验证集),是因为即使测试集会反映训练的效果,但是只要测试次数够多,还是有概率会出现测试集上的效果会很好。
N-flod Cross Validation
例如把公开数据集平分为三份,每次用其中两份做训练集,剩下的一个当作验证集,比较平均的MSE
Mismatch
跟overfitting有一些不同,主要原因是在训练资料和测试资料的分布不同,例如2020年的资料不能用于2021年的。
局部最小值 (local minima) 與鞍點 (saddle point)
Local minimal 局部最小值
不是只有loacal minimal会让gradient为0,还有saddl point也有可能。
如何区分是local minimal还是saddle point
重点是如何求Hessian矩阵: $H_{i,j}$ = $\frac{\partial t^2}{\partial\theta_i\partial\theta_j}L(\theta’)$
在 critical point(优化不了的点)就是代表第二项(绿色框出的)为0。那么就需要看第三项(红色的,主要是其中的H)来判断是local minimal还是saddle point.
只需要知道算出Hessian矩阵即可,具体分类方法就是下面的:
ex
$y = w_1w_2x$, 当$x = 1$,可知 $L = (\hat y - w_1w_2x)^2 = (1-w_1w_2)^2$.
求梯度$g$:
$\frac{\partial L}{\partial w_1} = 2(\hat y-w_1w_2x)(-w_2) = 2(1-w_1w_2)(-w_2)$,
$\frac{\partial L}{\partial w_2} =2(\hat y-w_1w_2x)(-w_1)= 2(1-w_1w_2)(-w_1)$.
当产生critical point时,$w_1 = 0, w_2 =0$, 即在原点时$\frac{\partial L}{\partial w_1}=0,\frac{\partial L}{\partial w_2}=0$
所以Hessian矩阵就是:$
\begin{bmatrix}
\frac{\partial^2L}{\partial w_1^2} & \frac{\partial^2L}{\partial w_1 \partial w_2}\\
\frac{\partial^2L}{\partial w_2\partial w_1} & \frac{\partial^2L}{\partial w_2^2}\\
\end{bmatrix}
$,一个一个来:
- $\frac{\partial^2L}{\partial w_1^2} = 2(-w_2)(-w_2)$
- $\frac{\partial^2L}{\partial w_1\partial w_2}=-2+4w_1w_2$
- $\frac{\partial^2L}{\partial w_2\partial w_1}=-2+4w_1w_2$
- $\frac{\partial^2L}{\partial w_1^2}=2(-w_1)(-w_1)$
所以在原点时( $w_1=0,w_2=0$)$H =\begin{bmatrix} 0 & -2 \\ -2 & 0 \end{bmatrix},$求解特征值:令$H =\begin{vmatrix} 0-\lambda_1 & -2 \\ -2 & 0-\lambda_2 \end{vmatrix}=0,\ 得\ \lambda_1\lambda_2-4=0,\ 故 \lambda_1=2,\ \lambda_2 =-1$,结果可正可负数,所以可以判断为是saddle point。
这里用的特征值的目的其实简单理解就是判断梯度的方向上loss趋势如何。
error surface如下:
很容易可以发现在saddle point还是可以有优化方向的,这里就可以用Hessian来帮助优化:
设$u$ 是H的特征向量($\theta-\theta’)$,表示在临界点附近的几何性质 and $\lambda$ 是$u$对应的特征值 ($\lambda < 0$).
其中特征向量的计算方法为:$(H-\lambda I)u=0\rightarrow Hu=\lambda I u=\lambda u$, $I$是单位矩阵。
可证:$u^THu=u^T(\lambda u)=\lambda||u||^2$,即当 $\lambda <0$时,这一项$u^THu<0$,即$L(\theta)\approx L(\theta’)+\frac{1}{2}u^THu\rightarrow L(\theta)<L(\theta’) $,其中$u = \theta-\theta’ \rightarrow \theta=\theta’+u$,得到Loss可以降低的方向!
在上面的例子中,$u=\begin{bmatrix}1\\1\end{bmatrix},\lambda = -2$, 得到优化方向,在图中表现为
实际应用中,卡在local minimal的情况比较少,下图是实验证明: