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

循环神经网络(一)

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

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

一、概述

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

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

二、数学符号

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

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

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

三、使用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<0>,是一个初始化的参数,可以是0向量。

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

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

3、单向RNN的反向传播

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

4、各种RNN结构

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

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

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

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

——written by linhxx 2018.03.15

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-03-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏闪电gogogo的专栏

浅读K-means

百度百科释义为   K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法...

2006
来自专栏决胜机器学习

机器学习(十六) ——SVM理论基础

机器学习(十六)——SVM理论基础 (原创内容,转载请注明来源,谢谢) 一、概述 支持向量机(supportvector machine,SVM),是一种分类...

3737
来自专栏AI科技大本营的专栏

资源 |​ 史上最全机器学习笔记

本文由LCatro整理 机器学习 机器学习算法原理 https://github.com/wepe/MachineLearning 机器学习实战原书内容与批注 ...

43810
来自专栏PPV课数据科学社区

机器学习算法基础概念学习总结

1.基础概念 (1) 10折交叉验证:英文名是10-fold cross-validation,用来测试算法的准确性。是常用的测试方法。将数据集分成10份。轮...

3774
来自专栏书山有路勤为径

目标检测(Object detection)

这次我们学习构建神经网络的另一个问题,定位分类问题。这意味着我们不仅需要判断图片中是不是一辆车,还要在图片中将他标记出来。“定位”的意思是判断汽车在图片中的具体...

1181
来自专栏机器学习与自然语言处理

深度学习在文本分类中的应用

近期阅读了一些深度学习在文本分类中的应用相关论文(论文笔记),同时也参加了CCF 大数据与计算智能大赛(BDCI)2017的一个文本分类问题的比赛:让AI当法...

5266
来自专栏机器学习算法与Python学习

SoftMax回归详解

Contents 1 关键词 2 引言 3 代价函数 4 softmax回归模型参数化的特点 5 权重衰减 6 softmax与logistics回归的关系 1...

3998
来自专栏机器学习算法与Python学习

机器学习(7) -- k-means 聚类

根据大家的提议,从今天起每次算法介绍完之后会给大家一个用python编写的实例刚打架参考 Clustering  9. Clustering     9.1...

3785
来自专栏WD学习记录

机器学习深度学习 笔试面试题目整理(2)

(1) 思想    改变全连接为局部连接,这是由于图片的特殊性造成的(图像的一部分的统计特性与其他部分是一样的),通过局部连接和参数共享大范围的减少参数值。可...

2562
来自专栏机器学习与自然语言处理

信息量,熵,交叉熵,相对熵与代价函数

如果有⼈告诉我们⼀个相当不可能的事件发⽣了,我们收到的信息要多于我们被告知某个很可能发⽣的事件发⽣时收到的信息。如果我们知道某件事情⼀定会发⽣,那么我们就不会接...

1207

扫码关注云+社区

领取腾讯云代金券