要解决的问题
上篇说了,我们要进行统一框架的结构化学习要解决三个问题,其实第一个和第三个问题是有联系的,如果第一个问题是F是个具体的形式,那第三个问题就好解决了:
线性模型
首先我们有一组样本x,y,每个对样本都用很多种特性来描述相互之间的关系大小:
那我们的F就可以定义为下面的式子,也就是所有关系的线性组合:
把他写成向量的形式就是:
比如那物体检测来举例,我可以设定一大堆的特征,但是貌似这些都较弱,不能很好的描述一些关系:
所以我们一般是用CNN来提取特征:
那第二个问题怎么办呢,我们可以先不管他,假设这个问题解决了:
来看看第三个问题,把F变成一个线性模型之后,我们的目的就变成找一个w,使得下面的式子成立,就是找到一个最大的:
我们还是用目标识别来举例,假设我们只用两个特征,我们把第一张图投射到平面上,可以看到好的特征应该是红色的,不好的是蓝色的:
第二张图:
然后我们要求的w就可以是一个直线,使得所有红色的点在w上投影的值都大于色点,同样红色的五角星也是:
蓝色的点有很多,怎么找到这个w呢,可以用下面的算法,只要w存在。 这个算法的意思就是说,只要没找到最匹配的y,就更新w,直到w不再更新:
来看看具体的步骤,首先初始化w为0,然后选择第一个训练样本,红色的是标签
y
^
1
\hat y^1
y^1,蓝色的是我们要找的y,第一次更新后,w就变成下面的样子:
然后用第二个样本2,我们发现标签
y
^
2
\hat y^2
y^2并不是投影最大的,于是我们更新了w,即加上了绿色的部分,得到了新的w:
这个时候再拿样本1来,我们发现最大的那个就是样本的标签
y
^
1
\hat y^1
y^1,因此不需要更新w了:
同样,再训练样本2,最大的y也是标签
y
^
2
\hat y^2
y^2,这样也不用更新w了,之后继续用样本1,2其实都不会再更新了,所以这个w就是我们要求的:
其实这个方法学过机器学习感知机的人应该会熟悉,就像是感知机在调整他那个斜率,直到把两边的样本分开为止,就是这个思想。
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵,图片来自李宏毅课件,侵删。