神经网络语言模型NNLM理解(有可运行代码pytorch实现)

神经网络语言模型(NNLM)是一种利用前n个词预测下一个词的模型,例如2-gram。模型包括输入层将词ID转换为词向量,隐藏层通过全连接层和激活函数处理,最后的输出层使用softmax激活。NNLM本质上是一个大型分类器。本文还介绍了模型的one-hot编码处理和数学公式,并提供了PyTorch实现的代码结构,涵盖了数据预处理、模型定义、损失函数、优化器和训练过程。
摘要由CSDN通过智能技术生成

先放一张NNLM的模型结构图
NNL模型结构神经网络语言模型简单来说就是用一句话的前n个词来预测最后一个词,如果n为2就是2-gram模型,依此类推。
先简单分析一下上面的模型结构,首先第一层是输入层,这一层先要将词对应的id经过一层voc_size x m形状的参数矩阵转换成对应的词向量,voc_size是词表大小,m是词向量的维度。
第二次是隐藏层,神经单元数目可以自己设置,词向量在第一次经过拼接通过一层全连接层,值通过激活函数激活输出。
最后一层是输出层,形状是voc_size * 1可以在这一次选择使用softmax函数进行激活输出。
从上面可以看出NNLM模型简单来说就是一个词表大小的分类器。
现在上另一张图
在这里插入图片描述首先如上图先将词对应的id装换成one-hot编码经过C层权重层转换成对应的词向量拼接后输入模型,后面两层是全连接层。

数学公式总结
在这里插入图片描述在这里插入图片描述输入向量x,输出结果y的概率分布。公式解释如下:其中w代表词向量,v代表词到词嵌入的映射,LM是一个多层感知机

在这里插入图片描述

下面是代码实现
整个模型训练分词数据,模型,损失函数,优化器,迭代训练五个部分

import torch
import torch.nn as nn
import torch.optim as optim

sentences = ['我 喜欢 狗', '我 讨厌 牛奶', '我 做 自然语言处理', '我 看 电影']
word_list = ' '.join(sentences).split()
word_list = list(set(word_list))

word2id = {
   w: i for i, w in enumera
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值