Structured Learning
Sturctured Learning 引入
- 定义:
- X,Y 都是有结构的对象(objects with structures)
- Object:例如sequence,list,tree,bounding box等
- 函数:
- 应用场景:
- 语音识别:Speech signal(sequence)—>text(sequence)
- 翻译:Mandarin sentence(sequence)—>English sentence(sequence)
- 句法分析:sentence—>parsing tree(tree structure)
- 目标检测:Image—> bounding box
- 全文总结:long document—>summary(short paragraph)
- 检索:keyword—>search result(a list of webpage)
统一框架(两个步骤,三个问题):
步骤:
- 步骤1:Training:
F(x,y):是用来估算x和y的匹配程度的。 - 步骤2:Inference(Testing)
给定一个对象x,遍历y,找到一个y使得F(x,y)最大,并将这个最大值对应的y输出。
- 步骤1:Training:
最终的Framework就是:
- Framework在几个应用场景中的使用:
- 目标检测:
- 描述:通过bounding box强调某一物体在图片中的具体位置
- 例如:
- Framework:
- 步骤1:Training
这里的X是一个image,Y是一个bounding box,F(x,y)用来计算x和y的匹配程度。 - 步骤2:Inference(Testing):
输入的x是一幅图像,枚举所有可能的bounding box y(假设这幅图为n*m,那么bounding box y的可能就有n * (n-1)/2+[m * (m-1)/2]个),最终,我们要找出F(x,y)最大的那幅图(x,y):
- 步骤1:Training
- 全文总结:
- 描述:给定一个长document,在document中选择几个句子,并把句子串起来
- 例如:
- Framework:
- 步骤:
输入的X是一个document,Y是一个几个sentence(也就是一个小短文),F(x,y)表示X和Y的匹配度。
- 步骤:
- 检索:
- 描述:输入的X是一个关键词Q,系统会返回一系列网页Y
- 例如:
- Framework:
系统穷举所有网页的排序(下面的d103之类的是网页编号),每一个排序都计算F(x,y)
- 目标检测:
- Unified Framework的理解:
- Training:Find a function F可以看成是评估P(x,y)
- Test:Inference即求出P(x,y)的最大值。
那么我们是否可以将F(x,y)与P(x,y)等同起来呢?对于使用概率进行描述,这里存在一些缺点:a) 概率并不能解释所有东西;b) 0~1可能会构成很多阻碍。
- Framework同样适用于DNN:
Training:我们的输入是一个x,在经过DNN后输出N(x),这时候我们将y和N(x)进行对比,并且我们把||y-N(x)||^2定义为cost function。
Inference:这里我们只需要最小化cost function即可,也就是求-||y-N(x)||^2的最大值。 - 三个问题:
- Evaluation:F(x,y)长什么样?怎么样的F(x,y)能计算object x和object y的相容程度呢?是线性还是非线性呢(Graphical model)
- Inference:如何找到argmaxF(x,y)呢?穷举所有的y,这时如果y的值很大,怎么办呢?
- Training:给定training data,如何找到F(x,y),正确的pair得到的F(x,y)要大于其他的pair的F(x,y)。
Structured Linear Model
学习这个模型就是在学习上面的两个步骤,要学习上面的两个步骤,就需要求解下面这三个问题:
问题1:这个Specific form长什么样呢?
对于上图的解释:给定一个(x,y),求出对于每一个特征,(x,y)的特征强度Φ(x,y),Φ1(x,y)表示的就是(x,y)对于特征1的特征强度。w是可以从数据中learn出来的。
Φ(x,y)【即定义x和y的关系】
- 对于Object Detection:
抽取特征部分,我们可以使用DNN等:
- 对于Summarization:
- 对于Retrieval:
问题2:如何解决argmax这个问题?
假设这个问题已经被解决了。
问题3:找到一个F(x,y),其实就是找到准确的w
- 我们找到,要找到一个F(x,y),实际上就是找到一个合适的w,使得对于所有的training data,正确的(x,y)所求得的F(x,y)的值会大于其他的F(x,y)所求得的值。
w在F(x,y)中所起的作用
- 对于Object Detection:
由于y值可能有很多,那么如何找到一个w使得它满足上述条件呢?
w update的演算法
- w update的算法:
首先初始化w = 0,这时候可以计算出一个y,如果计算的y和真实的y不一样,这时候就需要更新w。 - Example:
下面有两组x值,抽取一个x1,穷举所有的y与w做运算,找到一个能让F(x1,y)最大的y值。我们发现计算出的y值和真实y值不一样,接下来我们需要更新w。
接下来,我们再选一个x2,穷举所有的y结合之前的w计算出一个y,我们发现计算出来的y和真实的y还是不一样,所以继续对w做更新操作。
再下来,我们取x1,穷举所有的y结合之前算出来的一个y,我们发现计算出来的y和真实的y是英语的,所以这个w对于x1是成立的,对x2做相同的工作,发现计算的y值和真实的y值是一致的,所以这时候我们就不再更新w值了。