循环神经网络(一)

简介: 循环神经网络(一)

学习目标



  • 目标
  • 了解序列模型相关概念
  • 掌握循环神经网络原理


  • 应用
  • 应用RNN原理手写一个RNN的前向和反向传播过程


4.1.1 序列模型



4.1.1.1 定义


通常在自然语言、音频、视频以及其它序列数据的模型。

催生了自然语言理解、语音识别、音乐合成、聊天机器人、机器翻译等领域的诸多应用。


4.1.1.2 类型


语音识别,输入一段语音输出对应的文字


image.png


情感分类,输入一段表示用户情感的文字,输出情感类别或者评分


image.png


机器翻译,两种语言的互相翻译

image.png


4.1.1.3 为什么在序列模型使用CNN等神经网络效果不好


  • 序列数据前后之间是有很强的关联性
  • 如:曾经有一份真挚的感情,摆在我面前,我没有去?_


  • 序列数据的输入输出长度不固定


4.1.2 循环神经网络



循环(递归)神经网络(RNN)是神经网络的一种。RNN将状态在自身网络中循环传递,可以接受时间序列结构输入。


4.1.2.1 类型


image.png


  • 一对一:固定的输入到输出,如图像分类
  • 一对多:固定的输入到序列输出,如图像的文字描述
  • 多对一:序列输入到输出,如情感分析,分类正面负面情绪
  • 多对多:序列输入到序列的输出,如机器翻译,称之为编解码网络
  • 同步多对多:同步序列输入到同步输出,如文本生成,视频每一帧的分类,也称之为序列生成


这是循环神经网络的一些结构以及场景,那么我们接下来以基础的一种结构来看具体RNN怎么做的?


4.1.2.2 基础循环网络介绍


image.png


  • x_txt:表示每一个时刻的输入
  • o_tot:表示每一个时刻的输出
  • s_tst:表示每一个隐层的输出
  • 中间的小圆圈代表隐藏层的一个unit(单元)
  • 所有单元的参数共享


通用公式表示:


  • s_0=0s0=0


  • s_{t} = g1(Ux_t + Ws_{t-1} + b_{a})st=g1(Uxt+Wst−1+ba)


  • o_{t} = g2(V{s_t}+b_{y})ot=g2(Vst+by)


g1,g2g1,g2:表示激活函数,g1:tanh/relu, g2:sigmoid、softmax其中如果将公式展开:


image.png


循环神经网络的输出值o_tot,是受前面历次输入值x_{t-1},x_{t},x_{t+1}xt−1,xt,xt+1影响。


4.1.2.3 序列生成案例


通常对于整个序列给一个开始和结束标志,start,end标志。


  • s 我 昨天 上学 迟到 了 e


输入到网络当中的是一个个的分词结果,每一个词的输入是一个时刻。


image.png


4.1.2.4 词的表示



为了能够让整个网络能够理解我们的输入(英文/中文等),需要将词进行用向量表示。


  • 建立一个包含所有序列词的词典包含(开始和标志的两个特殊词,以及没有出现过的词用等),每个词在词典里面有一个唯一的编号。


  • 任意一个词都可以用一个N维的one-hot向量来表示。其中,N是词典中包含的词的个数


image.png


我们就得到了一个高维、稀疏的向量(稀疏是指绝大部分元素的值都是0)。


4.1.2.4 输出的表示-softmax


RNN这种模型,每一个时刻的输出是下一个最可能的词,可以用概率表示,总长度为词的总数长度:


image.png


每一个时刻的输出s_tst都是词的总数长度,接上softmax回归即可。


4.1.2.5 矩阵运算表示


假设以上面的例子:对于网络当中某一时刻的公式中


1、\mathrm{s}_t=relu(U\mathrm{x}_t+W\mathrm{s}_{t-1})st=relu(Uxt+Wst−1)


2、o_{t} = softmax(V{s_t})ot=softmax(Vst)


image.png


1、形状表示:[n, m] x [m, 1] +[n, n] x [n, 1] = [n, 1]

  • 则矩阵U的维度是n x m,矩阵W的维度是n x n
  • m:词的个数,n:为输出s的维度


注:此步骤可以简化:[u,w] x [\frac{x}{s}sx ] = [n, n+m] x [n +m, 1] = [n, 1]


2、形状表示:[m, n] x [n, 1] = [m, 1]

  • 矩阵V维度:[m, n]


总结:其中的nn是可以人为去进行设置。


4.1.2.6 交叉熵损失


总损失定义:


  • 一整个序列(一个句子)作为一个训练实例,总误差就是各个时刻词的误差之和。


E_{t}(y_{t},\hat{y_{t}}) = -y_{t}log(\hat{y_{t}})Et(yt,yt^)=−ytlog(yt^)
E(y,\hat{y}) = \sum_{t}E_{t}(y_{t},\hat{y_{t}})=-\sum_{t}y_{t}log(\hat{y_{t}})E(y,y^)=∑tEt(yt,yt^)=−∑tytlog(yt^)


在这里, y_tyt是时刻 t 上正确的词, \hat y_{t}y^t是预测出来的词


image.png



目录
相关文章
|
5月前
|
机器学习/深度学习 自然语言处理 算法
RNN-循环神经网络
自然语言处理(Nature language Processing, NLP)研究的主要是通过计算机算法来理解自然语言。对于自然语言来说,处理的数据主要就是人类的语言,我们在进行文本数据处理时,需要将文本进行数据值化,然后进行后续的训练工作。
|
4月前
|
机器学习/深度学习 数据采集 人工智能
循环神经网络RNN
7月更文挑战第2天
98 11
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
7.1 NLP经典神经网络 RNN LSTM
该文章介绍了自然语言处理中的情感分析任务,探讨了如何使用深度神经网络,特别是循环神经网络(RNN)和长短时记忆网络(LSTM),来处理和分析文本数据中的复杂情感倾向。
|
5月前
|
机器学习/深度学习 存储 自然语言处理
RNN与LSTM:循环神经网络的深入理解
【6月更文挑战第14天】本文深入探讨RNN和LSTM,两种关键的深度学习模型在处理序列数据时的作用。RNN利用记忆单元捕捉时间依赖性,但面临梯度消失和爆炸问题。为解决此问题,LSTM引入门控机制,有效捕获长期依赖,适用于长序列处理。RNN与LSTM相互关联,LSTM可视为RNN的优化版本。两者在NLP、语音识别等领域有广泛影响,未来潜力无限。
|
6月前
|
机器学习/深度学习 自然语言处理 语音技术
循环神经网络
循环神经网络
38 1
|
6月前
|
机器学习/深度学习
深度学习第2天:RNN循环神经网络
深度学习第2天:RNN循环神经网络
|
6月前
|
机器学习/深度学习 自然语言处理 并行计算
神经网络结构——CNN、RNN、LSTM、Transformer !!
神经网络结构——CNN、RNN、LSTM、Transformer !!
311 0
|
机器学习/深度学习
从RNN、LSTM到GRU的介绍
从RNN、LSTM到GRU的介绍
|
6月前
|
机器学习/深度学习 自然语言处理 数据处理
一文带你了解RNN循环神经网络
一文带你了解RNN循环神经网络
394 1
|
机器学习/深度学习 数据采集
将循环神经网络(RNN)
将循环神经网络(RNN)应用于现实世界数据进行时间序列预测,是一种常见的机器学习应用。时间序列预测是一种预测未来值的方法,它基于过去和现在的数据点。这种预测方法被广泛应用于金融、气象、工业生产等领域。以下是使用 RNN 进行时间序列预测的基本步骤:
65 3