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、LSTM、GRU) -> 正文阅读

[人工智能]理解序列模型(RNN、LSTM、GRU)

目录

1.序列模型

2.RNN

3.LSTM

4.GRU


1.序列模型

生活中有许多序列数据(具有先后顺序的数据),比如语音,文本,DNA,音乐,动作,怎样处理这些数据呢?后来,处理序列数据的模型就被称为--序列模型(sequence model)

(图片来自deeplearning.ai-Andrew Ng)

语音,音乐,文本,动作,这些数据都是有顺序,连续的。序列的特点在于某一时刻的数据不仅和现在有关,而且和过去、未来有关(例如我们要吃橘子,就要先拨橘子),数据出现的先后顺序也是重要的信息,序列模型能帮我们学习到这些信息。

在语言识别,音乐生成,机器翻译这些激动人心的领域,序列模型都得到了广泛应用,下面介绍著名的RNN(recurrent neural network)和它的变体LSTM(long short term?memory),以及LSTM的简化GRU(gate recurrent unit)

2.RNN

RNN(循环神经网络)经常用于自然语言处理等序列任务中,对于输入的x,这种神经网络可以“记住”这个信息一段时间,于是,前面输入的信息将会被传递到后面的RNN-cell,用于处理之后的输入,下面是一个经典的RNN模型

(图片来自deeplearning.ai-Andrew Ng)

上图的一个输入对应一个输出(Tx=Ty),其中的每个RNN-cell:

可以看到,每个RNN-cell不仅计算了输入x,而且还结合了前一时刻传递过来的信息。值得注意的是,这里一排的每个RNN-cell,它们的参数矩阵Waa,Wax,Wya,ba,by是共享的,具体的参数维度如下

x --? ? ? ? ? ?(n_x, m, T_x)

a0 --? ? ? ? ?(n_a, m)

Waa --? ? ? (n_a, n_a)

Wax --? ? ? (n_a, n_x)

Wya --? ? ? (n_y, n_a)

ba --? ? ? ? ?(n_a, 1)

by?--? ? ? ? ?(n_y, 1)

y_pred --(n_y, m)

其中n_a等于RNN层数(这里是一层)

还可以看看pytorch文档对rnn维度的说明:

https://pytorch.org/docs/stable/generated/torch.nn.RNN.html?highlight=rnn#torch.nn.RNN

其中bidirectional代表是否是双向的网络,如双向RNN(BRNN)

上面介绍的是前向传播的过程,那么损失和反向传播又是怎样的呢?

首先是损失:

第一行是一个输出的损失(交叉熵损失),c表示softmax的分类向量长度

第二行是总损失(每个RNN-cll损失总和)

反向传播:

不断求导,梯度下降,对于每一个RNN-cell求如下偏导

(图片来自deeplearning.ai-Andrew Ng)

这个求导过程是从最后的RNN-cell向前传播的,由于这里一排每个cell的参数矩阵是共享的,所以我们更新的其实是相同的参数,有一个炫酷的名字--backpropagation through time,过程比较复杂,这里就不过多阐述了。

为什么说一排cell:因为可以向上堆叠更多层,将这一层的每个输出y作为下一层的输入,称为深度RNN模型,这样参数更多,效果往往更好,但是计算量也会变得更庞大

以上就是对一个经典RNN模型的分析,实际上,模型的输入与输出的个数不一定相等,可以是多对多(文本翻译),多对一(情感评价),甚至是一对多(音乐生成),不同任务的模型架构通常不同,但是原理是一样的。

然而,这种经典的RNN还有一些缺点,就像深度神经网络一样,隐藏层太多,容易导致梯度爆炸和梯度消失(主要是梯度消失),导致RNN无法学习到远距离的信息,为了优化这些问题,便诞生了GRU和LSTM。

3.LSTM

如果要生成一段英文,那么当主语为单数或者复数时,句子后面的动词要发生相应的变化,于是主语的信息希望被记住一段时间,当看到新的主语时,希望忘记旧的主语,记住新的主语。

LSTM(long short term memory)通过细胞状态和被称为"门"的结构来达到记忆信息的能力,如图,一个LSTM-cell:

门结构包含三个门,分别是忘记门输入门输出门

门1 - 忘记门:

忘记门对输入x和上一个cell的输入h(t-1)做线性组合并映射到sigmoid函数,结果越接近0则舍弃的信息越多,越接近1则保留的信息越多,上式将Wf展开应为

门2 - 输入门:

输入门在得到0-1映射的同时,将输入信息整合生成一个新的候选向量,后续将结合忘记门的输出做细胞状态的更新,同样,上式展开应为

?细胞状态:

细胞状态就是上面贯穿每个LSTM-cell的链,这里就是传递信息,记忆信息的地方,当经过忘记门和输入门的计算后,通过这样一步计算,状态C就被更新了

因为这里是矩阵乘法,所以实际上C矩阵的每列代表了不同的信息,它们通过细胞状态稳定的进行着传递,更新

门3 - 输出门:

和RNN不同的是,RNN的输出是这里的Ot,而LSTM则将进一步结合了细胞状态的信息,也就是前面稳定记忆的信息,得到最终输出ht,也可以加上softmax得到y_pred,第一行式子展开应为

4.GRU

GRU(gate recurrent unit)是LSTM的简化版,将LSTM中的忘记门和输入门合并称为更新门,加上了一个重置门,GRU的参数更少,更容易训练,而且效果在多数情况下和LSTM相当

手绘一张:

第二行类似门的符号代表update门,第三行的符号代表reset门,也是通过上面一条链(细胞状态)进行信息的传递和更新,可以发现比LSTM简单了不少。

总结:上文介绍的序列模型可以是双向的(bidirectional),深层的(deep),同时还可以结合注意力机制,成为注意力模型达到更好的效果。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:28:48  更:2022-11-05 00:30:45 
 
开发: 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/28 3:23:15-

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