【第八周】李宏毅机器学习笔记06:RNN

摘要

本周学习了循环神经网络的基础知识,通过具体案例来了解RNN的应用方式,认识了不同形式的RNN以及LSTM。同时,学习了RNN网络的优缺点以及采用什么方式来避免RNN产生的梯度消失问题。最后,学习到了 Attention-based Model 的基本结构以及两个具体应用案例。

Abstract

This week, I learned the basics of Recurrent Neural Networks (RNNs), explored their application through specific cases, and became familiar with different forms of RNNs as well as Long Short-Term Memory (LSTM) networks. Additionally, I studied the advantages and disadvantages of RNN networks and methods to avoid the vanishing gradient problem in RNNs. Finally, I learned about the basic structure of Attention-based Models and two specific application examples.

1.RNN

1.1.Example Application

在这里插入图片描述

Slot Filling任务:机器可以根据一个句子来将句子中的重要信息填入不同的slot中。比如读取图上的信息,分别把句子中的“Taipei”和“November 2nd”填入detination和time of arrival中。

在这里插入图片描述

简单的想法就是我们构建一个前馈网络,将“Taipei”输出到网络中,然后就可以输出某个slot的概率。

在这里插入图片描述

不过这种办法会出现一个严重的问题,比如图上的两句话,同样是“Taipei”,但其实一个应该填到目的地,而另一个应该填到出发地。由于“Taipei”前的单词不同,导致我们应该填入的slot也不同。假设我们能够设计一个神经网络,这个网络可以拥有对前一个单词的记忆,那么我们就可以解决这个问题了。

1.2.RNN基本概念

在这里插入图片描述

循环神经网络(Recurrent Neural Network)是一种用于处理序列数据的神经网络模型。与传统的前馈神经网络不同,RNN具有反馈连接,允许信息在处理过程中循环利用。这意味着RNN可以考虑先前的数据点对当前任务的影响,这使得它们非常适合处理如时间序列分析、自然语言处理和语音识别等任务。如上图所示,网络在运行的时候不仅要考虑 x 1 x_1 x1 x 2 x_2 x2的值,还要考虑储存在记忆里的 a 1 a_1 a1 a 2 a_2 a2的值。

在这里插入图片描述

x 1 x_1 x1输入到RNN中后会产生 a 1 a^1 a1,然后 a 1 a^1 a1再产生 y 1 y^1 y1,同时 a 1 a^1 a1的值也会储存起来。等到 x 2 x_2 x2再输入到RNN中时会考虑 a 1 a_1 a1再产生 a 2 a^2 a2,然后再通过 a 2 a^2 a2产生 y 2 y^2 y2,同时把 a 2 a^2 a2储存起来等到下一个输入使用。

在这里插入图片描述

因此,即使是同一个单词“Taipei”,由于前一个单词不同,导致最后输出出来的结果也会不同。

1.3.Deep RNN

在这里插入图片描述

RNN可以叠加多层,然后每层也会储存记忆供下一个输入使用。

1.4.更多形式的RNN

1.4.1.Elman Network & Jordan Network

在这里插入图片描述

Elan Network会把隐藏层的值存起来,再到下一个时间点读出,而Jordan Network会把整个network output的值存起来,再到下一个时间点读出。通常jordan network会比elman network的表现更好,这是由于elman network保存下来的信息没有targer做对比,不知道学的好不好,而jordan network保存的是output的值,所以就可以和target做对比。

1.4.2.Bidirectional RNN

在这里插入图片描述

双向RNN既可以先看 x t x^t xt,再看 x t + 1 x^{t+1} xt+1,最后看 x t + 2 x^{t+2} xt+2,又可以先看 x t + 2 x^{t+2} xt+2,再看 x t + 1 x^{t+1} xt+1,最后看 x t x^t xt,然后再把这两个方向同个输入的output输入到 y t y^t yt y t + 1 y^{t+1} yt+1 y t + 2 y^{t+2} yt+2中。这种结构相当于看完整个sentence再进行学习。

1.5.LSTM

在这里插入图片描述

LSTM(Long Short-Term Memory)是一种特殊类型的循环神经网络(Recurrent Neural Network, RNN),主要用于处理序列数据中的长期依赖问题。传统的RNN在处理长序列时可能会遇到梯度消失或梯度爆炸的问题,而LSTM通过引入一种特殊的记忆单元结构和门控机制来解决这些问题。

LSTM的基本单元包括以下几个关键部分:

  • 输入门(Input Gate):决定我们从当前输入中存储多少信息到细胞状态中。
  • 遗忘门(Forget Gate):决定我们从细胞状态中丢弃多少旧的信息。
  • 输出门(Output Gate):决定我们从细胞状态中输出多少信息到下一个时间步的隐藏状态。

这些门控机制由sigmoid激活函数控制,而新的候选值则由tanh激活函数生成。通过这种方式,LSTM能够学习哪些信息是重要的并应该被保留,哪些信息是不相关的并可以被忽略。

LSTM广泛应用于各种需要处理序列数据的任务中,例如语音识别、机器翻译、情感分析、时间序列预测等。由于其有效处理长期依赖的能力,LSTM在深度学习领域中是一个非常重要的模型。

在这里插入图片描述

LSTM的计算方法通常如上图所示。

在这里插入图片描述
假设每个input的权重如上图所示,右下角为输入的向量,假设函数 h h h g g g均为恒等函数,计算过程如下图所示:

请添加图片描述
在这里插入图片描述

那么在LSTM中我们如何进行learning呢?首先把一句话的第一个单词当做 x 1 x^1 x1输入模型中,得到 a 1 a^1 a1,我们再把 a 1 a^1 a1经过处理最后输出的 y 1 y^1 y1,把 y 1 y^1 y1和label来做一个交叉熵。接下来再把 a 1 a^1 a1和第二个单词 x 2 x^2 x2同时输入模型得到 a 2 a^2 a2,再把由 a 2 a^2 a2经过处理最后输出的 y 2 y^2 y2和label做交叉熵,以此类推就可以得到我们的loss function。

1.6.RNN的缺陷

在这里插入图片描述

RNN的train也可以使用梯度下降法来进行train,通常使用一套更有效率的算法,称为BPTT。

在这里插入图片描述

我们在进行RNN的学习时一般比较期望得到蓝色线的结果,但有时会事与愿违,我们得到的更可能会是绿线这样子的结果。这是为什么呢?

在这里插入图片描述

我们可以观察 loss 的 error surface ,可以看到这个 error surface 在很多地方都是非常平坦的,但是在某些地方又非常陡峭。这就导致了当我们的训练的点在平坦的部分移动时 loss 会缓慢下降,但是当点移动到了陡峭部分的时候 loss 会突然暴增。还有一种更糟糕的可能是因为之前都在平坦的部分移动,学习率会设置为一个比较大数值,当点运动到了陡峭部分时,由于这部分的梯度本就很大,再乘上很大的学习率,可能会导致点直接非常坐标表示的范围。

为什么 RNN 的 error surface 会有这种独特的性质呢?

在这里插入图片描述

考虑这样一个最简单的 RNN 例子,如上图的下半部分所示。由于 memory 里的内容在不同的时间段里需要被反复利用,当 w w w发生微小的变化时,对于 y y y的输出结果影响是巨大的。这就导致了在整个 error surface 上有些梯度很小有些梯度又很大的情况。

1.7.解决RNN的缺陷

在这里插入图片描述

使用LSTM可以避免发生梯度消失现象。不同于RNN每次输入都要洗掉 memory 的值,LSTM 是把 memory 中的值乘上一个 w w w 再与 input 进行相加的操作,只要权重参数 w w w 影响到 memory 中的值,这个影响就会一直存在,所以就不会导致 error surface 特别平坦的情况发生,我们可以放心调小学习率。

1.8.More Applications

在这里插入图片描述

RNN还可以应用时情感分析。通过将观众的评价输入RNN中就可以得到观众对于某部电影的态度。

在这里插入图片描述

RNN可以用来实现输入序列比输出序列更多的任务,如语音识别。

在这里插入图片描述

RNN还可以用于那些不确定输入和输出序列谁更长的任务,比如机器翻译。

1.9.Attention-based Model

在这里插入图片描述

在这种模型中,input 将直接输入 DNN/RNN,DNN/RNN会控制一个读头控制器,该控制器会从特定的reading head的位置从机器的memory中读取信息输入 DNN/RNN中,最后产生输出。

在这里插入图片描述

这个模型还有一个v2的版本,比初始的版本多了 一个写头控制器来控制机器memory的写入。

1.9.1.Visual Question Answering

在这里插入图片描述

视觉问答是计算机视觉和自然语言处理领域的一个研究方向,它的目标是让计算机系统能够理解图像内容,并根据图像回答人类提出的开放性问题。

在这里插入图片描述

通常做法是让图片通过 CNN 产生一组代表每个图片区域的向量,然后输入 query 到 DNN/RNN 后 reading head controller 会选择某一组向量输入到 DNN/RNN中,最后生成答案。

1.9.2.Speech Question Answering

在这里插入图片描述

Speech Question Answering (Speech QA) 是一个结合了语音识别(Speech Recognition)与自然语言处理(Natural Language Processing, NLP)技术的研究领域。其主要目标是使计算机系统能够通过语音输入来理解问题,并基于已有的知识或信息来生成准确的回答。

在这里插入图片描述

模型结构和 Visual Question Answering 的流程其实也大同小异。

总结

RNN( Recurrent Neural Network,循环神经网络)是一种特殊的神经网络架构,专门设计用于处理序列数据,例如时间序列数据或自然语言文本。与传统的前馈神经网络不同,RNN 具有反馈连接,这使得它能够记住之前的信息并在处理序列中的后续元素时使用这些信息。RNN 面临的一个主要挑战是长期依赖问题,即网络很难学习到序列中远距离元素之间的依赖关系。这个问题主要是由梯度消失或梯度爆炸造成的。为了克服长期依赖问题,研究人员提出了几种改进型的 RNN 架构,其中最著名的分别是Long Short-Term Memory (LSTM) 和 Gated Recurrent Unit (GRU) 。LSTM 引入了一种特殊的门控机制,包括输入门、遗忘门和输出门,以控制信息的流动,这种机制使得 LSTM 能够有效地学习长期依赖关系。而GRU 是 LSTM 的简化版本,它将 LSTM 的门控机制合并为更新门和重置门,减少了参数的数量。GRU 同样能有效处理长期依赖问题,同时计算成本较低。除此之外,我还学习了 Attention-based Model 。Attention-based model(基于注意力的模型)是一种在深度学习中用于处理序列数据的机制,最初是在自然语言处理(NLP)领域提出的,但后来也被应用于其他领域,如计算机视觉和语音识别等。这种模型通过允许模型关注输入序列中最重要的部分来提高模型的表现能力。其中,Visual Question Answering 和 Speech Question Answering 是两个比较常见的任务,在这一节的内容中我也简单学习了这两个任务的模型结构。这周接触了 RNN 这样一个新的神经网络,希望下周也可以继续加油,学习更多神经网络的知识。

  • 29
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值