nlp笔记

    技术2022-07-10  107

    1 Word2Vec模型的负采样方法 上一节讲的word2vec的模型,是一个基于naive softmax的word2vec的基础模型,因为复杂度高等原因,在实际的word2vec中会基于其他的一些方法来实现,负采样(negative sampling)就是其中的一个

    1.1 negative sampling的目的 上一节的笔记最后提到,如果使用naive softmax的,且使用随机梯度下降的话,那么最后对的梯度的表达式是

    这其中,k是一个1到V之间的随机数。虽然通过梯度下降的方法将复杂度降低了一个数量级,但是现在分母上仍然需要遍历语料库,这样造成的时间开销依然非常大;因此出于性能的考虑,在实际中一般不使用这种基于naive softmax方法的word2vec

    1.2 negative sampling的形式 基于negative sampling的word2vec模型的目标函数如下:

    其中称为sigmoid函数,经常会遇到

    现在的目标是通过调整参数来最大化(注意是最大化不是最小化)

    首先大体解释一下这个式子,其中是以每一个位置作为中心词时的一个得分,而我们要优化的目标函数是每一个位置的词作为中心词时得分的一个平均值,其中T是这段文本当中单词的个数

    再来从意义上解释一下这个式子,我们看的前半段,和是窗口中的一对上下文和中心词,我们自然希望他们的内积越大越好,而根据函数的单调性,他们的内积越大则越大,那么越大,优化的目标与我们希望的方向一致。对于的后半段这一个加和,表达的含义是:我们重复k次,每次根据一个分布取出一个1到V之间的编号j,我们基本上可以认为这个向量对应的词和对应的词不是中心词和上下文的关系,所以我们希望他们的内积尽量小(这就是负取样的核心),他们的内积越小那么就越大,因此越大,与我们希望的方向一致。因此,我们在优化使变小的过程中,就会让本身是上下文与中心词关系的词的内外向量内积变大,不是上下文和中心词关系的变小。

    剩下没有说的就是分布了,其实这个分布的方式很简单:每次根据分布产生一个单词,这个单词是w的概率是,count(w)是词w在这篇文章中出现的次数

    最后,虽然的意义上面已经指出,看起来也是合理的,但是突然给出这样一个式子看来有点过于主观。其实,的形式就是一个不折不扣的logistic regression的优化的目标的形式,logistic regression的优化目标的形式的表示当中有一个是这样的:

    其中是1或-1,表示样本的标签是或者不是,这样一看,是不是就是用具体的符号表示的一个logistic regression?在负采样过程中,和对应单词组成的上下文和中心词对应标签的y=1,而根据分布P(w)得到的和对应单词不是上下文和中心词关系,所以y=-1

    2 基于co-occurrence matrix的词嵌入方法 在word2vec模型中,我们针对中心词和他窗口中的一个上下文进行一次梯度更新,我们也可以理解成针对一对共同出现的单词进行梯度更新;那么我们对于共同出现的一组单词,能不能直接记录他们共同出现的次数,来实现词嵌入呢?事实上在word2vec出现之前,基于这种统计共现次数的词嵌入方法就已经存在了

    2.1 co-occurrence matrix(共现矩阵) 共现矩阵的定义很简单:共现矩阵的一行和一列都代表一个单词,对于一个共现矩阵,表示单词i和单词j共同出现的次数,显然对于共现矩阵有,那么“共同出现”是怎么定义的呢?

    第一种类似word2vec,就是对于每个单词作为中心词有一个窗口,中心词和窗口中单词可以记为“共同出现”一次,这样得到的共现矩阵得到的比较多的会是关于语法的(sytactic)和语义的(semantic)的信息。sytactic和semantic在NLP的文章中经常会出现,这里解释一下:sytactic指的是语法上的关系,比如通过模型学习到big、bigger、biggest之间的关系;semantic指的是语义上的关系,比如通过模型学习到woman和man的关系

    Processed: 0.037, SQL: 9