美文网首页机器学习
Word2Vec中的数学原理

Word2Vec中的数学原理

作者: TINGJUN | 来源:发表于2019-03-30 21:04 被阅读169次

    一、旧版本的神经网络表示词向量

    神经网络语言模型.png 将每个词表示成mm维的向量,用v(w)v(w)表示,整个网络分为4层,分别为输入层,投影层,隐藏层,输出层。
    输入层:取一个大小为n的窗口表示输入,用1~(n-1)个词来预测第n个词的生成概率。
    投影层:将每个词映射为m维向量,将这些词向量拼接为一个(n-1)m的长向量,作为投影层。一开始的向量随机生成,最后根据训练得到最优结果。
    隐藏层:隐藏层的节点根据需要可以进行调节
    输出层:N维向量,表示预测为每个词的概率
    前向传播的表达式为:???这里不是很懂
    前向传播表达式.png
    其中,输出表示由前面(n-1)各词,预测第n个词的概率,即 根据1~(n-1)个词,来预测第n个词的生成概率.png

    二、huffman树及huffman编码

    2.1 Huffman树的构造

    根据词典每个词作为叶子节点,词的频次作为叶子节点的权重,向上构造huffman树,具体为:
        1)将词典的N个词,看成N棵树的森林
        2)将“根节点权值“最小的两棵树合并成一棵新树,原来的树视为新树的左右子树,新树的“根节点权值”为左右子树的“根节点权值”之和
        3)重复2),直到森林中只剩下一棵树
    整个Huffman树构建完成以后,叶节点的个数为N(词典大小),非叶节点的个数为N-1
    以“我”,“喜欢”,“观看”,“巴西”,“足球”,“世界杯”为例,这组词的词频为:15,8,6,5,3,1


    huffman树构造过程.png

    2.2 Huffman编码

    对于一棵Huffman树,规定左子节点标记为1,右子节点标记为0,每个词的路径(根节点除外)对应的编码称为该词的Huffman编码,如:我——0,喜欢——111,观看——110,巴西——101,足球——1001,世界杯——1000。huffuman编码原先是用在数字通信领域,希望整段文本的编码长度越小越好,因此构建huffuman树,使得词频越多的字编码越短,词频越少的字编码越长。


    huffman编码.png

    三、 基于huffuman softmax的模型

    3.1 W2V的两种模型:CBOW和Skip-gram

    W2V有两种模型,分别为CBOW和skip-gram,CBOW是根据上下文context(w)context(w)来预测中间词ww,而skip-gram是根据中间词ww来预测上下文context(w)context(w) ;他们都有3层结构——输入层,投影层,输出层。(注:无隐藏层)


    两种模型.png

    3.2 基于huffuman的CBOW

    3.2.1 网络结构

    H_CBOW的网络结构有3层,分别为输入层,投影层,输出层;以样本(context(w),w)(context(w),w)为例,做简要说明。
    输入层:上下文的2c个词的词向量(假设上文和下文分别为c各词,实际上具体实现有小改变)

    投影层:将这个2c个向量直接求和,


    输出层:对应一棵huffuman树,它以词典中的词为叶节点,以词出现的次数为叶节点的权重来构建;其中叶节点的个数为N,非叶节点的个数为(N-1);每个非叶节点对应一个二分类器
    CBOW网络结构示意图.png
    注:在以往的神经网络语言模型中,计算量高的地方在输出层矩阵运算和概率归一化,CBOW对此作出了两点改进:1、无隐藏层,输入层直接向量求和进行投影;2、输出层改为huffuman树,将原来的softmax线性搜索求极大(多分类),转化为求树的正确路径(多个二分类),大大减少计算量。

    3.2.2 符号定义

    参数计算.png

    这里有一点需要比较注意的,hufuuman编码左边为1,右边为0;但二分类的类别相反,左边为负,右边为正。

    3.2.3 目标函数的推导

    给定一个词的context(w),预测生成目标词w概率,相当于沿着huffuman树进行搜索,每经过一个内部节点,就进行一次二分类并生成一个概率,将路径上的所有概率连乘起来,就表示生成目标词w的概率;(分类时,规定分到左边为负类,huffuman编码为1;分到右边为正类,huffuman编码为0,这里有点不懂??)
    因此,对于目标单词w的条件概率为:




    3.2.4 梯度上升法求解参数

    3.2.5伪代码

    以样本(context(w),w)(context(w),w)为例(每取一个样本就对所有的参数进行更新),下面是huffuman CBOW的参数更新过程


    本文大部分内容转载自word2vec的数学原理
    word2vec原理推导与代码分析
    word2vec原理
    word2vec中的数学原理详解
    word2vec原理

    相关文章

      网友评论

        本文标题:Word2Vec中的数学原理

        本文链接:https://www.haomeiwen.com/subject/ylgsbqtx.html