<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 對時間反向傳播的溫和介紹 > 原文: [https://machinelearningmastery.com/gentle-introduction-backpropagation-time/](https://machinelearningmastery.com/gentle-introduction-backpropagation-time/) Backpropagation Through Time或BPTT是用于更新LSTM等循環神經網絡中權重的訓練算法。 為了有效地構建循環神經網絡的序列預測問題,您必須對通過時間的反向傳播正在做什么以及在訓練網絡時如何通過時間截斷反向傳播等可配置變量將影響技能,穩定性和速度有一個強有力的概念性理解。帖子,你會得到一個溫和的介紹Backpropagation通過時間打算為從業者(沒有方程!)。 在這篇文章中,您將獲得針對從業者的Backpropagation Through Time的溫和介紹(無方程!)。 閱讀這篇文章后,你會知道: * 什么反向傳播是時間以及它如何與多層感知器網絡使用的反向傳播訓練算法相關。 * 導致需要通過時間截斷反向傳播的動機,這是用于訓練LSTM的深度學習中最廣泛使用的變體。 * 考慮如何配置截斷反向傳播時間以及研究和深度學習庫中使用的規范配置的符號。 讓我們開始吧。 ![A Gentle Introduction to Backpropagation Through Time](img/96082bd310ea8de2ee4ab610276dd092.jpg) 時間反向傳播的溫和介紹 [Jocelyn Kinghorn](https://www.flickr.com/photos/joceykinghorn/11215752936/) 的照片,保留一些權利。 ## 反向傳播訓練算法 反向傳播指的是兩件事: * 用于計算導數的數學方法和衍生鏈規則的應用。 * 用于更新網絡權重以最小化錯誤的訓練算法。 我們在這里使用的是后一種對反向傳播的理解。 反向傳播訓練算法的目標是修改神經網絡的權重,以便與響應于相應輸入的某些預期輸出相比最小化網絡輸出的誤差。 它是一種監督學習算法,允許根據所產生的特定錯誤糾正網絡。 一般算法如下: 1. 呈現訓練輸入模式并通過網絡傳播以獲得輸出。 2. 將預測輸出與預期輸出進行比較并計算誤差。 3. 計算相對于網絡權重的誤差的導數。 4. 調整權重以最小化錯誤。 5. 重復。 有關Backpropagation的更多信息,請參閱帖子: * [如何在Python中從頭開始實現反向傳播算法](http://machinelearningmastery.com/implement-backpropagation-algorithm-scratch-python/) 反向傳播訓練算法適用于訓練固定大小的輸入 - 輸出對上的前饋神經網絡,但是可能在時間上排序的序列數據呢? ## 通過時間反向傳播 Backpropagation Through Time,或BPTT,是將Backpropagation訓練算法應用于應用于序列數據的循環神經網絡,如時間序列。 循環神經網絡每步顯示一??個輸入并預測一個輸出。 從概念上講,BPTT的工作方式是展開所有輸入時間步長。每個時間步長有一個輸入時間步長,一個網絡副本和一個輸出。然后計算每個時間步長的誤差并累積。網絡將回滾并更新權重。 在空間上,在給定問題的順序依賴性的情況下,展開的循環神經網絡的每個時間步長可被視為附加層,并且來自先前時間步的內部狀態被視為隨后時間步的輸入。 我們可以總結算法如下: 1. 向網絡呈現輸入和輸出對的一系列時間步長。 2. 展開網絡,然后計算并累積每個時間步長的錯誤。 3. 匯總網絡并更新權重。 4. 重復。 隨著時間步長的增加,BPTT在計算上可能是昂貴的。 如果輸入序列由數千個時間步長組成,則這將是單個更新權重更新所需的導數的數量。這可能導致重量消失或爆炸(變為零或溢出)并使慢學習和模型技能嘈雜。 ## 通過時間截斷反向傳播 截斷反向傳播通過時間,或TBPTT,是用于循環神經網絡的BPTT訓練算法的修改版本,其中序列一次一步地處理并且周期性地(k1時間步長)BPTT更新被執行回固定數量的時間步長( k2時間步長)。 Ilya Sutskever在他的論文中明確指出: > 截斷反向傳播可以說是訓練RNN最實用的方法。 > > ... > > BPTT的一個主要問題是單個參數更新的高成本,這使得無法使用大量迭代。 > > … > > 使用簡單的方法可以降低成本,該方法將1,000個長序列分成50個序列(比方說),每個序列長度為20,并將每個長度為20的序列視為單獨的訓練案例。這是一種合理的方法,可以在實踐中很好地工作,但它對于跨越20多個步驟的時間依賴性是盲目的。 > > … > > 截斷BPTT是一種密切相關的方法。它一次處理一個序列的序列,并且每k1個時間步,它運行BPTT達k2個時間步,因此如果k2很小,參數更新可以很便宜。因此,它的隱藏狀態已暴露于許多時間步,因此可能包含有關遠期過去的有用信息,這些信息將被機會性地利用。 - Ilya Sutskever,[訓練循環神經網絡](http://www.cs.utoronto.ca/~ilya/pubs/ilya_sutskever_phd_thesis.pdf),論文,2013年 We can summarize the algorithm as follows: 1. 向網絡呈現輸入和輸出對的k1個時間步長序列。 2. 展開網絡然后計算并累積k2個時間步長的錯誤。 3. 匯總網絡并更新權重。 4. 重復 TBPTT算法需要考慮兩個參數: * **k1** :更新之間的正向通過時間步數。通常,考慮到重量更新的執行頻率,這會影響訓練的速度或速度。 * **k2** :應用BPTT的時間步數。通常,它應該足夠大以捕獲問題中的時間結構以供網絡學習。值太大會導致梯度消失。 為了更清楚: > ...可以使用有界歷史近似值,其中相關信息被保存了固定數量的時間步長,并且忘記了任何早于此的信息。通常,這應該被視為用于簡化計算的啟發式技術,但是,如下所述,它有時可以充當真實梯度的適當近似值,并且在權重被調整為網絡的情況下也可能更合適。運行。讓我們稱這個算法在時間上被截斷反向傳播。如果h表示保存的先前時間步數,則該算法將表示為BPTT(h)。 > > … > > 注意,在BPTT(h)中,每次網絡運行另外的時間步驟時,重新執行最近的h時間步驟的向后傳遞。為了概括這一點,可以考慮在執行下一個BPTT計算之前讓網絡運行h0個額外的時間步驟,其中h0 &lt;= h。 > > … > > 該算法的關鍵特征是直到時間步t + h0才執行下一個后向傳遞。在中間時間內,網絡輸入,網絡狀態和目標值的歷史記錄保存在歷史緩沖區中,但不對該數據進行處理。我們用這個算法表示BPTT(h; h0)。顯然,BPTT(h)與BPTT(h; 1)相同,BPTT(h; h)是符合消息的BPTT算法。 - Ronald J. Williams和Jing Peng,[一種基于高效梯度的復發網絡軌跡在線訓練算法](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.56.7941&rep=rep1&type=pdf),1990 我們可以借用Williams和Peng的符號,并將不同的TBPTT配置稱為TBPTT(k1,k2)。 使用這種表示法,我們可以定義一些標準或常用方法: 注意,這里n指的是序列中的總時間步數: * **TBPTT(n,n)**:在序列的所有時間步長(例如經典BPTT)的序列末尾進行更新。 * **TBPTT(1,n)**:一次處理一個時間步,然后進行更新,覆蓋到目前為止所見的所有時間步長(例如Williams和Peng的經典TBPTT)。 * **TBPTT(k1,1)**:網絡可能沒有足夠的時間背景來學習,嚴重依賴內部狀態和輸入。 * **TBPTT(k1,k2),其中k1&lt; k2&lt; n** :每個序列執行多次更新,這可以加速訓練。 * **TBPTT(k1,k2),其中k1 = k2** :一種常見配置,其中固定數量的時間步長用于前向和后向時間步(例如10s至100s)。 我們可以看到所有配置都是TBPTT(n,n)的變體,它基本上試圖用可能更快的訓練和更穩定的結果來近似相同的效果。 論文中報道的規范TBPTT可以被認為是TBPTT(k1,k2),其中k1 = k2 = h并且h &lt;= n,并且其中所選擇的參數小(幾十到幾百步)。 在像TensorFlow和Keras這樣的庫中,事物看起來很相似,并且h定義了準備好的數據的時間步長的向量化固定長度。 ## 進一步閱讀 本節提供了一些進一步閱讀的資源。 ### 圖書 * [Neural Smithing:前饋人工神經網絡中的監督學習](http://www.amazon.com/dp/0262527014?tag=inspiredalgor-20),1999 * [深度學習](http://www.amazon.com/dp/0262035618?tag=inspiredalgor-20),2016年 ### 文件 * [通過反向傳播錯誤學習表示](https://www.iro.umontreal.ca/~vincentp/ift3395/lectures/backprop_old.pdf),1986 * [通過時間反向傳播:它做了什么以及如何做](http://axon.cs.byu.edu/~martinez/classes/678/Papers/Werbos_BPTT.pdf),1990 * [一種基于高效梯度的復發網絡軌跡在線訓練算法](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.56.7941&rep=rep1&type=pdf),1990 * [訓練循環神經網絡](http://www.cs.utoronto.ca/~ilya/pubs/ilya_sutskever_phd_thesis.pdf),論文,2013年 * [基于梯度的遞歸網絡學習算法及其計算復雜度](https://web.stanford.edu/class/psych209a/ReadingsByDate/02_25/Williams%20Zipser95RecNets.pdf),1995 ### 用品 * 維基百科上的 [Backpropagation](https://en.wikipedia.org/wiki/Backpropagation) * [維基百科上的時間反向傳播](https://en.wikipedia.org/wiki/Backpropagation_through_time) * [截斷反向傳播的樣式](http://r2rt.com/styles-of-truncated-backpropagation.html) * [回答問題“RNN:何時應用BPTT和/或更新權重?”](https://stats.stackexchange.com/a/220111/8706)在CrossValidated上 ## 摘要 在這篇文章中,您發現了Backpropagation Through Time用于訓練復現神經網絡。 具體來說,你學到了: * 什么反向傳播是時間以及它如何與多層感知器網絡使用的反向傳播訓練算法相關。 * 導致需要通過時間截斷反向傳播的動機,這是用于訓練LSTM的深度學習中最廣泛使用的變體。 * 考慮如何配置截斷反向傳播時間以及研究和深度學習庫中使用的規范配置的符號。 您對通過時間的反向傳播有任何疑問嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看