马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
循环神经网络(RNN)具体表明
一、弁言
循环神经网络(Recurrent Neural Network,RNN)是一类用于处置惩罚序列数据的神经网络。在自然语言处置惩罚、语音辨认、时间序列推测等浩繁范畴都有广泛的应用。与传统的前馈神经网络差异,RNN可以或许处置惩罚具偶然间序列特性的数据,由于它具有内部状态,可以对序列中的汗青信息举行影象和使用。
二、RNN的根本布局
(一)睁开布局
- 时间步(Time Steps)
- RNN可以看作是将一个雷同的神经网络模块在时间序列上睁开。每一个时间步都有雷同的网络布局处置惩罚输入数据。假设我们有一个序列数据x=[x1,x2,⋯ ,xT]x = [x_1,x_2,\cdots,x_T]x=[x1,x2,⋯,xT],此中TTT是序列的长度。对于每一个时间步ttt(1≤t≤T1\leq t\leq T1≤t≤T),RNN吸收输入xtx_txt。
- 比方,在处置惩罚自然语言句子时,句子中的每个单词可以看作是一个时间步的输入。假如句子是“I love machine learning”,那么单词“I”可以是x1x_1x1,“love”是x2x_2x2,以此类推。
- 隐蔽状态(Hidden State)
- 在每个时间步,RNN除了吸收输入xtx_txt,还会根据上一个时间步的隐蔽状态ht−1h_{t - 1}ht−1来盘算当前时间步的隐蔽状态hth_tht。隐蔽状态可以明白为网络对序列汗青信息的一种影象。
- 其盘算方式一样寻常通过一个公式来实现,如ht=tanh(Wihxt+Whhht−1+bh)h_t=\tanh(W_{ih}x_t + W_{hh}h_{t - 1}+b_h)ht=tanh(Wihxt+Whhht−1+bh),此中WihW_{ih}Wih是输入到隐蔽层的权重矩阵,WhhW_{hh}Whh是隐蔽层到隐蔽层的权重矩阵,bhb_hbh是隐蔽层的偏置向量,tanh\tanhtanh是激活函数,通常用于将隐蔽状态的值映射到(−1,1)(-1,1)(−1,1)区间。
- 输出(Output)
- 根据隐蔽状态hth_tht,RNN可以产生输出yty_tyt。输出的盘算方式也依赖于任务范例。比方,在分类使掷中,大概是通过一个全毗连层和softmax激活函数来盘算种别概率,即yt=softmax(Whyht+by)y_t=\text{softmax}(W_{hy}h_t + b_y)yt=softmax(Whyht+by),此中WhyW_{hy}Why是隐蔽层到输出层的权重矩阵,byb_yby是输出层的偏置向量。
(二)循环毗连
- 信息通报机制
- RNN的关键在于其循环毗连,也就是上一个时间步的隐蔽状态ht−1h_{t - 1}ht−1可以或许到场到当前时间步hth_tht的盘算中。这种循环布局使得网络可以或许在处置惩罚当前输入时思量到之前的输入信息。
- 以文本天生任务为例,当天生一个句子中的下一个单词时,网络会根据之前已经天生的单词(通过隐蔽状态影象)来决定下一个单词的概率分布。
- 参数共享
- 在RNN的每个时间步中,权重矩阵(如WihW_{ih}Wih、WhhW_{hh}Whh和WhyW_{hy}Why)是共享的。这意味着网络在差异时间步使用雷同的参数来处置惩罚输入和更新隐蔽状态。
- 这种参数共享的机制使得RNN可以或许处置惩罚差异长度的序列,而且可以有用地淘汰模子的参数数量。比方,在处置惩罚是非不一的文本序列时,不必要为每个长度的序列单独筹划一套参数。
三、RNN的练习
- 丧失函数(Loss Function)
- 根据任务的差异,RNN使用差异的丧失函数。在分类使掷中,常用交织熵丧失函数。假设对于一个时间步ttt,真实标签为yt∗y_t^*yt∗,模子输出为yty_tyt,那么交织熵丧失函数为Lt=−∑iyt∗(i)logyt(i)L_t=-\sum_{i}y_t^{*}(i)\log y_t(i)Lt=−∑iyt∗(i)logyt(i),此中iii是种别索引。
- 在序列到序列的任务(如呆板翻译)中,大概会对整个序列的输出盘算丧失,比方使用BLEU(Bilingual Evaluation Understudy)等评估指标来权衡翻译的质量,并将其转化为丧失函数来练习模子。
- 反向传播(Backpropagation) - BPTT(Backpropagation Through Time)
- RNN的练习使用反向传播算法,但由于其循环布局,称为BPTT。在BPTT中,必要盘算丧失函数对每个时间步的权重矩阵的梯度。
- 盘算梯度时,由于隐蔽状态的循环依赖,梯度会随着时间步的回溯而不停累积和传播。比方,对于ttt时间的权重矩阵WhhW_{hh}Whh,其梯度不但取决于ttt时间的输入和输出,还取决于之前全部时间步的信息,由于hth_tht依赖于ht−1h_{t - 1}ht−1,ht−1h_{t - 1}ht−1又依赖于ht−2h_{t - 2}ht−2,以此类推。
- 然而,这种长时间的梯度累积大概会导致梯度消散(Gradient Vanishing)或梯度爆炸(Gradient Explosion)标题。梯度消散是指随着时间步的回溯,梯度趋近于0,使得网络难以学习到长期依赖关系;梯度爆炸是指梯度变得非常大,导致练习过程不稳固。
四、RNN的应用场景
(一)自然语言处置惩罚
- 语言模子(Language Model)
- RNN可以用于构建语言模子,推测句子中下一个单词的概率分布。比方,给定一个句子的前缀,如“I want to”,语言模子可以盘算出单词“learn”、“eat”、“go”等作为下一个单词的概率。
- 通过对大量文本数据的练习,语言模子可以学习到语言的语法、语义等知识,从而天生自然流通的句子。
- 呆板翻译(Machine Translation)
- 在呆板翻译使掷中,RNN可以将源语言句子的序列信息编码为一个固定长度的向量(通过末了的隐蔽状态),然后再将这个向量解码为目标语言句子。
- 比方,将英文句子翻译为中文句子,RNN可以先对英文句子的单词序枚举行处置惩罚,得到一个包罗句子语义信息的隐蔽状态,然后根据这个隐蔽状态渐渐天生中文句子的单词。
(二)语音辨认
- 音频序列处置惩罚
- 对于语音信号,通常将其转换为音频特性序列(如梅尔频率倒谱系数 - MFCC)。RNN可以处置惩罚这个音频特性序列,将其映射到对应的文本内容。
- 每个时间步可以对应一小段音频特性,RNN通过对音频序列的处置惩罚,辨认出语音中的单词、短语等内容。
(三)时间序列推测
- 股票代价推测
- 在金融范畴,RNN可以用于推测股票代价。将汗青股票代价数据作为序列输入,RNN可以学习到代价的颠簸模式,从而对将来的代价举行推测。
- 比方,输入已往几天或几个月的股票代价,模子可以推测将来一天或一周的股票代价走势。
- 景象数据推测
- 对于景象数据,如温度、湿度、气压等时间序列数据,RNN可以根据已往的景象数据推测将来的景象环境。
- 比方,根据已往几个小时的景象数据,推测将来几个小时的气候变革,如是否会下雨、温度变革等。
五、RNN的范围性及改进
- 梯度消散和梯度爆炸标题
- 如前文所述,RNN在练习过程中轻易出现梯度消散和梯度爆炸标题。为了办理梯度消散标题,出现了一些改进的RNN布局,如是非期影象网络(LSTM)和门控循环单元(GRU)。
- LSTM通过引入门控机制(输入门、忘记门和输出门)来控制信息的活动,可以或许更好地生存和更新长期影象,有用地缓解了梯度消散标题。GRU是LSTM的一种简化变体,也具有雷同的门控机制,在肯定水平上淘汰了模子的复杂度,同时也能较好地处置惩罚长期依赖关系。
- 长期影象本事有限
- 固然RNN理论上可以处置惩罚长序列数据,但在现实应用中,其对长期影象的处置惩罚本事有限。特殊是对于非常长的序列,RNN大概会丢失早期时间步的告急信息。
- 改进的模子如LSTM和GRU通过特殊的布局筹划增强了长期影象本事,可以或许更有用地使用序列中的长期信息。
循环神经网络是一种强大的处置惩罚序列数据的工具,只管存在一些范围性,但通过不停的改进和优化,在浩繁范畴发挥侧告急的作用。
|