引言

结构化学习(一)中,我们讲了结构化学习需要解决三个问题。本文就探讨如何解决这三个问题。

线性模型

李宏毅机器学习——结构化学习(二)

我们先来想下,哪个问题最难?

假如F(x,y)F(x,y)有某种特别的形式,并且我们知道它的形式,那第三个问题就很容易解了。

所以我们先来看下这个特别的形式是怎样的。

问题1

假设我们说这个形式必须是线性的。
李宏毅机器学习——结构化学习(二)

给定一个x,yx,y对,首先我们用一组特征来描述它们。上图中的ϕ1,ϕ2,ϕ3\phi_1,\phi_2,\phi_3分别代表一个特征(标量)。

然后我们说F(x,y)F(x,y)定义成:

李宏毅机器学习——结构化学习(二)

可以整理一下,把它们用两个向量点乘表示:

李宏毅机器学习——结构化学习(二)
假如F(x,y)F(x,y)写成这样,那么问题3就不是一个问题。

这样讲很抽象,我们用一个例子来说明一下。以目标检测为例。

李宏毅机器学习——结构化学习(二)

xx是图像,而yy是边框。我们要定义ϕ\phi,把x,yx,y代进去要得到一个向量。

李宏毅机器学习——结构化学习(二)
那这个向量要怎么定义呢,可以随意定。比如用该向量里的某个维度是红色像素点在框框里面出现的百分比;绿色像素点在框框里面出现的百分比;或者是红色的在框框外的百分比;或者是框框的大小;

其实上面定义的很弱,可能无法正确识别。比较常用的是通过视觉单词(visual word),就是上图中类似正方形的小方块。

这里有人提了个问题,上面我们说的这些特征是需要人工标注呢还是通过模型自己抽取。

这里可以用模型自己抽取的,比如可以训练一个CNN,通过这个CNN输出一个向量,该向量能很好的代表边框里面的东西。
李宏毅机器学习——结构化学习(二)

如果我们想做摘要生成。

李宏毅机器学习——结构化学习(二)

我们也可以先自己定义一些特征,比如yy里面有没有包含"import"这个单词;或者$y$里面有没有包含"definition"这个单词;或者yy的长度;
也可以用DNN来抽取特征;

好了,现在第一个问题定义好了,接下来看下第二个问题。

问题2

李宏毅机器学习——结构化学习(二)
如果解上面这个问题?

我们从问题1的定义可以把F(x,y)F(x,y)写成wϕ(x,y)w \cdot \phi(x,y)

李宏毅机器学习——结构化学习(二)

我们一样需要穷举所有的yy,看哪个yy能让这个值最大。

这里我们假设已经解决了这个问题。

问题3

现在有很多带标签的训练数据

李宏毅机器学习——结构化学习(二)

希望F(x,y)=wϕ(x,y)F(x,y)= w \cdot \phi(x,y)ww。如上图,对所有的训练数据,我们希望正确的wϕ(xr,y^r)w \cdot \phi(x^r,\hat y^r) 要大于所有错误的wϕ(xr,y)w \cdot \phi(x^r,y)

此时所得到的ww就是我们想要的。那么要怎么做呢

假设现在要做的是目标检测,我们收集了一张图片x1x^1,我们知道x1x^1对应的边框y^1\hat y^1的大小和位置;同样的x2x^2也一样。

李宏毅机器学习——结构化学习(二)

假设x1x^1y^1\hat y^1(正确的边框)所形成的特征是红色的点。这里假设特征只有2维,为了能画到平面上。其他的yyx1x^1所形成的特征是蓝色的点。

李宏毅机器学习——结构化学习(二)

我们把这些点画出来。红色的点只有一个,而蓝色的点有很多个。

李宏毅机器学习——结构化学习(二)
因为这里还有x2x^2,我们说x2x^2y^2\hat y^2形成的是红色的星星,其他是蓝色的星星。注意x1,x2x^1,x^2看以看成是独立的。

李宏毅机器学习——结构化学习(二)

我们接下来要做的事情是,希望找到一个向量ww,然后我们上面的红色样本与蓝色样本点与这个ww做内积,希望得到的结果是,红色的星星所得到的内积结果是星星中最大的;红色的点所得到的内积结果是点中最大的。

李宏毅机器学习——结构化学习(二)

注意这里我们不能用点与星星比较,因为它们属于不用的图像。

那找ww这个问题难解决吗?其实没有想象的那么难。具体怎么做呢

这里有一个算法:
李宏毅机器学习——结构化学习(二)

翻译过来就是:

  • 首先初始化w=0w =0
    • do
      • 每个训练样本 (xr,y^r)(x^r,\hat y^r)
        • 找到使得wϕ(xr,y)w \cdot \phi(x^r,y)最大的yr\overset{\sim}y^r
          • yr=argmaxyYwϕ(xr,y)\overset{\sim}y^r = \arg \,\max_{y \in Y} w\cdot \phi(x^r,y) (问题2)
        • 如果 yry^r\overset{\sim}y^r \neq \hat y^r ,更新ww
          • ww+ϕ(xr,y^r)ϕ(xr,yr)w \rightarrow w +\phi(x^r,\hat y^r) -\phi(x^r,\overset{\sim}y^r)
    • unil ww不再更新

do里面是循环,直到util的条件满足。

如果我们要找的ww存在,这个算法最终会停止。

我们用个例子来说明下这个算法吧。还是以上面的目标检测为例。

首先看下这些点代表什么意思
李宏毅机器学习——结构化学习(二)

然后初始化w=0w = 0

李宏毅机器学习——结构化学习(二)

然后随便选取一个训练数据(现在共有2份数据),假设选的是圈圈(点)。这些点的分布是上图这样的。

然后需要根据现在的ww去看哪个它所形成的特征ϕ(x1,y)\phi(x^1,y)ww做内积后得到的值最大。但是现在因为w=0w=0,所以结果都是00,我们此时先随机选一个yy

李宏毅机器学习——结构化学习(二)
假设我们选的是红点下面的那个蓝点(感觉这个算法有个bug,必须限制第一次不能选择红点,否则算法直接结束了)。

此时我们选出的y1\overset{\sim}y^1y^\hat y不一样,我们需要调整ww

根据下面这个式子调整:

ww+ϕ(x1,y^1)ϕ(x1,y1) w \rightarrow w +\phi(x^1,\hat y^1) -\phi(x^1,\overset{\sim}y^1)

李宏毅机器学习——结构化学习(二)

此时我们找到了一个ww,接下来再选一个训练数据

李宏毅机器学习——结构化学习(二)

此时也一样,需要穷举所有的yy,使得那个式子最大,注意此时ww不是00了。

李宏毅机器学习——结构化学习(二)
然后我们找到了最大的星星。但是还是和真正的最大的星星不是同一个,因此,继续更新ww

李宏毅机器学习——结构化学习(二)
上式中的ϕ\phi项相减得到了一个绿色的向量。
李宏毅机器学习——结构化学习(二)

再加上原来的ww得到了一个新的ww

李宏毅机器学习——结构化学习(二)

接下来我们回到训练数据x1x^1

李宏毅机器学习——结构化学习(二)
发现用这个新的ww去计算内积,得到的y1\overset{\sim}y^1就是y^1\hat y^1,也就不需要更新ww了,对这份数据来说。但是还不一定适合数据x2x^2。所以还要继续。

继续选x2x^2

李宏毅机器学习——结构化学习(二)
假设此时发现选出的yy也是y^\hat y,因此就不需要更新ww了。

此时,整个算法结束。找出了想要的ww

参考

  1. 李宏毅机器学习

相关文章:

  • 2021-08-08
  • 2021-05-25
  • 2021-11-19
  • 2021-11-03
  • 2021-05-04
  • 2021-08-27
猜你喜欢
  • 2021-09-19
  • 2021-08-17
  • 2021-06-06
  • 2021-11-16
  • 2022-01-03
  • 2021-05-14
  • 2021-10-08
相关资源
相似解决方案