cs331n 线性分类器损失函数与最优化
tip:老师语速超快。。。痛苦= =
线性分类器损失函数与最优化
\(Multiclass SVM loss: L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y_{i}}+1)\)
\(Loss = \frac{1}{N} \sum_{i=1}^{N} L_{i}\)
Q1: what if the sum was instead over all classes(j = yi)?
A1:在计算中,我们可以知道这个没有意义,在公式中相当于加上了1,因为yi-yi=0
Q2:我们用平均值来替代求和会怎么样?
A2:没有任何意义,只是相当于使得最后损失的计算成倍地缩小。
Q3:如果公式变成了 $ L_{i} = \sum_{j \neq y_{i}} max(0,s_{i}-s_{y_{i}}+1)^{2} $ 会怎么样?
A3:这个公式实际上是square hinge loss。第一个公式我们通常叫做 hinge loss。
Q4:最大的损失值和最小值是多少?
A4:显然最小就是0,最大是无穷
Q5:当W很小的时候,s都等于0的时候,我们的loss会是多少?
A5:loss将会是种类数-1
code:
def L_i_vectorized(x,y,W):
scores = W.dot(x)
margins = np.maximum(0,scores - scores[y] + 1)
margins[y] = 0 # margins[y] = 1
loss_i = np.sum(margins)
return loss_i
\(f(x,W) = Wx\)
\(L = \frac{1}{N} \sum_{i=1}^{N} \sum_{j!=y_{i}} max(0,f(x_{i};W)_{j} - f(x_{i};W)_{y-{i}} +1)\)
这个loss function实际上是有bug,这个可能得到我们不想得到的结果。
比如我们想找到损失函数为0的W,是否W是独一无二?
显然不是,只要score[y]>1即可……
Weight Regularization
\(L = \frac{1}{N} \sum_{i=1}^{N} \sum_{j!=y_{i}} max(0,f(x_{i};W)_{j} - f(x_{i};W)_{y-{i}} +1) + \lambda R(W)\)
L2 regularzation \(R(W) = \sum_{k}\sum{l}W_{k,l}^2\)
L1 regularzation \(R(W) = \sum\sum \left | W_{k,l} \right |\)
Elastic net(L1+L2),Max norm regularization,Dropout
加入正则化,使得泛化能力增强。
L2正则化实际上是想让你尽可能展开你的W,使得充分的考虑更多的元素。
L1会使得W变得稀疏。
Softmax Classifier(Multinomial Logistic Regression)
scores = unnormalized log probabilities of the classes
\(L_{i} = -logP(Y = y_{i} | X = x_{i})\)
最大化正确的概率(最小化负的对数概率)
Q1:最大最小的loss是多少?
A1:最小为0,最大为无穷,显然。
Q2:当w非常小,都接近0的时候,loss会是什么值?
A2:-log(1/n) 显然