循环神经网络-语言模型

在构建语言模型中,我们需要理解n元模型以及网络架构。

一、 n元语法

n元语法通过马尔可夫假设简化模型,马尔科夫假设是指一个词的出现只与前面n个词相关,即n阶马尔可夫链(Markov chain of order n)。

来看以下几个例子,下面分别是1元,2元,3元语法模型的结果。

$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2}\right) P\left(w_{3}\right) P\left(w_{4}\right)$
$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2} | w_{1}\right) P\left(w_{3} | w_{2}\right) P\left(w_{4} | w_{3}\right)$
$P\left(w_{1}, w_{2}, w_{3}, w_{4}\right)=P\left(w_{1}\right) P\left(w_{2} | w_{1}\right) P\left(w_{3} | w_{1}, w_{2}\right) P\left(w_{4} | w_{2}, w_{3}\right)$

事实上,我们只需要了解n元语法的意义便可,并不需要做更加细致的探讨。

$P\left(w_{1}, w_{2}, \dots, w_{T}\right)=\prod_{t=1}^{T} P\left(w_{t} | w_{t-(n-1)}, \dots, w_{t-1}\right)$

对于语言模型,我们所用的则是n-1元语法,意味着当我们预测第n的字的时候,我们是基于前n-1个词进行判断的。

二、 网络架构

以下便是语言模型的网络架构,可以看到我们这里只是输入了一个字符x<1>,后续的输入均是上一步的输出y得出的。

根据这个模型,我们可以让模型自动生成文本,这也就是之前网络中流行的傻瓜论文,歌词谱写等的模型原型。

三、 梯度裁剪

由于循环神经网络的深度非常大,因此我们需要考虑解决梯度爆炸的问题。常用的方法则是梯度裁剪。梯度裁剪是一种常用解决梯度爆炸的方法,即当梯度超过一定大小时,梯度自动取该阈值。

模型在梯度下降的过程中,始终不会超过该阈值。

原文地址:https://www.cnblogs.com/siyuan-Jin/p/12427359.html

时间: 2024-11-03 22:23:46

循环神经网络-语言模型的相关文章

84、循环神经网络实现语言模型

''' Created on 2017年5月13日 @author: weizhen ''' import numpy as np import tensorflow as tf import ptb_iterator as reader from tensorflow.contrib import rnn DATA_PATH = "/path/to/ptb/data" # 数据存放的路径 HIDDEN_SIZE = 200 # 隐藏层的规模 NUM_LAYERS = 2 # 深层循环

DataWhale 动手学深度学习PyTorch版-task3+4+5:文本预处理;语言模型;循环神经网络基础

课程引用自伯禹平台:https://www.boyuai.com/elites/course/cZu18YmweLv10OeV <动手学深度学习>官方网址:http://zh.gluon.ai/ ——面向中文读者的能运行.可讨论的深度学习教科书. 第二次打卡: Task03: 过拟合.欠拟合及其解决方案:梯度消失.梯度爆炸:循环神经网络进阶 Task04:机器翻译及相关技术:注意力机制与Seq2seq模型:Transformer Task05:卷积神经网络基础:leNet:卷积神经网络进阶 有

循环神经网络RNN公式推导走读

0语言模型-N-Gram 语言模型就是给定句子前面部分,预测后面缺失部分 eg.我昨天上学迟到了,老师批评了____. N-Gram模型: ,对一句话切词 我 昨天 上学 迟到 了 ,老师 批评 了 ____. 2-N-Gram 会在语料库中找 了 后面最可能的词: 3-N-Gram 会在预料库中找 批评了 后面最可能的词: 4-N-Gram 的内存耗费就非常巨大了(语料库中保存所有的四个词的预料组合). 1.1单向循环神经网络 一个单隐层结构示意图: 参数:输入到隐层的权重U.隐层到输出的权重

TensorFlow框架(6)之RNN循环神经网络详解

1. RNN循环神经网络 1.1 结构 循环神经网络(recurrent neural network,RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络.RNN的主要用途是处理和预测序列数据.全连接的前馈神经网络和卷积神经网络模型中,网络结构都是从输入层到隐藏层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的. 图 11 RNN-rolled 如图 11所示是一个典型的循环神经网络.对于循环神经网络,一个非常重要的概念就是时刻.循环神经网

《转》循环神经网络(RNN, Recurrent Neural Networks)学习笔记:基础理论

转自 http://blog.csdn.net/xingzhedai/article/details/53144126 更多参考:http://blog.csdn.net/mafeiyu80/article/details/51446558 http://blog.csdn.net/caimouse/article/details/70225998 http://kubicode.me/2017/05/15/Deep%20Learning/Understanding-about-RNN/ RNN

Recurrent Neural Network(循环神经网络)

Reference:   Alex Graves的[Supervised Sequence Labelling with RecurrentNeural Networks] Alex是RNN最著名变种,LSTM发明者Jürgen Schmidhuber的高徒,现加入University of Toronto,拜师Hinton. 统计语言模型与序列学习 1.1 基于频数统计的语言模型 NLP领域最著名的语言模型莫过于N-Gram. 它基于马尔可夫假设,当然,这是一个2-Gram(Bi-Gram)模

学习笔记TF057:TensorFlow MNIST,卷积神经网络、循环神经网络、无监督学习

MNIST 卷积神经网络.https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py .TensorFlow搭建卷积神经网络(CNN)模型,训练MNIST数据集. 构建模型. 定义输入数据,预处理数据.读取数据MNIST,得到训练集图片.标记矩阵,测试集图片标记矩阵.trX.trY.teX.teY 数据矩阵表现.trX.teX形状变为[-1,28,28,1],-1 不考虑输入图片数量,28x

基于PaddlePaddle框架利用RNN(循环神经网络)生成古诗句

基于PaddlePaddle框架利用RNN(循环神经网络)生成古诗句 在本项目中,将使用PaddlePaddle实现循环神经网络模型(即RNN模型,以下循环神经网络都称作RNN),并实现基于RNN语言模型进行诗句的生成. 本项目利用全唐诗数据集对RNN语言模型进行训练,能够实现根据输入的前缀诗句,自动生成后续诗句. 本实验所用全唐诗数据集下载地址:https://pan.baidu.com/s/1OgIdxjO2jh5KC8XzG-j8ZQ 1.背景知识 RNN是一个序列模型,基本思路是:在时刻

理解循环神经网络的来龙去脉

一.为什么会出现循环神经网络? 传统的语言模型中,计算特定序列中多个单词出现概率的公式为(以下式子),P(w1,-,wm)一般只考虑前 n 个单词而不是考虑全部之前的单词. 上式对语音.翻译系统中判断一个词序列是否是输入句子的准确翻译起了重要作用.这些只依赖前面1个词(bigram).依赖前面2个词(trigram).... .依赖前面连续n个单词窗口的方式可能不足以捕获足够的上下文信息.在所有传统语言模型中,随着窗口n的增大,系统所需的运行内存也会呈现指数级增长,使得几乎不可能对较大型的词窗口