NNLM(神经网络语言模型)
简介
*NNLM是从语言模型出发(即计算概率角度),构建神经网络针对目标函数对模型进行最优化,训练的起点是使用神经网络去搭建语言模型实现词的预测任务,并且在优化过程后模型的副产品就是词向量。
*进行神经网络模型的训练时,目标是进行词的概率预测,就是在词环境下,预测下一个该是什么词,目标函数如下式, 通过对网络训练一定程度后,最后的模型参数就可当成词向量使用.
模型
*NNLM的网络结构(四层神经网络)如右图,主要参数有:
[1]词库大小(假定有8W个词)
[2]转化的词向量大小(假定为300维长度)
[3]输入层神经元数(即词的滑动窗口容量,假定滑窗大小为4)
[4]隐层神经元数量(假定为100个)
[5]输出层神经元数(对应词容量,有8W个)
[6]由输入层到投影层的矩阵C(一个大的矩阵,大小为8W*300,是最后求解的目的,开始时随机初始化)
[7]从投影层到隐层的权值矩阵H和偏置矩阵B
[8]从隐层到输出层的权值矩阵U和偏置矩阵D
*现在咱们针对NNLM模型,由下往上进行分析:
[1]每次从语料库中滑动4个数据,将其中前三个词转为one-hot编码形式,将三个one-hot形式作为输入喂入网络。
[2]从输入到映射层所做的事情是(one-hot向量 * 矩阵C),这里词的one-hot编码会根据为1的位置去对应C矩阵,去抽出对应位置的300维的词向量,将此向量作为投影层的输出。
[3]上一步投射层会将词的one-hot表示表示成300维的稠密向量,从投影层到隐层是一种全连接的连接方式,线的数量是3*100个,每个隐层神经元有3条线相连接,最后使用tan函数结合H与B获取激活输出。
[4]从隐层到输出层也是一直全连接的形式,连接线数量为100*8W,使用softmax函数结合U与D获取最后的概率输出。 [5]计算交叉熵损失函数值,以梯度下降方式进行反向传播,在反向传播过程中对参数矩阵C、H、B、U、D进行更新。
*通过不断的喂入批次数据,对网络进行反向传播调参,最后训练出一个进行词预测任务的模型,并将训练好模型中的C矩阵里的每一列都作为,对应于one-hot编码中位置为1词的词向量(大小为1*300),这个词向量就是我们要转化的结果。
特点
优点:使用NNLM模型生成的词向量是可以自定义维度的,维度并不会因为新扩展词而发生改变,而且这里生成的词向量能够很好的根据特征距离度量词与词之间的相似性。
缺点:计算复杂度过大,参数较多(word2vec是一种改进)。
NNLM(神经网络语言模型)相关推荐
- NNLM神经网络语言模型简单实现词语预测(含python代码详解)
文章目录 一.NNLM简单介绍 二.NNLM词语预测代码 1. 导入包 2. 文本数据处理 3. 自定义mini-batch迭代器 4. 定义NNLM模型 1. 定义模型结构 2. NNLM参数设置 ...
- 语言模型(二)—— 神经网络语言模型(NNLM)
n-gram回顾 在上一篇笔记语言模型(一)-- 统计语言模型n-gram语言模型中我们已经了解到了n-gram的不足,在理解神经网络语言模型之前,我们有必要简单地回顾一下n-gram模型的几个特点: ...
- 【NLP】神经网络语言模型(NNLM)
背景 语言模型也经常会在NLP中提出.在深度学习大行其道的今天基于神经网络的语言模型与传统定义的又有什么区别呢?语言模型在NLP中有什么意义呢?不妨沉下心,了解一下. 语言模型是一个单纯的.统一的.抽 ...
- 基于神经网络语言模型的词向量生成(NNLM)详解
深度学习入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删. 目录 一.NNLM的网络结构分析 二.NNLM的代码实现 一.NNLM的网络结构分析 ...
- NLP自然语言处理:神经网络语言模型(NNLM)
目录 一.传统语言模型 1.1 稀疏性 1.2 泛化能力差 二.神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1 循环神经网络模型示例 2.2 ...
- 用飞桨做自然语言处理:神经网络语言模型应用实例
允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 编者按: 语言模型的身影遍布在NLP研究中的各个角落,想要了解NLP领域,就不能不知道语言模型. 想要让模型能落地奔跑,就需借助深度学习框 ...
- NLP基础:n-gram语言模型和神经网络语言模型
文章目录 语言模型的计算 n-gram 语言模型 n-gram 平滑技术 神经网络语言模型(NNLM) 基本思想 神经网络语言模型小结 语言模型评价指标-困惑度 语言模型是自然语言处理中的重要技术,假 ...
- NLP入门概览(3)—— 神经网络语言模型、词向量
在这一部分中,我们将在此基础上介绍神经网络语言模型以及词向量的相关知识.在介绍这些知识之前,我们首先对自然语言处理领域的整体架构进行一些简单的介绍. 1. 自然语言处理架构 首先,我们来看这样 ...
- 自然语言处理NLP(3)——神经网络语言模型、词向量
在上一部分中,我们了解到了统计语言模型,n-gram模型以及语料库的基本知识: 自然语言处理NLP(2)--统计语言模型.语料库 在这一部分中,我们将在此基础上介绍神经网络语言模型以及词向量的相关知识 ...
最新文章
- python发送微信消息_用python批量发送微信消息
- python画饼图-python使用Matplotlib画饼图
- List集合存入int类型值1,remove(1)方法按下标还是按对象删除信息
- Java 线程的 5 种状态
- 找不到显示桌面的快捷方式怎么办|显示桌面的快捷方式找不到解决方法|显示桌面代码|...
- TPLink 备份文件bin文件解析
- 在vivado里用rtl描述_如何利用Vivado HLS处理许多位准确或任意精度数据类型
- python 文件和目录 当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 计算机的网络默认下拉列表出不来,网页下拉菜单打不开,怎么解决?
- 转:VS2005 快捷键
- 宝藏机器学习资料分享(超高质量pdf直接下载)
- web漏洞扫描器原理_黑客秘籍:基于WAF日志的扫描器检测实践
- [ Linux ] 连接FTP及FTP常用配置
- 排气控制系统--中英文翻译
- Linux中vi上下键变成ABCD
- 2021全球与中国视频编辑软件市场现状及未来发展趋势
- html模板留言板mysql_Php+mysql+html简单留言板制作
- Sharding-JDBC简单使用
- 国外matlab用的多吗,挑战智力极限 国外某大学脑残又变态的路程问题 需要matlab...
- UVa112992-贪心算法