循环神经网络(一)

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

学习目标



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


  • 应用
  • 应用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



目录
相关文章
|
机器学习/深度学习 算法 索引
LSTM(长短期记忆网络)原理介绍
LSTM算法是一种重要的目前使用最多的时间序列算法,是一种特殊的RNN(Recurrent Neural Network,循环神经网络),能够学习长期的依赖关系。主要是为了解决长序列训练过程中的梯度消失和梯度爆炸问题。简单来说,就是相比普通的RNN,LSTM能够在更长的序列中有更好的表现。
8312 0
LSTM(长短期记忆网络)原理介绍
|
Web App开发 JavaScript 前端开发
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
1185 0
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示
|
自然语言处理 算法 Unix
【数据安全】敏感字过滤方案总结
【数据安全】敏感字过滤方案总结
455 1
|
机器学习/深度学习 算法
生成对抗网络(Generative Adversarial Networks,简称GANs)
生成对抗网络(GANs)由Ian Goodfellow等人于2014年提出,是一种通过生成器和判别器的对抗训练生成逼真数据样本的深度学习模型。生成器创造数据,判别器评估真实性,两者相互竞争优化,广泛应用于图像生成、数据增强等领域。
1799 1
|
机器学习/深度学习 人工智能 Java
【Sping Boot与机器学习融合:构建赋能AI的微服务应用实战】
【Sping Boot与机器学习融合:构建赋能AI的微服务应用实战】
352 1
|
机器学习/深度学习 数据可视化 算法框架/工具
【深度学习】Generative Adversarial Networks ,GAN生成对抗网络分类
文章概述了生成对抗网络(GANs)的不同变体,并对几种经典GAN模型进行了简介,包括它们的结构特点和应用场景。此外,文章还提供了一个GitHub项目链接,该项目汇总了使用Keras实现的各种GAN模型的代码。
618 0
|
自然语言处理 Java API
Spring Boot 接入大模型实战:通义千问赋能智能应用快速构建
【10月更文挑战第23天】在人工智能(AI)技术飞速发展的今天,大模型如通义千问(阿里云推出的生成式对话引擎)等已成为推动智能应用创新的重要力量。然而,对于许多开发者而言,如何高效、便捷地接入这些大模型并构建出功能丰富的智能应用仍是一个挑战。
2872 6
|
存储 分布式计算 分布式数据库
大数据技术原理与应用 期末复习 知识点全总结(林子雨版
大数据技术原理与应用 期末复习 知识点全总结(林子雨版
3550 1
|
算法 Java
敏感词过滤算法-前缀树-java
敏感词过滤算法-前缀树-java
646 0
|
机器学习/深度学习 人工智能 开发者
循环神经网络(一)
循环神经网络(一)
254 0

热门文章

最新文章