吴恩达-DeepLearning.ai-05 序列模型(二)
自然语言处理与词嵌入
1、词汇表征(特指词向量)
one-hot表示方法:没有捕捉相关词之间的特性,而是独立看待。
词嵌入(word2vec、glove):能够学习词之间的关系,表示词之间的相似性。
2、使用词嵌入
学习词嵌入的语料集合要非常的大,这样才会存储更多的信息,有利于对未知信息的理解。
当你的训练集数据量很小(有标签的)时对于词嵌入的训练来说效果不好,这时可以考虑使用“迁移学习“,把从大量互联网得到的文本进行词嵌入训练然后应用到你的数据集上,可以更好地表示词之间的相似性。
当你的词嵌入的训练集相对较小时效果一般会很明显(应用在:命名实体识别、文本摘要、文本解析,指代消除。在语言模型:机器翻译应用得少(你有大量的训练数据))。
人脸识别和词嵌入都是一个编码的过程:
人脸识别:海量的人脸,没有固定大小。
词嵌入:有一个固定的词汇表,超过范围的无能为力。
3.词嵌入的特性
词嵌入的一个重要特性:可以实现类比推理。
余弦相似度衡量形似性(词嵌入向量)。(内积越大相似度越大)
4、嵌入矩阵
大量词向量组成的矩阵。
5、学习词嵌入
通过词嵌入的学习可以进行语言模型的建立学习(比如预测句子的下一个词是什么?)
一种简单的语言模型。
其他的方法:word2vec(考虑上下文窗口)
6、word2vec模型
skip-grams算法:抽取中心词和上下文构建一个监督学习问题(利用给定的目标词预测上下文单词)。
存在的问题:对于softmax你每次想要计算式分母都会对所有的词进行求和计算(词很多),速度会很慢。
解决方法(加速softmax分类计算):使用分级的softmax分类器(形成了类似于树模型的层层递进方法),不用每次给所有的词进行计算求和,同时会形成常用词在上面,不常用词在底层,的经验法则,会减少分类的计算。
7、负采样(提高skip-grams中softmax算法的速度)
你有一个正样本,通过在词表中采样出k个负样本出来(每次迭代随机选择),k的选择一般原则是,数据集越大k越小,数据集越小k越大。
采样方法的选择:既不会选择词频低的,也不会选择词频高的(停用词问题),通过一个经验性的公式。
8、Glove词向量
glove代表用词表示的全局变量。
X_ij表示一个能够获取单词i和单词j出现位置相近时的频数的计数器。Glove模型做的就是将他们之间的距离进行最小化处理,通过下面的公式。
9、情感分类
引出情感分析问题:
传统的情感分析方法:
问题为:把每个词向量进行平均,这样就平均了每个词的信息,并且没有考虑词之间的关联信息。
基于RNN的方法为:
步骤:通过词袋得到文本的one-hot表示——训练得到词向量——把词向量带入RNN模型中进行训练(many-to-one)得到不同情绪的概率
特点:避免了传统方法的不足,使性能提高,同时捕捉了句子中词的相似性。