Structured Learning(上)
Introduction
结构化学习属于机器学习,但不属于深度学习。
在学习深度学习后我们一直接触的概念都是回归,分类之类的,很少接触到结构化学习的概念,为了更好得学习,我们在这补充学习Structured Learning。相比于之前学习的回归,输出一个标量或者预测,输出一个向量,结构化学习的输出更加复杂,可以是图像,可以是语句,可以是树结构,等等。
结构化学习有一个统一的框架。它的思路是在训练时找到一个F使F(X,Y)的值最大(输入输出最匹配),然后在测试时,会枚举所有情况代入计算,输出匹配度最高的。
它可以被用来图片的特征识别,如下。
其中输入X是一张图片,输出Y是它识别出来指定特征的框框位置。
我们要找到一个F,使F(X,Y)最大。
在测试时,枚举出所有可能的框框,输出能使F最大的那个。
其他应用,类似有特定关系文本摘录:
还有搜索信息的匹配:
怎么样能方便我们更加理解这个框架?
我们进行结构化学习的目的就是获得我们想要的,即与期望结果最近的。这可以从条件概率下手,P(y|x)就是在我们进行输入之后得到指定输出的概率,经过化简我们只需要求P(x,y),即要求P(x,y)最大,所以我们可以找一个F使F(x,y)最大,这是等效的。
那为什么不直接用概率呢?
因为概率毕竟只是一个0-1的数,不能适应所有情况,且把所有的值约束在0和1之间也是没有必要的。
有了这个学习框架,我们就会迎来3个与之相关的问题。
Problem1:这个F长什么样?
Problem2:我们怎么求最大值?
Problem3:给我们训练数据,我们怎么把F计算出来?
其实这三个问题也是机器学习普遍要解决的三个问题,就像在语音辨识里面就有类似的三个问题待解决。
联系一下深度学习,发现原理还是差不多的。DNN,是输入数据后经过处理输出,损失函数使用交叉熵,进而更新参数达成训练。结构化学习只是换成了求匹配度最高,可能训练方式不一样,但是思路基本一致。
Linear Model
关于第一个问题,为什么是线性模型呢?
输入和输出会进行多组特征匹配,然后这个F就由这些特征匹配度进行加权求和得到。所以究其本质还是一个线性模型。
当然这些特征可能是任意的有很多组,是机器识别的。
在这个特征识别中就有用到CNN。毕竟CNN就是专门干这个的。
问题二:怎么计算这个最大值?
这个我们先假设我们能算出来,直接跳到问题三。
问题三:我们如何得到这个F?
整体思路是:找到一个F,使任一训练数据的输入输出代入得到的值,比代入自身输入部分与其余任何可能的输出得到的值都大。
以下面这个凉宫春日识别为例,就是保证框框圈住凉宫春日对应的值最大。
真的有算法能够做到么?
如下:
就是定义初始参数w,然后一张图一张图的训练,先拿一张图,如果能使F最大的y不是真实的y,就采用图示规则更新w,待w不再改变时就训练完毕。
中间我们又遇到了问题二,还是先不管。
算法具体演示如下:
最后我们要进行验证,这个下一节讲SVM再说。
Comments NOTHING