cs231n 学习 -- Lecture 3 Loss Functions and Optimization

上节课末解释了权值 W 的意义,这节主要讲 f 函数 的评价方法及优化,是吴恩达的机器学习课程中相关知识的深化和补充吧。

这里介绍了两种常见的评价方法:Multiclass Support Vector Machine loss and Softmax classifier.

Multiclass Support Vector Machine loss

这里直接给出表达式:

                             L = \frac{1}{N} \sum_{i} L_{i} + \lambda \mathbf{R}(\mathbf{W})

                             L_{i} = \sum _{j\neq y_{i}} max(0, s_{j} - s_{y_{i}} + \Delta )

                              s_{j} = \mathbf{\mathit{f}}(x_{i},W)_{j}

                             R(W) = \sum _{k} \sum _{l} W_{k,l}^{2}            L2 Regularization

关于 Δ 有如下解释,个人理解为一个阈值范围,在实际应用中一般初始化为1.0。

对 L_{i}  运算给出如下例子,给定3个图片,得到每个图片在3个类上的判定分数。在机器学习中,max(0, - ) 通常被称为 hinge loss,用于最大间距分类,尤其是SVM。

 对于正则化,在机器学习中用来解决过度拟合问题,可以让模型更加简洁。

为什么是L2 Regularization,而不是L1 Regularization     R(W) = \sum _{k} \sum _{l} \left |W_{k,l} \right | ,例如输入向量 x = [1, 1, 1, 1],权值  w_{1} = [1, 0, 0, 0], w_{1} = [1, 0, 0, 0],则 w_{1}^{T}x = w_{2}^{T}x = 1,但是 w_{2} 具有更低的损失(代价),因此L2 Regularization是优选的,正则化L2惩罚倾向于使用更小且更具扩散的权重向量,因此鼓励最终的分类器将所有输入维度考虑到少量而不是几个输入维度并且非常强烈。正如我们将在后面看到的,这种效果可以提高分类器在测试图像上的泛化性能,并减少过度拟合

Softmax classifier 

二元 logistic 回归泛化到多类即为softmax classifier。将 hinge loss 替换为 cross-entropy loss,得到如下形式:

                                        L_{i} = -log(\frac{e^{f_{y_{i}}}}{\sum _{j} e^{f_{j}}})             or             L_{i} = -f_{y_{i}} + log\sum _{j}e^{f_{j}}

从概率的角度来解释,对于   P(y_{i}|x_{i};W) = \frac{e^{f_{y_{i}}}}{\sum _{j} e^{f_{j}}},相当于给定 x_{i} ,通过 W 能正确标记到 y_{i} 的概率,对于L_{i} ,我们最小化了正确类的负对数似然,这可以解释为执行最大似然估计(MLE)。原理性的东西提到的不是很多,下去再补吧。

Optimization

所谓优化即调节 W 使损失函数的值最小,代价最低。提出来两种方法,数值梯度和解析梯度。

数值梯度如下图所示,根据表达式来计算:

                                                    \frac{df(x)}{dx}=\lim_{h \to 0}\frac{f(x+h)-f(x)}{h}

解析梯度利用微积分直接计算  \triangledown _{W} L 

两者比较,数值梯度精度不那么高, 计算比较慢,但是比较简单,解析梯度比较精准,计算快,但是容易出错,实际应用中,经常计算解析梯度并把它和数值梯度相比较来验证算法实现是否正确,这也成为梯度检测。

Gradient Descent

不断评估梯度并执行参数更新的过程称为梯度下降。

Mini-batch gradient descent 在大规模应用中,训练数据可能是百万级别,训练成本非常高昂,一个解决方式是计算批量数据的梯度,例如,在当前最先进的ConvNets中,包含256个示例的典型批次,来自整个120万训练集。然后,此批处理用于执行参数更新。

猜你喜欢

转载自blog.csdn.net/wu472269100/article/details/85639845