一、词汇表示
1.One-hot向量
缺点: 每个词都被孤立起来。使得算法对相关词的泛化能力不强。
2.特征化表示
优点:对于不同的单词,算法具有较好的泛化能力。
可视化:将高维特征映射为二维空间进行可视化的算法:t-SNE算法。
二、词嵌入
1.词嵌入的使用
词嵌入模型广发应用在NLP领域,如命名实体识别、文本摘要、文本解析、指代消解等。
用词嵌入做迁移学习在NLP中的使用:
- 先从大量文本集中学习词嵌入或可以直接下载训练好的词嵌入模型。
- 将词嵌入模型迁移到新的少量标注训练集的任务中,可以使得低纬特征向量去表示原来的高维one-hot词向量,更加紧凑。
- (可选)在新任务上训练模型时,可以选择是否要用新数据微调词嵌入,通常不去操作,因为工作量较大。
2.词嵌入的特性
(1)词语类比问题
使用词嵌入来解决“男人与女人相比就像国王与____ 相比”之类的词语类比问题
将上述式子整理,词语类比问题转化为求两个向量的相似度。
(2)余弦相似度
一般规定使用余弦相似度来计算两个向量的相似度。
3.词嵌入矩阵
学习词嵌入实际上是学习一个嵌入矩阵。 任意单词的特征向量表示都可以通过用嵌入矩阵与one-hot向量相乘得到。即(300×10000)×(10000×1)=(300×1)。
三、构建词嵌入的算法
1.神经语言模型
(1)原理
常见方法是有一个固定历史窗口,每次只通过目标词前的窗口中的几个单词作为上下文,进行预测目标词。通过设置固定历史窗口的参数,可以适应很长或很短的句子。
(2)其他的context/target组合
- 若为建立语言模型,第一种用目标词的前几个单词作为上下文是常用做法。
- 若为建立好的词嵌入模型,后三种做法也有很好的效果。
2.Word2ec模型
(1)Skip-grams
抽取上下文和目标词配对。上下文不一定是目标单词前紧邻的n个单词,可以随机在目标词前后的一定词距选一个单词作为上下文词。
softmax函数:
缺点:Word2ec的Skip-grams模型中softmax这个步骤计算成本很大,在分母中对词汇表所有词求和。
优化方法:采用分级的softmax分类器,建立树型分类器,构造分类器树可根据使用单词频率,建立哈夫曼树。检索时通过二分查找,可以快速找到目标词所在的分类器,因此分母可以不必对词汇表所有词全部求和。计算成本 与 log(词汇表大小)成正比。
(2)CBOW(连续词袋模型)
获取中间词两边的上下文,然后用周围的词去预测中间的词。
3.负采样方法
(1)原理
对有标签的数据集进行处理,根据已知的1个正样本,再随机生成k个负样本,在每次迭代中选择k个负样本词去训练算法。
(2)k值的确定
- 小数据集k通常在5-20之间
- 大数据集k就选的小一些,k在2-5之间。
(3)负采样的优点
负采样解决Skip-grams模型中softmax函数对整个词汇表求和,导致计算成本很大的缺点。k+1个样本,其中k个负样本作为训练集,1个正样本作为验证集。每次迭代只需更新k+1个logistic二分类单元,因此比10000维的softmax分类器成本低很多。
(4)负采样的选取方法
按照经验频率选取,会选择很多语气助词;若按照独立分布,均匀随机选取,词语关联性效果不太好。
因此有学者总结一条经验,效果介于两者之间,按照以下分布进行负采样效果较好:
4.GloVe词向量
(1)符号定义
假设Xij是单词i在单词j上下文出现的次数。若上下文和目标词的范围相同,例如定义为出现于左右各10词以内的话,那么就有一种对称关系,即Xij=Xji。若对上下文的选择总是在目标词前的固定历史窗口的几个单词,那么Xij≠Xji。
(2)定义
GloVe词向量是上下文和目标词的关系开始明确化。对于GloVe我们可以定义上下文和目标词为任意两个位置相近的单词。例如,可以假设左右各10词的距离。
(3)GloVe优化原理
Xij是一个能够获取单词i和单词j出现位置相近或彼此接近的频率计数器。GloVe会将单词i和单词j之间的差距进行最小化处理。
四、情感分类
1.传统的神经网络
传统的神经网络训练情绪分类时,会忽略词序,只根据单词的好坏进行判断。若句子中出现“not good”等短语,算法无法正确得到情感分类。
2.RNN网络
采用多对一的RNN网络进行情绪分类,会考虑到词序,会有更好的效果。
五、词嵌入消除偏见
1.消除偏见的原因
比如“computer”就接近于“man”,“literature ”接近于“woman”,但是这些都是不对的观念。
2.消除偏见的方法
3.消除偏见实现原理
其中,是e在g方向上的投影,e向量减去,即可消除e向量在g方向的偏见影响。