『RNN 监督序列标注』笔记-第一/二章 监督序列标注

『RNN 监督序列标注』笔记-第一/二章 监督序列标注

监督序列标注(Supervised Sequence Labeling)与传统的监督模式分类(supervised pattern classification)的不同之处在与样本点不能被当作是独立的。

序列标注的特点

  • 输入和标签都具有强相关性。
  • 输入与标签的对应关系是未知的。

RNNs的优点与缺陷

优点

  • 上下文信息非常灵活(因为它们能够学习处哪些需要存储以及哪些需要遗忘)。
  • 能够支持各种形式的数据表达。
  • 即使序列存在扭曲失真也能进行识别。

标准 RNN的缺点

  • 使其存储长期信息非常困难。
    Long Short-Term Memory (LSTM; Hochreiter and Schmidhuber, 1997) is a redesign of the RNN architecture around special ‘memory cell’ units.
  • 它只能够单向学习上下文信息。(对于序列预测很有用,但是对于序列标注,往往利用上下午的双向信息会更有效)
    Bidirectional LSTM (Graves and Schmidhuber, 2005b) combines the benefits of long-range memory and bidirectional processing.
  • 单维度序列。
    Multidimensional LSTM (Graves et al., 2007)
  • 训练非常耗时。
    Hierarchical subsampling RNNs (Graves and Schmidhuber, 2009)

监督序列标注

  • 监督学习:用许多『输入-标签对』来进行训练。
  • 增强学习:仅仅利用标量值训练。
  • 无监督学习:没有训练信号。

模式分类 (Pattern Classification)

模式分类的对象是非序列数据,是序列数据的基础。

概率分类(Probabilistic Classification)

判别函数法(Discriminant Functions)

分类器直接给出类别标签,如:SVM。

概率分类法(Probabilistic Classification)

得出属于每一类的概率,其中选取概率最大值对应的类别 h(x) :

h(x)=argmaxkp(Ck|x)

  • 概率值的大小可以用于观察置信度的相对值。
  • 能够与其它概率算法联合使用。

训练概率分类器

令训练集为 S ,分类器参数为 ω ,输入样本为 x ,则有:

p(S|ω)=(x,z)Sp(zx,ω)

对于一个新输入的样本 x 后验概率分布为:
p(Ckx,S)=ωp(Ckx,ω)p(ωS)dω

ω 的维度非常高,上述积分式求解十分困难。又由于:
p(Ckx,S)p(Ckx,ωMAP)

实际使用最大后验(Maximum A Posteriori,MAP)估计来寻找 ωMAP 进行预测:
ωMAP=argmaxωp(ωS)=argmaxωp(S|ω)p(ω)p(S)=argmaxωp(S|ω)p(ω)

p(ω) 一般被作为正则化项(regularisation term),对于高斯分布有 p(ω)|ω|2 ,因此 p(ω) 被作为权重衰减项。而对于均匀分布,这一项可以移除,由此可以得到极大似然估计(ML) 的参数向量 ωML

ωML=argmaxωp(S|ω)=argmaxω(x,z)Sp(zx,ω)

生成模型与判别模型

  • 判别模型:直接计算所属类别后验概率 p(Ck|x)
  • 生成模型:首先生成类别条件密度函数 p(xCk) ,再利用贝叶斯公式,以及类别先验概率 p(Ck) ,来得到后验概率:
    p(Ck|x)=p(xCk)p(Ck)p(x)

    其中
    p(x)=kp(xCk)p(Ck)

    之所以称之为生成,是因为 p(x) 可以用于生成输入数据。
  • 生成模型优于判别模型的地方在于:各个类别可以独立训练;
  • 而判别模型当遇到有新类别加入时就需要重新训练。
  • 判别模型对于分类任务一般效果较好,因为判别模型致力于寻找类别分界面。

序列标注

序列标注的目的在于针对输入序列数据,根据给定的字母表,给出对应的标签序列。

例如翻译一段语音(语音识别)、理解一段视频中的手势(手势识别)以及蛋白质亚结构的预测(并不一定是时间序列)。

序列标注的假设

  • 序列之间相互独立且均匀分布。
  • 输出序列的长度不超过输入序列。

序列标注的任务

  • S 是训练集,满足分布 × ,其中每个元素是 (x,z) ,粗体代表序列
  • 是输入空间 =(M) ,对应输入样本为 M 个实数向量。
  • =L 是输出空间,对应输出目标序列 z=(z1,z2,,zU) ,其中有
    |z|=U|x|=T

    不论输入序列是否是时间序列,序列中的每个离散点都被作为时间步。序列标注的任务可以概括为:

使用 S 训练出一个序列标注算法 h: 将测试集 S× 进行尽可能精确地标记。

三种序列标注任务

按整合程度依次递增分别为:

时序(Temporal)分类 -> 时间段(Segment)分类 -> 序列(Sequence)分类

  • 序列分类:每个序列对应一个类。
  • 时间段分类:每个时间段对应一类。
  • 时序分类:运行各种输入和输出序列的对齐方式。

序列(Sequence)分类

序列分类相当于输出(标签)序列被限制为长度为1。这样每个输入序列都对应于一个单一的类别。其关键特征在于:

整个序列可以在分类之前就进行处理。

如果输入序列的长度固定或者使用 padding 的手段,输入序列就能以输入向量的形式,应用各种机器学习方法进行分类了,如 CNNs 和 SVM。即使输入长度已经固定,序列化的算法也能够更好地适应输入数据。

序列错误率可以定义为:

Eseq(h,S)=100S(x,z)S{0ifh(x)=z1otherwise

时间段(Segment)分类

时间段分类的输入时间段与输出时间段的对应关系式已知的。

其关键特点在于过去侧时间段的上下文信息能够被有效利用。

上下文能起到相当重要的作用。如图所示


『RNN 监督序列标注』笔记-第一/二章 监督序列标注_第1张图片

整体上看,这个单词显然是『defence』,然而但看中间这段,字母『n』却是模糊不清的。标准的模式识别算法,每次只能处理一个输入。一种变通办法是,将一段时间的数据做成时间窗,然后以时间窗为单位进行输入,然而问题在于时间窗的长度不仅使未知的,而且也是随着时间段而改变的。相应地,

时间段错误率可以定义为:

Eseg(h,S)=100Z(x,z)SHD(h(x),z)

其中
Z=(x,z)Sz

HD(p,q) 是 两个长度相同序列 p q 之间的 hamming 距离。

时序(Temporal)分类

时序分类是最一般的情况,唯一的限制在于标签序列的长度必须小于等于输入序列的长度,甚至也可以是空。

时序分类与时间段分类最大的区别在于,时序分类算法需要决定在序列的什么未知作出分类判断。

由于判断的边界未知,因此之前定义错误率的方式并不适用。
我们定义从 p q 最少要插入、删除、替换的数量为编辑距离 ED(p,q)

标签错误率可以定义为:

Elab(h,S)=100Z(x,z)SED(h(x),z)

注意这个错误率并不是真正的百分比,而可能会大于100。

你可能感兴趣的:(科研点滴,模式识别,神经网络)