2021李宏毅机器学习课程笔记——Recurrent Neural Network

注:这个是笔者用于期末复习的一个简单笔记,因此难以做到全面详细,有疑问欢迎大家在评论区讨论

I. Basic Idea

首先引入一个例子,槽填充(Slot Filling)问题:

  • Input: I would like to arrive Guangzhou on November 2nd.
  • Output: Destination=> Taipei | time of arrival=> November 2nd

即需要在输入句子中提取出我们想了解的给定类型信息(例如上面有两类,目的地与到达时间)。那么对于这个问题,我们可以将其当做一个分类问题来求解,预测每个单词是否属于目的类别中的一个。

而在深度网络只能接受向量(矩阵)作为输入,因此首先需要将单词给映射成向量,这一过程称为word embedding,常见的embedding方法有独热编码法、词哈希法等。

问题:网络需要上下文信息以对词进行准确分类,例如:

  • arrive Guangzhou on November 2nd
  • leave Guangzhou on November 2nd

这两句话中的广州都是地点。然而,如果不看到网络之前的arrive或者leave,我们是无法区分广州到底是指出发地还是目的地,即网络需要内存(memory)。

II. RNN

循环神经网络(Recurrent Neural Network)是一种带记忆的神经网络,这里的记忆存的是网络的隐藏层输出:
在这里插入图片描述
下面给出一种更喜闻乐见的RNN画法:
在这里插入图片描述
即,上一层隐藏层的内容(a1)会被存储起来,作为一种输入给输进下一层隐藏层(a2)中。回到上面的例子,arrive(x1)经处理后得到的信息(a1)会被输入Guangzhou(x2)编码得到的信息(a2)中,从而影响对Guangzhou内容类别的判定。

此外,RNN也有许多变种,例如将上一层输出(而非上一层隐藏层)输入下一层隐藏层:
在这里插入图片描述
或者双向的RNN:
在这里插入图片描述

III. LSTM

LSTM(Long Short-term Memory,长短期记忆网络)也是RNN的一种,相比RNN而言其"memory"会更复杂一些,如下所示:
在这里插入图片描述
红框里的这一坨相当于之前RNN里我们讲的a1,只不过a1只有简单的存储与传递功能,而这里的LSTM模块功能与结构上都要更为复杂。如果用更加喜闻乐见的形式的话,LSTM长这样:在这里插入图片描述
这个结构…其实挺复杂的,倒也不要求去背,用的时候直接调包即可。

关于LSTM,我们还需要了解其一个性质,即其可以预防梯度消失问题(不能预防梯度爆炸),通过其memory与输入相加。

猜你喜欢

转载自blog.csdn.net/qq_40714949/article/details/122306380