一.Loss Function
定义Multiclass SVM loss: $L_i = \sum_{j\neq y_i} max(0,s_j-s_{y_i}+1)$
这里,$L_i$为针对类别i的Loss值,$s_j$是除了i的其他类别得分,$y_i$为当前目标类别,$s_{y_i}$ 为当前目标类别得分
Full Training Loss为取平均,$L=\frac{1}{N}\sum_{i=1}^N L_i$ ,则L=(2.9+0+10.9)/3= 4.6
SoftMax function: $\frac{e^{s_k}}{\sum_j e^{s_j}}$
这里的SVM loss存在一个问题,w可能不是唯一存在满足L最小的,比如w=w*2,L依然为0,但w已经放大了两倍,如图;这里我们加入正则项$\alpha R(w)$,其中$\alpha$为训练误差和模型复杂度的调整系数
这里提到了loss function的选择:对于loss function的值全体做shift和scale是不会影响梯度的,而max/min则导致最后收敛时候梯度无限小。
关于正则项的使用,如SVM Loss: $L = \frac{1}{N}\sum_{i=1}^N\sum_{j\neq y_i}max(0,f(x_i;W)_j-f(x_i;W)_{y_i}+1)+\lambda R(W)$ ,called hinge loss,而L2-SVM则$max(0,-)^2$则放大惩罚误差。这里的1是$\Delta$,指正确样本到非正确样本的Margin
常用的正则向
- L2: $R(W) = \sum_k\sum_l W_{k,l}^2$
- L1: $R(W) = \sum_k\sum_l |W_{k,l}|$
- Elastic Net (L1+L2): $R(W)=\sum_k\sum_l \beta W_{k,l}^2 + |W_{k,l}|$
- Max Norm Regularization
- Dropout
Softmax Classifier(Multinomial Logistic Regression): $$ L_i = -log(\frac{e^{s_{y_i}}}{\sum_j e^{s_j}})$$ ,这里Softmax是满足Minimizing the cross-entropy between estimated class probabilities and “true” distribution,从信息学的角度来说,是一个好的loss function.Loss Function Noetes
Practical Tips: $\delta$和$\lambda$ 的trade off是相关的,所以可以fix one and only tuned another one
二.Optimization
得到合适的Loss Function后,如何最小化呢?使用到Optimization的方法了.
1.Random Search(Stupid):瞎走
2.Random Local Search(这里还有很多AI的Search算法)
3.Gradient Descent(都在用的): 沿着梯度下降,如果Loss是Convex Function,有Global Minimize;否则可能只能到达Local Minimize;如何走,也有很多学问,下一节课说。
Gradient Descent: 1.逐点weights,添加步长更新,Numerical Gradient: Approximate,Slow but easy 2.矩阵求导更新,Analytic Gradient: Exact, Fast but error-prone. (有时候陷入病态,无法求导或者导数太小)
[Practical Tips:用Analytic gradient but check the implementation compared with numerical gradient, called “Gradient Check“
Mini-Batch Gradient Descent: 对样本批量做,求平均更新;一般size为32/64/126,ALEX NET用了256;这里Batch过小,导致收敛漂移,陷入病态;Batch过大,则权值更新缓慢,优化过程长。
调参:Suitable Learning Rate, BatchSize, Regularization
题外话:回顾了一下CV上的Image Feature, Hue Histogram: 区块直方图统计,缺乏结构信息; HoG/Sift: Artifact Feature; BoW:对Feature学一个字典重新有效表示Image.
SVM是一个凸优化问题,但CNN不是,所以注意凸优化里面的方法不一定适用于CNN。
关于Gradient Descent的Practical considerations: 1.使用左右两端的导数值会更优,$[f(x+h)-f(x-h)]/2h$; 2.注意是往梯度的反方向更新,因为是下降 3.有效的更新步长(重要的学习参数)