Structured Learning(中)

Structured Learning回顾

结构化学习就是输出可以是各种东西,来帮助我们得到我们想要的结果。

file

file

结构化学习一个最典型的应用就是物体的识别。

file

上一节我们提到过处理Structured Learning,要搞清楚以下三个问题。

file

问题1:确定出模型。

file

问题2:推测出不同状态对应的值,要保证正确状态下的值最大。

file

file

问题3:找到或者说训练出这样一个函式使每一个正确位置(我们想得到的结果)代入比其余任意位置代入得到的值都大大,即保证识别的准确性。

file

本节我们按如下条理来学习结构化学习 SVM.

file

1. Separable case

这种情况就是可分离的情况,通俗了讲在这种情况下,我们可以得到一个函式使正确状态对应的值比其他的都大。

file

那么我们该如何其中的参数呢?引出Structured Perceptron算法。

对每一组数据如果使函式最大的y值不是真实的y,就改变w的值,改变的方法是后面加上一部分再减去一部分,如下图,加上的部分是真实值,思想就是让w离真实值近一点,减去的是当前错误的最大值,让w远离一点。

file

以上算法可行的依据是确定出最理想的w不会超过(R/δ)²次。

file

这部分的证明如下(简要了解):

file

file

file

file

file

file

根据上面的结论可以想办法让其训练得更快。

file

2.Non-separable case

所谓不可分离的情况是:我们想得到的结果代入到函式中不一定取到最大值,反过来说最大值对应的结果是有偏差的。

此时不能使得到理想中的最佳结果对应的值最大,我们就要减小误差尽量得到想要的值。

file

这时我们要做的是寻找一个w最大化降低这个误差C。

file

我们采用梯度下降算法。

这里的难点莫过于梯度的计算了。

file

然而当w不同时,最大值对应的y也不同。我们要把w划分成不同的区域,根据w的情况不同来确定用哪个y来参与计算。

file

我们计算出对应的梯度之后就能相应的改变w。

我们发现当前面的系数ŋ等于1时,我们其实就是在做structured perceptron.

为什么不直接structured perceptron?

因为structured perceptron每次都要看看是不是理想的值,不是就变,但是这是不可分离的情况不可能最理想的就是最大的,永远不可能等于。

file

3.Considering Errors

有时候我们想要的可能不需要那么准确,有些结果也在我们接受的范围内,所以我们要考虑到这个问题。

file

file

我们定义一个函数来描述一个y与真实的y之间的差距。

file

这样的话我们可以得到新的损失函数。

大概意思就是我们可以值有一点偏差,只要这个距离小就能勉强接受。

file

计算的话还是实验梯度下降算法,较之前的只是多加了一部分。

file

这一部分我们要使C'尽可能得小,我们不容易直接处理,但是可以借助不等式,我们去限制它的上界C,让它的上界足够小。这样就达到等效的结果。

file

证明如下(了解):

file

这里损失函数可以有很多种,如下图所示(先了解):

file

4.Regularization

相对于前面的知识,这里就相对简单了。回顾前面的知识,就是加上带参项使函式更平滑,降低参数的影响。

file

最终会得到w迭代式中会出现类似DNN中的权值衰减的效果。

file

5.Structured SVM

前面说了这么多,那么何为SVM?

我们要最小化左边的这个C.

又由于右边的Cn展开后表达式中含有最大值,所以我们可以换一种表达方式移项整理,使其变成一个约束条件:

对任意的y...

file

为了防止混淆,我们把右边的C换成ε,这个ε被称为松弛度,下面再说。

file

然后我们得到了什么,得到了在下面那个约束条件下求上面这个式子的最小值。

file

那么上面的松弛度该怎么理解,为什么会引出这个概念?

用下述实例来解释,我们看这个不等式,如果没有后面松弛度这一项,不一定能是所有的y代入都能大于等于右边的这个差距。所以后边的这一项相当于放宽界限,让参数的训练变得稍微简单一些,所以叫做松弛度!

file

file

file

经过这样的处理后,整个结构化学习就变成了一个可解问题。就是在下面的约束条件下寻找上面式子的最小值。

file

6.Cutting Plane Algorithm for Structured SVM

训练时,在指定约束下寻找最小值就是下面这个情况。

约束会形成一个区域,在这个区域中寻找最小的C即可。

file

那么关键问题就在如何确定约束区域上了,这里我们采用Cutting Plane Algorithm(割平面算法)。

我们通过观察得知,约束有很多条,但是能起到作用的远没有那么多。我们需要向下述过程般的确定约束区域。

file

file

file

file

file

file

每次关键就是找出最违反约束的y加入到A中。

实际操作的原理还是找[△(y,y) + w·Ф(x, y)]最大的y。

file

file

然后不断加入,直到每一组数据的A集合都不在变化,最终的A集合即为我们寻找的有效约束区域。

file

下面的实例可能更加清楚得描述上述演算法。

file

file

file

file

file

7.Multi-class and binary SVM

多类和二元SVM,其实都是说的是对应的y的数量。

对应多类SVM来说,我们就需要训练k个w.我们改用vector来处理就好,训练不同的w时,x在不同位置。

file

file

在这个过程中我们可以自定义这个差距来控制达到我们想要的结果。

file

对于二元的来说y只有两个。

file

8.Beyond Structured SVM(open question)

对于结构化的SVM来说它经常会在前面结合DNN来使用,来获得更好的效果。

file

也可以同时训练DNN与SVM的参数。

file

当然也可以用纯DNN来处理一个问题。

file