<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 小批量梯度下降的簡要介紹以及如何配置批量大小 > 原文: [https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/](https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/) 隨機梯度下降是用于訓練深度學習模型的主要方法。 梯度下降有三種主要變體,可能會混淆哪一種使用。 在這篇文章中,您將發現一般應該使用的一種梯度下降以及如何配置它。 完成這篇文章后,你會知道: * 什么梯度下降以及它如何從高層起作用。 * 什么批次,隨機和小批量梯度下降以及每種方法的優點和局限性。 * 這種小批量梯度下降是首選方法,以及如何在您的應用程序上配置它。 讓我們開始吧。 * **Update Apr / 2018** :添加了額外的參考,以支持批量大小為 32。 ![A Gentle Introduction to Mini-Batch Gradient Descent and How to Configure Batch Size](https://img.kancloud.cn/cd/73/cd738b458da3eb49b2c2614a7dc12b3b_640x427.png) 小批量梯度下降和如何配置批量大小的溫和介紹 照片由 [Brian Smithson](https://www.flickr.com/photos/smithser/6269720226/) ,保留一些權利。 ## 教程概述 本教程分為 3 個部分;他們是: 1. 什么是梯度下降? 2. 對比 3 種類型的梯度下降 3. 如何配置 Mini-Batch Gradient Descent ## 什么是梯度下降? 梯度下降是一種優化算法,通常用于查找機器學習算法的權重或系數,例如人工神經網絡和邏輯回歸。 它的工作原理是讓模型對訓練數據進行預測,并使用預測誤差來更新模型,以減少錯誤。 該算法的目標是找到最小化訓練數據集上的模型的誤差的模型參數(例如,系數或權重)。它通過對模型進行更改來實現此目的,該模型將其沿著梯度或誤差斜率向下移動到最小誤差值。這使算法的名稱為“梯度下降”。 下面的偽代碼草圖總結了梯度下降算法: ```py model = initialization(...) n_epochs = ... train_data = ... for i in n_epochs: train_data = shuffle(train_data) X, y = split(train_data) predictions = predict(X, model) error = calculate_error(y, predictions) model = update_model(model, error) ``` 有關更多信息,請參閱帖子: * [機器學習的梯度下降](http://machinelearningmastery.com/gradient-descent-for-machine-learning/) * [如何利用 Python 從頭開始隨機梯度下降實現線性回歸](http://machinelearningmastery.com/implement-linear-regression-stochastic-gradient-descent-scratch-python/) ## 對比 3 種類型的梯度下降 梯度下降可以根據用于計算誤差的訓練模式的數量而變化;而這又用于更新模型。 用于計算誤差的模式數包括用于更新模型的梯度的穩定性。我們將看到計算效率的梯度下降配置和誤差梯度的保真度存在張力。 梯度下降的三種主要風格是批量,隨機和小批量。 讓我們仔細看看每一個。 ### 什么是隨機梯度下降? 隨機梯度下降(通常縮寫為 SGD)是梯度下降算法的變體,其計算誤差并更新訓練數據集中每個示例的模型。 每個訓練樣例的模型更新意味著隨機梯度下降通常被稱為[在線機器學習算法](https://en.wikipedia.org/wiki/Online_machine_learning)。 #### 上升空間 * 頻繁更新可立即深入了解模型的表現和改進速度。 * 這種梯度下降的變體可能是最容易理解和實現的,特別是對于初學者。 * 增加的模型更新頻率可以更快地學習某些問題。 * 噪聲更新過程可以允許模型避免局部最小值(例如,早熟收斂)。 #### 缺點 * 如此頻繁地更新模型在計算上比其他梯度下降配置更昂貴,在大型數據集上訓練模型需要更長的時間。 * 頻繁更新可能導致噪聲梯度信號,這可能導致模型參數并且反過來模型誤差跳躍(在訓練時期上具有更高的方差)。 * 沿著誤差梯度的噪聲學習過程也可能使算法難以確定模型的最小誤差。 ### 什么是批量梯度下降? 批量梯度下降是梯度下降算法的變體,其計算訓練數據集中每個示例的誤差,但僅在評估了所有訓練樣本之后更新模型。 整個訓練數據集的一個周期稱為訓練時期。因此,經常說批量梯度下降在每個訓練時期結束時執行模型更新。 #### 上升空間 * 對模型的更新較少意味著這種梯度下降變體在計算上比隨機梯度下降更有效。 * 降低的更新頻率導致更穩定的誤差梯度,并且可以在一些問題上導致更穩定的收斂。 * 預測誤差的計算與模型更新的分離使算法成為基于并行處理的實現。 #### 缺點 * 更穩定的誤差梯度可能導致模型過早收斂到不太理想的參數組。 * 訓練時期結束時的更新需要在所有訓練樣例中累積預測誤差的額外復雜性。 * 通常,批量梯度下降以這樣的方式實現,即它需要存儲器中的整個訓練數據集并且可用于算法。 * 對于大型數據集,模型更新以及訓練速度可能變得非常慢。 ### 什么是 Mini-Batch Gradient Descent? 小批量梯度下降是梯度下降算法的變體,其將訓練數據集分成小批量,用于計算模型誤差和更新模型系數。 實現可以選擇對小批量的梯度求和或者取梯度的平均值,這進一步減小了梯度的方差。 小批量梯度下降試圖在隨機梯度下降的穩健性和批量梯度下降的效率之間找到平衡。它是深度學習領域中最常用的梯度下降實現。 #### 上升空間 * 模型更新頻率高于批量梯度下降,這允許更穩健的收斂,避免局部最小值。 * 與隨機梯度下降相比,批量更新提供了計算上更有效的過程。 * 批量允許在內存和算法實現中不具有所有訓練數據的效率。 #### 缺點 * 小批量需要為學習算法配置額外的“小批量大小”超參數。 * 錯誤信息必須在批量梯度下降等小批量訓練示例中累積。 ## 如何配置 Mini-Batch Gradient Descent 對于大多數應用,小批量梯度下降是梯度下降的推薦變體,特別是在深度學習中。 為簡潔起見,通常稱為“批量大小”的小批量大小通常被調整到正在執行實現的計算體系結構的一個方面。例如 2 的冪,適合 GPU 或 CPU 硬件的內存要求,如 32,64,128,256 等。 批量大小是學習過程中的滑塊。 * 較小的值使學習過程在訓練過程中以噪聲成本快速收斂。 * 較大的值使學習過程緩慢收斂,并準確估計誤差梯度。 **提示 1:批量大小的良好默認值可能是 32\.** > ... [批量大小]通常在 1 到幾百之間選擇,例如, [批量大小] = 32 是一個很好的默認值,其值大于 10,利用了矩陣 - 矩陣乘積相對于矩陣向量乘積的加速。 - [深層架構基于梯度的訓練的實用建議](https://arxiv.org/abs/1206.5533),2012 **更新 2018** :這是支持批量大小為 32 的另一篇論文,這里是引用(m 是批量大小): > 所呈現的結果證實,對于給定的計算成本,在大范圍的實驗中使用小批量尺寸實現了最佳的訓練穩定性和泛化表現。在所有情況下,已經獲得了最佳結果,批量大小 m = 32 或更小,通常小到 m = 2 或 m = 4。 - [重新審視深度神經網絡的小批量訓練](https://arxiv.org/abs/1804.07612),2018 年。 **提示 2:在調整批量大小時,最好在不同批量大小的情況下查看模型驗證錯誤與訓練時間的學習曲線。** > ...在選擇了其他超參數(學習率除外)之后,通過比較訓練曲線(訓練和驗證誤差與訓練時間量),可以分別優化其他超參數。 **提示 3:在調整所有其他超參數后調整批量大小和學習率。** > ... [批量大小]和[學習率]可能會與其他超參數稍微交互,因此兩者都應在最后重新優化。一旦選擇[批量大小],通常可以固定,而其他超參數可以進一步優化(動量超參數除外,如果使用的話)。 ## 進一步閱讀 如果您要深入了解,本節將提供有關該主題的更多資源。 ### 相關文章 * [機器學習的梯度下降](http://machinelearningmastery.com/gradient-descent-for-machine-learning/) * [如何利用 Python 從頭開始隨機梯度下降實現線性回歸](http://machinelearningmastery.com/implement-linear-regression-stochastic-gradient-descent-scratch-python/) ### 補充閱讀 * [維基百科上的隨機梯度下降](https://en.wikipedia.org/wiki/Stochastic_gradient_descent) * [維基百科上的在線機器學習](https://en.wikipedia.org/wiki/Online_machine_learning) * [梯度下降優化算法概述](http://sebastianruder.com/optimizing-gradient-descent/index.html) * [深層架構基于梯度的訓練的實用建議](https://arxiv.org/abs/1206.5533),2012 * [隨機優化的高效小批量訓練](http://www.cs.cmu.edu/~muli/file/minibatch_sgd.pdf),2014 年 * [在深度學習中,為什么我們不使用整個訓練集來計算梯度? Quora 上的](https://www.quora.com/In-deep-learning-why-dont-we-use-the-whole-training-set-to-compute-the-gradient) * [大規模機器學習的優化方法](https://arxiv.org/abs/1606.04838),2016 ## 摘要 在這篇文章中,您發現了梯度下降算法以及您應該在實踐中使用的版本。 具體來說,你學到了: * 什么梯度下降以及它如何從高層起作用。 * 什么批次,隨機和小批量梯度下降以及每種方法的優點和局限性。 * 這種小批量梯度下降是首選方法,以及如何在您的應用程序上配置它。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看