• <input id="2bncg"><div id="2bncg"></div></input>
    <video id="2bncg"><dfn id="2bncg"></dfn></video>
  • <video id="2bncg"></video>
        1. <source id="2bncg"><menu id="2bncg"><kbd id="2bncg"></kbd></menu></source>

          <b id="2bncg"><address id="2bncg"></address></b>

          <source id="2bncg"><address id="2bncg"></address></source>
          <video id="2bncg"></video>
          筆趣閣 > 都市小說 > 重生學神有系統 > 第255章 調整超參數,以及防止過擬合

          第255章 調整超參數,以及防止過擬合(1 / 2)

          江寒在這個F網絡中,實現了一種新的訓練策略,也就是迷你批次訓練法。

          簡單地說,就是每次在18萬個訓練數據中,隨機抽取若干條數據,組成一個小包,作為訓練的樣本。

          然后,若干個小包組成一個完整的批次,訓練若干個批次后,訓練過程就宣告結束。

          顯而易見,相較于一次訓練全部數據,這樣做既節省了資源,又能提高訓練速度。

          這里涉及到3個超參數:每個小包的數據條數n,每批次包含的小包數量m,以及訓練的總批次s。

          神經網絡里,每個神經元的偏置和權重,都是在訓練中獲得的,稱作參數。

          而學習速率、隱藏層神經元的數量,隱藏層的層數,權重初始化方案的選擇、激活函數的選擇、損失函數的選擇……

          這些都是超參數,必須在神經網絡訓練之前指定。

          但由于缺乏理論指導,沒有人知道這些超參數,到底如何選取才是最合理的。

          所以在實踐中,往往先根據經驗,暫時預設一個差不多的,然后在訓練的過程中,根據反饋結果,慢慢進行調整。

          打造神經網絡的過程中,最困難的就是超參數的選擇,這往往意味著巨大的工作量。

          每次調整超參數,都要重新訓練一次神經網絡,才能知道這次調整是否成功。

          更麻煩的是,超參數之間并不是相互獨立的,經常會調整了某一個,就會影響到另一個。

          極端情況下,就會像多米諾骨牌一樣,一個影響一個,最后導致全盤重來。

          在原來的世界,機器學習算法工程師們經常為此撓破了頭皮。

          所以他們又自嘲或者被戲稱為“調參狗”……

          這個問題的解決,往往取決于網絡設計者的經驗。

          一名合格的調參狗……咳,算法工程師,往往能憑經驗和直覺,大體確定超參數的取值范圍,然后根據實際情況逐步優化,直到取得近似最優解。

          江寒當然算不上經驗豐富,但前世玩神經網絡的時候,也接觸過不少討論超參數選擇的文章。

          以權重初始化舉例,就有不少可行的方案:初始化為0值、隨機初始化、Xavier初始化、HE方法等。

          其中,Xavier初始化又包含許多種做法。

          比如將權重w的隨機初始化區間,設為正負sqrt(6/(n0+n1))之間。

          其中,n0是上一層神經元的個數,n1是本層神經元的個數。

          這是一個經驗公式,很多時候都很好用,江寒還記得這個公式。

          其他超參數的選擇,激活函數的選擇、損失函數的選擇……也有諸多可用的方法、方案。

          除了一些前世接觸過的方法,江寒自己也有過許多奇思妙想,琢磨出來不少亂七八糟的超參數選擇方案。

          這次做F模板,索性將它們全都編寫成函數,塞到了模板代碼中,用以備選。

          除此之外,還要解決過擬合問題。

          過擬合是機器學習的一道難關,一旦發生這種現象,就會導致訓練好的模型,在訓練集上表現優秀,而在陌生數據集上表現欠佳。

          這是無論如何都要避免的。

          要想避免過擬合,通常的做法有:擴大學習規模、降低網絡規模、對權重參數規范化,以及非常激進的Dropout方法等。

          擴大學習規模,就是盡可能收集更多數據,進行訓練。

          Kaggle的這場比賽中,官方提供了足足20萬條訓練數據,這意味著不怎么需要在這方面下功夫了。

          如果提供的訓練數據較少,那么往往就需要人為擴展訓練數據。

          比如:將圖像略微旋轉、平移、翻轉、縮放、加入噪點像素……

          降低網絡規模,的確可以減輕過擬合,但同時也削弱了學習能力,所以一般不作為優先選項。

          權重正規化也叫正則化(regurization),就是在未規范化的代價函數上,附加一個權重絕對值的和,使得網絡傾向于學習少量的、重要度較高的權重。

          這一辦法,江寒在這個模板中,也作為備選項加以實現了。

          至于Dropout方法,做法是按照給定的概率P,隨機刪除全連接網絡中部分隱藏神經元,以達到簡化網絡,降低過擬合的效果。

          雖然挺簡單,但江寒并不準備現在就用出來。

          這至少也價值一篇三區以上的論文,用在這種小比賽中,未免有些浪費。

          江寒將自己知道的、能想到的方法、方案,全都羅列出來,編制成函數,放進了模板代碼中。

          然后將代碼復制了130份,稍作修改,讓它們分別使用不同的超參數設定策略。

          這樣,就出爐了130種候選的訓練方案。

          江寒將這些方案連同訓練數據包,一起上傳到了自己放在車庫中的服務器和五臺工作站中,然后指揮它們開足馬力,同步進行訓練。

          如果光靠筆記本電腦,這130份代碼一個一個訓練過去,怕不得兩、三個月之后,才能輪一遍?

          現在就簡單了,大約明天晚上,這130多份方案,就能得到初步的訓練結果。

          到時候根據反饋,從中選擇一個表現最好的,全力訓練就可以了。

          最新小說: 從地獄開始登神之路 斗羅大陸的jojo替身使者 重活一世,我一書封神 重生華娛,95小花養成日記 我的手提式大明朝廷 重生得意須盡歡 墜入掌中 不是游戲嗎?怎么你們真修仙啊! 華娛:娶中戲校花,激活黃金詞條 我的化身正在成為最終BOSS
        2. <input id="2bncg"><div id="2bncg"></div></input>
          <video id="2bncg"><dfn id="2bncg"></dfn></video>
        3. <video id="2bncg"></video>
              1. <source id="2bncg"><menu id="2bncg"><kbd id="2bncg"></kbd></menu></source>

                <b id="2bncg"><address id="2bncg"></address></b>

                <source id="2bncg"><address id="2bncg"></address></source>
                <video id="2bncg"></video>
                最近免费观看高清韩国日本大全