Skip to content

progress

memeda edited this page Aug 30, 2016 · 1 revision

进展

  1. 阶段一:完成基础模型构建 [已完成]

    针对CWS, POSTAG, NER 任务,完成基础模型搭建。

    我们使用两种输入方式(随机初始化的Embedding,随机初始化的Embedding + 大规模未标注语料上得到的Embedding构成的双通道),使用BI-LSTM做表示学习,用3中预测方法(基于每个位置的分类、使用前一个Tag信息、CRF全局预测)做预测。

    对每个任务,我们基本实验了6种模型,得到了各自的实验结果,并将结果与LTP做比较;结果见Issues或下面链接。

  2. 阶段二:探索具有更高准确率或更高速度的模型 [进行中]

    更高准确率的探索,目前主要做的尝试有:

    1. 改变Embedding组合的方式

      之前的模型使用的Merge方式。即对x1, x2我们使用 x = Rectify(w1 * x1 + w2 * x2) 的方式完成组合。

      现在我们使用更加常见的向量拼接(concatenate)方式。 比如dim(x1) = 50 , dim(x2) = 50, 则 dim( concatenate(x1, x2) ) = 100.

      这样做的一个直观影响是我们的网络变浅了。之前的Merge操作相当于一层MLP的线性变换+非线性变换。另一个影响是可能导致运算矩阵运算增多。

      如上面的例子, x1 50维, x2 50维, 下一层为100维,那么Merge的运算量为 50 * 50 * 50 * 2 + 100 * 50 * 50 = 5^5(假设Mergeh后的结果也为50维, 则Merge矩阵为 50 * 50) , 而拼接后的运算量为100 * 100 * 100 = 10^5

      当然其实速度差异不显著。准确率上,目前还只做了与+特征联合的效果,没有做仅改变组合方式的实验。所以目前没有结论。[TODO]

    2. 加手工特征

      手工特征的模式从LTP中获得。

      在CWS任务上,加入的特征有: 上下文,基于训练集统计的词典特征(以改字开始的词最大长度、过该字的最大长度、以该字结尾的最大长度),字符类别(数字、英文字母、标点、其他)

      在POSTAGER上,加入的特征有:词的前后缀信息(前3个字、前两个字、前一个字、后一个字、后两个字、后三个字)

    更快速度的探索,目前主要做的尝试有:

    1. 使用RNN,GRU代替LSTM结构

      替换为RNN后速度有约3倍的提升,但是效果下降较大,且在训练过程中极易出现梯度更新错误。GRU速度提升不显著(约1/3),效果有所下降。

      总的来说,不理想。我觉得可以放弃这个尝试。

    2. 使用MLP代替BI-LSTM做表示学习

      这个相当于倒退到多年以前,最开始用神经网络做序列标注的方法。使用拼接的上下文作为输入,使用MLP做表示学习。

      目前的实现结果显示,效果下降,速度提升较为明显(与隐层大小相关)。

      就目前看来,虽然效果下降,但是MLP的可并行性突出(如果我们使用 基于当前位置的分类 做为预测方法),因此我觉得这还是可以作为一种提高速度的尝试。

  3. 阶段三:总结模型 [TODO]

  4. 阶段四:实现模型 [TODO]