赞
踩
本周是序列模型第二周的内容。
上一周有讲到,处理句子时对于每个单词的表示是通过一个one-hot向量,也就是需要一个词汇库,向量显示其位置。这种语言模型的缺陷是无法捕捉词语之间的相关性,泛化能力比较差。
引出一种特征表示的方法,每一个词语依然由一个向量表示,而向量的每个值代表一种特征,这样的向量表示可以使得相似的词语在表示上也更为接近,从而解决上述问题。
上述过程即称为词嵌入,将单词用多维特征向量表示,而为了可视化,我们可以把多维特征向量再嵌入到二维空间中,使用t-SNE算法。
词嵌入做迁移学习步骤:
词嵌入和之前人脸识别中提到的人脸编码有一些相似之处,都是用单独的向量来表示图片或者单词。
词嵌入有一个特性是它能做类比推理。单词里有一些对立的词汇,例如man,woman;king,queen等,如何在给出king的情况下自动给出对立单词,就需要用到这种类比推理。
将对立词汇向量作差,如上图所示两组词汇都是性别上的差异,因此作差后的值是非常相近的。
上述思想具体实现时也就是找到这样的词汇向量,使其能最大化下图的相似度函数
上述相似度函数通常使用的是余弦相似函数,公式如下,当两者很接近时,分子分母都会比较大且接近,整个函数值就接近1,从而推出两者非常相似。
词嵌入的学习,归根结底就是学习一个嵌入矩阵,这个嵌入矩阵的内容就是词汇表里每一个单词的特征向量表示。
E表示嵌入矩阵,ej表示词汇表中第j个单词的特征向量,Oj表示第j个单词的one-hot向量,实际编码的时候不会用矩阵乘法运算,效率很低,一般直接从嵌入矩阵中直接提取某列。
嵌入矩阵中的具体元素值需要学习得到,这也是词嵌入学习最关键的步骤,后续展开。
学习词嵌入,也就是要学习上节所说的嵌入矩阵E,该矩阵存了语料库中所有词语的特征向量。
学习词嵌入可以通过语言模型,将某个句子的所有词(可以取预测位的前四个词)的特征向量堆起来通过一个神经网络,预测输出句子之后下一个词,以此方式训练学习E矩阵。
刚才说到取前四个词作为神经网络输入,也可以取其他上下文形式,例如左右各四个词、前一个词、附近的一个词(skip gram)等。
上节说到通过语言模型来学习词嵌入,skip-gram模型是其中一种方式,即通过上下文的形式找附近的目标词。选定一个上下文词,建立与附近目标词的映射,要实现的就是给出一个上下文词,预测出其附近的词。
模型细节如下:
同上节所说一致,首先通过one-hot向量乘以嵌入矩阵得到嵌入向量,再通过一个softmax单元输出所有目标词可能的概率,E中有很多参数,包括softmax单元也有一些参数,通过优化下图中的损失函数,就能得到比较好的嵌入向量集。
上述方法有一个问题就是,softmax单元计算量过大,分母要进行一个大面积求和,解决方案这里提了一个方法——分级softmax分类器。具体是使用一棵分类树,通过检索判断预测的是哪一类,实践中常用的词放在上面,不常用的在更深层。
还有一个问题,如何对上下文c采样?由于各词汇出现频率不一致,例如for、of等出现的更多,为了确保不常见的词能被采样到,不能均匀随机地在训练集里取,而需要采用不同的启发来平衡(应该后续节会有详细解释)。
除了skip-gram,还有一种Word2Vec模型是CBow,它获得中间词两边的上下文,通过周围的词来预测中间的词。
上节有说到softmax计算成本太高,这节提出一个新的学习问题——负采样,可有效解决该问题。
构造一个新的监督学习问题,输入为上下文词-目标词,输出是一个0-1标签,表明目标词是否在上下文词附近(具体看如何定义附近),对于每一个词,有1个正样本,K个负样本。训练集小,K就大一点,反之亦然。
具体地说,就是将原有的softmax计算转变为10000个二分类logistics分类器(sigmoid),而每次迭代只需要训练其中K+1个样本,大大减少计算成本。
最后一个问题,这些负样本如何采样?由于每个词出现频率不同,随机选取不太合适,有一种研究者提出的常用方法,如上图公式。
GloVe算法是学习词嵌入的另一个较为常用的算法,其优点在于简便。
Xij表示单词i在单词j的上下文中出现的次数,Xij和Xji通常具有对称性。
该算法就是最小化上图中的这样一个函数,和之前softmax的计算相比就是多算上Xij,以及再给了一个f(Xij)表示权重,兼顾不同频率词汇的训练。这里还提到θ和e完全对称,最后计算时取平均值。(细节不懂,最好会用)
最后就是说该算法学习到的特征向量我们很难解释,例如每行表示的特征我们最早提过可能是性别、年龄等,而算法学习到的没有办法这样解释出来,只是一些看似无意义的数字,但并不影响我们解决实际问题。
情感分类问题就是看一段文本,判断该文本传达出的是喜欢还是不喜欢,例如电影评论对应星级等等。
简单的模型:训练时,用句子每个词转换得到词嵌入特征向量,然后求和或者求平均,再送入softmax分类器中,得到对应5种结果的可能概率。但这种模型没有考虑词的顺序,可能因为某些个别单词的情感导向而做出错误的判断,为了考虑词序,这里不使用简单的叠加,而是使用一个多对一RNN,如下所示:
所有的词汇都带有感情色彩,有些是中性词,有些则带有明显的偏向性。目前的词嵌入存在这样一个情况,其中包含了一些诸如性别、种族歧视的预测结果,例如下图中对不同性别目标词的生成,显然具有一定的性别歧视成分。
由于机器学习与深度学习已经开始为社会作重大决策,这种偏见的消除则非常重要!
这里提供了一个简化的算法思路:
以性别偏见举例,首先是识别一个偏见趋势,具体是将性别对立的词的特征向量作差,之后再取平均值(实际会用SVU算法);然后是一个中和步,目的是消除那些不是很明显的性别对立词的偏见趋势距离;最后是均衡步,调整性别对立的词和非偏见轴的距离。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。