首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

网络正则化与优化的再探索

循环神经网络

前馈神经网络假设每次输入都是独立的,也就是说每次网络的输出只依赖于当前的输入。但是在很多现实任务中,不同时刻的输入可以相互影响,比如视频、语音、文本等序列结构数据。某个时刻的输出可能和前面时刻的输入相关。此外,这些序列结构数据的长度一般是不固定的。而前馈神经网络要求输入和输出的维数都是固定的,不能任意改变。当处理序列数据时,前馈神经网络就无能力为了。

在前馈神经网络模型中,连接存在层与层之间,每层的节点之间是无连接的。循环神经网络(Recurrent Neural Networks,RNN)通过使用带自反馈的神经元,能够处理任意长度的序列。循环神经网络比前馈神经网络更加符合生物神经网络的结构。循环神经网络已经被广泛应用在语音识别、语言模型以及自然语言生成等任务上。

给定一个输入序列x1:T =(x1,x2,...,xt,...,xT),循环神经网络通过下面公式更新带反馈边的隐藏层的活性值 ht:

从数学上讲,公式6.1可以看成一个动态系统。动态系统是指系统的状态按照一定的规律随时间变化的系统。因此,活性值 ht 在很多文献上也称为状态或隐状态。但这里的状态是数学上的概念,区别与我们在前馈网络中定义的神经元的状态。理论上循环神经网络可以近似任意的动态系统。图6.1给出了循环神经网络的示例。

循环神经网络的参数训练可以通过时序反向传播(Backpropagation Through Time,BPTT)算法[Werbos, 1990]来学习。时序反向传播即按照时间的逆序将错误信息一步步地往前传递。这样,当输入序列比较长时,会存在梯度爆炸和消失问题[Bengio et al., 1994, Hochreiter and Schmidhuber, 1997, Hochreiteret al., 2001],也称为长期依赖问题。为了解决这个问题,人们对循环神经网络进行了很多的改进,其中最有效的一个改进版本是长短期记忆神经网络。

在本章中,我们先介绍循环神经网络的基本定义以及梯度计算,然后介绍两种扩展模型:长短时记忆神经网络和门限循环单元网络。

简单循环网络

我们先来看一个非常简单的循环神经网络,叫简单循环网络(Simple Re-current Network,SRN)[Elman, 1990]。

假设时刻 t 时,输入为 xt,隐层状态(隐层神经元活性)为 ht。ht不仅和

当前时刻的输入相关,也和上一个时刻的隐层状态相关。

一般我们使用如下函数:

其中 zt 为神经元的净输入,f (·) 是非线性激活函数,通常为logistic 函数或 tanh 函数。

图6.2给出了按时间展开的循环神经网络。如果我们把每个时刻的状态都看作是前馈神经网络的一层的话,循环神经网络可以看作是在时间维度上权值共享的神经网络。

应用到机器学习 循环神经网络可以应用到很多不同类型的机器学习任务。根据这些任务的特点可以分为以下几种模式:

• 序列到类别模式:这种模式就是序列数据的分类问题。输入为序列,输出为类别。比如在文本分类中,输入数据为单词的序列,输出为该文本的类别。

• 序列到序列模式:这类任务的输入和输出都为序列。具体又可以分为两种情况:

– 同步的序列到序列模式:这种模式就是机器学习中的序列标注(Se-quence Labeling)任务,即每一时刻都有输入和输出,输入序列和输 出序列的长度相同。比如词性标注(Part-of-Speech Tagging)中,每 一个单词都需要标注其对应的词性标签。

– 异步的序列到序列模式:这种模式也称为编码器-解码器(Encoder- Decoder)模型,即输入和输出不需要有严格的对应关系,也不需要保持相同的长度。比如在机器翻译中,输入为源语言的单词序列,输出为目标语言的单词序列。

下面我们分别来看下这几种应用模式。

序列到类别模式

首先,我们来看下序列到类别的应用模式。假设一个样本 x = (x1, · · · , xT) 为一个长度为T的序列,输出为一个类别y ∈ 。我们可以将样本x按不同时刻输入到循环神经网络中,并得到不同时刻的隐藏状态h1,···,hT。我们可以将hT看作整个序列的最终表示(或特征),并输入给分类器g(·),

这里 g(·) 可以是简单的线性分类器(比如Logistic 回归)或复杂的分类器(比如多层前馈神经网络)。

除了将最后时刻的隐藏状态作为序列表示(如图6.3a)之外,我们还可以对整个序列的所有隐藏状态进行平均,并用这个平均状态来作为整个序列的表示(如图6.3b)。

同步的序列到序列模式

在同步的序列到序列模式中(如图6.5所示),输入为一个长度为 T 的序列 x = (x1,··· ,xT),输出为序列y = (y1,··· ,yT)。样本x按不同时刻输入到循 环神经网络中,并得到不同时刻的隐状态h1,···,hT。每个时刻的隐状态ht代 表了当前时刻和历史的信息,并输入给分类器 g(·) 得到当前时刻的标签 yˆt。

异步的序列到序列模式

在异步的序列到序列模式中(如图6.5所示),输入为一个长度为 T 的序列

x =(x1,··· ,xT),输出为序列y = (y1,··· ,yT)。样本x按不同时刻输入到循环神经网络中,并得到不同时刻的隐状态h1,··· ,hT。每个时刻的隐状态ht代表了当前时刻和历史的信息,并输入给分类器 g(·) 得到当前时刻的标签 yˆt。

作者:邱锡鹏 犀语科技首席科学家复旦大学计算机学院,副教授

主要研究方向:深度学习、自然语言处理、自动问答系统以及表示学习。在ACL、EMNLP、IJCAI等计算机学会A类期刊、会议上发表40余篇学术论文。开源自然语言处理工具FudanNLP项目负责人,主要开发者。

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券