当前位置: 首页 > news >正文

北京泵网站建设天工网

北京泵网站建设,天工网,保定市建设局网站,家装设计方案ppt案例注#xff1a;书中对代码的讲解并不详细#xff0c;本文对很多细节做了详细注释。另外#xff0c;书上的源代码是在Jupyter Notebook上运行的#xff0c;较为分散#xff0c;本文将代码集中起来#xff0c;并加以完善#xff0c;全部用vscode在python 3.9.18下测试通过书中对代码的讲解并不详细本文对很多细节做了详细注释。另外书上的源代码是在Jupyter Notebook上运行的较为分散本文将代码集中起来并加以完善全部用vscode在python 3.9.18下测试通过同时对于书上部分章节也做了整合。 Chapter8 Recurrent Neural Networks 8.7 Backpropagation Through Time 通过时间反向传播backpropagation through timeBPTT是循环神经网络中反向传播技术的一个特定应用它要求我们将循环神经网络的计算图一次展开一个时间步以获得模型变量和参数之间的依赖关系然后基于链式法则应用反向传播来计算和存储梯度。由于序列可能相当长因此依赖关系也可能相当长在下文中我们将阐明计算过程会发生什么以及如何在实践中解决它们。 8.7.1 RNN’s Gradient Analysis 我们从一个描述循环神经网络工作原理的简化模型开始此模型忽略了隐状态的特性及其更新方式的细节且其数学表示没有明确地区分标量、向量和矩阵。在这个简化模型中我们将时间步 t t t的隐状态表示为 h t h_t ht​输入表示为 x t x_t xt​输出表示为 o t o_t ot​分别使用 w h w_h wh​和 w o w_o wo​来表示隐藏层和输出层的权重。每个时间步的隐状态和输出可以写为 h t f ( x t , h t − 1 , w h ) , o t g ( h t , w o ) , (2) \begin{aligned}h_t f(x_t, h_{t-1}, w_h),\\o_t g(h_t, w_o),\end{aligned}\tag{2} ht​ot​​f(xt​,ht−1​,wh​),g(ht​,wo​),​(2) 其中 f f f和 g g g分别是隐藏层和输出层的变换。因此我们有一个链 { … , ( x t − 1 , h t − 1 , o t − 1 ) , ( x t , h t , o t ) , … } \{\ldots, (x_{t-1}, h_{t-1}, o_{t-1}), (x_{t}, h_{t}, o_t), \ldots\} {…,(xt−1​,ht−1​,ot−1​),(xt​,ht​,ot​),…}它们通过循环计算彼此依赖。前向传播相当简单一次一个时间步的遍历三元组 ( x t , h t , o t ) (x_t, h_t, o_t) (xt​,ht​,ot​)然后通过一个目标函数在所有 T T T个时间步内评估输出 o t o_t ot​和对应的标签 y t y_t yt​之间的差异 L ( x 1 , … , x T , y 1 , … , y T , w h , w o ) 1 T ∑ t 1 T l ( y t , o t ) . L(x_1, \ldots, x_T, y_1, \ldots, y_T, w_h, w_o) \frac{1}{T}\sum_{t1}^T l(y_t, o_t). L(x1​,…,xT​,y1​,…,yT​,wh​,wo​)T1​t1∑T​l(yt​,ot​). 对于反向传播按照链式法则 ∂ L ∂ w h 1 T ∑ t 1 T ∂ l ( y t , o t ) ∂ w h 1 T ∑ t 1 T ∂ l ( y t , o t ) ∂ o t ∂ g ( h t , w o ) ∂ h t ∂ h t ∂ w h . \begin{aligned}\frac{\partial L}{\partial w_h} \frac{1}{T}\sum_{t1}^T \frac{\partial l(y_t, o_t)}{\partial w_h} \\ \frac{1}{T}\sum_{t1}^T \frac{\partial l(y_t, o_t)}{\partial o_t} \frac{\partial g(h_t, w_o)}{\partial h_t} \frac{\partial h_t}{\partial w_h}.\end{aligned} ∂wh​∂L​​T1​t1∑T​∂wh​∂l(yt​,ot​)​T1​t1∑T​∂ot​∂l(yt​,ot​)​∂ht​∂g(ht​,wo​)​∂wh​∂ht​​.​ 在上式乘积的第一项和第二项很容易计算而第三项比较棘手因为我们需要循环地计算参数 w h w_h wh​对 h t h_t ht​的影响。根据式(2) h t h_t ht​既依赖于 h t − 1 h_{t-1} ht−1​又依赖于 w h w_h wh​其中 h t − 1 h_{t-1} ht−1​的计算也依赖于 w h w_h wh​。因此使用链式法则产生 ∂ h t ∂ w h ∂ f ( x t , h t − 1 , w h ) ∂ w h ∂ f ( x t , h t − 1 , w h ) ∂ h t − 1 ∂ h t − 1 ∂ w h . (3) \frac{\partial h_t}{\partial w_h} \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial w_h} \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial w_h}.\tag{3} ∂wh​∂ht​​∂wh​∂f(xt​,ht−1​,wh​)​∂ht−1​∂f(xt​,ht−1​,wh​)​∂wh​∂ht−1​​.(3) 为了导出上述梯度假设我们有三个序列 { a t } , { b t } , { c t } \{a_{t}\},\{b_{t}\},\{c_{t}\} {at​},{bt​},{ct​}当 t 1 , 2 , … t1,2,\ldots t1,2,…时序列满足 a 0 0 a_{0}0 a0​0且 a t b t c t a t − 1 a_{t}b_{t}c_{t}a_{t-1} at​bt​ct​at−1​。对于 t ≥ 1 t\geq 1 t≥1就很容易得出 a t b t ∑ i 1 t − 1 ( ∏ j i 1 t c j ) b i . (4) a_{t}b_{t}\sum_{i1}^{t-1}\left(\prod_{ji1}^{t}c_{j}\right)b_{i}.\tag{4} at​bt​i1∑t−1​(ji1∏t​cj​)bi​.(4) 基于下列公式替换 a t a_t at​、 b t b_t bt​和 c t c_t ct​ a t ∂ h t ∂ w h , b t ∂ f ( x t , h t − 1 , w h ) ∂ w h , c t ∂ f ( x t , h t − 1 , w h ) ∂ h t − 1 , \begin{aligned}a_t \frac{\partial h_t}{\partial w_h},\\ b_t \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial w_h}, \\ c_t \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial h_{t-1}},\end{aligned} at​bt​ct​​∂wh​∂ht​​,∂wh​∂f(xt​,ht−1​,wh​)​,∂ht−1​∂f(xt​,ht−1​,wh​)​,​ 则 ∂ h t ∂ w h ∂ f ( x t , h t − 1 , w h ) ∂ w h ∑ i 1 t − 1 ( ∏ j i 1 t ∂ f ( x j , h j − 1 , w h ) ∂ h j − 1 ) ∂ f ( x i , h i − 1 , w h ) ∂ w h . (5) \frac{\partial h_t}{\partial w_h}\frac{\partial f(x_{t},h_{t-1},w_h)}{\partial w_h}\sum_{i1}^{t-1}\left(\prod_{ji1}^{t} \frac{\partial f(x_{j},h_{j-1},w_h)}{\partial h_{j-1}} \right) \frac{\partial f(x_{i},h_{i-1},w_h)}{\partial w_h}.\tag{5} ∂wh​∂ht​​∂wh​∂f(xt​,ht−1​,wh​)​i1∑t−1​(ji1∏t​∂hj−1​∂f(xj​,hj−1​,wh​)​)∂wh​∂f(xi​,hi−1​,wh​)​.(5) 虽然我们可以使用链式法则递归地计算 ∂ h t / ∂ w h \partial h_t/\partial w_h ∂ht​/∂wh​但当 t t t很大时这个链就会变得很长在实践中是不可取的。 8.7.1.1 Cutting Off Time Steps 我们也可以在 τ \tau τ步后截断式(5)中的求和计算即将求和终止为 ∂ h t − τ / ∂ w h \partial h_{t-\tau}/\partial w_h ∂ht−τ​/∂wh​这种截断是通过在给定数量的时间步之后分离梯度来实现的。这样做导致该模型主要侧重于短期影响而不是长期影响在现实中是可取的。 8.7.1.2 Randomly Truncating 我们也可以用一个随机变量替换 ∂ h t / ∂ w h \partial h_t/\partial w_h ∂ht​/∂wh​这个随机变量通过序列 ξ t \xi_t ξt​实现。序列预定义了 0 ≤ π t ≤ 1 0 \leq \pi_t \leq 1 0≤πt​≤1其中 P ( ξ t 0 ) 1 − π t P(\xi_t 0) 1-\pi_t P(ξt​0)1−πt​且 P ( ξ t π t − 1 ) π t P(\xi_t \pi_t^{-1}) \pi_t P(ξt​πt−1​)πt​因此 E [ ξ t ] 1 E[\xi_t] 1 E[ξt​]1。使用 z t z_t zt​来替换式(3)中的梯度 ∂ h t / ∂ w h \partial h_t/\partial w_h ∂ht​/∂wh​得到 z t ∂ f ( x t , h t − 1 , w h ) ∂ w h ξ t ∂ f ( x t , h t − 1 , w h ) ∂ h t − 1 ∂ h t − 1 ∂ w h . z_t \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial w_h} \xi_t \frac{\partial f(x_{t},h_{t-1},w_h)}{\partial h_{t-1}} \frac{\partial h_{t-1}}{\partial w_h}. zt​∂wh​∂f(xt​,ht−1​,wh​)​ξt​∂ht−1​∂f(xt​,ht−1​,wh​)​∂wh​∂ht−1​​. 从 ξ t \xi_t ξt​的定义中推导出来 E [ z t ] ∂ h t / ∂ w h E[z_t] \partial h_t/\partial w_h E[zt​]∂ht​/∂wh​当 ξ t 0 \xi_t 0 ξt​0时递归计算终止在这个 t t t时间步。这导致了不同长度序列的加权和其中长序列出现的很少所以需要适当地加大权重。 上图说明了当基于循环神经网络使用通过时间反向传播分析数据集的三种策略 第一行采用随机截断方法是将文本划分为不同长度的片断第二行采用常规截断方法是将文本分解为相同长度的子序列第三行采用通过时间的完全反向传播结果是产生了在计算上不可行的表达式。 虽然随机截断在理论上具有吸引力但由于多种因素在实践中并不总比常规截断更好。首先在对过去若干个时间步经过反向传播后观测结果足以捕获实际的依赖关系。其次增加的方差抵消了时间步数越多梯度越精确的事实。第三模型可能需要经过一定程度的正则化以防止过拟合。通过常规截断方法时间反向传播会引入一定程度的正则化效果有助于控制模型的复杂度并提高其泛化能力。 8.7.2 Details of BPTT 下面将展示如何计算目标函数相对于所有模型参数的梯度。简单起见我们考虑一个没有偏置参数的RNN其在隐藏层中的激活函数使用恒等映射 ϕ ( x ) x \phi(x)x ϕ(x)x。对于时间步 t t t设单个样本的输入及其对应的标签分别为 x t ∈ R d \mathbf{x}_t \in \mathbb{R}^d xt​∈Rd和 y t y_t yt​。计算隐状态 h t ∈ R h \mathbf{h}_t \in \mathbb{R}^h ht​∈Rh和输出 o t ∈ R q \mathbf{o}_t \in \mathbb{R}^q ot​∈Rq的方式为 h t W h x x t W h h h t − 1 , o t W q h h t , \begin{aligned}\mathbf{h}_t \mathbf{W}_{hx} \mathbf{x}_t \mathbf{W}_{hh} \mathbf{h}_{t-1},\\ \mathbf{o}_t \mathbf{W}_{qh} \mathbf{h}_{t},\end{aligned} ht​ot​​Whx​xt​Whh​ht−1​,Wqh​ht​,​ 用 l ( o t , y t ) l(\mathbf{o}_t, y_t) l(ot​,yt​)表示时间步 t t t处的损失函数则目标函数的总体损失是 L 1 T ∑ t 1 T l ( o t , y t ) . L \frac{1}{T} \sum_{t1}^T l(\mathbf{o}_t, y_t). LT1​t1∑T​l(ot​,yt​). 模型绘制一个计算图如下所示。 上图中的模型参数是 W h x \mathbf{W}_{hx} Whx​、 W h h \mathbf{W}_{hh} Whh​和 W q h \mathbf{W}_{qh} Wqh​。通常训练该模型需要分别计算 ∂ L / ∂ W h x \partial L/\partial \mathbf{W}_{hx} ∂L/∂Whx​、 ∂ L / ∂ W h h \partial L/\partial \mathbf{W}_{hh} ∂L/∂Whh​和 ∂ L / ∂ W q h \partial L/\partial \mathbf{W}_{qh} ∂L/∂Wqh​。根据上图中的依赖关系我们可以沿箭头的相反方向遍历计算图依次计算和存储梯度。为了灵活地表示链式法则中不同形状的矩阵、向量和标量的乘法我们继续使用4.7中所述的 prod \text{prod} prod运算符。 首先有 ∂ L ∂ o t ∂ l ( o t , y t ) T ⋅ ∂ o t ∈ R q . (6) \frac{\partial L}{\partial \mathbf{o}_t} \frac{\partial l (\mathbf{o}_t, y_t)}{T \cdot \partial \mathbf{o}_t} \in \mathbb{R}^q.\tag{6} ∂ot​∂L​T⋅∂ot​∂l(ot​,yt​)​∈Rq.(6) 接着得到 ∂ L ∂ W q h ∑ t 1 T prod ( ∂ L ∂ o t , ∂ o t ∂ W q h ) ∑ t 1 T ∂ L ∂ o t h t ⊤ ∈ R q × h \frac{\partial L}{\partial \mathbf{W}_{qh}} \sum_{t1}^T \text{prod}\left(\frac{\partial L}{\partial \mathbf{o}_t}, \frac{\partial \mathbf{o}_t}{\partial \mathbf{W}_{qh}}\right) \sum_{t1}^T \frac{\partial L}{\partial \mathbf{o}_t} \mathbf{h}_t^\top\in \mathbb{R}^{q \times h} ∂Wqh​∂L​t1∑T​prod(∂ot​∂L​,∂Wqh​∂ot​​)t1∑T​∂ot​∂L​ht⊤​∈Rq×h 其中 ∂ L / ∂ o t \partial L/\partial \mathbf{o}_t ∂L/∂ot​是由式(6)给出的。 接下来如上图所示在最后的时间步 T T T目标函数 L L L仅通过 o T \mathbf{o}_T oT​依赖于隐状态 h T \mathbf{h}_T hT​。因此我们通过使用链式法可以很容易地得到梯度$\partial L/\partial \mathbf{h}_T ∂ L ∂ h T prod ( ∂ L ∂ o T , ∂ o T ∂ h T ) W q h ⊤ ∂ L ∂ o T ∈ R h . (7) \frac{\partial L}{\partial \mathbf{h}_T} \text{prod}\left(\frac{\partial L}{\partial \mathbf{o}_T}, \frac{\partial \mathbf{o}_T}{\partial \mathbf{h}_T} \right) \mathbf{W}_{qh}^\top \frac{\partial L}{\partial \mathbf{o}_T}\in \mathbb{R}^h.\tag{7} ∂hT​∂L​prod(∂oT​∂L​,∂hT​∂oT​​)Wqh⊤​∂oT​∂L​∈Rh.(7) 隐状态的梯度 ∂ L / ∂ h t ∈ R h \partial L/\partial \mathbf{h}_t \in \mathbb{R}^h ∂L/∂ht​∈Rh在任何 t T t T tT时都可以递归地计算为 ∂ L ∂ h t prod ( ∂ L ∂ h t 1 , ∂ h t 1 ∂ h t ) prod ( ∂ L ∂ o t , ∂ o t ∂ h t ) W h h ⊤ ∂ L ∂ h t 1 W q h ⊤ ∂ L ∂ o t . (8) \frac{\partial L}{\partial \mathbf{h}_t} \text{prod}\left(\frac{\partial L}{\partial \mathbf{h}_{t1}}, \frac{\partial \mathbf{h}_{t1}}{\partial \mathbf{h}_t} \right) \text{prod}\left(\frac{\partial L}{\partial \mathbf{o}_t}, \frac{\partial \mathbf{o}_t}{\partial \mathbf{h}_t} \right) \mathbf{W}_{hh}^\top \frac{\partial L}{\partial \mathbf{h}_{t1}} \mathbf{W}_{qh}^\top \frac{\partial L}{\partial \mathbf{o}_t}.\tag{8} ∂ht​∂L​prod(∂ht1​∂L​,∂ht​∂ht1​​)prod(∂ot​∂L​,∂ht​∂ot​​)Whh⊤​∂ht1​∂L​Wqh⊤​∂ot​∂L​.(8) 对于任何时间步 1 ≤ t ≤ T 1 \leq t \leq T 1≤t≤T展开递归计算得 ∂ L ∂ h t ∑ i t T ( W h h ⊤ ) T − i W q h ⊤ ∂ L ∂ o T t − i . (9) \frac{\partial L}{\partial \mathbf{h}_t} \sum_{it}^T {\left(\mathbf{W}_{hh}^\top\right)}^{T-i} \mathbf{W}_{qh}^\top \frac{\partial L}{\partial \mathbf{o}_{Tt-i}}.\tag{9} ∂ht​∂L​it∑T​(Whh⊤​)T−iWqh⊤​∂oTt−i​∂L​.(9) 我们可以从式(9)中看到这个简单的线性例子已经陷入到 W h h ⊤ \mathbf{W}_{hh}^\top Whh⊤​的潜在的非常大的幂。在这个幂中小于1的特征值将会消失大于1的特征值将会发散。这在数值上是不稳定的表现形式为梯度消失或梯度爆炸解决此问题的一种方法如8.7.1中所述。 最后应用链式规则得 ∂ L ∂ W h x ∑ t 1 T prod ( ∂ L ∂ h t , ∂ h t ∂ W h x ) ∑ t 1 T ∂ L ∂ h t x t ⊤ ∈ R h × d , ∂ L ∂ W h h ∑ t 1 T prod ( ∂ L ∂ h t , ∂ h t ∂ W h h ) ∑ t 1 T ∂ L ∂ h t h t − 1 ⊤ ∈ R h × d , \begin{aligned} \frac{\partial L}{\partial \mathbf{W}_{hx}} \sum_{t1}^T \text{prod}\left(\frac{\partial L}{\partial \mathbf{h}_t}, \frac{\partial \mathbf{h}_t}{\partial \mathbf{W}_{hx}}\right) \sum_{t1}^T \frac{\partial L}{\partial \mathbf{h}_t} \mathbf{x}_t^\top\in \mathbb{R}^{h \times d},\\ \frac{\partial L}{\partial \mathbf{W}_{hh}} \sum_{t1}^T \text{prod}\left(\frac{\partial L}{\partial \mathbf{h}_t}, \frac{\partial \mathbf{h}_t}{\partial \mathbf{W}_{hh}}\right) \sum_{t1}^T \frac{\partial L}{\partial \mathbf{h}_t} \mathbf{h}_{t-1}^\top\in \mathbb{R}^{h \times d}, \end{aligned} ∂Whx​∂L​∂Whh​∂L​​t1∑T​prod(∂ht​∂L​,∂Whx​∂ht​​)t1∑T​∂ht​∂L​xt⊤​∈Rh×d,t1∑T​prod(∂ht​∂L​,∂Whh​∂ht​​)t1∑T​∂ht​∂L​ht−1⊤​∈Rh×d,​ 其中 ∂ L / ∂ h t \partial L/\partial \mathbf{h}_t ∂L/∂ht​由式(7)和式(8)递归计算得到是影响数值稳定性的关键量。在训练过程中一些中间值会被存储以避免重复计算例如存储 ∂ L / ∂ h t \partial L/\partial \mathbf{h}_t ∂L/∂ht​以便在计算 ∂ L / ∂ W h x \partial L / \partial \mathbf{W}_{hx} ∂L/∂Whx​和 ∂ L / ∂ W h h \partial L / \partial \mathbf{W}_{hh} ∂L/∂Whh​时使用。
http://www.pierceye.com/news/422985/

相关文章:

  • 网站建设要学什么什么网站可以做项目
  • 网站后台 更新缓存交易网站的建设规划
  • 湖北省建设厅网站如何申诉济南做网站建设的公司
  • 培训教育的网站怎么做制作网站必做步骤
  • 中国建设银行章丘支行网站品牌营销推广方案
  • 江西做网站的公司有哪些wordpress 企业 模板
  • 中国建设银行u盾下载假网站吗备案域名租用
  • 网站建设好之后都有哪些推广方法怎么做无货源电商
  • php网站开发实例教程源代码学生个人网页设计作品模板
  • 网站建设宣传册广州网站设计报价
  • 网站建设业务饱和了吗建投五公司网站
  • 有哪个网站能卖自己做的衣服app推广方案
  • 腾讯做网站上传企业官网建设_创意网站建设
  • 公司如何做网站做推广怎么做外语网站
  • 建网站公司用什么网站程序上海网上推广优化
  • 中国制造网 做网站费用东莞阳光网官网首页
  • 网站开发实用技术知识点.net手机网站源码
  • 做免费看电影的网站不违法吗企业邮箱格式怎么写才正确
  • 网站页头背景西安门户网站
  • 做网站499浙江公司响应式网站建设推荐
  • 网站设计学习外贸做那种网站
  • 互联网创业项目整合网站京东自营入驻流程及费用
  • asp网站500错误网页设计师专业培训
  • 泉州网站制作套餐整屏幕滑动的网站
  • 做阿里巴巴网站多少钱如何卸载安装wordpress
  • 企业综合型网站建设方案成都比较好的装修设计公司
  • 网吧手机网站模版网络网站推广首荐乐云seo
  • 网站添加支付功能网上能免费做网站发布叼
  • 哪里有做美食的视频网站关键词搜索量查询工具
  • 科技公司企业网站源码门户建设目标