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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 為什么用隨機權重初始化神經網絡? > 原文: [https://machinelearningmastery.com/why-initialize-a-neural-network-with-random-weights/](https://machinelearningmastery.com/why-initialize-a-neural-network-with-random-weights/) 必須將人工神經網絡的權重初始化為小的隨機數。 這是因為這是用于訓練模型的隨機優化算法的期望,稱為隨機梯度下降。 要理解這種解決問題的方法,首先必須了解非確定性和隨機算法的作用,以及隨機優化算法在搜索過程中利用隨機性的必要性。 在這篇文章中,您將發現為什么必須隨機初始化神經網絡權重的完整背景。 閱讀這篇文章后,你會知道: * 關于針對具有挑戰性的問題的非確定性和隨機算法的需求。 * 在隨機優化算法中初始化和搜索期間使用隨機性。 * 隨機梯度下降是隨機優化算法,需要隨機初始化網絡權重。 讓我們開始吧。 ![Why Initialize a Neural Network with Random Weights?](https://img.kancloud.cn/af/b2/afb252d9a51413ee6b074d4ff19056bd_640x424.png) 為什么用隨機權重初始化神經網絡? 照 [lwtt93](https://www.flickr.com/photos/37195641@N03/7086827121/) ,保留一些權利。 ## 概觀 這篇文章分為 4 部分;他們是: 1. 確定性和非確定性算法 2. 隨機搜索算法 3. 神經網絡中的隨機初始化 4. 初始化方法 ## 確定性和非確定性算法 經典算法是確定性的。 一個例子是對列表進行排序的算法。 給定一個未排序的列表,排序算法,比如冒泡排序或快速排序,將系統地對列表進行排序,直到您有一個有序的結果。確定性意味著每次給出相同的列表時,它將以完全相同的方式執行。它將在程序的每個步驟中進行相同的移動。 確定性算法很棒,因為它們可以保證最佳,最差和平均運行時間。問題是,它們不適合所有問題。 有些問題對計算機來說很難。也許是因為組合的數量;也許是因為數據的大小。它們非常難,因為確定性算法不能用于有效地解決它們。該算法可能會運行,但會繼續運行直到宇宙的熱量死亡。 另一種解決方案是使用[非確定性算法](https://en.wikipedia.org/wiki/Nondeterministic_algorithm)。這些是在算法執行期間做出決策時使用[隨機性](https://en.wikipedia.org/wiki/Randomized_algorithm)元素的算法。這意味著當在相同數據上重新運行相同的算法時,將遵循不同的步驟順序。 他們可以迅速加快獲得解決方案的過程,但解決方案將是近似的,或“_ 好 _”,但往往不是“_ 最佳 _。”不確定性算法往往不能強保證運行時間或找到的解決方案的質量。 這通常很好,因為問題非常嚴重,任何好的解決方案通常都會令人滿意。 ## 隨機搜索算法 搜索問題通常非常具有挑戰性,需要使用大量使用隨機性的非確定性算法。 算法本身并不是隨機的;相反,他們會謹慎使用隨機性。它們在一個邊界內是隨機的,被稱為[隨機算法](https://en.wikipedia.org/wiki/Stochastic_optimization)。 搜索的增量或逐步性質通常意味著過程和算法被稱為從初始狀態或位置到最終狀態或位置的優化。例如,隨機優化問題或隨機優化算法。 一些例子包括遺傳算法,模擬退火和隨機梯度下降。 搜索過程是從可能的解決方案空間的起點到一些足夠好的解決方案的增量。 它們在使用隨機性方面具有共同特征,例如: * 在初始化期間使用隨機性。 * 在搜索過程中使用隨機性。 我們對搜索空間的結構一無所知。因此,為了消除搜索過程中的偏差,我們從隨機選擇的位置開始。 隨著搜索過程的展開,我們有可能陷入搜索空間的不利區域。在搜索過程中使用隨機性可能會導致失敗并找到更好的最終候選解決方案。 陷入困境并返回不太好的解決方案的想法被稱為陷入局部最優。 這兩個元素在搜索過程中隨機初始化和隨機性一起工作。 如果我們將搜索找到的任何解決方案視為臨時或候選,并且搜索過程可以多次執行,它們可以更好地協同工作。 這為隨機搜索過程提供了多個機會來啟動和遍歷候選解決方案的空間,以尋找更好的候選解決方案 - 即所謂的全局最優解。 候選解決方案空間的導航通常使用山脈和山谷的一個或兩個景觀的類比來描述(例如像[健身景觀](https://en.wikipedia.org/wiki/Fitness_landscape))。如果我們在搜索過程中最大化得分,我們可以將景觀中的小山丘視為當地的最佳山峰,將最大的山丘視為全球最佳山峰。 這是一個迷人的研究領域,我有一些背景。例如,看我的書: * [聰明的算法:自然啟發的編程食譜](http://cleveralgorithms.com/nature-inspired/index.html) ## 神經網絡中的隨機初始化 使用稱為隨機梯度下降的隨機優化算法訓練人工神經網絡。 該算法使用隨機性,以便為正在學習的數據中的輸入到輸出的特定映射函數找到足夠好的權重集。這意味著每次運行訓練算法時,特定訓練數據的特定網絡將適合具有不同模型技能的不同網絡。 這是一個功能,而不是一個 bug。 我在帖子中更多地寫了這個問題: * [在機器學習中擁抱隨機性](https://machinelearningmastery.com/randomness-in-machine-learning/) 如前一節所述,諸如隨機梯度下降的隨機優化算法在選擇搜索的起始點和搜索的進展中使用隨機性。 具體而言,隨機梯度下降要求將網絡的權重初始化為小的隨機值(隨機,但接近零,例如[0.0,0.1])。在搜索過程中,在每個時期之前的訓練數據集的混洗中也使用隨機性,這反過來導致每個批次的梯度估計的差異。 您可以在這篇文章中了解更多關于隨機梯度下降的信息: * [微量批量梯度下降的簡要介紹以及如何配置批量大小](https://machinelearningmastery.com/gentle-introduction-mini-batch-gradient-descent-configure-batch-size/) 搜索或學習神經網絡的進展稱為收斂。發現次優解或局部最優被稱為早熟收斂。 > 用于深度學習模型的訓練算法本質上通常是迭代的,因此需要用戶指定開始迭代的一些初始點。此外,訓練深度模型是一項非常困難的任務,大多數算法都會受到初始化選擇的強烈影響。 - 第 301 頁,[深度學習](https://amzn.to/2H5wjfg),2016 年。 評估神經網絡配置技能的最有效方法是多次重復搜索過程,并報告模型在這些重復上的平均表現。這為配置提供了從多個不同初始條件集搜索空間的最佳機會。有時這稱為多次重啟或多次重啟搜索。 您可以在這篇文章中了解有關神經網絡有效評估的更多信息: * [如何評估深度學習模型的技巧](https://machinelearningmastery.com/evaluate-skill-deep-learning-models/) ### 為什么不將權重設置為零? 每次我們訓練網絡時,我們都可以使用相同的權重集;例如,您可以對所有權重使用 0.0 的值。 在這種情況下,學習算法的方程將無法對網絡權重進行任何更改,并且模型將被卡住。重要的是要注意,每個神經元中的偏差權重默認設置為零,而不是一個小的隨機值。 具體地,在連接到相同輸入的隱藏層中并排的節點必須具有用于學習算法的不同權重以更新權重。 這通常被稱為在訓練期間需要打破對稱性。 > 也許唯一已知完全確定的屬性是初始參數需要在不同單元之間“打破對稱性”。如果具有相同激活功能的兩個隱藏單元連接到相同的輸入,則這些單元必須具有不同的初始參數。如果它們具有相同的初始參數,則應用于確定性成本和模型的確定性學習算法將以相同方式不斷更新這兩個單元。 - 第 301 頁,[深度學習](https://amzn.to/2H5wjfg),2016 年。 ### 何時初始化為相同權重? 每次訓練網絡時,我們都可以使用相同的隨機數。 在評估網絡配置時,這沒有用。 在生產環境中使用模型的情況下,給定訓練數據集訓練相同的最終網絡權重集可能是有幫助的。 您可以在此文章中了解有關修復使用 Keras 開發的神經網絡的隨機種子的更多信息: * [如何使用 Keras](https://machinelearningmastery.com/reproducible-results-neural-networks-keras/) 獲得可重現的結果 ## 初始化方法 傳統上,神經網絡的權重被設置為小的隨機數。 神經網絡權重的初始化是一個完整的研究領域,因為網絡的仔細初始化可以加速學習過程。 現代深度學習庫,例如 Keras,提供了許多網絡初始化方法,所有這些都是用小隨機數初始化權重的變體。 例如,在為所有網絡類型編寫時,Keras 中提供了當前的方法: * **Zeros** :生成張量初始化為 0 的初始值設定項。 * **Ones** :生成張量初始化為 1 的初始值設定項。 * **常量**:生成張量初始化為常量值的初始值設定項。 * **RandomNormal** :生成具有正態分布的張量的初始化器。 * **RandomUniform** :生成具有均勻分布的張量的初始化器。 * **TruncatedNormal** :生成截斷正態分布的初始化程序。 * **VarianceScaling** :初始化程序,能夠使其比例適應權重的形狀。 * **Orthogonal** :生成隨機正交矩陣的初始化器。 * **Identity** :生成單位矩陣的初始化程序。 * **lecun_uniform** :LeCun 統一初始化器。 * **glorot_normal** :Glorot 正常初始化器,也稱為 Xavier 正常初始化器。 * **glorot_uniform** :Glorot 統一初始化器,也叫 Xavier 統一初始化器。 * **he_normal** :他正常的初始化程序。 * **lecun_normal** :LeCun 正常初始化程序。 * **he_uniform** :他統一方差縮放初始化器。 有關詳細信息,請參閱[文檔](https://keras.io/initializers/)。 出于興趣,Keras 開發人員為不同的層類型選擇的默認初始值設定項如下: * **致密**(例如 MLP): _glorot_uniform_ * **LSTM** : _glorot_uniform_ * **CNN** : _glorot_uniform_ 您可以在本文中了解更多關于“ _glorot_uniform_ ”,也稱為“ _Xavier normal_ ”,以 Xavier Glorot 方法的開發人員命名: * [了解深度前饋神經網絡訓練的難度](http://proceedings.mlr.press/v9/glorot10a.html),2010。 沒有單一的最佳方法來初始化神經網絡的權重。 > 現代初始化策略簡單且具有啟發性。設計改進的初始化策略是一項艱巨的任務,因為神經網絡優化還不是很清楚。 [...]我們對初始點如何影響泛化的理解特別原始,幾乎沒有為如何選擇初始點提供指導。 - 第 301 頁,[深度學習](https://amzn.to/2H5wjfg),2016 年。 這是一個超級參數,供您探索,測試和試驗您的特定預測建模問題。 你有一個最喜歡的重量初始化方法嗎? 請在下面的評論中告訴我。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * [深度學習](https://amzn.to/2H5wjfg),2016 年。 ### 用品 * 維基百科上的[非確定性算法](https://en.wikipedia.org/wiki/Nondeterministic_algorithm) * [維基百科上的隨機算法](https://en.wikipedia.org/wiki/Randomized_algorithm) * [維基百科上的隨機優化](https://en.wikipedia.org/wiki/Stochastic_optimization) * [維基百科上的隨機梯度下降](https://en.wikipedia.org/wiki/Stochastic_gradient_descent) * [維基百科上的健身景觀](https://en.wikipedia.org/wiki/Fitness_landscape) * [神經網絡常見問題](ftp://ftp.sas.com/pub/neural/FAQ.html) * [Keras 重量初始化](https://keras.io/initializers/) * [了解深度前饋神經網絡訓練的難度](http://proceedings.mlr.press/v9/glorot10a.html),2010。 ### 討論 * [神經網絡中有哪些好的初始權重?](https://stats.stackexchange.com/questions/47590/what-are-good-initial-weights-in-a-neural-network) * [為什么神經網絡的權重應該初始化為隨機數?](https://stackoverflow.com/questions/20027598/why-should-weights-of-neural-networks-be-initialized-to-random-numbers) * [神經網絡中有哪些好的初始權重?](https://www.quora.com/What-are-good-initial-weights-in-a-neural-network) ## 摘要 在這篇文章中,您發現了為什么必須隨機初始化神經網絡權重。 具體來說,你學到了: * 關于針對具有挑戰性的問題的非確定性和隨機算法的需求。 * 在隨機優化算法中初始化和搜索期間使用隨機性。 * 隨機梯度下降是隨機優化算法,需要隨機初始化網絡權重。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <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>

                              哎呀哎呀视频在线观看