近期自然语言处理归纳小结之(一)词向量——nnlm模型

一、模型原理概述

  此处先插一个对我这种长期纠结于【各种向量矩阵维数到底是多少】(就是坚持不懈地要弄清俩矩阵到底能不能乘)的人来说在理解模型细节方面有巨大帮助的链接:理解nnlm.

  word embedding提出后nlp的发展发生了质的飞跃。nnlm即一种基于n-gram文法、词向量表示DNN结构的语言模型,该模型对语料库中每个单词在当前输入序列的情况下作为下一个单词出现的概率进行预测。n-gram文法、词向量表示和DNN结构不再赘述。

二、模型结构详解

  模型的总体结构如下所示。
在这里插入图片描述
变量声明:
  win_size: 输入序列的单词个数
  vocab_size: 词表的大小
  hidden_num: 隐藏层的神经元个数
  word_dim: 稠密词向量的维度

  nnlm用到的神经网络结构是蛮简单的一个结构,隐藏层的层数也不多,主要分为输入层、隐藏层、输出层三个部分。下面对每个部分涉及到的输入输出、参数和一些需要提到的点进行分别说明。

1. 输入层
输入:输入序列的one-hot向量,即win_size1*vocab_size大小的向量
  由于vocabulary通常是一个很大很大的分词库,因此每个单词对应的one-hot向量都非常非常稀疏,对模型的训练开销和参数精度调整都会有较大的影响,不利于后续的模型训练。所以这里设置了一个[vocab_size, word_dim]大小的look-up表,这个表的具体作用即:将原始输入的高维稀疏one-hot向量转化为[1,word_dim]大小的低维稠密向量,以便于进行后续的模型训练。然后将这win_size个[1,word_dim]大小的词向量拼接为一个向量,构成一个word_dim*win_size大小的一维向量,作为输入层的输出向量。
输出:word_dim*win_size大小的一维向量
在这里插入图片描述

2. 隐藏层
输入:word_dim×win_size大小的一维向量
激活函数
在这里插入图片描述
其中X即word_dim*win_size大小的一维向量。H为隐藏层的权重矩阵,大小为[word_dim×win_size, hidden_num]. b1为隐藏层的bias,是维度为hidden_num的一维向量。XH+b1后经过tanh激活函数,输出为大小为[1,hidden_num]的向量。
输出:[1,hidden_num]的向量

3. 输出层
输入:[1,hidden_num]的向量
激活函数
在这里插入图片描述
输出层首先对隐藏层的输出计算y(wi),然后通过softmax函数计算语料库中各词在当前输入序列的情况下作为下个单词出现的概率,概率最大的词向量所对应的词即模型预测到的当前输入序列下最有可能出现的单词。

三、训练实战

大部分是大作业给定的架构代码,需要自己完成的部分很少。放在github上,上交作业之后会设为公开。nlp_nnlm模型的实现(含中英文训练文本及训练后的词向量结果)

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值