-
Notifications
You must be signed in to change notification settings - Fork 5
progress
-
阶段一:完成基础模型构建 [已完成]
针对CWS, POSTAG, NER 任务,完成基础模型搭建。
我们使用两种输入方式(随机初始化的Embedding,随机初始化的Embedding + 大规模未标注语料上得到的Embedding构成的双通道),使用BI-LSTM做表示学习,用3中预测方法(基于每个位置的分类、使用前一个Tag信息、CRF全局预测)做预测。
对每个任务,我们基本实验了6种模型,得到了各自的实验结果,并将结果与LTP做比较;结果见Issues或下面链接。
-
阶段二:探索具有更高准确率或更高速度的模型 [进行中]
更高准确率的探索,目前主要做的尝试有:
-
改变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]
-
加手工特征
手工特征的模式从LTP中获得。
在CWS任务上,加入的特征有: 上下文,基于训练集统计的词典特征(以改字开始的词最大长度、过该字的最大长度、以该字结尾的最大长度),字符类别(数字、英文字母、标点、其他)
在POSTAGER上,加入的特征有:词的前后缀信息(前3个字、前两个字、前一个字、后一个字、后两个字、后三个字)
更快速度的探索,目前主要做的尝试有:
-
使用RNN,GRU代替LSTM结构
替换为RNN后速度有约3倍的提升,但是效果下降较大,且在训练过程中极易出现梯度更新错误。GRU速度提升不显著(约1/3),效果有所下降。
总的来说,不理想。我觉得可以放弃这个尝试。
-
使用MLP代替BI-LSTM做表示学习
这个相当于倒退到多年以前,最开始用神经网络做序列标注的方法。使用拼接的上下文作为输入,使用MLP做表示学习。
目前的实现结果显示,效果下降,速度提升较为明显(与隐层大小相关)。
就目前看来,虽然效果下降,但是MLP的可并行性突出(如果我们使用 基于当前位置的分类 做为预测方法),因此我觉得这还是可以作为一种提高速度的尝试。
-
-
阶段三:总结模型 [TODO]
-
阶段四:实现模型 [TODO]
基于神经网络的序列标注任务 - WIKI (wiki语法见gollum)