循环神经网络(一)——循环神经网络模型与反向传播算法

循环神经网络(一)

——循环神经网络模型与反向传播算法

(原创内容,转载请注明来源,谢谢)

一、概述

这一章开始讲循环神经网络(RNN,Recurrent Neural Network),是与卷积神经网络不同的神经网络结构,重点处理的是序列数据。

主要应用场景,在于语音处理、文字处理,包括翻译、情感分析、词法识别、音乐创作、语音识别等。

二、数学符号

对于后面会大量用到的数学符号,这里提前描述。

这里假设某一个输入样本是一句话,分为若干个单词,则第一个单词标记为x,第二个标记为x,以此类推。输出的为y,y等。该样本单词总数为Tx,输出总数为Ty。

输出的y,每一个标记对应的输入的结果,根据需求可以是二分类或多分类,下图表示识别到输入的单词对应的单词表的位置的值为1,其他地方的值为。

三、使用RNN原因

使用RNN,而不是用标准的神经网络,主要原因如下:

1、输入、输出的长度可以不一样,可以只有一个输入而有多个输出,也可以有多个输入只有一个输出等。

2、对于输入的内容而言,单个样本,输入的一串内容,大部分情况下是有前后关联的,如一句话的前后单词之间的关联。这种关联,换到另一个输入样本,即另一句话的时候,未必在同一个位置。

例如第一句话的前两个单词组成一个词语,第二句话前两个单词可能不能组成词语。

这个特点是至关重要的,直接导致无法使用传统的神经网络,因为对于每个样本的训练都不一样。

四、RNN

1、RNN结构

RNN不是把输入的x都放在第一层,而是每一层放一个输入,每一层都可以有输出,下一层的输出取决于上一层的输出以及本层的输入。

这里有几个共用参数,Waa、Wax、Wya,字母的含义,W即参数系数,以Wax为例,a表示这个W是用于计算a的,x表示这个W后面需要乘以矩阵x。

对于整个RNN,Waa、Wax、Wya的值都是唯一的,即这三个值在每一层都是共用的。

下图是RNN的两种结构图画法。

这里的RNN是单向的RNN,即后面一层感知前面一层的输出,而前面一层对后面层次的输出无感知。这样可能会有缺点,需要双向RNN(BRNN,bidirecctional RNN),后续会学习到。

2、单向RNN的前向传播

由于是单向RNN,因此只有后层对前面一层的感知。这里第一层之前,加了一个a,是一个初始化的参数,可以是向量。

具体公式如下图所示,其中对于a的激活函数g,常用tanh,有时也用relu;而对于y,由于是分类函数,因此常用sigmoid。

这里计算a时,用到了上一层的a和这一层的x,为了计算简便,可以合并计算,如下图所示:

3、单向RNN的反向传播

这里的反向传播,即从损失函数开始,逐层往前的反向传播。其中,损失函数的定义,和logistic回归的损失函数定义方式一致。

4、各种RNN结构

上面的例子,是样本输入数量和输出数量一致的多对多的RNN,除此之外,还有其他的RNN形式,如下:

其中,一对多的RNN主要用在音乐创作等,如输入一个数字表示要某种感情的音乐,输出一个序列。

多对一的RNN主要用在语句情感分析,根据输入的序列,分析语句的情感,并且用数字返回情感类型。

多对多有两种形式:输入输出一样的多对多,常用于语句分析、单词提取分析等;而先输入后输出的多对多,常用于翻译等,这里的输入模块称为编码器,输出模块称为解码器。

——written by linhxx 2018.03.15

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315G0LZES00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券