`
BradyZhu
  • 浏览: 247008 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器

 
阅读更多

作者: 寒小阳 &&龙心尘
时间:2015年11月。
出处:http://blog.csdn.net/han_xiaoyang/article/details/49999299
声明:版权所有,转载请注明出处,谢谢。

1. 线性分类器

深度学习与计算机视觉系列(2)我们提到了图像识别的问题,同时提出了一种简单的解决方法——KNN。然后我们也看到了KNN在解决这个问题的时候,虽然实现起来非常简单,但是有很大的弊端:

  • 分类器必须记住全部的训练数据(因为要遍历找近邻啊!!),而在任何实际的图像训练集上,数据量很可能非常大,那么一次性载入内存,不管是速度还是对硬件的要求,都是一个极大的挑战。
  • 分类的时候要遍历所有的训练图片,这是一个相当相当相当耗时的过程。

这个部分我们介绍一类新的分类器方法,而对其的改进和启发也能帮助我们自然而然地过渡到深度学习中的卷积神经网。有两个重要的概念:

  • 得分函数/score function:将原始数据映射到每个类的打分的函数
  • 损失函数/loss function:用于量化模型预测结果和实际结果之间吻合度的函数

在我们得到损失函数之后,我们就将问题转化成为一个最优化的问题,目标是得到让我们的损失函数取值最小的一组参数。

2. 得分函数/score function

首先我们定义一个有原始的图片像素值映射到最后类目得分的函数,也就是这里提到的得分函数。先笼统解释一下,一会儿我们给个具体的实例来说明。假设我们的训练数据为<nobr><span class="math" id="MathJax-Span-2887" style="width: 4.163em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.309em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 2.883em -0.531em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2888"><span class="msubsup" id="MathJax-Span-2889"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2890" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2891" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2892" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">∈</span><span class="msubsup" id="MathJax-Span-2893" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2894" style="font-family: STIXGeneral-Italic;">R</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.643em;"><span class="mi" id="MathJax-Span-2895" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">D</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.403em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-73">x_i \in R^D</script>,对应的标签<nobr><span class="math" id="MathJax-Span-2896" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.776em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2897"><span class="msubsup" id="MathJax-Span-2898"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2899" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-2900" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-74">y_i</script>,这里<nobr><span class="math" id="MathJax-Span-2901" style="width: 5.336em; display: inline-block;"><span style="display: inline-block; position: relative; width: 4.269em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2902"><span class="mi" id="MathJax-Span-2903" style="font-family: STIXGeneral-Italic;">i</span><span class="mo" id="MathJax-Span-2904" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-2905" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1</span><span class="mo" id="MathJax-Span-2906" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">…</span><span class="mi" id="MathJax-Span-2907" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">N<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-75">i = 1 \dots N</script>表示N个样本,<nobr><span class="math" id="MathJax-Span-2908" style="width: 5.976em; display: inline-block;"><span style="display: inline-block; position: relative; width: 4.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.989em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2909"><span class="msubsup" id="MathJax-Span-2910"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2911" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-2912" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2913" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">∈</span><span class="texatom" id="MathJax-Span-2914" style="padding-left: 0.323em;"><span class="mrow" id="MathJax-Span-2915"><span class="mn" id="MathJax-Span-2916" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-2917" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">…</span><span class="mi" id="MathJax-Span-2918" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">K<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-76">y_i \in { 1 \dots K }</script>表示K类图片。

比如CIFAR-10数据集中N=50000,而D=32x32x3=3072像素,K=10,因为这时候我们有10个不同的类别(狗/猫/车…),我们实际上要定义一个将原始像素映射到得分上函数 <nobr><span class="math" id="MathJax-Span-2919" style="width: 6.776em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.389em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2920"><span class="mi" id="MathJax-Span-2921" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-2922" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">:</span><span class="msubsup" id="MathJax-Span-2923" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2924" style="font-family: STIXGeneral-Italic;">R</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.643em;"><span class="mi" id="MathJax-Span-2925" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">D</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2926" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">↦</span><span class="msubsup" id="MathJax-Span-2927" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2928" style="font-family: STIXGeneral-Italic;">R</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.643em;"><span class="mi" id="MathJax-Span-2929" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">K<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-77">f: R^D \mapsto R^K</script>

2.1 线性分类器

我们先丢出一个简单的线性映射:


<nobr><span class="math" id="MathJax-Span-2930" style="width: 11.096em; display: inline-block;"><span style="display: inline-block; position: relative; width: 8.856em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2931"><span class="mi" id="MathJax-Span-2932" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-2933" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-2934"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2935" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2936" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2937" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2938" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-2939" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2940" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">b</span><span class="mo" id="MathJax-Span-2941" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-2942" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-2943" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-2944"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2945" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2946" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2947" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-2948" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">b</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-78">f(x_i, W, b) = W x_i + b</script>

在这个公式里,我们假定图片的像素都平展为[D x 1]的向量。然后我们有两个参数:W是[K x D]的矩阵,而向量b为[K x 1]的。在CIFAR-10中,每张图片平展开得到一个[3072 x 1]的向量,那W就应该是[10 x 3072]的矩阵,b为[10 x 1]的向量。

这样,以我们的线性代数知识,我们知道这个函数,接受3072个数作为输入,同时输出10个数作为类目得分。恩,W被我们叫做权重,b叫做偏移向量

说明几个点:

  • 我们知道一次矩阵运算,我们就可以借助W把原始数据映射为10个类别的得分。
  • 其实我们的输入<nobr><span class="math" id="MathJax-Span-2949" style="width: 3.363em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.669em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2950"><span class="mo" id="MathJax-Span-2951" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-2952"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2953" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2954" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2955" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-2956" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2957" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-2958" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2959" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-79">(x_i, y_i)</script>其实是固定的,我们现在要丛的事情是,我们要调整W, b使得我们的得分结果和实际的类目结果最为吻合。
  • 我们可以想象到,这样一种分类解决方案的优势是,一旦我们找到合适的参数,那么我们最后的模型可以简化到只有保留W, b即可,而所有原始的训练数据我们都可以不管了。
  • 识别阶段,我们需要做的事情仅仅是一次矩阵乘法和一次加法,这个计算量相对之前…不要小太多好么…

提前剧透一下,其实卷积神经网做的事情也是类似的,将原始输入的像素映射成类目得分,只不过它的中间映射更加复杂,参数更多而已…

2.2 理解线性分类器

我们想想,其实线性分类器在做的事情,是对每个像素点的三个颜色通道,做计算。我们可以认为,因为设定的参数/权重不同,我们的分类器对特定位置的颜色会有自己的喜好

举个例子,假如说我们的分类器要识别『船只』,那么它可能会喜欢图片的四周都是蓝色(额,通常船只是在水里海里吧…)。

我们用一个实际的例子来表示这个得分映射的过程,大概就是下图这个样子:

得分函数

原始像素点向量<nobr><span class="math" id="MathJax-Span-2960" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.531em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2961"><span class="msubsup" id="MathJax-Span-2962"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2963" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2964" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.87em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-80">x_i</script>经过W和b映射为对应结果类别的得分<nobr><span class="math" id="MathJax-Span-2965" style="width: 11.096em; display: inline-block;"><span style="display: inline-block; position: relative; width: 8.856em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2966"><span class="mi" id="MathJax-Span-2967" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-2968" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-2969"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2970" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2971" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2972" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2973" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-2974" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2975" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">b</span><span class="mo" id="MathJax-Span-2976" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-2977" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-2978" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-2979"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2980" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2981" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2982" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-2983" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">b</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-81">f(x_i, W, b) = W x_i + b</script>。不过上面这组参数其实给的是不太恰当的,因为我们看到在这组参数下,图片属于狗狗的得分最高 -_-||

2.2.1 划分的理解_1

图片被平展开之后,向量维度很高,高维空间比较难想象。我们简化一下,假如把图片像素输入,看做可以压缩到二维空间之中的点,那我们想想,分类器实际上在做的事情就如下图所示:

分割

W中的每一列对应类别中的每一类,而当我们改变W中的值的时候,图上的线的方向会跟着改变,那么b呢?对,b是一个偏移量,它表示当我们的直线方向确定以后,我们可以适当平移直线到合适的位置。没有b会怎么样呢,如果直线没有偏移量,那意味着所有的直线都要通过原点,而这显然不能保证很好的平面类别分割。

2.2.2 划分的理解_2

对W第二种理解方式是,W的每一行可以看做是其中一个类别的模板。而我们输入图片相对这个类别的得分,实际上是像素点和模板匹配度(通过内积运算获得),而类目识别实际上就是在匹配图像和所有类别的模板,找到匹配度最高的那个。

是不是感觉和KNN有点类似的意思?是有那么点相近,但是这里我们不再比对所有图片,而是比对类别的模板,这样比对次数只和类目数K有关系,所以自然计算量要小很多,同时比对的时候用的不再是l1或者l2距离,而是内积计算。

我们超前透露一下CIFAR-10上学习到的模板的样子:

CIFAR-10模板

你看,和我们设想的很接近,ship类别的周边有大量的蓝色,而car的旁边是土地的颜色。

2.2.3 关于偏移量的处理

我们先回到如下的公式:


<nobr><span class="math" id="MathJax-Span-2984" style="width: 11.096em; display: inline-block;"><span style="display: inline-block; position: relative; width: 8.856em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-2985"><span class="mi" id="MathJax-Span-2986" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-2987" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-2988"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2989" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-2990" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-2991" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2992" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-2993" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-2994" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">b</span><span class="mo" id="MathJax-Span-2995" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-2996" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-2997" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-2998"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-2999" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3000" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3001" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3002" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">b</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-82">f(x_i, W, b) = W x_i + b</script>

公式中有W和b两个参数,我们知道调节两个参数总归比调节一个参数要麻烦,所以我们用一点小技巧,来把他们组合在一起,放到一个参数中。

我们现在要做的运算是矩阵乘法再加偏移量,最常用的合并方法就是,想办法把b合并成W的一部分。我们仔细看看下面这张图片:

合并W与b

我们给输入的像素矩阵加上一个1,从而把b拼接到W里变成一个变量。依旧拿CIFAR-10举例,原本是[3072 x 1]的像素向量,我们添上最后那个1变成[3073 x 1]的向量,而[W]变成[W b]。

2.2.4 关于数据的预处理

插播一段,实际应用中,我们很多时候并不是把原始的像素矩阵作为输入,而是会预先做一些处理,比如说,有一个很重要的处理叫做『去均值/归一化』,他做的事情是对于训练集,我们求得所有图片像素矩阵的均值,作为中心,然后输入的图片先减掉这个均值,再做后续的操作。有时候我们甚至要对图片的幅度归一化/scaling。去均值是一个非常重要的步骤,原因我们在后续的梯度下降里会提到。

2.3 损失函数

我们已经通过参数W,完成了由像素映射到类目得分的过程。同时,我们知道我们的训练数据<nobr><span class="math" id="MathJax-Span-3003" style="width: 3.363em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.669em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3004"><span class="mo" id="MathJax-Span-3005" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3006"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3007" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3008" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3009" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-3010" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3011" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3012" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3013" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-83">(x_i,y_i)</script>是给定的,我们可以调整的是参数/权重W,使得这个映射的结果和实际类别是吻合的。

我们回到最上面的图片中预测猫/狗/船得分的例子里,这个图片中给定的W显然不是一个合理的值,预测的结果和实际情况有很大的偏差。于是我们现在要想办法,去把这个偏差表示出来,拟人一点说,就是我们希望我们的模型在训练的过程中,能够对输出的结果计算并知道自己做的好坏。

而能帮助我们完成这件事情的工具叫做『损失函数/loss function』,额,其实它还有很多其他的名字,比如说,你说不定在其他的地方听人把它叫做『代价函数/cost function』或者『客观度/objective』,直观一点说,就是我们输出的结果和实际情况偏差很大的时候,损失/代价就会很大。

2.3.1 多类别支持向量机损失/Multiclass Support Vector Machine loss

腻害的大神们定义出了好些损失函数,我们这里首先要介绍一种极其常用的,叫做多类别支持向量机损失(Multiclass SVM loss)。如果要用一句精简的话来描述它,就是它(SVM)希望正确的类别结果获得的得分比不正确的类别,至少要高上一个固定的大小<nobr><span class="math" id="MathJax-Span-3014" style="width: 0.933em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.726em; height: 0px; font-size: 129%;"><span style="position: absolute; clip: rect(1.656em 1000em 2.638em -0.411em); top: -2.478em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3015"><span class="mi" id="MathJax-Span-3016" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.483em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-84">\Delta</script>

我们先解释一下这句话,一会儿再举个例子说明一下。对于训练集中的第i张图片数据<nobr><span class="math" id="MathJax-Span-3017" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.531em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3018"><span class="msubsup" id="MathJax-Span-3019"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3020" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3021" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.87em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-85">x_i</script>,我们的得分函数,在参数W下会计算出一个所有类得分结果<nobr><span class="math" id="MathJax-Span-3022" style="width: 4.109em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.256em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3023"><span class="mi" id="MathJax-Span-3024" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3025" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3026"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3027" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3028" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3029" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3030" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3031" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-86">f(x_i, W)</script>,其中第j类得分我们记作<nobr><span class="math" id="MathJax-Span-3032" style="width: 4.429em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.523em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 3.096em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3033"><span class="mi" id="MathJax-Span-3034" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3035" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3036"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3037" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3038" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3039" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3040" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3041"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3042" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.376em;"><span class="mi" id="MathJax-Span-3043" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.403em; vertical-align: -0.53em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-87">f(x_i, W)_j</script>,该图片的实际类别为<nobr><span class="math" id="MathJax-Span-3044" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.776em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3045"><span class="msubsup" id="MathJax-Span-3046"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3047" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3048" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-88">y_i</script>,则对于第i张样本图片,我们的损失函数是如下定义的:


<nobr><span class="math" id="MathJax-Span-3049" style="width: 23.309em; display: inline-block;"><span style="display: inline-block; position: relative; width: 18.616em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.656em 1000em 3.203em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3050"><span class="msubsup" id="MathJax-Span-3051"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3052" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3053" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3054" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="munderover" id="MathJax-Span-3055" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 2.296em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3056" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="texatom" id="MathJax-Span-3057"><span class="mrow" id="MathJax-Span-3058"><span class="mi" id="MathJax-Span-3059" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3060" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">≠</span><span class="msubsup" id="MathJax-Span-3061"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3062" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3063" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3064" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">max</span><span class="mo" id="MathJax-Span-3065" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3066" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3067" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3068" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3069" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3070"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3071" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3072" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3073" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3074" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3075"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3076" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.376em;"><span class="mi" id="MathJax-Span-3077" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3078" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="mi" id="MathJax-Span-3079" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3080" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3081"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3082" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3083" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3084" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3085" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3086"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3087" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -3.784em; left: 0.376em;"><span class="texatom" id="MathJax-Span-3088"><span class="mrow" id="MathJax-Span-3089"><span class="msubsup" id="MathJax-Span-3090"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3091" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3092" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="mo" id="MathJax-Span-3093" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3094" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">Δ</span><span class="mo" id="MathJax-Span-3095" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.67em; vertical-align: -0.663em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-89">L_i = \sum_{j\neq y_i} \max(0, f(x_i, W)_j - f(x_i, W)_{y_i} + \Delta)</script>

恩,举个例子来说明一下这个公式。
假如我们现在有三个类别,而得分函数计算某张图片的得分为<nobr><span class="math" id="MathJax-Span-3096" style="width: 11.683em; display: inline-block;"><span style="display: inline-block; position: relative; width: 9.336em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3097"><span class="mi" id="MathJax-Span-3098" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3099" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3100"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3101" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3102" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3103" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3104" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3105" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3106" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3107" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3108" style="font-family: STIXGeneral-Regular;">13</span><span class="mo" id="MathJax-Span-3109" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3110" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">−</span><span class="mn" id="MathJax-Span-3111" style="font-family: STIXGeneral-Regular;">7</span><span class="mo" id="MathJax-Span-3112" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3113" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">11</span><span class="mo" id="MathJax-Span-3114" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-90">f(x_i, W) = [13, -7, 11]</script>,而实际的结果是第一类(<nobr><span class="math" id="MathJax-Span-3115" style="width: 3.309em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.616em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.989em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3116"><span class="msubsup" id="MathJax-Span-3117"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3118" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3119" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3120" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3121" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">0</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-91">y_i=0</script>)。假设<nobr><span class="math" id="MathJax-Span-3122" style="width: 3.896em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.096em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3123"><span class="mi" id="MathJax-Span-3124" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3125" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3126" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">10</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-92">\Delta=10</script>(这个参数一会儿会介绍)。上面的公式把错误类别(<nobr><span class="math" id="MathJax-Span-3127" style="width: 3.043em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.403em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.989em -0.584em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3128"><span class="mi" id="MathJax-Span-3129" style="font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3130" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">≠</span><span class="msubsup" id="MathJax-Span-3131" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3132" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3133" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-93">j \neq y_i</script>)都遍历了一遍,求值加和:
<nobr><span class="math" id="MathJax-Span-3134" style="width: 26.509em; display: inline-block;"><span style="display: inline-block; position: relative; width: 21.176em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3135"><span class="msubsup" id="MathJax-Span-3136"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3137" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3138" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3139" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3140" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">max</span><span class="mo" id="MathJax-Span-3141" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3142" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3143" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3144" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">−</span><span class="mn" id="MathJax-Span-3145" style="font-family: STIXGeneral-Regular;">7</span><span class="mo" id="MathJax-Span-3146" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="mn" id="MathJax-Span-3147" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">13</span><span class="mo" id="MathJax-Span-3148" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mn" id="MathJax-Span-3149" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">10</span><span class="mo" id="MathJax-Span-3150" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3151" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mo" id="MathJax-Span-3152" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">max</span><span class="mo" id="MathJax-Span-3153" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3154" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3155" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3156" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">11</span><span class="mo" id="MathJax-Span-3157" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="mn" id="MathJax-Span-3158" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">13</span><span class="mo" id="MathJax-Span-3159" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mn" id="MathJax-Span-3160" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">10</span><span class="mo" id="MathJax-Span-3161" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr>
<script type="math/tex; mode=display" id="MathJax-Element-94">L_i = \max(0, -7 - 13 + 10) + \max(0, 11 - 13 + 10)</script>
仔细看看上述的两项,左边项-10和0中的最大值为0,因此取值是零。其实这里的含义是,实际的结果得分13要比第二类得分-7高出20,超过了我们设定的正确类目和错误类目之间的最小margin <nobr><span class="math" id="MathJax-Span-3162" style="width: 3.896em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.096em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3163"><span class="mi" id="MathJax-Span-3164" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3165" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3166" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">10</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-95">\Delta=10</script>,因此第二类的结果我们认为是满意的,并不带来loss,所以值为0。而第三类得分11,仅比13小2,没有大于<nobr><span class="math" id="MathJax-Span-3167" style="width: 3.896em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.096em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3168"><span class="mi" id="MathJax-Span-3169" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3170" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3171" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">10</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-96">\Delta=10</script>,因此我们认为他是有损失/loss的,而损失就是当前距离2距离设定的最小距离<nobr><span class="math" id="MathJax-Span-3172" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3173"><span class="mi" id="MathJax-Span-3174" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-97">\Delta</script>的差距8。

注意到我们的得分函数是输入像素值的一个线性函数(<nobr><span class="math" id="MathJax-Span-3175" style="width: 7.843em; display: inline-block;"><span style="display: inline-block; position: relative; width: 6.243em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3176"><span class="mi" id="MathJax-Span-3177" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3178" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3179"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3180" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3181" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3182" style="font-family: STIXGeneral-Regular;">;</span><span class="mi" id="MathJax-Span-3183" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3184" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3185" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-3186" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3187"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3188" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3189" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-98">f(x_i; W) = W x_i</script>),因此公式又可以简化为(其中<nobr><span class="math" id="MathJax-Span-3190" style="width: 1.283em; display: inline-block;"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.829em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3191"><span class="msubsup" id="MathJax-Span-3192"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3193" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.696em;"><span class="mi" id="MathJax-Span-3194" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.07em; vertical-align: -0.463em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-99">w_j</script>是W的第j行):


<nobr><span class="math" id="MathJax-Span-3195" style="width: 19.149em; display: inline-block;"><span style="display: inline-block; position: relative; width: 15.309em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.603em 1000em 3.203em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3196"><span class="msubsup" id="MathJax-Span-3197"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3198" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3199" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3200" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="munderover" id="MathJax-Span-3201" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 2.296em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3202" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="texatom" id="MathJax-Span-3203"><span class="mrow" id="MathJax-Span-3204"><span class="mi" id="MathJax-Span-3205" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3206" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">≠</span><span class="msubsup" id="MathJax-Span-3207"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3208" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3209" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3210" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">max</span><span class="mo" id="MathJax-Span-3211" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3212" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3213" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-3214" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3215" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.717em; left: 0.696em;"><span class="mi" id="MathJax-Span-3216" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">T<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.077em; left: 0.696em;"><span class="mi" id="MathJax-Span-3217" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3218"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3219" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3220" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3221" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="msubsup" id="MathJax-Span-3222" style="padding-left: 0.269em;"><span style="display: inline-block; position: relative; width: 1.336em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3223" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.717em; left: 0.696em;"><span class="mi" id="MathJax-Span-3224" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">T<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(3.523em 1000em 4.323em -0.477em); top: -3.837em; left: 0.696em;"><span class="texatom" id="MathJax-Span-3225"><span class="mrow" id="MathJax-Span-3226"><span class="msubsup" id="MathJax-Span-3227"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3228" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3229" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3230"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3231" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3232" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3233" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3234" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">Δ</span><span class="mo" id="MathJax-Span-3235" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.737em; vertical-align: -0.663em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-100">L_i = \sum_{j\neq y_i} \max(0, w_j^T x_i - w_{y_i}^T x_i + \Delta)</script>

我们还需要提一下的是,关于损失函数中max(0,-)的这种形式,我们也把它叫做hinge loss/铰链型损失,有时候你会看到squared hinge loss SVM(也叫L2-SVM),它用到的是<nobr><span class="math" id="MathJax-Span-3236" style="width: 5.603em; display: inline-block;"><span style="display: inline-block; position: relative; width: 4.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.496em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3237"><span class="mi" id="MathJax-Span-3238" style="font-family: STIXGeneral-Italic;">m</span><span class="mi" id="MathJax-Span-3239" style="font-family: STIXGeneral-Italic;">a</span><span class="mi" id="MathJax-Span-3240" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3241" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3242" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3243" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3244" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">−</span><span class="msubsup" id="MathJax-Span-3245"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3246" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.824em; left: 0.376em;"><span class="mn" id="MathJax-Span-3247" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-101">max(0,-)^2</script>,这个损失函数惩罚那些在设定<nobr><span class="math" id="MathJax-Span-3248" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3249"><span class="mi" id="MathJax-Span-3250" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-102">\Delta</script>距离之内的错误类别的惩罚度更高。两种损失函数标准在特定的场景下效果各有优劣,要判定用哪个,还是得借助于交叉验证/cross-validation。

对于损失函数的理解,可以参照下图:
损失函数的理解

2.3.2 正则化

如果大家仔细想想,会发现,使用上述的loss function,会有一个bug。如果参数W能够正确地识别训练集中所有的图片(损失函数为0)。那么我们对M做一些变换,可以得到无数组也能满足loss function=0的参数W’(举个例子,对于<nobr><span class="math" id="MathJax-Span-3251" style="width: 2.883em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.296em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3252"><span class="mi" id="MathJax-Span-3253" style="font-family: STIXGeneral-Italic;">λ</span><span class="mo" id="MathJax-Span-3254" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">&gt;</span><span class="mn" id="MathJax-Span-3255" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-103">\lambda > 1</script>的所有<nobr><span class="math" id="MathJax-Span-3256" style="width: 1.763em; display: inline-block;"><span style="display: inline-block; position: relative; width: 1.389em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3257"><span class="mi" id="MathJax-Span-3258" style="font-family: STIXGeneral-Italic;">λ</span><span class="mi" id="MathJax-Span-3259" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-104">\lambda W</script>,原来的错误类别和正确类别之间的距离已经大于<nobr><span class="math" id="MathJax-Span-3260" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3261"><span class="mi" id="MathJax-Span-3262" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-105">\Delta</script>,现在乘以<nobr><span class="math" id="MathJax-Span-3263" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3264"><span class="mi" id="MathJax-Span-3265" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-106">\lambda</script>,更大了,显然也能满足loss为0)。

于是…我们得想办法把W参数的这种随意性去除掉啊…这就是我们要提到的正则化,我们需要在原来的损失函数上再加上一项正则化项(regularization penalty <nobr><span class="math" id="MathJax-Span-3266" style="width: 2.776em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.189em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3267"><span class="mi" id="MathJax-Span-3268" style="font-family: STIXGeneral-Italic;">R</span><span class="mo" id="MathJax-Span-3269" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3270" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3271" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-107">R(W)</script>),最常见的正则化项是L2范数,它会对幅度很大的特征权重很高的惩罚:


<nobr><span class="math" id="MathJax-Span-3272" style="width: 10.136em; display: inline-block;"><span style="display: inline-block; position: relative; width: 8.109em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 3.096em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3273"><span class="mi" id="MathJax-Span-3274" style="font-family: STIXGeneral-Italic;">R</span><span class="mo" id="MathJax-Span-3275" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3276" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3277" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3278" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="munderover" id="MathJax-Span-3279" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.336em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3280" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3281" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="munderover" id="MathJax-Span-3282" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3283" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3284" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">l<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3285" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.603em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3286" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.771em; left: 0.963em;"><span class="mn" id="MathJax-Span-3287" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.477em); top: -2.131em; left: 0.856em;"><span class="texatom" id="MathJax-Span-3288"><span class="mrow" id="MathJax-Span-3289"><span class="mi" id="MathJax-Span-3290" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3291" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3292" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">l<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.67em; vertical-align: -0.53em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-108">R(W) = \sum_k\sum_l W_{k,l}^2</script>

根据公式可以看到,这个表达式R(W)把所有W的元素的平方项求和了。而且它和数据本身无关,只和特征权重有关系。

我们把两部分组(数据损失/data loss和正则化损失/regularization loss)在一起,得到完整的多类别SVM损失权重,如下:


<nobr><span class="math" id="MathJax-Span-3293" style="width: 14.776em; display: inline-block;"><span style="display: inline-block; position: relative; width: 11.789em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(3.203em 1000em 6.829em -0.477em); top: -4.264em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3294"><span style="display: inline-block; position: relative; width: 11.789em; height: 0px;"><span style="position: absolute; clip: rect(2.936em 1000em 6.083em -0.477em); top: -3.997em; left: 0.003em;"><span class="mi" id="MathJax-Span-3295" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3296" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="munderover" id="MathJax-Span-3297" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 3.469em; height: 0px;"><span style="position: absolute; clip: rect(2.936em 1000em 5.336em -0.477em); top: -3.997em; left: 0.003em;"><span class="munderover" id="MathJax-Span-3298"><span style="display: inline-block; position: relative; width: 3.469em; height: 0px;"><span style="position: absolute; clip: rect(2.936em 1000em 4.536em -0.477em); top: -3.997em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3299"><span class="mfrac" id="MathJax-Span-3300"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.824em; left: 50%; margin-left: -0.157em;"><span class="mn" id="MathJax-Span-3301" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.024em; left: 50%; margin-left: -0.264em;"><span class="mi" id="MathJax-Span-3302" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">N<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 0.643em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span><span class="munderover" id="MathJax-Span-3303" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3304" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3305" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3306" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3307" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3308" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(2.243em 1000em 3.256em -0.477em); top: -1.917em; left: 0.003em;"><span class="mo" id="MathJax-Span-3309" style=""><span style="display: inline-block; position: relative; width: 3.469em; height: 0px;"><span style="position: absolute; font-family: STIXNonUnicode-Regular; top: -3.997em; left: 0.003em;"><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; font-family: STIXNonUnicode-Regular; top: -3.997em; left: 2.563em;"><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; font-family: STIXNonUnicode-Regular; top: -3.997em; left: 0.803em;"><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.477em); top: -0.584em; left: 0.483em;"><span class="mtext" id="MathJax-Span-3310" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">data loss</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3311" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="munderover" id="MathJax-Span-3312" style="padding-left: 0.269em;"><span style="display: inline-block; position: relative; width: 5.229em; height: 0px;"><span style="position: absolute; clip: rect(3.149em 1000em 4.803em -0.477em); top: -3.997em; left: 1.016em;"><span class="munderover" id="MathJax-Span-3313"><span style="display: inline-block; position: relative; width: 3.256em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.269em;"><span class="mrow" id="MathJax-Span-3314"><span class="mi" id="MathJax-Span-3315" style="font-family: STIXGeneral-Italic;">λ</span><span class="mi" id="MathJax-Span-3316" style="font-family: STIXGeneral-Italic;">R</span><span class="mo" id="MathJax-Span-3317" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3318" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3319" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.549em 1000em 2.136em -0.477em); top: -1.331em; left: 0.003em;"><span class="mo" id="MathJax-Span-3320" style=""><span style="font-family: STIXSizeFiveSym;">⏟</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.829em -0.477em); top: -1.064em; left: 0.003em;"><span class="mtext" id="MathJax-Span-3321" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">regularization loss</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.843em 1000em 4.163em -0.477em); top: -1.597em; left: 0.003em;"><span class="mspace" id="MathJax-Span-3322" style="height: 0.003em; vertical-align: 0.003em; width: 0.003em; display: inline-block; overflow: hidden;"></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.269em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 4.203em; vertical-align: -3.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-109">L = \underbrace{ \frac{1}{N} \sum_i L_i }_\text{data loss} + \underbrace{ \lambda R(W) }_\text{regularization loss} \\</script>

也可以展开,得到更具体的完整形式:

<nobr><span class="math" id="MathJax-Span-3323" style="width: 31.469em; display: inline-block;"><span style="display: inline-block; position: relative; width: 25.176em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(3.043em 1000em 6.456em -0.477em); top: -4.104em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3324"><span style="display: inline-block; position: relative; width: 25.176em; height: 0px;"><span style="position: absolute; clip: rect(2.936em 1000em 4.643em -0.477em); top: -3.997em; left: 0.003em;"><span class="mi" id="MathJax-Span-3325" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3326" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mfrac" id="MathJax-Span-3327" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.824em; left: 50%; margin-left: -0.157em;"><span class="mn" id="MathJax-Span-3328" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.024em; left: 50%; margin-left: -0.264em;"><span class="mi" id="MathJax-Span-3329" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">N<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 0.643em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span><span class="munderover" id="MathJax-Span-3330" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3331" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3332" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="munderover" id="MathJax-Span-3333" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 2.296em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3334" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="texatom" id="MathJax-Span-3335"><span class="mrow" id="MathJax-Span-3336"><span class="mi" id="MathJax-Span-3337" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3338" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">≠</span><span class="msubsup" id="MathJax-Span-3339"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3340" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3341" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mrow" id="MathJax-Span-3342" style="padding-left: 0.216em;"><span class="mo" id="MathJax-Span-3343" style="vertical-align: -0.264em;"><span><span style="font-size: 110%; font-family: STIXSizeOneSym;">[</span></span></span><span class="mo" id="MathJax-Span-3344" style="font-family: STIXGeneral-Regular;">max</span><span class="mo" id="MathJax-Span-3345" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3346" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3347" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3348" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3349" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3350"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3351" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3352" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3353" style="font-family: STIXGeneral-Regular;">;</span><span class="mi" id="MathJax-Span-3354" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3355"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3356" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.376em;"><span class="mi" id="MathJax-Span-3357" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3358" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="mi" id="MathJax-Span-3359" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3360" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3361"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3362" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3363" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3364" style="font-family: STIXGeneral-Regular;">;</span><span class="mi" id="MathJax-Span-3365" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="msubsup" id="MathJax-Span-3366"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3367" style="font-family: STIXGeneral-Regular;">)</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -3.784em; left: 0.376em;"><span class="texatom" id="MathJax-Span-3368"><span class="mrow" id="MathJax-Span-3369"><span class="msubsup" id="MathJax-Span-3370"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3371" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3372" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="mo" id="MathJax-Span-3373" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3374" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">Δ</span><span class="mo" id="MathJax-Span-3375" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3376" style="vertical-align: -0.264em;"><span><span style="font-size: 110%; font-family: STIXSizeOneSym;">]</span></span></span></span><span class="mo" id="MathJax-Span-3377" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3378" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">λ</span><span class="munderover" id="MathJax-Span-3379" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.336em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3380" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3381" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(2.989em 1000em 4.536em -0.424em); top: -2.184em; left: 0.003em;"><span class="munderover" id="MathJax-Span-3382" style=""><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3383" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3384" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">l<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3385" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.603em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3386" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.771em; left: 0.963em;"><span class="mn" id="MathJax-Span-3387" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.477em); top: -2.131em; left: 0.856em;"><span class="texatom" id="MathJax-Span-3388"><span class="mrow" id="MathJax-Span-3389"><span class="mi" id="MathJax-Span-3390" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3391" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3392" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">l<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.109em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 4.07em; vertical-align: -2.797em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-110">L = \frac{1}{N} \sum_i \sum_{j\neq y_i} \left[ \max(0, f(x_i; W)_j - f(x_i; W)_{y_i} + \Delta) \right] + \lambda \sum_k\sum_l W_{k,l}^2</script>

其中N是训练样本数,我们给正则化项一个参数<nobr><span class="math" id="MathJax-Span-3393" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3394"><span class="mi" id="MathJax-Span-3395" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-111">\lambda</script>,但是这个参数的设定只有通过实验确定,对…还是得交叉验证/cross-validation。

关于设定这样一个正则化惩罚项为什么是合适的,我们在之后的系列里会提到,这里我们举个例子简单看看,这个项是怎么起到作用的。

假定我们的输入图片像素矩阵是<nobr><span class="math" id="MathJax-Span-3396" style="width: 7.363em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.869em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.531em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3397"><span class="mi" id="MathJax-Span-3398" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3399" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3400" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3401" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-3402" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3403" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3404" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3405" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3406" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3407" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3408" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-112">x = [1,1,1,1]</script>,而现在我们有两组不同的W权重参数中对应的向量<nobr><span class="math" id="MathJax-Span-3409" style="width: 8.163em; display: inline-block;"><span style="display: inline-block; position: relative; width: 6.509em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3410"><span class="msubsup" id="MathJax-Span-3411"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3412" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.696em;"><span class="mn" id="MathJax-Span-3413" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3414" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3415" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3416" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-3417" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3418" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-3419" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3420" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-3421" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3422" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-3423" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-113">w_1 = [1,0,0,0]</script>,<nobr><span class="math" id="MathJax-Span-3424" style="width: 14.403em; display: inline-block;"><span style="display: inline-block; position: relative; width: 11.523em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3425"><span class="msubsup" id="MathJax-Span-3426"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3427" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.696em;"><span class="mn" id="MathJax-Span-3428" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3429" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3430" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3431" style="font-family: STIXGeneral-Regular;">0.25</span><span class="mo" id="MathJax-Span-3432" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3433" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.25</span><span class="mo" id="MathJax-Span-3434" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3435" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.25</span><span class="mo" id="MathJax-Span-3436" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3437" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.25</span><span class="mo" id="MathJax-Span-3438" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-114">w_2=[0.25,0.25,0.25,0.25]</script>。那我们很容易知道<nobr><span class="math" id="MathJax-Span-3439" style="width: 8.163em; display: inline-block;"><span style="display: inline-block; position: relative; width: 6.509em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.603em 1000em 3.043em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3440"><span class="msubsup" id="MathJax-Span-3441"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3442" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.717em; left: 0.696em;"><span class="mi" id="MathJax-Span-3443" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">T<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.077em; left: 0.696em;"><span class="mn" id="MathJax-Span-3444" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mi" id="MathJax-Span-3445" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3446" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="msubsup" id="MathJax-Span-3447" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3448" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.717em; left: 0.696em;"><span class="mi" id="MathJax-Span-3449" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">T<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.077em; left: 0.696em;"><span class="mn" id="MathJax-Span-3450" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mi" id="MathJax-Span-3451" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3452" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3453" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.537em; vertical-align: -0.463em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-115">w_1^Tx = w_2^Tx = 1</script>,所以不加正则项的时候,这俩得到的结果是完全一样的,也就意味着——它们是等价的。但是加了正则项之后,我们发现<nobr><span class="math" id="MathJax-Span-3454" style="width: 1.496em; display: inline-block;"><span style="display: inline-block; position: relative; width: 1.176em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3455"><span class="msubsup" id="MathJax-Span-3456"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3457" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.696em;"><span class="mn" id="MathJax-Span-3458" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.87em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-116">w_2</script>总体的损失函数结果更小(因为4*0.25^2<1),于是我们的系统会选择<nobr><span class="math" id="MathJax-Span-3459" style="width: 1.496em; display: inline-block;"><span style="display: inline-block; position: relative; width: 1.176em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3460"><span class="msubsup" id="MathJax-Span-3461"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3462" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.696em;"><span class="mn" id="MathJax-Span-3463" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.87em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-117">w_2</script>,这也就意味着系统更『喜欢』权重分布均匀的参数,而不是某些特征权重明显高于其他权重(占据绝对主导作用)的参数。

之后的系列里会提到,这样一个平滑的操作,实际上也会提高系统的泛化能力,让其具备更高的通用性,而不至于在训练集上过拟合

另外,我们在讨论过拟合的这个部分的时候,并没有提到b这个参数,这是因为它并不具备像W一样的控制输入特征的某个维度影响力的能力。还需要说一下的是,因为正则项的引入,训练集上的准确度是会有一定程度的下降的,我们永远也不可能让损失达到零了(因为这意味着正则化项为0,也就是W=0)。

下面是简单的计算损失函数(没加上正则化项)的代码,有未向量化向量化两种形式:

def L_i(x, y, W):
  """
  未向量化版本. 
  对给定的单个样本(x,y)计算multiclass svm loss.
  - x: 代表图片像素输入的向量 (例如CIFAR-10中是3073 x 1,因为添加了bias项对应的1到x中)
  - y: 图片对应的类别编号(比如CIFAR-10中是0-9)
  - W: 权重矩阵 (例如CIFAR-10中是10 x 3073)
  """
  delta = 1.0 # 设定delta
  scores = W.dot(x) # 内积计算得分
  correct_class_score = scores[y]
  D = W.shape[0] # 类别数:例如10
  loss_i = 0.0
  for j in xrange(D): # 遍历所有错误的类别
    if j == y:
      # 跳过正确类别
      continue
    # 对第i个样本累加loss
    loss_i += max(0, scores[j] - correct_class_score + delta)
  return loss_i

def L_i_vectorized(x, y, W):
  """ 
  半向量化的版本,速度更快。
  之所以说是半向量化,是因为这个函数外层要用for循环遍历整个训练集 -_-||
  """ 
  delta = 1.0
  scores = W.dot(x)
  # 矩阵一次性计算
  margins = np.maximum(0, scores - scores[y] + delta)

  margins[y] = 0 
  loss_i = np.sum(margins)
  return loss_i

def L(X, y, W):
  """ 
  全向量化实现 :
  - X: 包含所有训练样本中数据(例如CIFAR-10是3073 x 50000)
  - y: 所有的类别结果 (例如50000 x 1的向量)
  - W: 权重矩阵 (例如10 x 3073)
  """
  #待完成...

说到这里,其实我们的损失函数,是提供给我们一个数值型的表示,来衡量我们的预测结果和实际结果的差别。而要提高预测的准确性,要做的事情是,想办法最小化这个loss。

2.4 一些现实的考虑点

2.4.1 设定Delta

我们在计算Multi SVM loss的时候,<nobr><span class="math" id="MathJax-Span-3464" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3465"><span class="mi" id="MathJax-Span-3466" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-118">\Delta</script>是我们提前设定的一个参数。这个值咋设定?莫不是…也需要交叉验证…?其实基本上大部分的场合下我们设定<nobr><span class="math" id="MathJax-Span-3467" style="width: 4.163em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.309em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3468"><span class="mi" id="MathJax-Span-3469" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3470" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3471" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1.0</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-119">\Delta = 1.0</script>都是一个安全的设定。我们看公式中的参数<nobr><span class="math" id="MathJax-Span-3472" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3473"><span class="mi" id="MathJax-Span-3474" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-120">\Delta</script>和<nobr><span class="math" id="MathJax-Span-3475" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3476"><span class="mi" id="MathJax-Span-3477" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-121">\lambda</script>似乎是两个截然不同的参数,实际上他俩做的事情比较类似,都是尽量让模型贴近标准预测结果的时候,在 数据损失/data loss和 正则化损失/regularization loss之间做一个交换和平衡

在损失函数计算公式里,可以看出,权重W的幅度对类别得分有最直接的影响,我们减小W,最后的得分就会减少;我们增大W,最后的得分就增大。从这个角度看,<nobr><span class="math" id="MathJax-Span-3478" style="width: 0.963em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3479"><span class="mi" id="MathJax-Span-3480" style="font-family: STIXGeneral-Regular;">Δ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-122">\Delta</script>这个参数的设定(<nobr><span class="math" id="MathJax-Span-3481" style="width: 3.203em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.563em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3482"><span class="mi" id="MathJax-Span-3483" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3484" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3485" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-123">\Delta=1</script>或者<nobr><span class="math" id="MathJax-Span-3486" style="width: 4.483em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.576em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3487"><span class="mi" id="MathJax-Span-3488" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-3489" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-3490" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">100</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-124">\Delta=100</script>),其实无法限定W的伸缩。而真正可以做到这点的是正则化项,<nobr><span class="math" id="MathJax-Span-3491" style="width: 0.623em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.468em; height: 0px; font-size: 129%;"><span style="position: absolute; clip: rect(1.656em 1000em 2.638em -0.463em); top: -2.478em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3492"><span class="mi" id="MathJax-Span-3493" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.483em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-125">\lambda</script>的大小,实际上控制着权重可以增长和膨胀的空间

2.4.2 关于二元/Binary支持向量机

如果大家之前接触过Binary SVM,我们知道它的公式如下:


<nobr><span class="math" id="MathJax-Span-3494" style="width: 17.816em; display: inline-block;"><span style="display: inline-block; position: relative; width: 14.243em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.603em 1000em 2.989em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3495"><span class="msubsup" id="MathJax-Span-3496"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3497" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3498" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3499" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-3500" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3501" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">max</span><span class="mo" id="MathJax-Span-3502" style="font-family: STIXGeneral-Regular;">(</span><span class="mn" id="MathJax-Span-3503" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3504" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3505" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3506" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">−</span><span class="msubsup" id="MathJax-Span-3507" style="padding-left: 0.269em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3508" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3509" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3510"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3511" style="font-family: STIXGeneral-Italic;">w</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.696em;"><span class="mi" id="MathJax-Span-3512" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">T<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3513"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3514" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3515" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3516" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3517" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3518" style="font-family: STIXGeneral-Italic; padding-left: 0.269em;">R</span><span class="mo" id="MathJax-Span-3519" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3520" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3521" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-126">L_i = C \max(0, 1 - y_i w^Tx_i) + R(W)</script>

我们可以理解为类别<nobr><span class="math" id="MathJax-Span-3522" style="width: 5.336em; display: inline-block;"><span style="display: inline-block; position: relative; width: 4.269em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.989em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3523"><span class="msubsup" id="MathJax-Span-3524"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3525" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3526" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3527" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">∈</span><span class="texatom" id="MathJax-Span-3528" style="padding-left: 0.323em;"><span class="mrow" id="MathJax-Span-3529"><span class="mo" id="MathJax-Span-3530" style="font-family: STIXGeneral-Regular;">−</span><span class="mn" id="MathJax-Span-3531" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-3532" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3533" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-127">y_i \in { -1,1 }</script>,它是我们的多类别识别的一个特殊情况,而这里的C和<nobr><span class="math" id="MathJax-Span-3534" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3535"><span class="mi" id="MathJax-Span-3536" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-128">\lambda</script>是一样的作用,只不过他们的大小对结果的影响是相反的,也就是<nobr><span class="math" id="MathJax-Span-3537" style="width: 3.416em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.723em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.496em 1000em 3.149em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3538"><span class="mi" id="MathJax-Span-3539" style="font-family: STIXGeneral-Italic;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3540" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">∝</span><span class="mfrac" id="MathJax-Span-3541" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.424em); top: -2.824em; left: 50%; margin-left: -0.157em;"><span class="mn" id="MathJax-Span-3542" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.763em 1000em 2.563em -0.477em); top: -2.024em; left: 50%; margin-left: -0.157em;"><span class="mi" id="MathJax-Span-3543" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">λ</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 0.483em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.737em; vertical-align: -0.597em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-129">C \propto \frac{1}{\lambda}</script>

2.4.3 关于非线性的SVM

如果对机器学习有了解,你可能会了解很多其他关于SVM的术语:kernel,dual,SMO算法等等。在这个系列里面我们只讨论最基本的线性形式。当然,其实从本质上来说,这些方法都是类似的。

2.5 Softmax分类器

话说其实有两种特别常见的分类器,前面提的SVM是其中的一种,而另外一种就是Softmax分类器,它有着截然不同的损失函数。如果你听说过『逻辑回归二分类器』,那么Softmax分类器是它泛化到多分类的情形。不像SVM这种直接给类目打分<nobr><span class="math" id="MathJax-Span-3544" style="width: 4.109em; display: inline-block;"><span style="display: inline-block; position: relative; width: 3.256em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3545"><span class="mi" id="MathJax-Span-3546" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span class="mo" id="MathJax-Span-3547" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3548"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3549" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3550" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3551" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3552" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3553" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-130">f(x_i,W)</script>并作为输出,Softmax分类器从新的角度做了不一样的处理,我们依旧需要将输入的像素向量映射为得分f(x_i; W) = W x_i,只不过我们还需要将得分映射到概率域,我们也不再使用hinge loss了,而是使用互熵损失/cross-entropy loss,形式如下:


<nobr><span class="math" id="MathJax-Span-3554" style="width: 21.549em; display: inline-block;"><span style="display: inline-block; position: relative; width: 17.229em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(3.576em 1000em 8.163em -0.477em); top: -5.224em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3555"><span style="display: inline-block; position: relative; width: 17.229em; height: 0px;"><span style="position: absolute; clip: rect(2.349em 1000em 5.123em -0.477em); top: -3.997em; left: 0.003em;"><span class="msubsup" id="MathJax-Span-3556"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3557" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3558" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3559" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3560" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">−</span><span class="mi" id="MathJax-Span-3561" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">log</span><span class="mrow" id="MathJax-Span-3562" style="padding-left: 0.216em;"><span class="mo" id="MathJax-Span-3563" style="vertical-align: -0.584em;"><span style="font-family: STIXSizeThreeSym;">(</span></span><span class="mfrac" id="MathJax-Span-3564"><span style="display: inline-block; position: relative; width: 2.083em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(3.149em 1000em 4.163em -0.477em); top: -4.424em; left: 50%; margin-left: -0.584em;"><span class="msubsup" id="MathJax-Span-3565"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3566" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3567"><span class="mrow" id="MathJax-Span-3568"><span class="msubsup" id="MathJax-Span-3569"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3570" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -3.891em; left: 0.163em;"><span class="texatom" id="MathJax-Span-3571"><span class="mrow" id="MathJax-Span-3572"><span class="msubsup" id="MathJax-Span-3573"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3574" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3575" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.149em 1000em 4.483em -0.424em); top: -3.411em; left: 50%; margin-left: -0.957em;"><span class="mrow" id="MathJax-Span-3576"><span class="munderover" id="MathJax-Span-3577"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3578" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3579" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3580" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3581" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.317em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3582"><span class="mrow" id="MathJax-Span-3583"><span class="msubsup" id="MathJax-Span-3584"><span style="display: inline-block; position: relative; width: 0.376em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3585" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.163em;"><span class="mi" id="MathJax-Span-3586" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 2.083em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span><span class="mo" id="MathJax-Span-3587" style="vertical-align: -0.584em;"><span style="font-family: STIXSizeThreeSym;">)</span></span></span><span class="mspace" id="MathJax-Span-3588" style="height: 0.003em; vertical-align: 0.003em; width: 2.563em; display: inline-block; overflow: hidden;"></span><span class="mtext" id="MathJax-Span-3589" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">or equivalently</span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(2.989em 1000em 4.589em -0.477em); top: -1.651em; left: 0.003em;"><span class="mspace" id="MathJax-Span-3590" style="height: 0.003em; vertical-align: 0.003em; width: 2.563em; display: inline-block; overflow: hidden;"></span><span class="msubsup" id="MathJax-Span-3591"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3592" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3593" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3594" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3595" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">−</span><span class="msubsup" id="MathJax-Span-3596"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3597" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -3.731em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3598"><span class="mrow" id="MathJax-Span-3599"><span class="msubsup" id="MathJax-Span-3600"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3601" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3602" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="mo" id="MathJax-Span-3603" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="mi" id="MathJax-Span-3604" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">log</span><span class="mo" id="MathJax-Span-3605"></span><span class="munderover" id="MathJax-Span-3606" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3607" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3608" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3609" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3610" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3611"><span class="mrow" id="MathJax-Span-3612"><span class="msubsup" id="MathJax-Span-3613"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3614" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.109em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.216em;"><span class="mi" id="MathJax-Span-3615" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 5.229em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 5.47em; vertical-align: -3.53em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-131">L_i = -\log\left(\frac{e^{f_{y_i}}}{ \sum_j e^{f_j} }\right) \hspace{0.5in} \text{or equivalently} \hspace{0.5in} L_i = -f_{y_i} + \log\sum_j e^{f_j}</script>

我们使用<nobr><span class="math" id="MathJax-Span-3616" style="width: 0.909em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.696em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.496em 1000em 2.883em -0.637em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3617"><span class="msubsup" id="MathJax-Span-3618"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3619" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.323em;"><span class="mi" id="MathJax-Span-3620" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.53em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-132">f_j</script>来代表得分向量<nobr><span class="math" id="MathJax-Span-3621" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3622"><span class="mi" id="MathJax-Span-3623" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-133">f</script>的第j个元素值。和前面提到的一样,总体的损失/loss也是<nobr><span class="math" id="MathJax-Span-3624" style="width: 1.176em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.909em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 2.669em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3625"><span class="msubsup" id="MathJax-Span-3626"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3627" style="font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.589em;"><span class="mi" id="MathJax-Span-3628" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.137em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-134">L_i</script>遍历训练集之后的均值,再加上正则化项<nobr><span class="math" id="MathJax-Span-3629" style="width: 2.776em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.189em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3630"><span class="mi" id="MathJax-Span-3631" style="font-family: STIXGeneral-Italic;">R</span><span class="mo" id="MathJax-Span-3632" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3633" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3634" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-135">R(W)</script>,而函数<nobr><span class="math" id="MathJax-Span-3635" style="width: 7.096em; display: inline-block;"><span style="display: inline-block; position: relative; width: 5.656em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.443em 1000em 3.363em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3636"><span class="msubsup" id="MathJax-Span-3637"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3638" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.323em;"><span class="mi" id="MathJax-Span-3639" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3640" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3641" style="font-family: STIXGeneral-Italic;">z</span><span class="mo" id="MathJax-Span-3642" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3643" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mfrac" id="MathJax-Span-3644" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 2.403em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(3.309em 1000em 4.163em -0.477em); top: -4.424em; left: 50%; margin-left: -0.424em;"><span class="msubsup" id="MathJax-Span-3645"><span style="display: inline-block; position: relative; width: 0.909em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3646" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.317em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3647"><span class="mrow" id="MathJax-Span-3648"><span class="msubsup" id="MathJax-Span-3649"><span style="display: inline-block; position: relative; width: 0.536em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.563em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3650" style="font-size: 50%; font-family: STIXGeneral-Italic;">z</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.269em;"><span class="mi" id="MathJax-Span-3651" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.309em 1000em 4.376em -0.424em); top: -3.571em; left: 50%; margin-left: -1.117em;"><span class="mrow" id="MathJax-Span-3652"><span class="munderover" id="MathJax-Span-3653"><span style="display: inline-block; position: relative; width: 1.069em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3654" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3655" style="font-size: 50%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3656" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3657" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.264em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3658"><span class="mrow" id="MathJax-Span-3659"><span class="msubsup" id="MathJax-Span-3660"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.563em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3661" style="font-size: 50%; font-family: STIXGeneral-Italic;">z</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.269em;"><span class="mi" id="MathJax-Span-3662" style="font-size: 50%; font-family: STIXGeneral-Italic;">k<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 2.403em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2.203em; vertical-align: -0.863em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-136">f_j(z) = \frac{e^{z_j}}{\sum_k e^{z_k}}</script>被称之为softmax函数:它的输入值是一个实数向量<nobr><span class="math" id="MathJax-Span-3663" style="width: 0.536em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.429em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.976em 1000em 2.829em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3664"><span class="mi" id="MathJax-Span-3665" style="font-family: STIXGeneral-Italic;">z</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.803em; vertical-align: -0.197em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-137">z</script>,然后在指数域做了一个归一化(以保证之和为1)映射为概率。

2.5.1 信息论角度的理解

对于两个概率分布<nobr><span class="math" id="MathJax-Span-3666" style="width: 0.696em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.536em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.531em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3667"><span class="mi" id="MathJax-Span-3668" style="font-family: STIXGeneral-Italic;">p</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.937em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-138">p</script>(“真实的概率分布”)和估测的概率分布<nobr><span class="math" id="MathJax-Span-3669" style="width: 0.696em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.536em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3670"><span class="mi" id="MathJax-Span-3671" style="font-family: STIXGeneral-Italic;">q</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.937em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-139">q</script>(估测的属于每个类的概率),它们的互熵定义为如下形式:


<nobr><span class="math" id="MathJax-Span-3672" style="width: 14.563em; display: inline-block;"><span style="display: inline-block; position: relative; width: 11.629em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.656em 1000em 3.043em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3673"><span class="mi" id="MathJax-Span-3674" style="font-family: STIXGeneral-Italic;">H<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3675" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3676" style="font-family: STIXGeneral-Italic;">p</span><span class="mo" id="MathJax-Span-3677" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3678" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">q</span><span class="mo" id="MathJax-Span-3679" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3680" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3681" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">−</span><span class="munderover" id="MathJax-Span-3682" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.336em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3683" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3684" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mi" id="MathJax-Span-3685" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">p</span><span class="mo" id="MathJax-Span-3686" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3687" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3688" style="font-family: STIXGeneral-Regular;">)</span><span class="mi" id="MathJax-Span-3689" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">log</span><span class="mo" id="MathJax-Span-3690"></span><span class="mi" id="MathJax-Span-3691" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">q</span><span class="mo" id="MathJax-Span-3692" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3693" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3694" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.463em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-140"> H(p,q) = - \sum_x p(x) \log q(x) </script>

而Softmax分类器要做的事情,就是要最小化预测类别的概率分布(之前看到了,是<nobr><span class="math" id="MathJax-Span-3695" style="width: 7.736em; display: inline-block;"><span style="display: inline-block; position: relative; width: 6.189em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.496em 1000em 3.149em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3696"><span class="mi" id="MathJax-Span-3697" style="font-family: STIXGeneral-Italic;">q</span><span class="mo" id="MathJax-Span-3698" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="msubsup" id="MathJax-Span-3699" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 1.389em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3700" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -4.424em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3701"><span class="mrow" id="MathJax-Span-3702"><span class="msubsup" id="MathJax-Span-3703"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3704" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.109em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -3.837em; left: 0.216em;"><span class="texatom" id="MathJax-Span-3705"><span class="mrow" id="MathJax-Span-3706"><span class="msubsup" id="MathJax-Span-3707"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3708" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3709" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="texatom" id="MathJax-Span-3710"><span class="mrow" id="MathJax-Span-3711"><span class="mo" id="MathJax-Span-3712" style="font-family: STIXGeneral-Regular;">/</span></span></span><span class="munderover" id="MathJax-Span-3713" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3714" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3715" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3716" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3717" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3718"><span class="mrow" id="MathJax-Span-3719"><span class="msubsup" id="MathJax-Span-3720"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3721" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.109em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.216em;"><span class="mi" id="MathJax-Span-3722" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.87em; vertical-align: -0.597em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-141">q = e^{f_{y_i}} / \sum_j e^{f_j}</script>)与『实际类别概率分布』(<nobr><span class="math" id="MathJax-Span-3723" style="width: 9.816em; display: inline-block;"><span style="display: inline-block; position: relative; width: 7.843em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.531em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3724"><span class="mi" id="MathJax-Span-3725" style="font-family: STIXGeneral-Italic;">p</span><span class="mo" id="MathJax-Span-3726" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3727" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3728" style="font-family: STIXGeneral-Regular;">0</span><span class="mo" id="MathJax-Span-3729" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3730" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">…</span><span class="mn" id="MathJax-Span-3731" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3732" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3733" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">…</span><span class="mo" id="MathJax-Span-3734" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">,</span><span class="mn" id="MathJax-Span-3735" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-3736" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-142">p = [0, \ldots 1, \ldots, 0]</script>,只在结果类目上是1,其余都为0)两个概率分布的互熵

另外,因为互熵可以用熵加上KL距离/Kullback-Leibler Divergence(也叫相对熵/Relative Entropy)来表示,即<nobr><span class="math" id="MathJax-Span-3737" style="width: 14.029em; display: inline-block;"><span style="display: inline-block; position: relative; width: 11.203em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3738"><span class="mi" id="MathJax-Span-3739" style="font-family: STIXGeneral-Italic;">H<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3740" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3741" style="font-family: STIXGeneral-Italic;">p</span><span class="mo" id="MathJax-Span-3742" style="font-family: STIXGeneral-Regular;">,</span><span class="mi" id="MathJax-Span-3743" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">q</span><span class="mo" id="MathJax-Span-3744" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3745" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mi" id="MathJax-Span-3746" style="font-family: STIXGeneral-Italic; padding-left: 0.323em;">H<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3747" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3748" style="font-family: STIXGeneral-Italic;">p</span><span class="mo" id="MathJax-Span-3749" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3750" style="font-family: STIXGeneral-Regular; padding-left: 0.269em;">+</span><span class="msubsup" id="MathJax-Span-3751" style="padding-left: 0.269em;"><span style="display: inline-block; position: relative; width: 1.709em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3752" style="font-family: STIXGeneral-Italic;">D</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.749em;"><span class="texatom" id="MathJax-Span-3753"><span class="mrow" id="MathJax-Span-3754"><span class="mi" id="MathJax-Span-3755" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">K<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mi" id="MathJax-Span-3756" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">L<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3757" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3758" style="font-family: STIXGeneral-Italic;">p</span><span class="texatom" id="MathJax-Span-3759"><span class="mrow" id="MathJax-Span-3760"><span class="mo" id="MathJax-Span-3761" style="font-family: STIXGeneral-Regular;">|</span></span></span><span class="texatom" id="MathJax-Span-3762"><span class="mrow" id="MathJax-Span-3763"><span class="mo" id="MathJax-Span-3764" style="font-family: STIXGeneral-Regular;">|</span></span></span><span class="mi" id="MathJax-Span-3765" style="font-family: STIXGeneral-Italic;">q</span><span class="mo" id="MathJax-Span-3766" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-143">H(p,q) = H(p) + D_{KL}(p||q)</script>,而p的熵为0(这是一个确定事件,无随机性),所以互熵最小化,等同于最小化两个分布之间的KL距离。换句话说,互熵想要从给定的分布q上预测结果分布p

2.5.2 概率角度的理解

我们再来看看以下表达式


<nobr><span class="math" id="MathJax-Span-3767" style="width: 10.883em; display: inline-block;"><span style="display: inline-block; position: relative; width: 8.696em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.283em 1000em 3.629em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3768"><span class="mi" id="MathJax-Span-3769" style="font-family: STIXGeneral-Italic;">P</span><span class="mo" id="MathJax-Span-3770" style="font-family: STIXGeneral-Regular;">(</span><span class="msubsup" id="MathJax-Span-3771"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3772" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3773" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3774" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">∣</span><span class="msubsup" id="MathJax-Span-3775" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3776" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3777" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3778" style="font-family: STIXGeneral-Regular;">;</span><span class="mi" id="MathJax-Span-3779" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3780" style="font-family: STIXGeneral-Regular;">)</span><span class="mo" id="MathJax-Span-3781" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mfrac" id="MathJax-Span-3782" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 2.083em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(3.149em 1000em 4.163em -0.477em); top: -4.424em; left: 50%; margin-left: -0.584em;"><span class="msubsup" id="MathJax-Span-3783"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3784" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3785"><span class="mrow" id="MathJax-Span-3786"><span class="msubsup" id="MathJax-Span-3787"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3788" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -3.891em; left: 0.163em;"><span class="texatom" id="MathJax-Span-3789"><span class="mrow" id="MathJax-Span-3790"><span class="msubsup" id="MathJax-Span-3791"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3792" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3793" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.149em 1000em 4.483em -0.424em); top: -3.411em; left: 50%; margin-left: -0.957em;"><span class="mrow" id="MathJax-Span-3794"><span class="munderover" id="MathJax-Span-3795"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3796" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3797" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3798" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3799" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.317em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3800"><span class="mrow" id="MathJax-Span-3801"><span class="msubsup" id="MathJax-Span-3802"><span style="display: inline-block; position: relative; width: 0.376em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3803" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.163em;"><span class="mi" id="MathJax-Span-3804" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 2.083em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2.67em; vertical-align: -1.197em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-144">P(y_i \mid x_i; W) = \frac{e^{f_{y_i}}}{\sum_j e^{f_j} }</script>

其实可以看做给定图片数据<nobr><span class="math" id="MathJax-Span-3805" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.669em -0.531em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3806"><span class="msubsup" id="MathJax-Span-3807"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.531em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3808" style="font-family: STIXGeneral-Italic;">x<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 0.483em;"><span class="mi" id="MathJax-Span-3809" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 0.87em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-145">x_i</script>和类别<nobr><span class="math" id="MathJax-Span-3810" style="width: 1.016em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.803em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.763em 1000em 2.776em -0.477em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3811"><span class="msubsup" id="MathJax-Span-3812"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.936em -0.477em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3813" style="font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.483em;"><span class="mi" id="MathJax-Span-3814" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.397em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-146">y_i</script>以及参数W之后的归一化概率。在概率的角度理解,我们在做的事情,就是最小化错误类别的负log似然概率,也可以理解为进行最大似然估计/Maximum Likelihood Estimation (MLE)。这个理解角度还有一个好处,这个时候我们的正则化项<nobr><span class="math" id="MathJax-Span-3815" style="width: 2.776em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.189em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.883em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3816"><span class="mi" id="MathJax-Span-3817" style="font-family: STIXGeneral-Italic;">R</span><span class="mo" id="MathJax-Span-3818" style="font-family: STIXGeneral-Regular;">(</span><span class="mi" id="MathJax-Span-3819" style="font-family: STIXGeneral-Italic;">W<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span class="mo" id="MathJax-Span-3820" style="font-family: STIXGeneral-Regular;">)</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.203em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-147">R(W)</script>有很好的解释性,可以理解为整个损失函数在权重矩阵W上的一个高斯先验,所以其实这时候是在做一个最大后验估计/Maximum a posteriori (MAP)。

2.5.3 实际工程上的注意点:数据稳定性

在我们要写代码工程实现Softmax函数的时候,计算的中间项<nobr><span class="math" id="MathJax-Span-3821" style="width: 1.816em; display: inline-block;"><span style="display: inline-block; position: relative; width: 1.443em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.283em 1000em 2.509em -0.424em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3822"><span class="msubsup" id="MathJax-Span-3823"><span style="display: inline-block; position: relative; width: 1.389em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3824" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -4.424em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3825"><span class="mrow" id="MathJax-Span-3826"><span class="msubsup" id="MathJax-Span-3827"><span style="display: inline-block; position: relative; width: 0.856em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3828" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.109em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -3.837em; left: 0.216em;"><span class="texatom" id="MathJax-Span-3829"><span class="mrow" id="MathJax-Span-3830"><span class="msubsup" id="MathJax-Span-3831"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3832" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3833" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-148">e^{f_{y_i}}</script>和<nobr><span class="math" id="MathJax-Span-3834" style="width: 3.149em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.509em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.336em 1000em 2.936em -0.424em); top: -2.344em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3835"><span class="munderover" id="MathJax-Span-3836"><span style="display: inline-block; position: relative; width: 1.229em; height: 0px;"><span style="position: absolute; clip: rect(1.656em 1000em 2.989em -0.424em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3837" style="font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.077em; left: 0.963em;"><span class="mi" id="MathJax-Span-3838" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3839" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.016em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3840" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3841"><span class="mrow" id="MathJax-Span-3842"><span class="msubsup" id="MathJax-Span-3843"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px;"><span style="position: absolute; clip: rect(1.763em 1000em 2.723em -0.584em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3844" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.109em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.216em;"><span class="mi" id="MathJax-Span-3845" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.737em; vertical-align: -0.597em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-149">\sum_j e^{f_j}</script>因为指数运算可能变得非常大,除法的结果非常不稳定,所以这里需要一个小技巧。注意到,如果我们在分子分母前都乘以常数C,然后整理到指数上,我们会得到下面的公式:


<nobr><span class="math" id="MathJax-Span-3846" style="width: 15.096em; display: inline-block;"><span style="display: inline-block; position: relative; width: 12.056em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.283em 1000em 3.629em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3847"><span class="mfrac" id="MathJax-Span-3848"><span style="display: inline-block; position: relative; width: 2.083em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(3.149em 1000em 4.163em -0.477em); top: -4.424em; left: 50%; margin-left: -0.584em;"><span class="msubsup" id="MathJax-Span-3849"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3850" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3851"><span class="mrow" id="MathJax-Span-3852"><span class="msubsup" id="MathJax-Span-3853"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3854" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -3.891em; left: 0.163em;"><span class="texatom" id="MathJax-Span-3855"><span class="mrow" id="MathJax-Span-3856"><span class="msubsup" id="MathJax-Span-3857"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3858" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3859" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.149em 1000em 4.483em -0.424em); top: -3.411em; left: 50%; margin-left: -0.957em;"><span class="mrow" id="MathJax-Span-3860"><span class="munderover" id="MathJax-Span-3861"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3862" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3863" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3864" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3865" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.317em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3866"><span class="mrow" id="MathJax-Span-3867"><span class="msubsup" id="MathJax-Span-3868"><span style="display: inline-block; position: relative; width: 0.376em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3869" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.163em;"><span class="mi" id="MathJax-Span-3870" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 2.083em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span><span class="mo" id="MathJax-Span-3871" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mfrac" id="MathJax-Span-3872" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 2.723em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(1.549em 1000em 2.563em -0.424em); top: -2.824em; left: 50%; margin-left: -0.797em;"><span class="mrow" id="MathJax-Span-3873"><span class="mi" id="MathJax-Span-3874" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="msubsup" id="MathJax-Span-3875"><span style="display: inline-block; position: relative; width: 1.123em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3876" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.371em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3877"><span class="mrow" id="MathJax-Span-3878"><span class="msubsup" id="MathJax-Span-3879"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3880" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -3.891em; left: 0.163em;"><span class="texatom" id="MathJax-Span-3881"><span class="mrow" id="MathJax-Span-3882"><span class="msubsup" id="MathJax-Span-3883"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3884" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3885" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(1.549em 1000em 2.883em -0.424em); top: -1.811em; left: 50%; margin-left: -1.277em;"><span class="mrow" id="MathJax-Span-3886"><span class="mi" id="MathJax-Span-3887" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="munderover" id="MathJax-Span-3888" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3889" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3890" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3891" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3892" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -4.317em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3893"><span class="mrow" id="MathJax-Span-3894"><span class="msubsup" id="MathJax-Span-3895"><span style="display: inline-block; position: relative; width: 0.376em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3896" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.163em;"><span class="mi" id="MathJax-Span-3897" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 2.723em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span><span class="mo" id="MathJax-Span-3898" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mfrac" id="MathJax-Span-3899" style="padding-left: 0.323em;"><span style="display: inline-block; position: relative; width: 3.949em; height: 0px; margin-right: 0.109em; margin-left: 0.109em;"><span style="position: absolute; clip: rect(3.149em 1000em 4.163em -0.477em); top: -4.424em; left: 50%; margin-left: -1.491em;"><span class="msubsup" id="MathJax-Span-3900"><span style="display: inline-block; position: relative; width: 3.043em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3901" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.717em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3902"><span class="mrow" id="MathJax-Span-3903"><span class="msubsup" id="MathJax-Span-3904"><span style="display: inline-block; position: relative; width: 0.749em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3905" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -3.891em; left: 0.163em;"><span class="texatom" id="MathJax-Span-3906"><span class="mrow" id="MathJax-Span-3907"><span class="msubsup" id="MathJax-Span-3908"><span style="display: inline-block; position: relative; width: 0.589em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.616em -0.477em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3909" style="font-size: 50%; font-family: STIXGeneral-Italic;">y</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.323em;"><span class="mi" id="MathJax-Span-3910" style="font-size: 50%; font-family: STIXGeneral-Italic;">i</span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span></span></span><span class="mo" id="MathJax-Span-3911" style="font-size: 50%; font-family: STIXGeneral-Regular;">+</span><span class="mi" id="MathJax-Span-3912" style="font-size: 50%; font-family: STIXGeneral-Regular;">log</span><span class="mo" id="MathJax-Span-3913" style="font-size: 50%;"></span><span class="mi" id="MathJax-Span-3914" style="font-size: 50%; font-family: STIXGeneral-Italic; padding-left: 0.376em;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(3.149em 1000em 4.483em -0.424em); top: -3.411em; left: 50%; margin-left: -1.917em;"><span class="mrow" id="MathJax-Span-3915"><span class="munderover" id="MathJax-Span-3916"><span style="display: inline-block; position: relative; width: 0.963em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.397em; left: 0.003em;"><span class="mo" id="MathJax-Span-3917" style="font-size: 70.7%; font-family: STIXGeneral-Regular; vertical-align: 0.003em;">∑</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.696em;"><span class="mi" id="MathJax-Span-3918" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3919" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 2.669em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.563em -0.477em); top: -2.397em; left: 0.003em;"><span class="mi" id="MathJax-Span-3920" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span><span style="position: absolute; top: -2.664em; left: 0.323em;"><span class="texatom" id="MathJax-Span-3921"><span class="mrow" id="MathJax-Span-3922"><span class="msubsup" id="MathJax-Span-3923"><span style="display: inline-block; position: relative; width: 0.376em; height: 0px;"><span style="position: absolute; clip: rect(1.869em 1000em 2.616em -0.531em); top: -2.344em; left: 0.003em;"><span class="mi" id="MathJax-Span-3924" style="font-size: 50%; font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.056em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span><span style="position: absolute; top: -2.184em; left: 0.163em;"><span class="mi" id="MathJax-Span-3925" style="font-size: 50%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span><span class="mo" id="MathJax-Span-3926" style="font-size: 50%; font-family: STIXGeneral-Regular;">+</span><span class="mi" id="MathJax-Span-3927" style="font-size: 50%; font-family: STIXGeneral-Regular;">log</span><span class="mo" id="MathJax-Span-3928" style="font-size: 50%;"></span><span class="mi" id="MathJax-Span-3929" style="font-size: 50%; font-family: STIXGeneral-Italic; padding-left: 0.376em;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.349em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 4.003em;"></span></span><span style="position: absolute; clip: rect(0.856em 1000em 1.229em -0.477em); top: -1.277em; left: 0.003em;"><span style="border-left-width: 3.949em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.25px; vertical-align: 0.003em;"></span><span style="display: inline-block; width: 0px; height: 1.069em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 2.67em; vertical-align: -1.197em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-150">\frac{e^{f_{y_i}}}{\sum_j e^{f_j}} = \frac{Ce^{f_{y_i}}}{C\sum_j e^{f_j}} = \frac{e^{f_{y_i} + \log C}}{\sum_j e^{f_j + \log C}}</script>

C的取值由我们而定,不影响最后的结果,但是对于实际计算过程中的稳定性有很大的帮助。一个最常见的C取值为<nobr><span class="math" id="MathJax-Span-3930" style="width: 9.176em; display: inline-block;"><span style="display: inline-block; position: relative; width: 7.309em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 3.096em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3931"><span class="mi" id="MathJax-Span-3932" style="font-family: STIXGeneral-Regular;">log</span><span class="mo" id="MathJax-Span-3933"></span><span class="mi" id="MathJax-Span-3934" style="font-family: STIXGeneral-Italic; padding-left: 0.216em;">C<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span class="mo" id="MathJax-Span-3935" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3936" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">−</span><span class="munderover" id="MathJax-Span-3937" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 2.029em; height: 0px;"><span style="position: absolute; clip: rect(1.923em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mo" id="MathJax-Span-3938" style="font-family: STIXGeneral-Regular;">max</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.237em; left: 1.763em;"><span class="mi" id="MathJax-Span-3939" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="msubsup" id="MathJax-Span-3940" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.643em; height: 0px;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3941" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.131em; left: 0.323em;"><span class="mi" id="MathJax-Span-3942" style="font-size: 70.7%; font-family: STIXGeneral-Italic;">j<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.003em;"></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.47em; vertical-align: -0.53em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-151">\log C = -\max_j f_j</script>。这表明我们应该平移向量<nobr><span class="math" id="MathJax-Span-3943" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.936em -0.637em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3944"><span class="mi" id="MathJax-Span-3945" style="font-family: STIXGeneral-Italic;">f<span style="display: inline-block; overflow: hidden; height: 1px; width: 0.163em;"></span></span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.27em; vertical-align: -0.33em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-152">f</script>中的值使得最大值为0,以下的代码是它的一个实现:

f = np.array([123, 456, 789]) # 3个类别的预测示例
p = np.exp(f) / np.sum(np.exp(f)) # 直接运算,数值稳定性不太好

# 我们先对数据做一个平移,所以输入的最大值为0:
f -= np.max(f) # f 变成 [-666, -333, 0]
p = np.exp(f) / np.sum(np.exp(f)) # 结果正确,同时解决数值不稳定问题

2.5.4 关于softmax这个名字的一点说明

准确地说,SVM分类器使用hinge loss(有时候也叫max-margin loss)。而Softmax分类器使用互熵损失/cross-entropy loss。Softmax分类器从softmax函数(恩,其实做的事情就是把一列原始的类别得分归一化到一列和为1的正数表示概率)得到,softmax函数使得互熵损失可以用起来。而实际上,我们并没有softmax loss这个概念,因为softmax实质上就是一个函数,有时候我们图方便,就随口称呼softmax loss。

2.6 SVM 与 Softmax

这个比较很有意思,就像在用到分类算法的时候,就会想SVM还是logistic regression呢一样。
我们先用一张图来表示从输入端到分类结果,SVM和Softmax都做了啥:

SVM与SoftMax

区别就是拿到原始像素数据映射得到的得分之后的处理,而正因为处理方式不同,我们定义不同的损失函数,有不同的优化方法。

2.6.1 另外的差别

  • SVM下,我们能完成类别的判定,但是实际上我们得到的类别得分,大小顺序表示着所属类别的排序,但是得分的绝对值大小并没有特别明显的物理含义
  • Softmax分类器中,结果的绝对值大小表征属于该类别的概率

举个例子说,SVM可能拿到对应 猫/狗/船 的得分[12.5, 0.6, -23.0],同一个问题,Softmax分类器拿到[0.9, 0.09, 0.01]。这样在SVM结果下我们只知道『猫』是正确答案,而在Softmax分类器的结果中,我们可以知道属于每个类别的概率。

但是,Softmax中拿到的概率,其实和正则化参数<nobr><span class="math" id="MathJax-Span-3946" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3947"><span class="mi" id="MathJax-Span-3948" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-153">\lambda</script>有很大的关系,因为<nobr><span class="math" id="MathJax-Span-3949" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3950"><span class="mi" id="MathJax-Span-3951" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-154">\lambda</script>实际上在控制着W的伸缩程度,所以也控制着最后得分的scale,这会直接影响最后概率向量中概率的『分散度』,比如说某个<nobr><span class="math" id="MathJax-Span-3952" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3953"><span class="mi" id="MathJax-Span-3954" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-155">\lambda</script>下,我们得到的得分和概率可能如下:


<nobr><span class="math" id="MathJax-Span-3955" style="width: 31.309em; display: inline-block;"><span style="display: inline-block; position: relative; width: 25.016em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 2.883em -0.371em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3956"><span class="mo" id="MathJax-Span-3957" style="font-family: STIXGeneral-Regular;">[</span><span class="mn" id="MathJax-Span-3958" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-3959" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-3960" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">−</span><span class="mn" id="MathJax-Span-3961" style="font-family: STIXGeneral-Regular;">2</span><span class="mo" id="MathJax-Span-3962" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3963" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-3964" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-3965" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">→</span><span class="mo" id="MathJax-Span-3966" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="msubsup" id="MathJax-Span-3967"><span style="display: inline-block; position: relative; width: 0.909em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3968" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="mn" id="MathJax-Span-3969" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3970" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-3971" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.389em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3972" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="texatom" id="MathJax-Span-3973"><span class="mrow" id="MathJax-Span-3974"><span class="mo" id="MathJax-Span-3975" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">−</span><span class="mn" id="MathJax-Span-3976" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">2</span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3977" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-3978" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.909em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-3979" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="mn" id="MathJax-Span-3980" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">0</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-3981" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-3982" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-3983" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3984" style="font-family: STIXGeneral-Regular;">2.71</span><span class="mo" id="MathJax-Span-3985" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3986" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.14</span><span class="mo" id="MathJax-Span-3987" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3988" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-3989" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-3990" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">→</span><span class="mo" id="MathJax-Span-3991" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-3992" style="font-family: STIXGeneral-Regular;">0.7</span><span class="mo" id="MathJax-Span-3993" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3994" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.04</span><span class="mo" id="MathJax-Span-3995" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-3996" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.26</span><span class="mo" id="MathJax-Span-3997" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.403em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-156"> [1, -2, 0] \rightarrow [e^1, e^{-2}, e^0] = [2.71, 0.14, 1] \rightarrow [0.7, 0.04, 0.26] </script>

而我们加大<nobr><span class="math" id="MathJax-Span-3998" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-3999"><span class="mi" id="MathJax-Span-4000" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-157">\lambda</script>,提高其约束能力后,很可能得分变为原来的一半大小,这时候如下:

<nobr><span class="math" id="MathJax-Span-4001" style="width: 33.496em; display: inline-block;"><span style="display: inline-block; position: relative; width: 26.776em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.549em 1000em 2.883em -0.371em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-4002"><span class="mo" id="MathJax-Span-4003" style="font-family: STIXGeneral-Regular;">[</span><span class="mn" id="MathJax-Span-4004" style="font-family: STIXGeneral-Regular;">0.5</span><span class="mo" id="MathJax-Span-4005" style="font-family: STIXGeneral-Regular;">,</span><span class="mo" id="MathJax-Span-4006" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">−</span><span class="mn" id="MathJax-Span-4007" style="font-family: STIXGeneral-Regular;">1</span><span class="mo" id="MathJax-Span-4008" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-4009" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0</span><span class="mo" id="MathJax-Span-4010" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-4011" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">→</span><span class="mo" id="MathJax-Span-4012" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="msubsup" id="MathJax-Span-4013"><span style="display: inline-block; position: relative; width: 1.443em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-4014" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="texatom" id="MathJax-Span-4015"><span class="mrow" id="MathJax-Span-4016"><span class="mn" id="MathJax-Span-4017" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">0.5</span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-4018" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-4019" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 1.389em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-4020" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="texatom" id="MathJax-Span-4021"><span class="mrow" id="MathJax-Span-4022"><span class="mo" id="MathJax-Span-4023" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">−</span><span class="mn" id="MathJax-Span-4024" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">1</span></span></span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-4025" style="font-family: STIXGeneral-Regular;">,</span><span class="msubsup" id="MathJax-Span-4026" style="padding-left: 0.216em;"><span style="display: inline-block; position: relative; width: 0.909em; height: 0px;"><span style="position: absolute; clip: rect(1.976em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mi" id="MathJax-Span-4027" style="font-family: STIXGeneral-Italic;">e</span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span><span style="position: absolute; top: -2.771em; left: 0.483em;"><span class="mn" id="MathJax-Span-4028" style="font-size: 70.7%; font-family: STIXGeneral-Regular;">0</span><span style="display: inline-block; width: 0px; height: 2.403em;"></span></span></span></span><span class="mo" id="MathJax-Span-4029" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-4030" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mo" id="MathJax-Span-4031" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-4032" style="font-family: STIXGeneral-Regular;">1.65</span><span class="mo" id="MathJax-Span-4033" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-4034" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.37</span><span class="mo" id="MathJax-Span-4035" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-4036" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">1</span><span class="mo" id="MathJax-Span-4037" style="font-family: STIXGeneral-Regular;">]</span><span class="mo" id="MathJax-Span-4038" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">→</span><span class="mo" id="MathJax-Span-4039" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">[</span><span class="mn" id="MathJax-Span-4040" style="font-family: STIXGeneral-Regular;">0.55</span><span class="mo" id="MathJax-Span-4041" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-4042" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.12</span><span class="mo" id="MathJax-Span-4043" style="font-family: STIXGeneral-Regular;">,</span><span class="mn" id="MathJax-Span-4044" style="font-family: STIXGeneral-Regular; padding-left: 0.216em;">0.33</span><span class="mo" id="MathJax-Span-4045" style="font-family: STIXGeneral-Regular;">]</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.403em; vertical-align: -0.263em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-158"> [0.5, -1, 0] \rightarrow [e^{0.5}, e^{-1}, e^0] = [1.65, 0.37, 1] \rightarrow [0.55, 0.12, 0.33] </script>

因为<nobr><span class="math" id="MathJax-Span-4046" style="width: 0.643em; display: inline-block;"><span style="display: inline-block; position: relative; width: 0.483em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.477em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-4047"><span class="mi" id="MathJax-Span-4048" style="font-family: STIXGeneral-Italic;">λ</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-159">\lambda</script>的不同,使得最后得到的结果概率分散度有很大的差别。在上面的结果中,猫有着统治性的概率大小,而在下面的结果中,它和船只的概率差距被缩小。

2.6.2 际应用中的SVM与Softmax分类器

实际应用中,两类分类器的表现是相当的。当然,每个人都有自己的喜好和倾向性,习惯用某类分类器。

一定要对比一下的话:

SVM其实并不在乎每个类别得到的绝对得分大小,举个例子说,我们现在对三个类别,算得的得分是[10, -2, 3],实际第一类是正确结果,而设定<nobr><span class="math" id="MathJax-Span-4049" style="width: 3.203em; display: inline-block;"><span style="display: inline-block; position: relative; width: 2.563em; height: 0px; font-size: 125%;"><span style="position: absolute; clip: rect(1.709em 1000em 2.723em -0.424em); top: -2.557em; left: 0.003em;"><span class="mrow" id="MathJax-Span-4050"><span class="mi" id="MathJax-Span-4051" style="font-family: STIXGeneral-Regular;">Δ</span><span class="mo" id="MathJax-Span-4052" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">=</span><span class="mn" id="MathJax-Span-4053" style="font-family: STIXGeneral-Regular; padding-left: 0.323em;">1</span></span><span style="display: inline-block; width: 0px; height: 2.563em;"></span></span></span><span style="border-left-width: 0.003em; border-left-style: solid; display: inline-block; overflow: hidden; width: 0px; height: 1.003em; vertical-align: -0.063em;"></span></span></nobr><script type="math/tex" id="MathJax-Element-160">\Delta=1</script>,那么10-3=7已经比1要大很多了,那对SVM而言,它觉得这已经是一个很标准的答案了,完全满足要求了,不需要再做其他事情了,结果是 [10, -100, -100] 或者 [10, 9, 9],它都是满意的。

然而对于Softmax而言,不是这样的, [10, -100, -100] 和 [10, 9, 9]映射到概率域,计算得到的互熵损失是有很大差别的。所以Softmax是一个永远不会满足的分类器,在每个得分计算到的概率基础上,它总是觉得可以让概率分布更接近标准结果一些,互熵损失更小一些。

有兴趣的话,W与得分预测结果demo是一个可以手动调整和观察二维数据上的分类问题,随W变化结果变化的demo,可以动手调调看看。

交互式demo

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

    论文研究-基于深度玻尔兹曼机的乐器分类问题研究.pdf

    将深度玻尔兹曼机作为特征提取器提取表达能力更强的数据特征,分别以SVM与softmax分类器作为深度神经网络的顶层设置形成DBM SVM组合模型与DBM softmax组合模型,引入平均场理论和动量项因子优化网络训练过程。...

    CS231n课程笔记翻译:线性分类笔记1

    CS231n课程笔记翻译:线性分类笔记原文如下内容列表:线性分类器简介线性评分函数阐明线性分类器损失函数Softmax分类器SVM和Softmax的比较基于We

    使用嵌入了Softmax回归和多个神经网络的深度信任网络来学习用于人脸识别的分层表示

    同时,我们基于监督学习设计了多种分类器:BP,HBPNN,RBF,HRBFNN,SVM和多分类决策融合分类器(MCDFC)-混合HBPNNs- HRBFNNs-SVM分类器。 实验证明:首先,提出的半监督深度学习算法DBNESR最适合用于人脸识别,...

    AI学习知识点.xmind

    Softmax分类 条件随机场 支持向量机svm 决策树 随机森林 GBDT 集成学习 非督导学习 高斯混合模型 聚类 PCA 密度估计 LDA 双聚类 降维算法 LSI 数据处理与模型调优 特征提取 数据预处理 数据降维...

    《机器学习实战》&amp;《统计学习方法》python代码实现(附有详细的代码注释)

    感知器算法 adaboost算法 随机森林 朴素贝叶斯算法 SVM算法 提升树算法 隐马尔可夫模型算法 高斯判别分析(GDA) softmax回归算法 多层前馈神经网络 高斯混合模型(GMM) 3. 模型评估 数据集划分 留出法 交叉验证法 ...

    mltool:机器学习工具箱

    Softmax分类器; 多SVM分类器; 逻辑回归 神经网络,请参阅下面的详细信息。 无监督学习 主成分分析(降维问题); K均值(聚类)。 神经网络 激活:ReLu,Tanh,Sigmoid; 损失函数:Softmax,Multi SVM,物流。...

    人工智能-第八章.pptx

    区域选择 分类器 目标检测 三个阶段 遍历图像确定可能存在目标的候选区域 提取候选区域相关的视觉特征 对选取的目标进行识别 rcnn系列算法 特征提取 人工智能-第八章全文共18页,当前为第2页。 R-CNN是一种基于卷积...

    Linear-Classifiers

    线性分类器 实现了以下分类器(在各自的文件中): 逻辑回归(logistic.py) Perceptron(perceptron.py) SVM(svm.py) Softmax(softmax.py)

    威斯康星州乳腺癌:[ICMLSC 2018]乳腺癌检测:机器学习算法在威斯康星州诊断数据集上的应用

    本文对威斯康星州的六种机器学习(ML)算法进行了比较: ,线性回归,多层感知器(MLP),最近邻(NN)搜索,Softmax回归和支持向量机(SVM)诊断性乳腺癌(WDBC)数据集通过测量其分类测试的准确性以及其敏感性和...

Global site tag (gtag.js) - Google Analytics