简介
Andrew Ng 深度学习课程,我本科做毕设时粗略看了一遍,但是当时知识积累不够。读研后开始系统接触自然语言处理,从头再扫一遍,发现第一遍时对很多概念理解得很模糊,第二次对一些重要概念和结论简要记录一下。这次先从自然语言处理部分开始看,因为这部分有一些相对独立于深度学习的知识,从这打头没影响。
序列模型——自然语言处理
1 词汇表征。
传统表示:one-hot。缺点是假设词语是相互独立的,难以刻画词语之间的相关性。
词嵌入(word embeddings) 是一种特征表示方法。能够达到降维效果,并且学习词语之间相关性。
词嵌入之后,可通过t-SNE进行可视化。[van der Maaten and Hinton 2008. Visualizing data using t-SNE]
2 使用词嵌入。
词嵌入的应用:命名实体识别、文本摘要、文本解析、指代消解。
词嵌入有效原因:训练词嵌入的模型在一个很大的语料库上。涉及到了迁移学习的思想。
词嵌入具有更强泛化能力,在已有词嵌入模型后,可以基于小样本数据建模。
3 词嵌入的特性。
词嵌入一个迷人特性是能够帮你实现类比推理。[mikolov 2013]
比较相似度常用的函数是余弦相似度。
4 词嵌入矩阵 & 5 学习词嵌入。
语言模型的基本思路,对每个单词用one-hot向量表示,假设向量为10000维,通过一个词嵌入矩阵,假设维10000*300,通过矩阵乘积得到一个300维的词嵌入向量。词嵌入向量再经过拼接作为神经网络的输入层和softmax层,预测词语输出。[Bengio.et.al 2003 A neural probabilistic language model]
6 word2vec。
word2vec算法。[mikolov et.al. 2013 Efficient Estimation of Word Representations in Vector Space]
skip-gram。从一个句子中随机选择一个词作为上下文context,从该词周围选择一个范围,例如前后五个词,再随机选择一个词语作为目标词target。通过context预测target,形成了监督学习问题。
skip-gram问题是在词汇表数量较大时,softmax计算变得异常困难。一种解决方法是使用分级softmax。
训练时对上下文进行采样的方法,一种自然思路是均匀分布采样,该方法难以捕捉频率较少的词出现次数。实践中一般采用启发算法估计上下分的分布。
7 负采样。
负采样 [mikolov et.al. 2013 Distributed Representations of Words and Phrases and their Compositionality]
在 context target对基础上增加正负标记,以10000维为例,高维的 softmax 转换为 10000个logistic分类器。
生成负标记的方法:根据词语对在语料库中的词频来估计分布。
8 GloVe
[pennington et.al. 2014 Glove Global vectors for word representation]。
9 情绪分类。
情绪分类一个难题是可能训练标记数量不够。
在小样本上同样可以进行情绪分类,方法是使用一个在大数据语料上学得的词嵌入矩阵,用该矩阵乘以 one-hot 向量,再将得到的词嵌入向量求平均。求平均后得到的特征向量输入进softmax,输出五个类别。该方法的缺陷是没有考虑词序。
改进的方法是将求平均改为使用RNN。
10 词嵌入除偏。
词嵌入的一个问题是会学习到性别、种族等偏见。
[bolukbasi at.al.man is to computer programmer as women to homemaker? debiasing word embeddings]
除偏的一个方法:首先确认偏见的方向,把描述性别的对应词向量相减求平均。然后对没有明显性别含义的词进行中和处理,区分有无明显性别含义要通过训练分类器解决。最后构造距离相等的词对。