0
点赞
收藏
分享

微信扫一扫

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


引言

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

线性模型

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

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

假如李宏毅机器学习——结构化学习(二)_结构化学习_02有某种特别的形式,并且我们知道它的形式,那第三个问题就很容易解了。

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

问题1

假设我们说这个形式必须是线性的。

李宏毅机器学习——结构化学习(二)_目标检测_03

给定一个李宏毅机器学习——结构化学习(二)_机器学习_04对,首先我们用一组特征来描述它们。上图中的李宏毅机器学习——结构化学习(二)_目标检测_05分别代表一个特征(标量)。

然后我们说李宏毅机器学习——结构化学习(二)_结构化学习_02定义成:

李宏毅机器学习——结构化学习(二)_数据_07

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

李宏毅机器学习——结构化学习(二)_数据_08


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

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

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

李宏毅机器学习——结构化学习(二)_目标检测_11是图像,而李宏毅机器学习——结构化学习(二)_机器学习_12是边框。我们要定义李宏毅机器学习——结构化学习(二)_机器学习_13,把李宏毅机器学习——结构化学习(二)_机器学习_04代进去要得到一个向量。

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


那这个向量要怎么定义呢,可以随意定。比如用该向量里的某个维度是红色像素点在框框里面出现的百分比;绿色像素点在框框里面出现的百分比;或者是红色的在框框外的百分比;或者是框框的大小;

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

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

这里可以用模型自己抽取的,比如可以训练一个CNN,通过这个CNN输出一个向量,该向量能很好的代表边框里面的东西。

李宏毅机器学习——结构化学习(二)_目标检测_16

如果我们想做摘要生成。

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

我们也可以先自己定义一些特征,比如李宏毅机器学习——结构化学习(二)_机器学习_12里面有没有包含"import"​​​这个单词;或者$y$里面有没有包含"definition"​​​这个单词;或者李宏毅机器学习——结构化学习(二)_机器学习_12的长度;
也可以用DNN来抽取特征;

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

问题2

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


如果解上面这个问题?

我们从问题1的定义可以把李宏毅机器学习——结构化学习(二)_结构化学习_02写成李宏毅机器学习——结构化学习(二)_数据_22

李宏毅机器学习——结构化学习(二)_目标检测_23

我们一样需要穷举所有的李宏毅机器学习——结构化学习(二)_机器学习_12,看哪个李宏毅机器学习——结构化学习(二)_机器学习_12能让这个值最大。

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

问题3

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

李宏毅机器学习——结构化学习(二)_数据_26

希望李宏毅机器学习——结构化学习(二)_数据_27李宏毅机器学习——结构化学习(二)_机器学习_28。如上图,对所有的训练数据,我们希望正确的李宏毅机器学习——结构化学习(二)_机器学习_29 要大于所有错误的李宏毅机器学习——结构化学习(二)_数据_30

此时所得到的李宏毅机器学习——结构化学习(二)_机器学习_28就是我们想要的。那么要怎么做呢

假设现在要做的是目标检测,我们收集了一张图片李宏毅机器学习——结构化学习(二)_机器学习_32,我们知道李宏毅机器学习——结构化学习(二)_机器学习_32对应的边框李宏毅机器学习——结构化学习(二)_目标检测_34的大小和位置;同样的李宏毅机器学习——结构化学习(二)_初始化_35也一样。

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

假设李宏毅机器学习——结构化学习(二)_机器学习_32李宏毅机器学习——结构化学习(二)_目标检测_34(正确的边框)所形成的特征是红色的点。这里假设特征只有2维,为了能画到平面上。其他的李宏毅机器学习——结构化学习(二)_机器学习_12李宏毅机器学习——结构化学习(二)_机器学习_32所形成的特征是蓝色的点。

李宏毅机器学习——结构化学习(二)_数据_41

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

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


因为这里还有李宏毅机器学习——结构化学习(二)_初始化_35,我们说李宏毅机器学习——结构化学习(二)_初始化_35李宏毅机器学习——结构化学习(二)_结构化学习_45形成的是红色的星星,其他是蓝色的星星。注意李宏毅机器学习——结构化学习(二)_目标检测_46看以看成是独立的。

李宏毅机器学习——结构化学习(二)_数据_47

我们接下来要做的事情是,希望找到一个向量李宏毅机器学习——结构化学习(二)_机器学习_28,然后我们上面的红色样本与蓝色样本点与这个李宏毅机器学习——结构化学习(二)_机器学习_28做内积,希望得到的结果是,红色的星星所得到的内积结果是星星中最大的;红色的点所得到的内积结果是点中最大的。

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

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

那找李宏毅机器学习——结构化学习(二)_机器学习_28这个问题难解决吗?其实没有想象的那么难。具体怎么做呢

这里有一个算法:

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

翻译过来就是:

  • 首先初始化李宏毅机器学习——结构化学习(二)_目标检测_53
  • ​do​
  • 每个训练样本李宏毅机器学习——结构化学习(二)_结构化学习_54
  • 找到使得李宏毅机器学习——结构化学习(二)_初始化_55最大的李宏毅机器学习——结构化学习(二)_目标检测_56
  • 李宏毅机器学习——结构化学习(二)_机器学习_57
  • 如果李宏毅机器学习——结构化学习(二)_机器学习_58,更新李宏毅机器学习——结构化学习(二)_目标检测_59
  • 李宏毅机器学习——结构化学习(二)_目标检测_60
  • ​unil​​​李宏毅机器学习——结构化学习(二)_初始化_61不再更新

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

如果我们要找的李宏毅机器学习——结构化学习(二)_机器学习_28存在,这个算法最终会停止。

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

首先看下这些点代表什么意思

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

然后初始化李宏毅机器学习——结构化学习(二)_数据_64

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

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

然后需要根据现在的李宏毅机器学习——结构化学习(二)_机器学习_28去看哪个它所形成的特征李宏毅机器学习——结构化学习(二)_机器学习_67李宏毅机器学习——结构化学习(二)_机器学习_28做内积后得到的值最大。但是现在因为李宏毅机器学习——结构化学习(二)_机器学习_69,所以结果都是李宏毅机器学习——结构化学习(二)_数据_70,我们此时先随机选一个李宏毅机器学习——结构化学习(二)_机器学习_12

李宏毅机器学习——结构化学习(二)_数据_72


假设我们选的是红点下面的那个蓝点(感觉这个算法有个bug,必须限制第一次不能选择红点,否则算法直接结束了)。

此时我们选出的李宏毅机器学习——结构化学习(二)_结构化学习_73李宏毅机器学习——结构化学习(二)_结构化学习_74不一样,我们需要调整李宏毅机器学习——结构化学习(二)_机器学习_28

根据下面这个式子调整:

李宏毅机器学习——结构化学习(二)_初始化_76

李宏毅机器学习——结构化学习(二)_数据_77

此时我们找到了一个李宏毅机器学习——结构化学习(二)_机器学习_28,接下来再选一个训练数据

李宏毅机器学习——结构化学习(二)_初始化_79

此时也一样,需要穷举所有的李宏毅机器学习——结构化学习(二)_机器学习_12,使得那个式子最大,注意此时李宏毅机器学习——结构化学习(二)_机器学习_28不是李宏毅机器学习——结构化学习(二)_数据_70了。

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


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

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


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

李宏毅机器学习——结构化学习(二)_数据_87

再加上原来的李宏毅机器学习——结构化学习(二)_机器学习_28得到了一个新的李宏毅机器学习——结构化学习(二)_机器学习_28

李宏毅机器学习——结构化学习(二)_初始化_90

接下来我们回到训练数据李宏毅机器学习——结构化学习(二)_机器学习_32

李宏毅机器学习——结构化学习(二)_初始化_92


发现用这个新的李宏毅机器学习——结构化学习(二)_机器学习_28去计算内积,得到的李宏毅机器学习——结构化学习(二)_结构化学习_73就是李宏毅机器学习——结构化学习(二)_目标检测_34,也就不需要更新李宏毅机器学习——结构化学习(二)_机器学习_28了,对这份数据来说。但是还不一定适合数据李宏毅机器学习——结构化学习(二)_初始化_35。所以还要继续。

继续选李宏毅机器学习——结构化学习(二)_初始化_35

李宏毅机器学习——结构化学习(二)_数据_99


假设此时发现选出的李宏毅机器学习——结构化学习(二)_机器学习_12也是李宏毅机器学习——结构化学习(二)_结构化学习_74,因此就不需要更新李宏毅机器学习——结构化学习(二)_机器学习_28了。

此时,整个算法结束。找出了想要的李宏毅机器学习——结构化学习(二)_机器学习_28

参考

  1. ​​李宏毅机器学习​​


举报

相关推荐

0 条评论