美文网首页
20201024-词的向量转换之NNLM

20201024-词的向量转换之NNLM

作者: 野山羊骑士 | 来源:发表于2020-10-24 22:23 被阅读0次

    概述

    谈到NLP不得不介绍word2vec,word2vec可以很宽泛的理解,就是词的向量化过程,而这一过程是经历了很长时间的发展https://www.jianshu.com/p/2319729cf0a2。从最初的基于语言学家的关联到基于语料库的词频,都是有稀疏的缺点。随着神经网络的发展,借鉴N-gram的方法(下一个词的出现仅依赖前面的一个或n个词),提出了NNLM,也就是 Nerual Network language Model.

    用神经网络来训练语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出[1],NNLM(Nerual Network Language Model)是这方面的一个经典模型,具体内容可参考 Bengio 2003年发表在JMLR上的论文。原文地址:
    http://jmlr.org/papers/volume3/bengio03a/bengio03a.pdf

    http://blog.sina.com.cn/s/blog_66a6172c0102v1zb.html
    这篇博客记录的NNLM 与 word2vec的发展来龙去脉
    https://www.zhihu.com/question/37922364

    详解

    图片.png

    他的使用场景是这样的:假设我们有一分文本,我们可以通过他的前N−1个词预测他的第N个词应该是什么?

    图片.png

    输入层(投射层)

    一个文本,由N个词语组成,现在呢:想根据 前N个词语 来预测 第N个词语 是啥?
    我们采用的语料库V(也就是我们最大限度能想到的的所有词语集合)包含10万个词语

    词向量W:是一个one-hot向量,大小=[10W,1],W(t)表示第t个词语的one hot(一个元素为1,其余全为0

    投影矩阵C:维度[D*V],V=10W,参数D根据文本大小不同来设定:谷歌测试时选取D=300

    • 计算时:投影矩阵C[300 * 10W] X 词向量W(t)[10W *1] 得到= 矩阵[300 * 1]
    • 比如根据前3个词来预测第4个词语,那么上述操作会重复三次,得到3个[300*1]的矩阵
    • 将这3个[300*1]的矩阵按行拼接,得到[900x1]的矩阵。

    隐藏层

    存在一个向量矩阵[Hx1],H根据文本集合情况设定(谷歌测试时选取H=500)

    该层完成的功能主要是全连接!
    说通俗一些:把输入层计算得到的矩阵[900x1],转换为矩阵[Hx1],完成输入层到隐藏层的数据传输,并且在全连接的过程中存在计算的权重。

    最终得到矩阵[500x1]

    输出层

    我们的词语大小为V=10W,隐藏层计算得到矩阵[500x1],要将这[500x1]的计算结果转化为[10Wx1],以此来预测第4个词语是什么?

    得到矩阵[10Wx1],也就是所谓第4个词ont-hot,最终经过SoftMax激活函数,选取行向量最大值,就是预测词语。

    计算复杂度

    (NxD )+ (NxDxH) + (HxV)

    代码实现:https://www.cnblogs.com/Luckidmi/p/11208727.html

    最后我还是有一个疑问,输入真的是one-hot吗?
    训练的损失函数也是一个one-hot与softmax向量的损失计算吗?
    原作者讲的学习目标是:


    图片.png

    这个模型包括两部分:
    A,一个从词汇表V到实数向量空间的映射C。通过这个映射得到每个单词的向量表示。因此C实际上是一个|V|×m的矩阵(m是单词向量的维数);
    B,以单词向量作为自变量的概率方程g:以单词向量序列(C(w_{t-n+1}),..., C(w_{t-1}))作为输入,输出序列的后续单词w_t的条件概率。方程g的输出也是一个向量,向量的第i维对应单词表中第i个单词的条件概率(如图1所示):


    图片.png

    相关文章

      网友评论

          本文标题:20201024-词的向量转换之NNLM

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