2.2 使用词嵌入(Using Word Embeddings)

之前Named entity识别的例子(即找出语句中的人名),每个单词采用的是one-hot编码。RNN模型能确定Sally Johnson是一个人名而不是一个公司名,是因为“orange farmer”是份职业,很明显“Sally Johnson”是一个人名(输出1)

如果用特征化表示方法,即用词嵌入作为输入训练好的模型,如果一个新的输入:“Robert Lin is an apple farmer.”,因为知道orangeapple很相近,那么算法很容易就知道Robert Lin也是一个人的名字

featurized representation的优点是可以减少训练样本的数目,前提是对海量单词建立特征向量表述。即使训练样本不够多,测试时遇到陌生单词,例如“durian cultivator”,根据之前海量词汇特征向量就判断出“durian”也是一种水果,与“apple”类似,而“cultivator”与“farmer”也很相似。从而得到与“durian cultivator”对应的应该也是一个人名。这种做法将单词用不同的特征来表示,即使是训练样本中没有的单词,也可以根据word embedding的结果得到与其词性相近的单词,从而得到与该单词相近的结果,有效减少了训练样本的数量

词嵌入能够达到这种效果,原因是学习词嵌入的算法会考察非常大的文本集

词嵌入做迁移学习的步骤:

  1. 先从大量的文本集中学习词嵌入,或者下载网上预训练好的词嵌入模型

  2. 用这些词嵌入模型迁移到新的只有少量标注训练集的任务中,比如用300维的词嵌入来表示单词。好处就是可以用更低维度的特征向量代替原来的10000维的one-hot向量。尽管one-hot向量很快计算,但学到的用于词嵌入的300维的向量会更加紧凑

  3. 当在新的任务上训练模型,而在命名实体识别任务上只有少量的标记数据集,可以选择要不要继续微调,用新的数据调整词嵌入。但实际中只有第二步中有很大的数据集才会这样做,如果标记的数据集不是很大,通常不会在微调词嵌入上费力气

当任务的训练集相对较小时,词嵌入的作用最明显,所以它广泛用于NLP领域

词嵌入和人脸编码有很多相似性,训练了一个Siamese网络结构,这个网络会学习不同人脸的一个128维表示,然后通过比较编码结果来判断两个图片是否是同一个人脸,在人脸识别领域用编码指代向量f(x(i))f(x^{\left(i \right)})f(x(j))f(x^{\left( j\right)}),词嵌入的意思和这个差不多

人脸识别领域和词嵌入不同就是:

  • 在人脸识别中训练一个网络,任给一个人脸照片,甚至是没有见过的照片,神经网络都会计算出相应的一个编码结果

  • 学习词嵌入则是有一个固定的词汇表,比如10000个单词,学习向量e1e_{1}e10000e_{10000},学习一个固定的编码,即每一个词汇表的单词的固定嵌入

  • 人脸识别中的算法未来可能涉及到海量的人脸照片,而自然语言处理有一个固定的词汇表,没有出现过的单词就记为未知单词

Last updated