CRF介绍(转自知乎)

来源:互联网 发布:php代码 编辑:程序博客网 时间:2024/05/16 00:50

  首先什么是随机场呢,一组随机变量,他们样本空间一样,那么就是随机场。当这些随机变量之间有依赖关系的时候,对我们来说才是有意义的。
  

  那么为了简化某些问题来说,也为了这个图画出来能用,我们会在画图的时候要遵循一些假设和规则,比如马尔科夫独立性假设。按照这个假设和规则来画图,画出来的图会满足一系列方便的性质便于使用。
  
  马尔可夫独立性假设:对一个节点,在给定他所连接的所有节点的前提下,他与外界是独立的。
  
  就是说如果你观测到了这个节点直接连接的那些节点的值的话,那他跟那些不直接连接他的点就是独立的。
  
  形式上,我们是想把他设计成这个样子的,边可以传递信息,点与点之间通过边相互影响,如果观测到一个节点的取值或者这个节点的取值是常量,那么别的节点就无法通过这个节点来影响其他节点。所以对一个节点来说,如果用来连接外界的所有节点都被锁住了,那他跟外界就无法传递信息,就独立了。这比贝叶斯网络就直观多了,贝叶斯网络要判断两点之间独立还要看有没有v-structure,还要看边的指向。呐,满足马尔可夫独立性的随机场,就叫马尔可夫随机场。它不仅具有我刚才说的那些性质,除此之外,还等价于吉布斯分布。
  
  这些边具体是如何建模的呢,以什么形式记录这些概率信息的?
  
  贝叶斯网络每一条边是一个条件概率分布,P(X|Y),条件是父节点、结果是子节点。他有一个问题,就是当我知道A、B、C三个变量之间有相关关系,但是不知道具体是谁依赖谁,或者我不想先假设谁依赖谁,这个时候贝叶斯就画不出来图了。因为贝叶斯网络是通过变量之间的条件分布来建模整个网络的,相关关系是通过依赖关系(条件分布)来表达的。而马尔可夫随机场是这样,我不想知道这三个变量间到底是谁依赖谁、谁是条件谁是结果,我只想用联合分布直接表达这三个变量之间的关系。比如说两个变量A、B,这两个变量的联合分布是:
  
               

  这个分布表示,这条边的功能是使它连接的两点(A和B)趋同,当A = 0的时候B更可能等于0不太可能等于1,当A = 1的时候B更可能等于1不太可能等于0。这样一来你知道了三个变量之间的联合分布,那他们两两之间的条件分布自然而然就在里面。这样出来的图是等价于吉布斯分布的,就是说,你可以只在每个最大子团上定义一个联合分布(而不需要对每个边定义一个联合分布),整个图的联合概率分布就是这些最大子团的联合概率分布的乘积。当然这里最大子团的联合概率并不是标准的联合概率形式,是没归一化的联合概率,叫factor(因子),整个图的联合概率乘完之后下面再除一个归一化因子和就归一化了,最终是一个联合概率,每个子团记载的都是因子,是没归一化的概率,严格大于零,可以大于一。但关键是依赖关系、这些相关关系已经encode在里面了。这是马尔科夫随机场。
  
  条件随机场是指这个图里面一些点我已经观测到了,求,在我观测到这些点的前提下,整张图的分布是怎样的。就是given观测点,你去map inference也好你去做之类的事情,你可能不求具体的分布式什么。这里还要注意的是,马尔科夫随机场跟贝叶斯网络一样都是产生式模型,条件随机场才是判别式模型
  
  线性链条件随机场的形式是这样的,观测点是你要标注的这些词本身和他们对应的特征,例如说词性是不是专有名词、语义角色是不是主语之类的。隐节点,是这些词的标签,比如说是不是人名结尾,是不是地名的开头这样。这些隐节点(就是这些标签),依次排开,相邻的节点中间有条边,跨节点没有边(线性链、二阶)。然后所有观测节点(特征)同时作用于所有这些隐节点(标签)。至于观测节点之间有没有依赖关系,这些已经不重要了,因为他们已经被观测到了,是固定的。
  
  线性链的条件随机场跟线性链的隐马尔科夫模型一样,一般推断用的都是维特比算法。这个算法是一个最简单的动态规划。
  
  首先我们推断的目标是给定一个X,找到使P(Y|X)最大的那个Y嘛。然后这个Z(X),一个X就对应一个Z,所以X固定的话这个项是常量,优化跟他没关系(Y的取值不影响Z)。然后exp也是单调递增的,也不带他,直接优化exp里面。所以最后优化目标就变成了里面那个线性和的形式,就是对每个位置的每个特征加权求和。比如说两个状态的话,它对应的概率就是从开始转移到第一个状态的概率加上从第一个转移到第二个状态的概率,这里概率是只exp里面的加权和。那么这种关系下就可以用维特比了,首先你算出第一个状态取每个标签的概率,然后你再计算到第二个状态取每个标签得概率的最大值,这个最大值是指从状态一哪个标签转移到这个标签的概率最大,值是多少,并且记住这个转移(也就是上一个标签是啥)。然后你再计算第三个取哪个标签概率最大,取最大的话上一个标签应该是哪个。以此类推。整条链计算完之后,你就知道最后一个词去哪个标签最可能,以及去这个标签的话上一个状态的标签是什么、取上一个标签的话上上个状态的标签是什么,酱。这里我说的概率都是exp里面的加权和,因为两个概率相乘其实就对应着两个加权和相加,其他部分都没有变。

作者:赵孽
链接:https://www.zhihu.com/question/35866596/answer/74187736
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原创粉丝点击