伟大的知道 有绝地求生大牛卡盟知道如何用WIOT求资本产出比K/Y么

&figure&&img src=&https://pic3.zhimg.com/v2-71dc1f024bc1fdad78c9bf97_b.jpg& data-rawwidth=&1086& data-rawheight=&545& class=&origin_image zh-lightbox-thumb& width=&1086& data-original=&https://pic3.zhimg.com/v2-71dc1f024bc1fdad78c9bf97_r.jpg&&&/figure&&p&注:本文为作者&a href=&https://link.zhihu.com/?target=https%3A//medium.com/%2540avinashsharmav91& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Avinash Sharma V&/a&授权论智编译,转载请获取作者同意。&/p&&p&最近我有一个同事老是问我“为什么我们用这么多激活函数?”,“为什么这个函数效果比那个好?”,“你怎么知道要用哪个函数?”,“这是很难的数学?”等等。所以我想,我何不给对神经网络只有基本了解的人写篇文章,介绍下激活函数和相应的数学呢?&/p&&p&注意:本文假设你对&a href=&https://link.zhihu.com/?target=https%3A//www.jqr.com/news/008222& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&人工“神经元”&/a&有基本的了解。&/p&&h2&激活函数&/h2&&p&简单来说,人工神经元计算输入的“加权和”,加上偏置,接着决定是否需要“激活”(好吧,其实是激活函数决定是否激活,但是现在让我们先这样理解吧)。&/p&&p&考虑一个神经元。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-d52a015d7dee482afe8ccf6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&440& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&https://pic4.zhimg.com/v2-d52a015d7dee482afe8ccf6_r.jpg&&&/figure&&p&&br&&/p&&p&上式中,Y的值可能是负无穷大到正无穷大之间的任意值。神经元并不知道值的界限。所以我们如何决定神经元是否需要激活呢?&/p&&p&为此,我们决定增加“激活函数”。&/p&&h2&阶跃函数&/h2&&p&我们首先想到的是一个基于阈值的激活函数。如果Y的值大于一个特定值,就定义为“激活”。如果小于阈值,则不激活。&/p&&p&激活函数 A = “激活” if Y & 阈值 else not&/p&&p&或者,A = 1 if Y & 阈值, 否则 0&/p&&p&好吧,我们刚刚定义的是一个&b&阶跃函数(step function)&/b&。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-2ff319ba869cc1d65adb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&325& data-rawheight=&244& class=&content_image& width=&325&&&/figure&&p&&br&&/p&&p&当值大于0(阈值)时,输出为1(激活),否则输出为0(不激活)。&/p&&p&很好。很清楚,这可以作为神经元的激活函数。然而,这个方法有一些特定的缺陷。&/p&&p&假设你正创建一个二元分类器,输出“是”或“否”(激活或未激活)。一个阶跃函数可以做到这一点。实际上这正是阶跃函数做的事,输出1或0。然后,想想如果你想要连接更多这样的神经元来引入更多的分类,比如类一、类二、类三,等等。当不止一个神经元“激活”时会发生什么?所有的神经元将输出1(基于阶跃函数)。然后你如何决定最终结果属于哪个分类呢?嗯,很难,很复杂。&/p&&p&你可能想要用当且仅当一个神经元输出为1来表示分类结果。啊!这更难训练了。更好的选择是,激活函数不是二元的,可以表达“50%激活”、“20%激活”之类的概念。这样,当不止一个神经元激活的时候,你可以找到“激活程度最高”的神经元(其实比max更优的选择是softmax,不过目前我们就用max吧)。&/p&&p&当然,如果不止1个神经元表示“100%激活”了,问题仍然存在。不过,由于输出存在中间值,因此学习过程将更平滑、更容易(较少波动),不止1个神经元100%激活的概率要比使用阶跃函数训练小很多(当然,这也取决于训练的数据)。&/p&&p&好,所以我们希望输出中间(模拟)激活值,而不是仅仅输出“激活”或“不激活”(二元值)。&/p&&p&我们第一个想到的是线性函数。&/p&&h2&线性函数&/h2&&p&A = cx&/p&&p&以上是一个直线函数,激活与函数输入(神经元的加权和)成比例。&/p&&p&所以这将给出一定范围内的激活,而不是二元激活。我们当然可以连接若干神经元,如果不止一个神经元激活了,我们可以基于最大值(max或softmax)做决定。所以这很好。那么,这有什么问题呢?&/p&&p&如果你熟悉用于训练的梯度下降,你会注意到这个函数的导数是一个常数。&/p&&p&A = cx对x的导数是c。这意味着梯度与x无关。这将是一个常数梯度。如果预测出现了错误,反向传播进行的改动将是常数,而不依赖于输入delta(x)!!!&/p&&p&这可不怎么好!(并非总是如此,但请容许我这么说。)此外,还有一个问题。想想连接起来的层。每个层由线性函数激活。这个激活接着作为下一层的输入,下一层同样基于线性函数激活,重复此过程,一直到最后一层。&/p&&p&不管我们有多少层,如果这些层的激活函数都是线性的,最后一层的最终激活函数将是第一层的输入的线性函数!停顿一会,想想这个。&/p&&p&这意味着,这两层(或N层)可以被一个单独的层替换。啊!我们刚刚失去了堆叠网络层的能力。不管我们堆叠多少层,整个网络始终等价于带线性激活的单层神经网络(线性函数的线性组合仍然是一个线性函数)。&/p&&p&让我们继续吧。&/p&&h2&sigmoid函数&/h2&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-ab7df04cdf5f5b8fdadc1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&224& data-rawheight=&96& class=&content_image& width=&224&&&/figure&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-768f32c97b7d7d298d37a3cd5f74ac20_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&400& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic2.zhimg.com/v2-768f32c97b7d7d298d37a3cd5f74ac20_r.jpg&&&/figure&&p&&br&&/p&&p&好吧,这曲线看上去很平滑,有点像阶跃函数。那这有什么好处呢?花点时间想一想。&/p&&p&首先,它是非线性的。这意味着该函数的组合也是非线性的。太棒了!我们可以堆叠网络层了。至于非线性激活?是的,它是非线性激活!和阶跃函数不同,它将给出模拟激活。同时,它也具备平滑的梯度。&/p&&p&不知道你注意到了没有,当X位于-2和2之间时,Y的值非常陡峭。这意味着,此区间内X的任意微小变动都将导致Y显著变动。这意味着,该函数趋向于将Y的值导向曲线的两端。&/p&&p&看起来这个性质对分类器而言很有用?没错!确实是这样。它趋向于将激活导向曲线的两边。这在预测上形成了清晰的差别。&/p&&p&另外一个优势是,相对于线性函数&code&(-inf, inf)&/code&的值域,该函数的值域为&code&(0, 1)&/code&。因此我们的激活函数是有界的。&/p&&p&sigmoid函数是现在使用这广泛的函数之一。那么,它有什么问题呢?&/p&&p&不知道你注意到了没有,越是接近sigmoid的两端,相对X的改变,Y就越趋向于作出非常小的反应。这意味着在该区域的梯度会很小。也就是“衰减的梯度”问题 。嗯,所以当激活函数接近曲线两端的“邻近地平线”部分时发生了什么?&/p&&p&梯度会很小,或者消失了(由于值极小,无法做出显著的改变了)。网络拒绝进一步学习,或者学习速度剧烈地变慢了(取决于具体案例,直到梯度/计算碰到了浮点值的限制)。不过,我们有一些变通措施,因此在分类问题中,sigmoid仍旧非常流行。&/p&&h2&Tanh函数&/h2&&p&另一个常用的激活函数是tanh函数。&/p&&p&&br&&/p&&figure&&img src=&https://pic4.zhimg.com/v2-fa8c53713efaf1a37a3357_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&400& data-rawheight=&300& class=&content_image& width=&400&&&/figure&&p&&br&&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-149bdae4e485ed_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&644& data-rawheight=&120& class=&origin_image zh-lightbox-thumb& width=&644& data-original=&https://pic1.zhimg.com/v2-149bdae4e485ed_r.jpg&&&/figure&&p&&br&&/p&&p&嗯,这看起来和sigmoid很像嘛。实际上,这是一个经过拉升的sigmoid函数!&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-462d4d1b0af_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&616& data-rawheight=&96& class=&origin_image zh-lightbox-thumb& width=&616& data-original=&https://pic1.zhimg.com/v2-462d4d1b0af_r.jpg&&&/figure&&p&&br&&/p&&p&好,tanh的性质和我们之前讨论的sigmoid类似。它是非线性的,因此我们可以堆叠网络层。它是有界的&code&(-1, 1)&/code&,所以不用担心激活膨胀。值得一提的是,tanh的梯度比sigmoid更激烈(导数更陡峭)。因此,选择sigmoid还是tanh将取决于你对梯度强度的需求。和sigmoid类似,tanh也存在梯度衰减问题。&/p&&p&tanh也是一个非常流行和广泛使用的激活函数。&/p&&h2&ReLu&/h2&&p&接着,是ReLu函数,&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&A(x) = max(0, x)
&/code&&/pre&&/div&&p&ReLu函数如上所示。当x是正值时,它输出x,否则输出0。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-8d1b873fa119c01de36fb7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&311& data-rawheight=&210& class=&content_image& width=&311&&&/figure&&p&&br&&/p&&p&乍看起来这和线性函数有一样的问题,因为在正值处它是线性的。首先,RuLu是非线性的。ReLu的组合也是非线性的!(实际上它是一个很好的逼近子。ReLu的组合可以逼近任何函数。)很好,这意味着我们可以堆叠网络层。不过,它并不是有界的。ReLu的值域是&code&[0, inf)&/code&。这意味着它将膨胀激活函数。&/p&&p&我想指出的另一点是激活的稀疏性。想象一个具有很多神经元的大型神经网络。使用sigmoid或tanh会导致几乎所有神经元以模拟的方式激活(没忘吧?)这意味着需要处理几乎所有的激活以描述网络的输出。换句话说,激活是密集的。这样成本很高。理想情况下,我们希望网络中的一些神经元不激活,从而使激活变得稀疏和高效。&/p&&p&ReLu在这方面很有用。想象一个具备随机初始权重(或归一化的权重)的网络,基于ReLu的特性(x的负值将输出0),基本上50%的网络将生成0。这意味着更少的神经元将被激活(稀疏激活),网络也更轻量。哇,棒!ReLu看起来真不错!是的,它确实不错,但没什么东西不存在缺陷……甚至是RuLu。&/p&&p&ReLu的水平线部分(X的负值)意味着梯度会趋向于0。当激活位于ReLu的水平区域时,梯度会是0,导致权重无法随着梯度而调整。这意味着,陷入此状态的神经元将停止对误差/输入作出反应(很简单,因为梯度是0,没有什么改变)。这被称为死亡ReLu问题。这一问题会导致一些神经元直接死亡、失去响应,导致网络的很大一部分进入被动状态。有一些缓和这一问题的ReLu变体,将水平线转为非水平部分,例如,当x&0时y = 0.01x,使图像从水平线变为略微倾斜的直线。这就是弱修正ReLu(leaky ReLu)。还有其他一些变体。主要的想法是让梯度不为零,这样网络可以逐渐从训练中恢复。&/p&&p&相比tanh和sigmoid,ReLu在算力上更经济,因为它使用的是比较简单的数学运算。设计深度神经网络的时候,这是需要考虑的一个重要因素。&/p&&h2&好,该选哪个呢?&/h2&&p&现在来考虑该用哪个激活函数的问题。我们是否应该总是使用ReLu呢?还是sigmoid或tanh?好,是也不是。当我们知道尝试逼近的函数具有某些特定性质时,我们可以选择能够更快逼近函数的激活函数,从而加快训练过程。例如,sigmoid对分类器而言很有效(看看sigmoid的图像,是不是展示了一个理想的分类器的性质?),因为基于sigmoid的组合逼近的分类函数要比诸如ReLu之类的函数更容易。当然,你也可以使用自己定制的函数!如果你并不清楚试图学习的函数的本质,那我会建议你从ReLu开始,然后再试其他。在大多数情况下,ReLu作为一个通用的逼近子效果很不错。&/p&&p&在本文中,我尝试描述了一些常用的激活函数。还有其他的激活函数,但基本的思想是一样的。寻找更好的激活函数的研究仍在进行。希望你理解了激活函数背后的思想,为什么要使用激活函数,以及如何选用激活函数。&/p&&p&最后,再次感谢作者&a href=&https://link.zhihu.com/?target=https%3A//medium.com/%2540avinashsharmav91& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Avinash Sharma V&/a&的热心分享~&/p&&p&原文地址:&a href=&https://link.zhihu.com/?target=https%3A//medium.com/the-theory-of-everything/understanding-activation-functions-in-neural-networks-e0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Understanding Activation Functions in Neural Networks&/a&&/p&
注:本文为作者授权论智编译,转载请获取作者同意。最近我有一个同事老是问我“为什么我们用这么多激活函数?”,“为什么这个函数效果比那个好?”,“你怎么知道要用哪个函数?”,“这是很难的数学?”等等。所以我想,我何不给对神经网…
&figure&&img src=&https://pic1.zhimg.com/v2-9d3f45a6cd62c0d845cc13d3_b.jpg& data-rawwidth=&348& data-rawheight=&145& class=&content_image& width=&348&&&/figure&&h2&&i&&b&一、什么是n-gram模型&/b&&/i&&/h2&&p&N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。&/p&&p&每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,形成关键gram列表,也就是这个文本的向量特征空间,列表中的每一种gram就是一个特征向量维度。&/p&&p&该模型基于这样一种假设,第N个词的出现只与前面N-1个词相关,而与其它任何词都不相关,整句的概率就是各个词出现概率的乘积。这些概率可以通过直接从语料中统计N个词同时出现的次数得到。常用的是二元的Bi-Gram和三元的Tri-Gram。&/p&&p&说完了n-gram模型的概念之后,下面讲解n-gram的一般应用。&/p&&h2&&b&&i&二、n-gram模型用于评估语句是否合理&/i&&/b&&/h2&&p&如果我们有一个由 m 个词组成的序列(或者说一个句子),我们希望算得概率 &img src=&http://www.zhihu.com/equation?tex=p%28w_%7B1%7D%2Cw_%7B2%7D%2C...%2Cw_%7Bm%7D%29& alt=&p(w_{1},w_{2},...,w_{m})& eeimg=&1&& ,根据链式规则,可得 &/p&&p&&img src=&http://www.zhihu.com/equation?tex=p%28w_%7B1%7D%2Cw_%7B2%7D%2C...%2Cw_%7Bm%7D%29%3Dp%28w_%7B1%7D%29%2Ap%28w_%7B2%7D%7Cw_%7B1%7D%29%2Ap%28w_%7B3%7D%7Cw_%7B1%7D%2Cw_%7B2%7D%29.....p%28w_%7Bm%7D%7Cw_%7B1%7D%2C..%2Cw_%7Bm-1%7D%29& alt=&p(w_{1},w_{2},...,w_{m})=p(w_{1})*p(w_{2}|w_{1})*p(w_{3}|w_{1},w_{2}).....p(w_{m}|w_{1},..,w_{m-1})& eeimg=&1&&&/p&&p&这个概率显然并不好算,不妨利用马尔科夫链的假设,即当前这个词仅仅跟前面几个有限的词相关,&b&&i&因此也就不必追溯到最开始的那个词,这样便可以大幅缩减上述算式的长度&/i&&/b&。即 &/p&&p&&img src=&http://www.zhihu.com/equation?tex=p%28w_%7B1%7D%2Cw_%7B2%7D%2C...%2Cw_%7Bm%7D%29%3Dp%28w_%7Bi%7D%7Cw_%7Bi-n%2B1%2C+...%2Cw_%7Bi-1%7D%7D%29& alt=&p(w_{1},w_{2},...,w_{m})=p(w_{i}|w_{i-n+1, ...,w_{i-1}})& eeimg=&1&&&/p&&p&&b&&i&这个马尔科夫链的假设为什么好用?我想可能是在现实情况中,大家通过真实情况将n=1,2,3,....这些值都试过之后,得到的真实&/i&&/b&的效果和时间空间的开销权衡之后,发现能够使&b&&i&用。&/i&&/b&&/p&&p&下面给出一元模型,二元模型,三元模型的定义:&/p&&p&当 n=1, 一个一元模型(unigram model)即为 :&/p&&figure&&img src=&http://pic1.zhimg.com/v2-4e5bacfab55c6fc2c84e14_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&635& data-rawheight=&61& class=&origin_image zh-lightbox-thumb& width=&635& data-original=&http://pic1.zhimg.com/v2-4e5bacfab55c6fc2c84e14_r.jpg&&&/figure&&p&当 n=2, 一个二元模型(bigram model)即为 :&br&&/p&&figure&&img src=&http://pic2.zhimg.com/v2-d45c62f548c4da5d47a904a09ba20159_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&619& data-rawheight=&62& class=&origin_image zh-lightbox-thumb& width=&619& data-original=&http://pic2.zhimg.com/v2-d45c62f548c4da5d47a904a09ba20159_r.jpg&&&/figure&&p&当 n=3, 一个三元模型(trigram model)即为 &/p&&figure&&img src=&http://pic1.zhimg.com/v2-53fdafdae15b1af1861ac_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&519& data-rawheight=&61& class=&origin_image zh-lightbox-thumb& width=&519& data-original=&http://pic1.zhimg.com/v2-53fdafdae15b1af1861ac_r.jpg&&&/figure&&p&然后下面的思路就很简单了,在给定的训练语料中,利用贝叶斯定理,将上述的条件概率值(&b&因为一个句子出现的概率都转变为右边条件概率值相乘了&/b&)都统计计算出来即可。下面会给出具体例子讲解。这里先给出公式:&/p&&figure&&img src=&http://pic1.zhimg.com/v2-507fac3a49357eed0fbd4cd6fb8ce6b0_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&897& data-rawheight=&201& class=&origin_image zh-lightbox-thumb& width=&897& data-original=&http://pic1.zhimg.com/v2-507fac3a49357eed0fbd4cd6fb8ce6b0_r.jpg&&&/figure&&p&对第一个进行解释,后面同理,如下: &img src=&http://www.zhihu.com/equation?tex=p%28w_%7Bi%7D%7Cp%28w_%7Bi-1%7D%29%29%3Dp%28w_%7Bi%7D%2Cw_%7Bi-1%7D%29%2Fp%28w_%7Bi-1%7D%29%3D%28count%28w_%7Bi%7D%2Cw_%7Bi-1%7D%29%2Fcount%28ALLword%29%29%2F%28count%28w_%7Bi-1%7D%29%2Fcount%28ALLword%29%29%3Dcount%28w_%7Bi%7D%2Cw_%7Bi-1%7D%29%2Fcount%28w_%7Bi-1%7D%29& alt=&p(w_{i}|p(w_{i-1}))=p(w_{i},w_{i-1})/p(w_{i-1})=(count(w_{i},w_{i-1})/count(ALLword))/(count(w_{i-1})/count(ALLword))=count(w_{i},w_{i-1})/count(w_{i-1})& eeimg=&1&&&/p&&p&下面给出具体的例子。&/p&&h2&&b&&i&三、二元语言模型判断句子是否合理&/i&&/b&&/h2&&p&&b&&i&下面例子来自于:&/i&&/b&&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/baimafujinji/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&自然语言处理中的N-Gram模型详解 - 白马负金羁 - CSDN博客&/a&和《北京大学 常宝宝 以及 The University of Melbourne “Web Search and Text Analysis” 课程的幻灯片素材》&/p&&p&假设现在有一个语料库,我们统计了下面的一些词出现的数量&/p&&figure&&img src=&http://pic1.zhimg.com/v2-b6ebabe8c640_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&376& data-rawheight=&48& class=&content_image& width=&376&&&/figure&&p&下面的这些概率值作为已知条件:&/p&&figure&&img src=&http://pic1.zhimg.com/v2-a7c0dabd45e1535eaeb8c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&497& data-rawheight=&72& class=&origin_image zh-lightbox-thumb& width=&497& data-original=&http://pic1.zhimg.com/v2-a7c0dabd45e1535eaeb8c_r.jpg&&&/figure&&p&p(want|&s&) = 0.25&/p&&p&下面这个表给出的是基于Bigram模型进行计数之结果 &/p&&figure&&img src=&http://pic3.zhimg.com/v2-d9df856f37a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&427& data-rawheight=&141& class=&origin_image zh-lightbox-thumb& width=&427& data-original=&http://pic3.zhimg.com/v2-d9df856f37a_r.jpg&&&/figure&&p&例如,其中第一行,第二列 表示给定前一个词是 “i” 时,当前词为“want”的情况一共出现了827次。据此,我们便可以算得相应的频率分布表如下。 &/p&&figure&&img src=&http://pic2.zhimg.com/v2-e53505cae4d3fa21d29f1ff2c267eb49_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&436& data-rawheight=&143& class=&origin_image zh-lightbox-thumb& width=&436& data-original=&http://pic2.zhimg.com/v2-e53505cae4d3fa21d29f1ff2c267eb49_r.jpg&&&/figure&&p&比如说,我们就以表中的p(eat|i)=0.0036这个概率值讲解,从表一得出“i”一共出现了2533次,而其后出现eat的次数一共有9次,p(eat|i)=p(eat,i)/p(i)=count(eat,i)/count(i)=9/2533 =
0.0036&/p&&p&下面我们通过基于这个语料库来判断s1=“&s& i want english food&/s&” 与s2 = &&s& want i
english food&/s&&哪个句子更合理:通过例子来讲解是最人性化的,我在网上找了这么久发现这个例子最好:&/p&&p&&b&&i&首先来判断p(s1)&/i&&/b&&/p&&p&P(s1)=P(i|&s&)P(want|i)P(english|want)P(food|english)P(&/s&|food)&/p&&p&=0.25×0.33×0.×0.68=0.000031&/p&&p&&b&&i&再来求p(s2)?&/i&&/b&&/p&&p&P(s2)=P(want|&s&)P(i|want)P(english|want)P(food|english)P(&/s&|food)&/p&&p&=0.25*0.1*0.5*0.68 = 0.&/p&&p&&b&&i&通过比较我们可以明显发现0.&0.000031,也就是说s1= &i want english food&/s&&更像人话。&/i&&/b&&/p&&p&&b&&i&再深层次的分析,我们可以看到这两个句子的概率的不同,主要是由于顺序i want还是want i的问题,根据我们的直觉和常用搭配语法,i want要比want i出现的几率要大很多。所以两者的差异,第一个概率大,第二个概率小,也就能说的通了。&/i&&/b&&/p&&p&&b&&i&下面再给出生活中常用的一个应用。&/i&&/b&&/p&&h2&&b&&i&四、N-gram模型的一个常见应用&/i&&/b&&/h2&&p&搜索引擎(Google或者Baidu)、或者输入法的猜想或者提示。你在用谷歌时,输入一个或几个词,&b&搜索框通常会以下拉菜单的形式给出几个像下图一样的备选,这些备选其实是在猜想你想要搜索的那个词串。&/b&&/p&&p&再者,当你用输入法输入一个汉字的时候,输入法通常可以联系出一个完整的词,例如我输入一个“刘”字,通常输入法会提示我是否要输入的是“刘备”。通过上面的介绍,你应该能够很敏锐的发觉,这其实是以N-Gram模型为基础来实现的。比如下图:&/p&&figure&&img src=&http://pic4.zhimg.com/v2-c_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1556& data-rawheight=&566& class=&origin_image zh-lightbox-thumb& width=&1556& data-original=&http://pic4.zhimg.com/v2-c_r.jpg&&&/figure&&p&&b&&i&那么原理是什么呢?也就是我打入“我们”的时候,后面的“不一样”,”的爱“这些是怎么出来的,怎么排序的?&/i&&/b&&/p&&p&实际上是根据语言模型得出。假如使用的是二元语言模型预测下一个单词:&/p&&p&排序的过程就是:&/p&&p&p(”不一样“|&我们&)&p(”的爱“|&我们&)&p(”相爱吧“|&我们&)&.......&p(&这一家&|”我们“),这些概率值的求法和上面提到的完全一样,数据的来源可以是用户搜索的log。&/p&&h2&&b&&i&五、n-gram的n大小对性能的影响&/i&&/b&&/h2&&ul&&li&&b&&i&n更大的时候&/i&&/b&&br&n: 对下一个词出现的约束性信息更多,更大的辨别力,但是更稀疏,并且n-gram的总数也更多,为 &img src=&http://www.zhihu.com/equation?tex=V%5En& alt=&V^n& eeimg=&1&& 个(V为词汇表的大小)&/li&&li&&b&&i&n更小的时候&/i&&/b&&/li&&li&在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性 ,但是约束信息更少&/li&&/ul&&p&其中当N为特定值的时候,我们来看一下n-gram可能的总数,如下表:&/p&&figure&&img src=&http://pic4.zhimg.com/v2-5c924c04eaf19c68c0dac42e8849e70f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1126& data-rawheight=&590& class=&origin_image zh-lightbox-thumb& width=&1126& data-original=&http://pic4.zhimg.com/v2-5c924c04eaf19c68c0dac42e8849e70f_r.jpg&&&/figure&&p&对于上图,我用一个例子来进行解释,加入目前词汇表中就只有三个单词,”我爱你“,那么bigram的总数是3^2=9个,有”我我“,我爱,我你,爱爱,爱你,爱我,你你,你我,你爱这9个,所以对应上面的表示是bigrams是000000,trigrams=20000^3 = 8*10e12&/p&&p&好,到这里讲解了n-gram的基本内容了。&/p&&blockquote&参考:&a href=&http://link.zhihu.com/?target=http%3A//blog.csdn.net/baimafujinji/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&自然语言处理中N-Gram模型的Smoothing算法 - 白马负金羁 - CSDN博客&/a&&br&&a href=&https://zhuanlan.zhihu.com/p/& class=&internal&&N-gram提取特征&/a&&/blockquote&&p&&/p&
一、什么是n-gram模型N-Gram是一种基于统计语言模型的算法。它的基本思想是将文本里面的内容按照字节进行大小为N的滑动窗口操作,形成了长度是N的字节片段序列。每一个字节片段称为gram,对所有gram的出现频度进行统计,并且按照事先设定好的阈值进行过滤,…
&p&泊松分布可以从二项分布推导出来。假设&/p&&figure&&img src=&https://pic4.zhimg.com/v2-02bcc0d16a64bcc87ab57_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&763& data-rawheight=&190& class=&origin_image zh-lightbox-thumb& width=&763& data-original=&https://pic4.zhimg.com/v2-02bcc0d16a64bcc87ab57_r.jpg&&&/figure&&p&这里我们使二项分布概率 &img src=&//www.zhihu.com/equation?tex=p%3D%5Cfrac%7B%CE%BB%7D%7Bn%7D& alt=&p=\frac{λ}{n}& eeimg=&1&& ,说明概率和试验次数 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 是成反比的,也即总实验次数越多,单次发生的概率就越低。或者说把一个较大的概率 &img src=&//www.zhihu.com/equation?tex=%CE%BB& alt=&λ& eeimg=&1&& 均摊为 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 份。这不难理解,本来概率是 &img src=&//www.zhihu.com/equation?tex=%CE%BB& alt=&λ& eeimg=&1&& ,分成 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 小份之后,每一小份的概率当然只剩下 &img src=&//www.zhihu.com/equation?tex=%5Cfrac%7B%CE%BB%7D%7Bn%7D& alt=&\frac{λ}{n}& eeimg=&1&& :&/p&&figure&&img src=&https://pic2.zhimg.com/v2-a644dbce49db29db281a1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&855& data-rawheight=&326& class=&origin_image zh-lightbox-thumb& width=&855& data-original=&https://pic2.zhimg.com/v2-a644dbce49db29db281a1_r.jpg&&&/figure&&p&则 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 次中发生 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 次的概率为(也就是说在这 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 小份中选 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 份让他发生,每份发生一次)&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d392dcdd6a4f_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&517& data-rawheight=&197& class=&origin_image zh-lightbox-thumb& width=&517& data-original=&https://pic1.zhimg.com/v2-d392dcdd6a4f_r.jpg&&&/figure&&ul&&li&&img src=&//www.zhihu.com/equation?tex=C_n%5E%7Bk%7D%3D%5Cfrac%7Bn%21%7D%7Bk%21%28n-k%29%21%7D& alt=&C_n^{k}=\frac{n!}{k!(n-k)!}& eeimg=&1&& 表示从 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 份中取 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 份有多少取法。 &img src=&//www.zhihu.com/equation?tex=n%21& alt=&n!& eeimg=&1&& 表示彼此不同的 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 份可能的排列情况,除以 &img src=&//www.zhihu.com/equation?tex=k%21%28n-k%29%21& alt=&k!(n-k)!& eeimg=&1&& 表示我们不在乎 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 份发生了的和 &img src=&//www.zhihu.com/equation?tex=%28n-k%29& alt=&(n-k)& eeimg=&1&& 份未发生的顺序情况如何。&br&也可表示为 &img src=&//www.zhihu.com/equation?tex=C_n%5E%7Bk%7D%3D%5Cfrac%7BA_n%5E%7Bk%7D%7D%7Bk%21%7D%3D%5Cfrac%7Bn%28n-1%29...%28n-k%2B1%29%7D%7Bk%21%7D& alt=&C_n^{k}=\frac{A_n^{k}}{k!}=\frac{n(n-1)...(n-k+1)}{k!}& eeimg=&1&& 。 &img src=&//www.zhihu.com/equation?tex=A_n%5Ek& alt=&A_n^k& eeimg=&1&& 表示从彼此不同的 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 份中抽取 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 份的情况。 除以 &img src=&//www.zhihu.com/equation?tex=k%21& alt=&k!& eeimg=&1&& 表示我们对于这 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 份互相的顺序如何不感兴趣。&/li&&li&&img src=&//www.zhihu.com/equation?tex=%5Cfrac%7B%CE%BB%5E%7Bk%7D%7D%7Bn%5E%7Bk%7D%7D& alt=&\frac{λ^{k}}{n^{k}}& eeimg=&1&& 表示将概率 &img src=&//www.zhihu.com/equation?tex=%CE%BB& alt=&λ& eeimg=&1&& 均摊 &img src=&//www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 份之后,再连续发生 &img src=&//www.zhihu.com/equation?tex=k& alt=&k& eeimg=&1&& 次的几率。这相当于是将概率 &img src=&//www.zhihu.com/equation?tex=%CE%BB& alt=&λ& eeimg=&1&& 进行了两重缩小。我们可以举个例子。假如每个城市的彩票独立,而中奖几率与购票数量成正比,那么你把成本均摊到每个城市去买彩票,并且每个城市都中奖的几率当然远小于你把钱都放在同一个城市买彩票中奖的几率。&/li&&li&&img src=&//www.zhihu.com/equation?tex=%281-%5Cfrac%7B%CE%BB%7D%7Bn%7D%29%5E%7Bn-k%7D& alt=&(1-\frac{λ}{n})^{n-k}& eeimg=&1&& 表示 &img src=&//www.zhihu.com/equation?tex=%28n-k%29& alt=&(n-k)& eeimg=&1&& 次不发生&/li&&/ul&&p&所以&/p&&figure&&img src=&https://pic3.zhimg.com/v2-ea15ec2bbd69ac30ca881d28b434d902_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&505& data-rawheight=&87& class=&origin_image zh-lightbox-thumb& width=&505& data-original=&https://pic3.zhimg.com/v2-ea15ec2bbd69ac30ca881d28b434d902_r.jpg&&&/figure&&p&也可等于 &img src=&//www.zhihu.com/equation?tex=%5Cfrac%7Bn%28n-1%29...%28n-k%2B1%29%7D%7Bk%21%7D%28%5Cfrac%7B%CE%BB%7D%7Bn%7D%29%5Ek%281-%5Cfrac%7B%CE%BB%7D%7Bn%7D%29%5E%7Bn-k%7D& alt=&\frac{n(n-1)...(n-k+1)}{k!}(\frac{λ}{n})^k(1-\frac{λ}{n})^{n-k}& eeimg=&1&&&/p&&p&进一步等于&/p&&figure&&img src=&https://pic4.zhimg.com/v2-0bb7a01b0e12ec75d5c1ea42a7cf37af_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&836& data-rawheight=&97& class=&origin_image zh-lightbox-thumb& width=&836& data-original=&https://pic4.zhimg.com/v2-0bb7a01b0e12ec75d5c1ea42a7cf37af_r.jpg&&&/figure&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-589f3ffb78f79c8f15b81c8_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&484& data-rawheight=&98& class=&origin_image zh-lightbox-thumb& width=&484& data-original=&https://pic1.zhimg.com/v2-589f3ffb78f79c8f15b81c8_r.jpg&&&/figure&&p&而这就是泊松分布的表达式。&/p&
泊松分布可以从二项分布推导出来。假设这里我们使二项分布概率 p=\frac{λ}{n} ,说明概率和试验次数 n 是成反比的,也即总实验次数越多,单次发生的概率就越低。或者说把一个较大的概率 λ 均摊为 n 份。这不难理解,本来概率是 λ ,分成 n 小份之后,每…
&p&&b&Differentiable Programming&/b& & &b&Differentiable Programming Languages&/b&,不是什么新鲜名词,其实搞Deep Learning和Programming Language的人近几年来一直在探索。&/p&&p&一个比较通俗的解释是:&/p&&ul&&li&传统的编程方法:程序员人工写出每一行代码,机器按照给定的代码运行程序,根据输入数据X得到运算结果Y。&/li&&li&Differentiable Programming:程序员不写代码,或者仅写出少量high-level的代码,但是提供大量输入数据X与对应运算结果Y的例子。神经网络根据提供的数据集,自动学出从输入数据X到最终运算结果Y的映射(既整个程序);或者结合程序员提供的high-level的代码,用神经网络作为中间函数,补全得到整个程序。Differentiable Programming有点像用Deep Learning来实现&a href=&//link.zhihu.com/?target=https%3A//en.wikipedia.org/wiki/Programming_by_example& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Programming by example&/a&&/li&&/ul&&p&个人感觉近期比较有代表性的paper有:&/p&&ul&&li&完全不写代码:&/li&&ul&&li&Neural Turing Machines&/li&&li&Neural Symbolic Machines/Neural Programmer&/li&&li&DeepCoder: Learning to Write Programs&/li&&/ul&&li&程序员给出少量代码,用神经网络拟合得到中间缺失的函数:&/li&&ul&&li&Programming with a Differentiable Forth Interpreter&/li&&li&Differentiable Programs with Neural Libraries&/li&&/ul&&li&相关工作--如何利用人工写的程序来提高神经网络『写代码』的能力:&/li&&ul&&li&Coupling Distributed and Symbolic Execution for Natural Language Queries&/li&&/ul&&/ul&&p&个人感觉最有意思的研究方向是第二条,既怎么能让程序员给出一个程序大概的框架,然后利用训练神经网络来补全中间缺失的函数。但需要指出的是,Differentiable Programming相关的研究仍然处于比较初步的阶段,主要的难点有:(1)很多任务很难提供大量的输入数据X到运算结果Y的数据集,这样训练X-&Y的神经网络就比较困难。(2)把一个programming language变成全可微后,每一步运算(每一行code)都是所有可能运算加权综合后的结果,这会带来很大的运行开销。导致最近Programming Language界不太看好这条路。。。总之,个人认为Differentiable Programming & Differentiable Programming Language是非常有趣的研究方向,但前路漫漫~&/p&
Differentiable Programming & Differentiable Programming Languages,不是什么新鲜名词,其实搞Deep Learning和Programming Language的人近几年来一直在探索。一个比较通俗的解释是:传统的编程方法:程序员人工写出每一行代码,机器按照给定的代码运行程…
&figure&&img src=&https://pic3.zhimg.com/v2-db0c770d8dd55e5a433bbf3_b.jpg& data-rawwidth=&556& data-rawheight=&234& class=&origin_image zh-lightbox-thumb& width=&556& data-original=&https://pic3.zhimg.com/v2-db0c770d8dd55e5a433bbf3_r.jpg&&&/figure&&p&大概主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。&/p&&p&首先考虑一个问题:对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达?&/p&&p&可以想到,若存在这样的超平面,那么它大概具有这样的性质:&/p&&ul&&li&最近重构性:样本点到这个超平面的距离足够近&/li&&li&最大可分性:样本点在这个超平面上的投影能尽可能的分开&/li&&/ul&&p&基于最近重构性和最大可分性能分别得到主成分分析的两种等价推到,我们这里主要考虑最大可分性,并且一步一步推到出最终PCA。&/p&&h2&&b&1.PCA最大可分性的思想&/b&&/h2&&p&PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是 &img src=&https://www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&&维的,共有 &img src=&https://www.zhihu.com/equation?tex=m& alt=&m& eeimg=&1&& 个数据 &img src=&https://www.zhihu.com/equation?tex=%28x_%7B1%7D%2Cx_%7B2%7D%2C...%2Cx_%7Bm%7D%29& alt=&(x_{1},x_{2},...,x_{m})& eeimg=&1&& 。我们希望将这 &img src=&https://www.zhihu.com/equation?tex=m& alt=&m& eeimg=&1&& 个数据的维度从 &img src=&https://www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 维降到 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 维,希望这 &img src=&https://www.zhihu.com/equation?tex=m& alt=&m& eeimg=&1&& 个 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 维的数据集尽可能的代表原始数据集。我们知道数据从 &img src=&https://www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 维降到 &img src=&https://www.zhihu.com/equation?tex=n%27+& alt=&n' & eeimg=&1&& 维肯定会有损失,但是我们希望损失尽可能的小。那么如何让这 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 维的数据尽可能表示原来的数据呢?&/p&&p&我们先看看最简单的情况,也就是 &img src=&https://www.zhihu.com/equation?tex=n%3D2& alt=&n=2& eeimg=&1&& , &img src=&https://www.zhihu.com/equation?tex=n%27%3D1& alt=&n'=1& eeimg=&1&& ,也就是将数据从二维降维到一维。数据如下图。我们希望找到某一个维度方向,它可以代表这两个维度的数据。图中列了两个向量方向, &img src=&https://www.zhihu.com/equation?tex=u_1& alt=&u_1& eeimg=&1&& 和 &img src=&https://www.zhihu.com/equation?tex=u_2& alt=&u_2& eeimg=&1&& ,那么哪个向量可以更好的代表原始数据集呢?&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3b1f88a3ed8ecb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&600& data-rawheight=&450& class=&origin_image zh-lightbox-thumb& width=&600& data-original=&https://pic3.zhimg.com/v2-3b1f88a3ed8ecb_r.jpg&&&/figure&&p&从直观上也可以看出, &img src=&https://www.zhihu.com/equation?tex=u_1& alt=&u_1& eeimg=&1&& 比 &img src=&https://www.zhihu.com/equation?tex=u_2& alt=&u_2& eeimg=&1&& 好,这就是我们所说的&b&最大可分性。&/b&&/p&&h2&&b&2.基变换&/b&&/h2&&p&一般来说,欲获得原始数据新的表示空间,最简单的是对原始数据进行线性变换(基变换):&/p&&p&&img src=&https://www.zhihu.com/equation?tex=Y%3DPX& alt=&Y=PX& eeimg=&1&&&/p&&p&其中 &img src=&https://www.zhihu.com/equation?tex=Y& alt=&Y& eeimg=&1&& 是样本在新空间的表达, &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 是基向量, &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 是原始样本。我们可知选择不同的基可以对一组数据给出不同的表示,同时当基的数量少于原始样本本身的维数则可达到降维的效果,矩阵表示如下:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cbegin%7Bpmatrix%7D+p_1+%5C%5C+p_2+%5C%5C+%5Cvdots+%5C%5C+p_R+%5Cend%7Bpmatrix%7D+%5Cbegin%7Bpmatrix%7D+a_1+%26+a_2+%26+%5Ccdots+%26+a_M+%5Cend%7Bpmatrix%7D+%3D+%5Cbegin%7Bpmatrix%7D+p_1a_1+%26+p_1a_2+%26+%5Ccdots+%26+p_1a_M+%5C%5C+p_2a_1+%26+p_2a_2+%26+%5Ccdots+%26+p_2a_M+%5C%5C+%5Cvdots+%26+%5Cvdots+%26+%5Cddots+%26+%5Cvdots+%5C%5C+p_Ra_1+%26+p_Ra_2+%26+%5Ccdots+%26+p_Ra_M+%5Cend%7Bpmatrix%7D& alt=&\begin{pmatrix} p_1 \\ p_2 \\ \vdots \\ p_R \end{pmatrix} \begin{pmatrix} a_1 & a_2 & \cdots & a_M \end{pmatrix} = \begin{pmatrix} p_1a_1 & p_1a_2 & \cdots & p_1a_M \\ p_2a_1 & p_2a_2 & \cdots & p_2a_M \\ \vdots & \vdots & \ddots & \vdots \\ p_Ra_1 & p_Ra_2 & \cdots & p_Ra_M \end{pmatrix}& eeimg=&1&&&/p&&p&其中&img src=&https://www.zhihu.com/equation?tex=p_i%5Cin%5C%7Bp_1%2Cp_2%2C...%2Cp_R%5C%7D& alt=&p_i\in\{p_1,p_2,...,p_R\}& eeimg=&1&&, &img src=&https://www.zhihu.com/equation?tex=p_i%5Cin%5Cmathbb%7BR%7D%5E%7B1%2AN%7D& alt=&p_i\in\mathbb{R}^{1*N}& eeimg=&1&& 是一个行向量,表示第&img src=&https://www.zhihu.com/equation?tex=i& alt=&i& eeimg=&1&&个基;&img src=&https://www.zhihu.com/equation?tex=a_j%5Cin%5C%7Ba_1%2Ca_2%2C...a_M%5C%7D& alt=&a_j\in\{a_1,a_2,...a_M\}& eeimg=&1&&, &img src=&https://www.zhihu.com/equation?tex=a_i%5Cin%5Cmathbb%7BR%7D%5E%7BN%2A1%7D& alt=&a_i\in\mathbb{R}^{N*1}& eeimg=&1&& 是一个列向量,表示第&img src=&https://www.zhihu.com/equation?tex=j& alt=&j& eeimg=&1&&个原始数据记录。特别要注意的是,这里 &img src=&https://www.zhihu.com/equation?tex=R& alt=&R& eeimg=&1&& 可以小于 &img src=&https://www.zhihu.com/equation?tex=N& alt=&N& eeimg=&1&& ,而 &img src=&https://www.zhihu.com/equation?tex=R& alt=&R& eeimg=&1&& 决定了变换后数据的维数。也就是说,我们可以将一个 &img src=&https://www.zhihu.com/equation?tex=N& alt=&N& eeimg=&1&& 维数据变换到更低维度的空间中去,变换后的维度取决于基的数量。&b&从原本 &img src=&https://www.zhihu.com/equation?tex=X%5Cin%5Cmathbb%7BR%7D%5E%7BN%2AM%7D& alt=&X\in\mathbb{R}^{N*M}& eeimg=&1&& 降维到 &img src=&https://www.zhihu.com/equation?tex=Y%5Cin%5Cmathbb%7BR%7D%5E%7BR%2AM%7D& alt=&Y\in\mathbb{R}^{R*M}& eeimg=&1&& 。&/b&因此这种矩阵相乘的表示也可以表示降维变换。&/p&&p&最后,上述分析同时给矩阵相乘找到了一种物理解释:两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到左边矩阵中每一行行向量为基所表示的空间中去。更抽象的说,一个矩阵可以表示一种线性变换。很多同学在学线性代数时对矩阵相乘的方法感到奇怪,但是如果明白了矩阵相乘的物理意义,其合理性就一目了然了。&/p&&h2&&b&3.方差&/b&&/h2&&p&那么考虑,如何选择一个方向或 者基才是最优的?观察下图&/p&&figure&&img src=&https://pic3.zhimg.com/v2-aa62b2b57bc6c169bb3a9_b.jpg& data-size=&normal& data-rawwidth=&539& data-rawheight=&410& class=&origin_image zh-lightbox-thumb& width=&539& data-original=&https://pic3.zhimg.com/v2-aa62b2b57bc6c169bb3a9_r.jpg&&&figcaption&周志华《机器学习》插图&/figcaption&&/figure&&p&我们将所有的点分别向两条直线做投影,基于前面PCA最大可分思想,我们要找的方向是降维后损失最小,可以理解为投影后的数据尽可能的分开,那么这种分散程度可以用数学上的方差来表示,方差越大数据越分散。方差公式如下:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=Var%28a%29+%3D+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7B%7B%28a_i-%5Cmu%29%7D%5E2%7D& alt=&Var(a) = \frac{1}{m}\sum_{i=1}^{m}{{(a_i-\mu)}^2}& eeimg=&1&&&/p&&p&对数据进行了中心化后(可以方便后面的操作):&/p&&p&&img src=&https://www.zhihu.com/equation?tex=Var%28a%29+%3D+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7B%7Ba_i%7D%5E2%7D& alt=&Var(a) = \frac{1}{m}\sum_{i=1}^{m}{{a_i}^2}& eeimg=&1&&&/p&&p&现在我们已经知道了以下几点:&/p&&ul&&li&对原始样本进行(线性变换)基变换可以对原始样本给出不同的表示&/li&&li&基的维度小于数据的维度可以起到降维的效果&/li&&li&对基变换后新的样本求其方差,选取使其方差最大的基&/li&&/ul&&p&那么在下面我们来考虑一个新的问题&/p&&p&&br&&/p&&p&上面我们导出了优化目标,但是这个目标似乎不能直接作为操作指南(或者说算法),因为它只说要什么,但根本没有说怎么做。所以我们要继续在数学上研究计算方案。&/p&&p&&br&&/p&&h2&&b&4.协方差&/b&&/h2&&p&从二维降到一维可以使用方差最大来选出能使基变换后数据分散最大的方向(基),但如果遇到高维的变换,当完成第一个方向(基)选择后,第二个投影方向应该与第一个“几乎重合在一起”,这显然是没有用的,因此要有其它的约束条件。我们希望两个字段尽可能表示更多的信息,使其不存在相关性。&/p&&p&数学上用协方差表示其相关性:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=Cov%28a%2Cb%29+%3D+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_i+b_i& alt=&Cov(a,b) = \frac{1}{m}\sum_{i=1}^{m}a_i b_i& eeimg=&1&&&/p&&p&当&img src=&https://www.zhihu.com/equation?tex=Cov%28a%2Cb%29%3D0& alt=&Cov(a,b)=0& eeimg=&1&& 时,表示两个字段完全独立,这也是我们的优化目标。&/p&&h2&&b&5.协方差矩阵&/b&&/h2&&p&我们想达到的目标与字段内方差及字段间协方差有密切关系,假如只有 &img src=&https://www.zhihu.com/equation?tex=a& alt=&a& eeimg=&1&& 、 &img src=&https://www.zhihu.com/equation?tex=b& alt=&b& eeimg=&1&& 两个字段,那么我们将它们按行组成矩阵 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& ,表示如下:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=X%3D%5Cleft%28+%5Cbegin%7Bmatrix%7D+a_1%26a_2%26...%26a_m%5C%5C+b_1%26b_2%26...%26b_m%5C%5C+%5Cend%7Bmatrix%7D%5Cright%29& alt=&X=\left( \begin{matrix} a_1&a_2&...&a_m\\ b_1&b_2&...&b_m\\ \end{matrix}\right)& eeimg=&1&&&/p&&p&然后我们用 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 乘以 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 的转置,并乘上系数 &img src=&https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bm%7D& alt=&\frac{1}{m}& eeimg=&1&& :&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bm%7DXX%5E%5Ctop%3D%5Cleft%28+%5Cbegin%7Bmatrix%7D+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i%5E2%7D%26%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i+b_i%7D%5C%5C+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i+b_i%7D%26%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Bb_i+%5E2%7D%5C%5C+%5Cend%7Bmatrix%7D%5Cright%29& alt=&\frac{1}{m}XX^\top=\left( \begin{matrix} \frac{1}{m}\sum_{i=1}^{m}{a_i^2}&\frac{1}{m}\sum_{i=1}^{m}{a_i b_i}\\ \frac{1}{m}\sum_{i=1}^{m}{a_i b_i}&\frac{1}{m}\sum_{i=1}^{m}{b_i ^2}\\ \end{matrix}\right)& eeimg=&1&&&/p&&p&可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度的方差,而其它元素是 &img src=&https://www.zhihu.com/equation?tex=a& alt=&a& eeimg=&1&& 和 &img src=&https://www.zhihu.com/equation?tex=b& alt=&b& eeimg=&1&& 的协方差,然后会发现两者被统一到了一个矩阵的。&/p&&h2&&b&6.协方差矩阵对角化&/b&&/h2&&p&我们的目标是使 &img src=&https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_i+b_i+%3D+0& alt=&\frac{1}{m}\sum_{i=1}^{m}a_i b_i = 0& eeimg=&1&& ,根据上述推倒,可以看出我们的优化目标 &img src=&https://www.zhihu.com/equation?tex=C%3D%5Cfrac%7B1%7D%7Bm%7DXX%5E%5Ctop& alt=&C=\frac{1}{m}XX^\top& eeimg=&1&& 等价于协方差矩阵对角化。即除对角线外的其它元素( 如&img src=&https://www.zhihu.com/equation?tex=+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_i+b_i& alt=& \frac{1}{m}\sum_{i=1}^{m}a_i b_i& eeimg=&1&& )化为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。这样说可能还不是很明晰,我们进一步看下原矩阵与基变换后矩阵协方差矩阵的关系:&/p&&p&设原始数据矩阵 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 对应的协方差矩阵为 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& ,而 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 是一组基按行组成的矩阵,设 &img src=&https://www.zhihu.com/equation?tex=Y%3DPX& alt=&Y=PX& eeimg=&1&& ,则 &img src=&https://www.zhihu.com/equation?tex=Y& alt=&Y& eeimg=&1&& 为 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 对 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 做基变换后的数据。设 &img src=&https://www.zhihu.com/equation?tex=Y& alt=&Y& eeimg=&1&& 的协方差矩阵为 &img src=&https://www.zhihu.com/equation?tex=D& alt=&D& eeimg=&1&& ,我们推导一下 &img src=&https://www.zhihu.com/equation?tex=D& alt=&D& eeimg=&1&& 与 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& 的关系:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=D+%3D+%5Cfrac%7B1%7D%7Bm%7DYY%5E%5Ctop+& alt=&D = \frac{1}{m}YY^\top & eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=+%3D%5Cfrac%7B1%7D%7Bm%7D%28PX%29%28PX%29%5E%5Ctop& alt=& =\frac{1}{m}(PX)(PX)^\top& eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%3D+%5Cfrac%7B1%7D%7Bm%7DPX+X%5E%5Ctop+P%5E%5Ctop& alt=&= \frac{1}{m}PX X^\top P^\top& eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%3D+P%28%5Cfrac%7B1%7D%7Bm%7DX+X%5E%5Ctop%29+P%5E%5Ctop& alt=&= P(\frac{1}{m}X X^\top) P^\top& eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%3DPCP%5E%5Ctop& alt=&=PCP^\top& eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%3DP%5Cleft%28+%5Cbegin%7Bmatrix%7D+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i%5E2%7D%26%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i+b_i%7D%5C%5C+%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Ba_i+b_i%7D%26%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%7Bb_i+%5E2%7D%5C%5C+%5Cend%7Bmatrix%7D%5Cright%29P%5E%5Ctop& alt=&=P\left( \begin{matrix} \frac{1}{m}\sum_{i=1}^{m}{a_i^2}&\frac{1}{m}\sum_{i=1}^{m}{a_i b_i}\\ \frac{1}{m}\sum_{i=1}^{m}{a_i b_i}&\frac{1}{m}\sum_{i=1}^{m}{b_i ^2}\\ \end{matrix}\right)P^\top& eeimg=&1&&&/p&&p&可见,我们要找的 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 不是别的,而是能让原始协方差矩阵对角化的 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 。换句话说,优化目标变成了寻找一个矩阵 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& ,满足&img src=&https://www.zhihu.com/equation?tex=PCP%5E%5Cmathsf%7BT%7D& alt=&PCP^\mathsf{T}& eeimg=&1&&是一个对角矩阵,并且对角元素按从大到小依次排列,那么 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 的前 &img src=&https://www.zhihu.com/equation?tex=K& alt=&K& eeimg=&1&& 行就是要寻找的基,用 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 的前 &img src=&https://www.zhihu.com/equation?tex=K& alt=&K& eeimg=&1&& 行组成的矩阵乘以 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 就使得 &img src=&https://www.zhihu.com/equation?tex=X& alt=&X& eeimg=&1&& 从 &img src=&https://www.zhihu.com/equation?tex=N& alt=&N& eeimg=&1&& 维降到了 &img src=&https://www.zhihu.com/equation?tex=K& alt=&K& eeimg=&1&& 维并满足上述优化条件。&/p&&p&我们希望的是投影后的方差最大化,于是我们的优化目标可以写为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmax_%7BP%7D%5C+tr%28PCP%5E%5Ctop%29& alt=&\max_{P}\ tr(PCP^\top)& eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=s.t.+%5C+%5C+PP%5E%5Ctop%3DI& alt=&s.t. \ \ PP^\top=I& eeimg=&1&&&/p&&p&利用拉格朗日函数可以得到:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=J%28P%29%3Dtr%28PCP%5E%5Ctop%29%2B%5Clambda%28PP%5E%5Ctop-I%29& alt=&J(P)=tr(PCP^\top)+\lambda(PP^\top-I)& eeimg=&1&&&/p&&p&对 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& 求导有 &img src=&https://www.zhihu.com/equation?tex=CP%5E%5Ctop%2B%5Clambda+P%5E%5Ctop+%3D+0& alt=&CP^\top+\lambda P^\top = 0& eeimg=&1&& ,整理下即为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=CP%5E%5Ctop%3D%EF%BC%88-%5Clambda%EF%BC%89+P%5E%5Ctop+& alt=&CP^\top=(-\lambda) P^\top & eeimg=&1&&&/p&&p&于是,只需对协方差矩阵 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& 进行特征分解,对求得的特征值进行排序,再对 &img src=&https://www.zhihu.com/equation?tex=P%5E%5Ctop%3D%EF%BC%88P_1%2C+P_2%2C...%2CP_R%EF%BC%89& alt=&P^\top=(P_1, P_2,...,P_R)& eeimg=&1&& 取前 &img src=&https://www.zhihu.com/equation?tex=K& alt=&K& eeimg=&1&& 列组成的矩阵乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y。&/p&&h2&&b&7.PCA算法流程&/b&&/h2&&p&
从上面两节我们可以看出,求样本 &img src=&https://www.zhihu.com/equation?tex=x_i& alt=&x_i& eeimg=&1&& 的 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 维的主成分其实就是求样本集的协方差矩阵 &img src=&https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bm%7DXX%5E%5Ctop& alt=&\frac{1}{m}XX^\top& eeimg=&1&& 的前 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 个特征值对应特征向量矩阵 &img src=&https://www.zhihu.com/equation?tex=P& alt=&P& eeimg=&1&& ,然后对于每个样本 &img src=&https://www.zhihu.com/equation?tex=x_i& alt=&x_i& eeimg=&1&& ,做如下变换 &img src=&https://www.zhihu.com/equation?tex=y_i%3DPx_i& alt=&y_i=Px_i& eeimg=&1&& ,即达到降维的PCA目的。&/p&&p&下面我们看看具体的算法流程:&/p&&p&输入: &img src=&https://www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 维样本集 &img src=&https://www.zhihu.com/equation?tex=X%3D%28x_1%2Cx_2%2C...%2Cx_m%29& alt=&X=(x_1,x_2,...,x_m)& eeimg=&1&& ,要降维到的维数 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& .&/p&&p&输出:降维后的样本集 &img src=&https://www.zhihu.com/equation?tex=Y& alt=&Y& eeimg=&1&&&/p&&p&1.对所有的样本进行中心化 &img src=&https://www.zhihu.com/equation?tex=x_i%3Dx_i-%5Cfrac%7B1%7D%7Bm%7D%5Csum_%7Bj%3D1%7D%5E%7Bm%7Dx_j& alt=&x_i=x_i-\frac{1}{m}\sum_{j=1}^{m}x_j& eeimg=&1&&&/p&&p&2.计算样本的协方差矩阵&img src=&https://www.zhihu.com/equation?tex=C%3D%5Cfrac%7B1%7D%7Bm%7DXX%5E%5Cmathsf%7BT%7D& alt=&C=\frac{1}{m}XX^\mathsf{T}& eeimg=&1&&&/p&&p&3.求出协方差矩阵的特征值及对应的特征向量&/p&&p&4.将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P&/p&&p&5.Y=PX即为降维到k维后的数据&/p&&p&注意:&/p&&p&有时候,我们不指定降维后的 &img src=&https://www.zhihu.com/equation?tex=n%27& alt=&n'& eeimg=&1&& 的值,而是换种方式,指定一个降维到的主成分比重阈值 &img src=&https://www.zhihu.com/equation?tex=t& alt=&t& eeimg=&1&& 。这个阈值t在 &img src=&https://www.zhihu.com/equation?tex=%280%2C1%5D& alt=&(0,1]& eeimg=&1&& 之间。假如我们的 &img src=&https://www.zhihu.com/equation?tex=n& alt=&n& eeimg=&1&& 个特征值为 &img src=&https://www.zhihu.com/equation?tex=%5Clambda_1%5Cgeq%5Clambda_2%5Cgeq...%5Cgeq%5Clambda_n& alt=&\lambda_1\geq\lambda_2\geq...\geq\lambda_n& eeimg=&1&& ,则n'可以通过下式得到:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cfrac%7B%5Csum_%7Bi%3D1%7D%5E%7Bn%27%7D%5Clambda_i%7D%7B%5Csum_%7Bi%3D1%7D%5E%7Bn%7D%5Clambda_i%7D%5Cgeq+t& alt=&\frac{\sum_{i=1}^{n'}\lambda_i}{\sum_{i=1}^{n}\lambda_i}\geq t& eeimg=&1&&&/p&&p&&br&&/p&&h2&&b&8.PCA算法总结&/b&&/h2&&p&这里对PCA算法做一个总结。作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。为了克服PCA的一些缺点,出现了很多PCA的变种,比如为解决非线性降维的KPCA,还有解决内存限制的增量PCA方法Incremental PCA,以及解决稀疏数据降维的PCA方法Sparse PCA等。&/p&&p&
PCA算法的主要优点有:&/p&&ul&&li&仅仅需要以方差衡量信息量,不受数据集以外的因素影响。 &/li&&li&各主成分之间正交,可消除原始数据成分间的相互影响的因素。&/li&&li&计算方法简单,主要运算是特征值分解,易于实现。&/li&&/ul&&p&
PCA算法的主要缺点有:&/p&&ul&&li&主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。&/li&&li&方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。&/li&&/ul&&p&&br&&/p&&h2&&b&继续阅读&/b&&/h2&&p&在PCA降维过程中,当进行协方差矩阵上求解特征值时,如果面对维度高达 &img src=&https://www.zhihu.com/equation?tex=00& alt=&& eeimg=&1&&,可想而知耗费的计算量程平方级增长。面对这样一个难点,从而引出奇异值分解(SVD),利用SVD不仅可以解出PCA的解,而且无需大的计算量。&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic1.zhimg.com/v2-7a6471cabd5b3fa5c015e57a176c.jpg& data-image-width=&800& data-image-height=&600& class=&internal&&Betten:奇异值分解(SVD)原理&/a&&p&&br&&/p&&p&PCA(主成分分析)和LDA(线性判别分析)有很多的相似点,其本质是要将初始样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。&/p&&a href=&https://zhuanlan.zhihu.com/p/& data-draft-node=&block& data-draft-type=&link-card& data-image=&https://pic3.zhimg.com/v2-37ada4af1b34fcae798aa2_180x120.jpg& data-image-width=&4160& data-image-height=&3120& class=&internal&&Betten:LDA线性判别分析&/a&&p&&br&&/p&&h2&&b&参考资料&/b&&/h2&&p&&a href=&https://link.zhihu.com/?target=https%3A//book.douban.com/subject/2061116/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Pattern Recognition and Machine Learning&/a&&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//www.baidu.com/link%3Furl%3Dfg7a3GQOzBYhIzRp1M-Xm3Xy3Uy6Xqay7eUWQuKxrBmmRqKpdXOQT6gVPDa1_dYxCTea6Og8qepBWJr4urKZv_%26wd%3D%26eqid%3Ddcaaa4f7607& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《机器学习》&/a& &/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//www.cnblogs.com/jerrylead/archive//2020209.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&主成分分析(Principal components analysis)-最大方差解释&/a&&/p&
大概主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。首先考虑一个问题:对于正交…
&p&说起word embedding大家肯定先想到大名鼎鼎Word2Vec算法,的确,word2vec简单好用;而且word2vec也的确带火了一大批算法。我在这里先列一个总纲,以后有机会再逐个细写。&/p&&h2&1. Word2vec&/h2&&p&
google出品,绝对经典。记得16年参加一个论坛,会场上各种分享XX2vec基本上就是把word2vec稍微做下变形,应用到各自的场景。时至今日,word2vec仍是这个领域的首选。这里推荐下对我影响很大的一个博客&a href=&https://link.zhihu.com/?target=http%3A//blog.csdn.net/itplus/article/details/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&word2vec 中的数学原理详解(一)目录和前言&/a&。&/p&&p&这个是我见过的最好的写word2vec的博客,没有之一。现在word2vec至少有c版本(google开源),python版本(gensim)这两种比较成熟,反正我自己用过,其他的语言的实现,我没有用过,不敢乱说。&/p&&h2&2. Glove&/h2&&p&
Glove算法是斯坦福研究团队贡献的一个优秀的embedding算法。本人阅读过Glove的论文和源代码,感觉Glove算法是对word2vec算法的有效补充。&/p&&p&
a. word2vec算法主要训练模型的时候,主要考虑某个窗口内共现的词对生成训练样本,而Glove根据语料全局信息生成训练样本。&/p&&p&&b&b. 虽然Glove号称在某些方面超越了Word2vec算法,但本人做过实验,比如在NLP的中文文本分类领域,Glove算法并不比Word2vec算法强,&i&可如果把Glove的输出结果和word2vec的输出结果同事作为特征,最后的分类准确率比单独使用word2vec或者glove的输出结果高10个百分点&/i&。既然这样,何必纠结于两个算法谁更强呢,两个互为补充,该多好?&/b&&/p&&p&&b&
c. 好多英文NLP的问题,往往是已斯坦福团队提供的用Glove训练出的英文词向量作为基础输入的,由此可见Glove的重要性。&/b&&/p&&p&最后,源码,论文下面这个链接全都有&a href=&https://link.zhihu.com/?target=https%3A//nlp.stanford.edu/projects/glove/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Global Vectors for Word Representation&/a&.&/p&&p&&br&&/p&&p&&b&3.
Deep Walk&/b&&/p&&p&好多研究者利用word embedding的思想研究图中节点的表示问题,陆续贡献了诸多优秀算法,Deep Walk绝对是不得不提的一个,该算法利用Random walk方法巧妙的将图中相连的节点采样出来,形成一篇篇“节点文档”,接下来,就是直接用word2vec的思路了。其他不多说了,源代码在此&a href=&https://link.zhihu.com/?target=https%3A//github.com/phanein/deepwalk& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&phanein/deepwalk&/a&&/p&&p&&br&&/p&&p&4. &b&Node2vec&/b&&/p&&p&
与deepwalk类似,只不过node2vec没有采用random walk的方式生成“节点文档”,而是采用了另外一种方式,具体的,我这里先不多说,代码在此&a href=&https://link.zhihu.com/?target=http%3A//snap.stanford.edu/node2vec/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&node2vec&/a&&/p&&p&5. Structure2Vec&/p&&p&
该算法可以看做对deepwalk和node2vec的扩展,本人并没有精读完相关论文和代码,不敢多讲,论文链接在此
&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&9.pdf&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&&p&&/p&
说起word embedding大家肯定先想到大名鼎鼎Word2Vec算法,的确,word2vec简单好用;而且word2vec也的确带火了一大批算法。我在这里先列一个总纲,以后有机会再逐个细写。1. Word2vec google出品,绝对经典。记得16年参加一个论坛,会场上各种分享XX2vec基本…
&p&终于下定决心开始写下属于自己的第一篇“技术攻略”。&/p&&hr&&p&其实,目前网上已经有大量的文献资料介绍这种机器学习的算法——支持向量机 (Support Vector Machine),在这篇文章中,我不会花大量的笔墨去用简单通俗的语言让从未接触过该算法的人能理解该算法的基本原理。就我个人而言,基本原理可以很容易弄明白,但是你如何才能将SVM吃透,了解SVM的执行过程,从而能将其运用到科研中。在看本文之前,我推荐大家提前看一些文献、视频资料,提前了解SVM的基本原理。&/p&&p&&br&&/p&&p&可以参考知乎关于SVM的回答:&a href=&https://www.zhihu.com/question/& class=&internal&&支持向量机(SVM)是什么意思?&/a&&/p&&p&一个简短的、生动形象的介绍视频:&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/3liCbRZPrZA& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&youtu.be/3liCbRZPrZA&/span&&span class=&invisible&&&/span&&/a&&/p&&p&&br&&/p&&p&到这里,你应该对SVM有一个大概的理解了。之后,你需要深入理解SVM的执行过程,我主要的学习途径如下:&/p&&p&&br&&/p&&p&吴恩达(Andrew Ng)斯坦福公开课视频,涉及到SVM算法的两课如下:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/s8B4A5ubw6c& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lecture 7 | Machine Learning (Stanford)&/a&&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/bUv9bfMPMb4& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Lecture 8 | Machine Learning (Stanford)&/a&&/p&&p&&br&&/p&&p&如果英文理解上比较吃力,推荐下面的这一系列视频,讲解的很清楚,而我之后的内容也主要根据下面的这一系列公开课视频总结的:&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/Cz144VkaRUQ& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第7课 支持向量机,为什么能理解SVM的人凤毛麟角?07a&/a& &/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/qTJmR493Vrw& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第7课 支持向量机,为什么能理解SVM的人凤毛麟角?07b&/a& &/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/6c0cvcxcZEA& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第7课 支持向量机,为什么能理解SVM的人凤毛麟角?07c&/a& &/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/sPMjcdRlRG4& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第7课 支持向量机,为什么能理解SVM的人凤毛麟角?07d&/a& &/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//youtu.be/JRnNJ7gKpa0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第7课 支持向量机,为什么能理解SVM的人凤毛麟角?07e&/a& &/p&&p&&br&&/p&&p&以及,学习SVM必须知道的强大的libsvm库:&a href=&https://link.zhihu.com/?target=https%3A//www.csie.ntu.edu.tw/%7Ecjlin/libsvm/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&csie.ntu.edu.tw/~cjlin/&/span&&span class=&invisible&&libsvm/&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&上面列出了一些我学习SVM主要利用的一些网上资源,其他一些必要的文献阅读自不必说了。&/p&&hr&&p&在这一部分中,我总结出理解并执行SVM算法主要的九个步骤如下:&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 1: 求解支持平面的最大距离&/b&&/p&&p&利用SVM进行数据估计和预测,主要就是求解支持平面的最大距离,假设目前还未引入“Kernel”,只考虑线性可分的情况。存在两个支持平面:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cleft%5C%7B+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%7B%5Cgamma+_1%7D%3A%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%5Cbf%7Bx%7D%7D+%2B+b+%3D+1%7D%5C%5C+%7B%7B%5Cgamma+_2%7D%3A%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%5Cbf%7Bx%7D%7D+%2B+b+%3D+-+1%7D+%5Cend%7Barray%7D%7D+%5Cright.& alt=&\left\{ {\begin{array}{*{20}{c}} {{\gamma _1}:{{\bf{w}}^{\rm{T}}}{\bf{x}} + b = 1}\\ {{\gamma _2}:{{\bf{w}}^{\rm{T}}}{\bf{x}} + b = - 1} \end{array}} \right.& eeimg=&1&&&/p&&p&那么可以推导求解支持平面的最大距离为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmax+%5Cleft%28+%7Bd+%3D+%5Cfrac%7B2%7D%7B%7B%5Cleft%5C%7C+%7B%5Cbf%7Bw%7D%7D+%5Cright%5C%7C%7D%7D%7D+%5Cright%29& alt=&\max \left( {d = \frac{2}{{\left\| {\bf{w}} \right\|}}} \right)& eeimg=&1&&&/p&&p&受限于 &img src=&https://www.zhihu.com/equation?tex=%5Cleft%5C%7B+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%7B%5Cgamma+_1%7D%3A%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%2B+b+%5Cge+1%2C%7D%26%7Bif%7D%26%7B%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%3D+1%7D+%5Cend%7Barray%7D%7D%5C%5C+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%7B%5Cgamma+_2%7D%3A%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%2B+b+%5Cle+-+1%2C%7D%26%7Bif%7D%26%7B%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%3D+-+1%7D+%5Cend%7Barray%7D%7D+%5Cend%7Barray%7D%7D+%5Cright.& alt=&\left\{ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {{\gamma _1}:{{\bf{w}}^{\rm{T}}}{{\bf{x}}^{\left( i \right)}} + b \ge 1,}&{if}&{{y^{\left( i \right)}} = 1} \end{array}}\\ {\begin{array}{*{20}{c}} {{\gamma _2}:{{\bf{w}}^{\rm{T}}}{{\bf{x}}^{\left( i \right)}} + b \le - 1,}&{if}&{{y^{\left( i \right)}} = - 1} \end{array}} \end{array}} \right.& eeimg=&1&&&/p&&p&注:支持平面距离的推导过程省略。&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 2: 将Step 1中求解支持平面最大距离的问题转化为凸优化问题&/b&&/p&&p&转化为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmathop+%7B%5Cmin+%7D%5Climits_%7B%5Cbf%7Bw%7D%7D+%5Cfrac%7B%7B%7B%7B%5Cleft%5C%7C+%7B%5Cbf%7Bw%7D%7D+%5Cright%5C%7C%7D%5E2%7D%7D%7D%7B2%7D& alt=&\mathop {\min }\limits_{\bf{w}} \frac{{{{\left\| {\bf{w}} \right\|}^2}}}{2}& eeimg=&1&&&/p&&p&受限于 &img src=&https://www.zhihu.com/equation?tex=%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%5Cleft%28+%7B%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%28i%29%7D%7D+%2B+b%7D+%5Cright%29+%5Cge+1%2Ci+%3D+1%2C2+%5Ccdots+%2Cn& alt=&{y^{\left( i \right)}}\left( {{{\bf{w}}^{\rm{T}}}{{\bf{x}}^{(i)}} + b} \right) \ge 1,i = 1,2 \cdots ,n& eeimg=&1&&&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 3: 利用KKT条件法解决Step 2中的凸优化问题&/b&&/p&&p&求Step 2中的凸优化问题时,可以利用拉格朗日(Lagrange)乘子将问题转化为如下式子,该转化方程也被称为KKT条件法:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=L%5Cleft%28+%7B%7B%5Cbf%7Bw%7D%7D%2Cb%2C%7B%5Cbf%7B%5Calpha+%7D%7D%7D+%5Cright%29+%3D+%5Cfrac%7B1%7D%7B2%7D%7B%5Cleft%5C%7C+%7B%5Cbf%7Bw%7D%7D+%5Cright%5C%7C%5E2%7D+-+%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%7B%5Calpha+_i%7D%5Cleft%28+%7B%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%5Cleft%28+%7B%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%2B+b%7D+%5Cright%29+-+1%7D+%5Cright%29%7D& alt=&L\left( {{\bf{w}},b,{\bf{\alpha }}} \right) = \frac{1}{2}{\left\| {\bf{w}} \right\|^2} - \sum\limits_{i = 1}^m {{\alpha _i}\left( {{y^{\left( i \right)}}\left( {{{\bf{w}}^{\rm{T}}}{{\bf{x}}^{\left( i \right)}} + b} \right) - 1} \right)}& eeimg=&1&& (1)&/p&&p&对式子求梯度,并且当梯度为0时,该式可以取得最大值。&/p&&p&求梯度为:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cleft%5C%7B+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%5Cfrac%7B%7B%5Cpartial+L%7D%7D%7B%7B%5Cpartial+%7B%5Cbf%7Bw%7D%7D%7D%7D+%3D+0+%5CRightarrow+%7B%5Cbf%7Bw%7D%7D+%3D+%5Csum%5Climits_%7Bi+%3D+1%7D%5En+%7B%7B%5Calpha+_i%7D%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7D+%7D%5C%5C+%7B%5Cfrac%7B%7B%5Cpartial+L%7D%7D%7B%7B%5Cpartial+b%7D%7D+%3D+0+%5CRightarrow+%5Csum%5Climits_%7Bi+%3D+1%7D%5En+%7B%7B%5Calpha+_i%7D%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7D+%3D+0%7D+%5Cend%7Barray%7D%7D+%5Cright.& alt=&\left\{ {\begin{array}{*{20}{c}} {\frac{{\partial L}}{{\partial {\bf{w}}}} = 0 \Rightarrow {\bf{w}} = \sum\limits_{i = 1}^n {{\alpha _i}{y^{\left( i \right)}}{{\bf{x}}^{\left( i \right)}}} }\\ {\frac{{\partial L}}{{\partial b}} = 0 \Rightarrow \sum\limits_{i = 1}^n {{\alpha _i}{y^{\left( i \right)}}} = 0} \end{array}} \right.& eeimg=&1&& (2)&/p&&p&注:这里省略对Lagrange乘子法以及推广后的KKT条件法的介绍。&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 4: 将Step 3中利用KKT条件法转化凸优化问题得到的方程转化为其对偶问题的方程&/b&&/p&&p&进行该转化的两个个原因:&/p&&ol&&li&原方程中变量太多&/li&&li&为后续引入核函数模型做准备&/li&&/ol&&p&将(2)代入(1)后,得到最终转化为的对偶方程:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=L%5Cleft%28+%7B%7B%5Cbf%7B%5Calpha%7D%7D%7D+%5Cright%29+%3D+%5Cfrac%7B1%7D%7B2%7D%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%7B%5Calpha+_i%7D%7D+-+%5Cfrac%7B1%7D%7B2%7D%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%5Csum%5Climits_%7Bj+%3D+1%7D%5Em+%7B%7B%5Calpha+_i%7D%7B%5Calpha+_j%7D%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7By%5E%7B%5Cleft%28+j+%5Cright%29%7D%7D%7B%7B%5Cleft%28+%7B%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7D+%5Cright%29%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+j+%5Cright%29%7D%7D%7D+%7D+& alt=&L\left( {{\bf{\alpha}}} \right) = \frac{1}{2}\sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y^{\left( i \right)}}{y^{\left( j \right)}}{{\left( {{{\bf{x}}^{\left( i \right)}}} \right)}^{\rm{T}}}{{\bf{x}}^{\left( j \right)}}} } & eeimg=&1&&&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 5: 重新将对偶方程推广为凸优化问题&/b&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmathop+%7B%5Cmax+%7D%5Climits_%7B%5Cbf%7B%5Calpha+%7D%7D+L%5Cleft%28+%7B%5Cbf%7B%5Calpha+%7D%7D+%5Cright%29+%3D+%5Cfrac%7B1%7D%7B2%7D%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%7B%5Calpha+_i%7D%7D+-+%5Cfrac%7B1%7D%7B2%7D%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%5Csum%5Climits_%7Bj+%3D+1%7D%5Em+%7B%7B%5Calpha+_i%7D%7B%5Calpha+_j%7D%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7By%5E%7B%5Cleft%28+j+%5Cright%29%7D%7D%7B%7B%5Cleft%28+%7B%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7D+%5Cright%29%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+j+%5Cright%29%7D%7D%7D+%7D+& alt=&\mathop {\max }\limits_{\bf{\alpha }} L\left( {\bf{\alpha }} \right) = \frac{1}{2}\sum\limits_{i = 1}^m {{\alpha _i}} - \frac{1}{2}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {{\alpha _i}{\alpha _j}{y^{\left( i \right)}}{y^{\left( j \right)}}{{\left( {{{\bf{x}}^{\left( i \right)}}} \right)}^{\rm{T}}}{{\bf{x}}^{\left( j \right)}}} } & eeimg=&1&&&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cleft%5C%7B+%7B%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7Bs.t.%5Cbegin%7Barray%7D%7B%2A%7B20%7D%7Bc%7D%7D+%7B%7D+%5Cend%7Barray%7D%7B%5Calpha+_i%7D+%5Cge+0%2Ci+%3D+1%2C+%5Ccdots+%2Cm%7D%5C%5C+%7B%5Csum%5Climits_%7Bi+%3D+1%7D%5En+%7B%7B%5Calpha+_i%7D%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%7D+%3D+0%7D+%5Cend%7Barray%7D%7D+%5Cright.& alt=&\left\{ {\begin{array}{*{20}{c}} {s.t.\begin{array}{*{20}{c}} {} \end{array}{\alpha _i} \ge 0,i = 1, \cdots ,m}\\ {\sum\limits_{i = 1}^n {{\alpha _i}{y^{\left( i \right)}}} = 0} \end{array}} \right.& eeimg=&1&&&/p&&p&其中,只有支持向量的 系数&img src=&https://www.zhihu.com/equation?tex=%5Calpha_%7Bi%7D& alt=&\alpha_{i}& eeimg=&1&& 不为0,其他点的系数 &img src=&https://www.zhihu.com/equation?tex=%5Calpha_%7Bi%7D& alt=&\alpha_{i}& eeimg=&1&& 均为0。&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 6: 将松弛变量和惩罚函数引入Step 2中得到的凸优化问题&/b&&/p&&p&考虑到在大部分情况下,我们得到的数据均为线性不可分,因此,我们将松弛变量引入到原始的凸优化问题中。推广后的凸优化问题的方程如下:&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmathop+%7B%5Cmin+%7D%5Climits_%7B%5Cbf%7Bw%7D%7D+%5Cfrac%7B%7B%7B%7B%5Cleft%5C%7C+%7B%5Cbf%7Bw%7D%7D+%5Cright%5C%7C%7D%5E2%7D%7D%7D%7B2%7D+%2B+C%5Csum%5Climits_%7Bi+%3D+1%7D%5Em+%7B%7B%5Cxi+_i%7D%7D+& alt=&\mathop {\min }\limits_{\bf{w}} \frac{{{{\left\| {\bf{w}} \right\|}^2}}}{2} + C\sum\limits_{i = 1}^m {{\xi _i}} & eeimg=&1&&&/p&&p&受限于 &img src=&https://www.zhihu.com/equation?tex=%7By%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D%5Cleft%28+%7B%7B%7B%5Cbf%7Bw%7D%7D%5E%7B%5Crm%7BT%7D%7D%7D%7B%7B%5Cbf%7Bx%7D%7D%5E%7B%5Cleft%28+i+%5Cright%29%7D%7D+%2B+b%7D+%5Cright%29+%5Cge+1+-+%7B%5Cxi+_i%7D%2Ci+%3D+1%2C2+%5Ccdots+%2Cm& alt=&{y^{\left( i \right)}}\left( {{{\bf{w}}^{\rm{T}}}{{\bf{x}}^{\left( i \right)}} + b} \right) \ge 1 - {\xi _i},i = 1,2 \cdots ,m& eeimg=&1&&&/p&&p&其中 &img src=&https://www.zhihu.com/equation?tex=%5Cxi+_i%5Cgeq+0& alt=&\xi _i\geq 0& eeimg=&1&&&/p&&p&并且,&/p&&p&当 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& 越小,估计错的点越多;&/p&&p&当 &img src=&https://www.zhihu.com/equation?tex=C& alt=&C& eeimg=&1&& 越大,估计错的点越少,但容易过度拟合&/p&&p&--------------------------------------------------------------------------------------------&/p&&p&&b&Step 7: 对Step 6中存在松弛变量的凸优化问题重新推导Lagrange乘子的对偶函数&/b&&/p&&p&最终的方程为&/p&&p&&img src=&https://www.zhihu.com/equation?tex=%5Cmathop+%7B%5Cmax+%7D%5Climits_%7B%5Cbf%7B%5Calpha+%7D%}

我要回帖

更多关于 绝地求生自瞄官网大牛 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信