机器学习的分类
从输出角度分类
- Regression(回归):输出是一个值
- Classification(分类):做选择题(需要准备好答案)
用n维单位向量来表示一类
SoftMax: y i ′ = l n ( y i ) ∑ l n ( y i ) y_i'=\frac{ln(y_i)}{\sum ln(y_i)} yi′=∑ln(yi)ln(yi)
在两个Class的情况下softmax等价于两个sigmoid - Structured Learning:产生一个有结构的
机器学习的训练过程
Loss
- MAE(mean absolute error)
- MSE(mean square error)
- Cross-Entropy(交叉熵)(用于output和label都是概率分布的情况)
e r r o r = − ∑ i y ^ l n y ′ error=-\sum_i\hat{y}lny' error=−∑iy^lny′
最小化交叉熵等价于最大化相似性 - 实际上可以是你想设定的任何值
Error Surface
优化
梯度下降(Gradient Descent)
1、选择参数初始值(可以不是随机的)
2、根据loss的梯度下降的方向选择优化方向(可能会陷入局部最优)
3、根据loss的梯度和学习率(超参数)决定参数值的变化幅度
loss得不到下降的原因
梯度为零的点统称为Critical Point,包含以下两类点
- Local Minima/Local Maxima局部最优,是一个“假问题”,因为在极高维空间中很少有Local Minima
- Saddle Point
判断Critical Point的类型的方法:
对L( θ \theta θ)做泰勒展开到二阶导项(Hessian矩阵),根据H来判断Critical Point的形状。若H正定,则为Local Minima;若H负定,则为Local Maxima;其他情况均为鞍点。
若为鞍点,则一定有一个最差的方法,即可以将H的负特征值所对应的特征向量作为本轮更新的方向
避免/逃离saddle point的方法
用更小的Batch Size:小的batch能获得更好的test accuracy,一种解释是,小batch的多次更新能避免进入Sharp Minima,而sharp minima在训练集和测试集有mismatch的时候会有更大的偏差。
大batch size可以在使用了平行运算技术时有更优的训练效率。
使用Momentum(动量)来逃离鞍点
克服震荡
客制化学习率
- Root Mean Square(Adagrad)
η i t = η 1 t + 1 ∑ j = 0 t ( g i j ) 2 \eta_i^t=\frac{\eta}{\sqrt{\frac{1}{t+1}\sum^t_{j=0}{(g_i^j)^2}}} ηit=t+11∑j=0t(gij)2η - RMS Prop
Learning Rate Scheduling
- LR Decay
- Warm Up
一种解释是,warm up使得客制化的学习率能代表对周围环境的反馈
进阶版RAdam
平坦化问题空间:feature归一化
BN:激活函数为sigmoid时放在激活函数前,其他情况也可放在激活函数后
Linear Model
把feature乘上weight加上bias作为输出
来自model的限制:Model Bias
Piecewise Linear Model
激活函数(Activation Function)
Sigmoid Function(S型
几个Sigmoid也是超参数
用于限制所修饰的子函数的作用范围
y
=
c
1
1
+
e
−
(
w
x
i
+
b
)
y=c\frac{1}{1+e^{-(wx_i+b)}}
y=c1+e−(wxi+b)1
c改变高度,w改变斜率,b左右移动
ReLU:Rectified Linear Unit
y = c ∗ m a x ( 0 , b + w x ) y=c*max(0, b+wx) y=c∗max(0,b+wx)
hard-sigmoid:两个ReLU
训练
将全集随机分成多个Batch,每一个Batch分别Update所有的参数;每个Batch都训练一遍叫一个epoch
为什么要分batch?
批大小也是超参数
为什么要Deep,而不是Fat?
Residual Net:152层Layer
理论上足够多的ReLU/Sigmoid就可以模拟任何函数,为什么不扩展层内神经元个数而要叠加多层?
Overfitting(过拟合)
弹性较大的模型容易出现Overfitting(第三课讲)
解决方法:
1、增加更多的资料
2、选择合适的模型
2.1 更少的参数
2.2 共用参数(CNN)
2.3 更少的特征
2.4 Early Stopping
2.5 Dropout
2.6 Regularization
Mismatch
Backpropagation(反向传播)
如何确定是Model-Bias还是Optimization影响训练结果不够好?
使用较小(LinearModel)/较简单(SVM)的模型,先对Loss的范围有一个估计