代码改变世界

结构化学习(Structured Learning)

2018-07-07 14:25  bluemapleman  阅读(8674)  评论(0编辑  收藏  举报

本博客是针对李宏毅教授在youtube上上传的Machine Learning课程视频的学习笔记。课程链接

引入

我们之前学习到的学习模型的输入与输出一直以来都是向量(vector),但是在实际问题中,我们的输入输出可能是别的结构。

比如,我们可能会需要输入输出是序列(sequence)、列表(List)或者树(Tree)等等。

例子:

  • 结构学习的统一框架

    • 训练

    1.找到一个函数F
    2.F(x,y):评估对象x和y有多么匹配

    • 推断(测试)

    给定一个对象x,尝试获得$\widetilde{y}=arg\ max_{y\in Y}F(x,y)$

  • 对象识别任务:学习到一个边框以标记出图像中的某个对象

    • 训练过程

    • 推断过程

  • 总结任务:从给定的长文本中选择一系列句子,并将它们聚集成一个短的总结。

  • 检索任务:给定一个词,返回相关的结果list

  • 一种对统一框架的理解方式:概率

最大化x和y同时出现的几率,即样例特征和其标签同时出现的几率

图模型也是一种结构化学习。

不过这种理解方式也有一定问题:

  • 几率不能解释所有东西
  • 0-1的限制没有必要

  • 架构中的三个问题

  • F(x,y)应该是什么样子

  • 如何解“arg max”问题

  • 给定训练数据,如何找到F(x,y)

只要能解决上述三个问题,就能解决结构化学习的问题。(就像集齐三张神卡,就能做法老王233)

线性模型

结构化SVM

给序列贴标签