神经网络(六)循环神经网络

一、增加记忆功能

        1.可计算问题

                其中函数不涉及记忆问题,可以使用前馈神经网络计算

                但是图灵机涉及记忆问题,需要为神经网络增加记忆能力

        2.如何增加记忆能力

                 ①时延神经网络

                        额外增加一个延时单元(用以存储网络的历史信息<输入、输出、隐状态等>)

                 ②自回归模型

                        用变量yt的历史信息来预测自己

                 ③有外部输入的非线性自回归模型

                                 f(.)为非线性函数,可以是前馈网络。Kx和Ky为超参数

 二、循环神经网络

        循环神经网络的神经元自带反馈,可以处理任意长度的时序数据

         循环神经网络比前馈神经网络更符合神生物经网络的结构,被广泛应用在语音设备、预言模型、及自然语言生成等任务。

        将循环神经网络按时间展开

                 其在时间维上极深,同样存在梯度消失问题。在非时间维上较浅,需要适度增加其模型复杂度。

        1.简单循环神经网络

                 一个完全连接的循环网络是任何非线性动力系统的近似器

                循环神经网络通用近似定理

                         s_t=g(s_{t-1},x)        y_t=o(s_t)

                         St为每个时刻的隐藏状态,xt为外部输入,g(.)为状态转换函数,O(.)为连续输出函数

                图灵完备

                        可以实现图灵机的所用功能(可以解决所有可以算问题),一个完全连接的循环神经网络可以近似于图灵完备

        2.应用到机器学习

                 ①序列到类别

                         将所有h进行平均/求和,再送入分类器之中

                ②同步的序列到序列模式

                         例如:中文分词、信息抽取(文本中抽取信息,形成知识)、语音识别--等容易出现分歧的问题

                ③异步的序列到序列模式

                         例如:机器翻译

        3.参数学习与长程依赖问题

                ①参数学习

                        以同步的序列到序列循环神经网络为例,给定一个学习样本(x,y),长度均为T

                         时刻t的瞬时损失函数为:L_t=L(y_t,g(h_t))     g(h_t)为后验概率

                        总损失函数L=\sum_{t=1}^TL_t 

                        计算梯度Z_t=Uh_{t-1}+Wx_t+b       h_t=f(z_t)

                        \frac{\partial L}{\partial U}=\sum_{t=1}^T \frac{\partial L_t}{\partial U} =\sum_{k=1}^t\frac{\partial L_t}{\partial z_k}h^T_{k-1} =\sum_{k=1}^t \delta _t,h^T_{k-1}

                                \delta_{t,k}为第t时刻的损失对第k步隐藏神经元的净输入Z_k的导数

                        \delta_{t,k}=diag({f}'(z_k))U^T\delta _{t,k+1}

                                tips:diag(x,n):矩阵x上的第n条对角线上的元素

                        随时间的反向传播算法(BPTT)

                        \frac{\partial L_t}{\partial U}=\sum_{k=1}^t \delta_{t,k}h^T_{k-1}

                        \delta_{t,k}=diag({f}'(z_k))U^T\delta _{t,k+1}=\prod _{\tau =k}^{t-1}(diag({f}'(z_\tau)))\delta_{t,t}\approx \gamma ^{t-k}\delta _{t,t}

                              \approx \gamma ^{t-k}\delta _{t,t}

                ②长程依赖问题

                        当\gamma>1t-k\rightarrow \infty,\delta _t,k\rightarrow \infty时会出现梯度爆炸问题

                        当\gamma<1t-k\rightarrow \infty,\delta _t,k\rightarrow \infty时会出现梯度消失问题

                        梯度爆炸和梯度消失统称为长程依赖问题,由于此问题,实际上只能学习到短周期的依赖关系。

                        原因是循环神经网络在时间维度上非常深

                        1.修正梯度爆炸问题

                                权重衰减、梯度截断

                        2.修正梯度消失问题

                                改进模型,使h_th_{t-1}之间的线性关系移动到g(x_t;\theta)

                                改进方法①:令梯度\gamma=1

                                        将循环边改为线性依赖关系:h_t=h_{t-1}+g(x_t;\theta)     会削弱非线性性能

                                                其中g(x_t;\theta)=g(wx_t+b)

                                        增加非线性h_t=h_{t-1}+g(x_t,h_{t-1};\theta)

                                                其中g(x_t,h_{t-1};\theta)=\delta(uh_{x-1}+wx_t+b)

        4.常见的循环神经网络

                门控机制:控制信息积累的速度。(选择性的加入新的信息,选择性遗忘)

                ①GRU(门控循环单元)

                        h_t=z_t\bigodot h_{t-1}+(1-z_t)\bigodot g(x_t,h_{t-1};\theta)

                        更新门z_t,值域为[0,1],用于选择性遗忘z_t=\sigma(w_zx_t+U_zh_{t-1}+b_z)

                        g(x_t,h_{t-1};\theta)=\hat{h_t}使用tanh实现\hat{h_t}=tanh(W_hx_t+U_h(h_{t-1})+b_h)

                        改进\hat{h_t},使h_t仅与x_t相关(去除与h_{t-1}的联系

                        重置门r_t

                ​​​​​​​        ​​​​​​​        r_t=\sigma(W_rx_t+U_rh_{t-1}+b_r) ,\hat{h_t}=tanh(W_hx_t+U_h(r_t\bigodot h_{t-1})+b_h)

                门控循环单元

                ②LSTM(长短期记忆网络)

                 引入内部记忆单元c_{t-1}用于记忆,解放h_t,使其可以更好的进行非线性拟合

                i_t=\sigma(W_ix_t+U_ih_{t-1}+b_i)     f_t=\sigma(W_fx_t+U_fh_{t-1}+b_f)

                o_t=\sigma(w_ox_t+U_oh_{t-1}+b_o)

                !!! 可以使得ht=o_t\bigodot tanh(c_t)

                各种变体

         5.深层循环神经网络

                ①堆叠循环神经网络

                ②双向循环神经网络

 三、小结

        优点:引入记忆功能、图灵完备

        缺点:长程依赖问题、记忆容量问题、并行能力问题

四、将循环神经网络扩展到图

        序列是最简单的数据结构,更复杂的结构还有

        1.递归神经网络

                用于处理结构。

                 在一个有向无循环图共享一个组合函数

        2.图网络

                用于处理结构。

                 更新序列:先更新点、再更新边、最后更新全局结点

                 对于任意图结构G(V,E)

                更新函数m_t^{(v)}=\sum_{u \in N(v)}f(h^{(v)}_{t-1},h^{(u)}_{t-1},e^{(u,v)})        h_t^{(v)}=g(h^{(v)}_{t-1},m_t^{(v)}))

                读出函数y_t=g(h_T|v \in V)​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值