IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 循环神经网络RNN——Encoder/Decoder -> 正文阅读

[人工智能]循环神经网络RNN——Encoder/Decoder

一、为什么需要RNN

以往我们学习的全连接神经网络都是单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

当我们在理解一句话意思时,孤立的理解这句话的每个词是不够的,我们需要处理这些词连接起来的整个序列; 当我们处理视频的时候,我们也不能只单独的去分析每一帧,而要分析这些帧连接起来的整个序列。

使用情景

RNN是在自然语言处理领域中最先被用起来的,比如,RNN可以为语言模型来建模。那么,什么是语言模型呢?

我们可以和电脑玩一个游戏,我们写出一个句子前面的一些词,然后,让电脑帮我们写下接下来的一个词。比如下面这句:

我昨天上学迟到了,老师批评了____。

我们给电脑展示了这句话前面这些词,然后,让电脑写下接下来的一个词。在这个例子中,接下来的这个词最有可能是『我』,而不太可能是『小明』,甚至是『吃饭』。

通俗理解

让电脑预测这句话后面该说什么,电脑会从到到尾分析这段话,分析的过程并不是独立的,而是通过神经网络来解析,并且前面的话语肯定会对后面的话语产生影响,最终生成我们想要的结果。这种类似的“前对后的影响”是RNN的核心所在


二、RNN结构

这是一个简单的循环神经网络结构图,由输入层、隐藏层、输出层构成。
在这里插入图片描述
这里我们去掉W的话就是一个简单的全连接神经网络模型

我们从下向上理解简单部分:

参数意义
X表示输入层的值
U输入层到隐藏层的权重矩阵
S它表示隐藏层的值
V隐藏层到输出层的权重矩阵
O表示输出层的值

W是什么?

W是一个权重矩阵,作用在隐藏层
循环神经网络的隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。
权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重


三、 一图以蔽之

在这里插入图片描述


四、一式以蔽之

在这里插入图片描述


五、代码实现

import numpy as np

timesteps = 100  # 输入序列的时间步数,自然语言处理中可以看做词的个数
input_features = 32 # 输入特征空间的维度
out_features = 64 # 输出特征空间的维度(注意对应的是隐藏层的输出)

inputs = np.random.random((timesteps, input_features)) # 随机生成输入数据

state_t = np.zeros((output_features,)) # 初始状态,为全0向量

#创建随机的权重矩阵 
U = np.random.random((output_features, input_features)) # 为输入样本的权重矩阵
W = np.random.random((output_features, output_features)) # 为隐状态的权重矩阵
b = np.random.random((output_features, )) # 偏置项

successive_outputs = [] # 保存输出的list
for input_t in inputs:   # input_t的形状为(input_features, )的一维张量
	output_t = np.tanh(np.dot(U, input_t)+np.dot(W, state_t)+b) # 由输入和当前状态(前一个输出)计算得到当前输出
	successive_outputs.append(output_t) # 保存输出
	state_t = output_t # 更新隐状态,用于下一次输入

final_output_sequence = np.stack(successive_outputs, axis=0) # 最终输出(隐藏层的输出)的结果是一个形状为(timesteps, output_features)的二维张量

六、Encoder-Decoder

新的神经网络模型叫做 RNN编码-解码器 ,该模型包含两个RNN,分别位于编码器和解码器中,编码器中的RNN负责将变长的输入序列映射到一个固定长度的向量中,解码器中的RNN则负责将向量映射到一个变长的输出序列

"Elle aime la Chine."在法语里面是"她喜欢中国。“的意思,翻译为英文即为"She loves
China.”。在这里,它是一个翻译的seq2seq结构。

在这里插入图片描述

结构图

在这里插入图片描述

Encoder

编码器部分标注了隐藏层的状态,用 h t h_{t} ht?表示,更新公式为:
h t = f ( h t ? 1 , x t ) h_{t}=f(h_{t}-1,x_{t}) ht?=f(ht??1,xt?)
说明了当前时刻的隐藏层状态 h t h_{t} ht?是由上一时刻状态 h t ? 1 h_{t-1} ht?1?合当前时刻的输入 x t x_{t} xt?决定的

C C C是中间语义表示
可以是各个时刻隐层输出的汇总:
C = g ( h 1 , h 2 , h 3 . . . . . h T ) C=g(h_{1},h_{2},h_{3}.....h_{T}) C=g(h1?,h2?,h3?.....hT?)
也可以是最后一层的输出
C = h T C=h_{T} C=hT?
由于编码器用的是RNN的结构,每一个循环中的信息都会流到下一个循环中,因此中间语义表示 C 理论上包含了输入序列的所有信息。

Decoder

解码过程合编码是倒序关系,由前推后,因此公式顺序也会发生变化,并不是类似输入推出隐藏层的状态。
以翻译例子为例:
在这里插入图片描述

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:54:12  更:2022-07-04 22:57:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:03:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计