1. 回顾结构学习
1.1 结构学习的统一框架
结构学习的统一框架可以分为下面的两个部分
第一步通过训练得到函数,第二部给定数据,找到最符合的 y 。
1.2 结构学习要解决的三个问题
主要需要解决的如下的三个问题
首先要确定的问题是,找到函数 F(x,y) 的表示形式。第二个问题是,如果给定了一个 F(x,y) 和输入数据 x 如何找到对应的最大的 y ,这个一般假设是通过穷举的方法得到的。最后需要解决的问题是给定了训练数据 x 如何得到分类用模型 F(x,y) 。
这里之前有一个问题一直困扰我, 为什么第二步感觉很像测试的时候用的方法,却放在训练的前面?实际上是因为在训练的过程中有寻找最大值的过程,所以需要先解决如何寻找最大值的问题。
1.3 以目标检测为例进行说明
下面将以目标检测为例进行说明,当然除了目标检测还有其他的应用,如下图所示
可以使用不规则的形状将目标标注出来,可以使用不同的颜色标注出人的不同部位,进而完成动作的识别。在这里我们以简单的边界框的目标检测为例进行说明,同样是分为估计(evaluation),推理(Inference)和训练(Training)三个问题。
1.3.1 估计(evaluation)
估计的问题实际上就是构建特征及函数的过程,如下图所示
其中输入的数据 x 试图向,y是将凉宫春日标记出的边界框,而 F(x,y) 是由一系列 x,y 构成的特征的线性组合。
1.3.2 推理(Inference)
推理的过程实际上就是,假设现在已经存在了一个 F(x,y) ,如果给定一个输入 x ,如何找到使 F(x,y) 的 y 值。如下图所示
上面的每一个框的位置实际上就是一个 y ,我们需要做的也就是当给定一个输入数据 x (其实就是这样图像),找到最为匹配(使得 F(x,y) 的值最大的那一个)。
推理这部分中,具体怎样找出最好的那个 y 实际上是假设已经找出来的,但是却又没有给出具体的方法如何找出,主要原因在于这个过程对于具体问题是需要具体讨论的。在目标检测中常用的是:Branch and Bound algorithm、Selective Search ;在句子标注中常用的是:Viterbi Algorithm;或者也可以使用遗传算法进行搜索。但是这里总是假设这个 y 是已经得到了的。
1.3.3训练(Training)
经过训练之后,我们希望模型可以实现下面这样的功能
对于输入的训练数据,只有与给定的输入数据相对应的 y 才会获得最大的标签值。在这里我们认为第一二个问题已经得到了解决,因此忽略它们重点讨论第三个问题。
2. 结构感知器
假设这里存在这样的权重 w 可以使得没一张图像都可以找到与自己目标对应的边界框。此时就可以只用之前在线性模型那一节课介绍的知识对
2.1 结构感知器收敛的证明
要证明的结论是,对于可分的案例,我们通过结构感知器仅仅需要迭代