引言
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
通常包括两部分:(1)实体边界识别;(2) 确定实体类别(人名、地名、机构名或其他)。
英语中的命名实体具有比较明显的形式标志(即实体中的每个词的第一个字母要大写),所以实体边界识别相对容易,任务的重点是确定实体的类别。和英语相比,汉语命名实体识别任务更加复杂,而且相对于实体类别标注子任务,实体边界的识别更加困难。
在做推荐系统或者智能音箱等应用时,NER的作用显得尤为重要,某些词的歧义可能会导致意想不到的后果。如下图,你可能会问:两辆面包车捐献给史密斯堡的是未来的学校还是叫“未来”的学校呢?
为了解决这个问题,Word-Window classification分类方法被提出,主要思想是从中心词附近的单词来进行判断,中心词是不是实体。和Skip-grim算法相似,也有一个窗口。
Word-Window classification
在进行分类训练时,上一课训练的词向量在这里派上用场了。假设现在中心词为Paris,窗口为5,每个词的词向量维度为,将一个窗口内所有的单词进行拼接后,得到拼接矩阵作为训练输入。
然后利用神经网络进行训练。随机初始化一个矩阵,定义神经元的激活函数为sigmoid。
这张图的顶点的计算结果,即为Paris在这段窗口中心的得分。
注:为神经元激活函数,z为第一层神经元计算后的输出结果。为了方便简写为。
Maximum Margin Objective Function
如果令S为“真”标签窗口的得分
(Museums in Paris are amazing)
令 为“假”标签窗口的得分
(Not all museums in Paris)
最后,定义在所有训练窗口上的优化目标函数为:
为什么用此优化函数的详细讲解
当损失函数变化值大于时,更新权重,否则停止更新。为了更新权重,利用神经网络的反向传播来完成。
神经网络计算过程:
即当矩阵输入模型后,计算过程动画展示如图所示。
具体的计算细节可以移步这里Neural Networks: Foundations
重点:反向传播
如图三所示。各层计算公式如下
为激活函数,在这里为sigmoid:
最后的输出为:
将神经网络简化为图的形式表达:
假如现在对权重矩阵进行更新,按照反向传播的计算,
计算细节及示例Computation Graphs and Backpropagation
经过层层迭代后,发现它其实就是一个链式求导的过程。
根据链式求导法则对求偏导:
即对其拆分,分别求的导数。
tips:在求时,会用到如下计算
,
计算
即:
的导数的计算结果如下:
所以的更新梯度结果为:
同样用链式法则对求偏导,
不难发现,链式求导的前两项是一样的,令 ,接下来仅需计算就行了:
tips:
的更新梯度结果为:
利用梯度下降更新方法对权重矩阵进行更新
关于学习率,正则化,激活函数,优化器等等的细节,建议看看吴恩达机器学习,应该会有收获。
若有错误或者表达不明确,欢迎大家批评指正!
[1]Stanford / Winter 2020 CS224n
[2]CS224n-2019 学习笔记(looperxx)