如何進行超引數的調節

2021-10-09 13:17:29 字數 1821 閱讀 4451

在深度學習以及機器學習中,在我們訓練模型之前,有些東西是機器無法通過資料學習得來的,需要我們提前去設定好,這就是超引數。超引數的設定將直接影響了模型的訓練過程以及最終的效能效果。

在機器學習的上下文中,超引數是在開始學習過程之前設定值的引數,而不是通過訓練得到的引數資料。通常情況下,需要對超引數進行優化,給學習機選擇一組最優超引數,以提高學習的效能和效果。

那麼應該如何去設定超引數呢?

1.最初最簡單的想法就是設定乙個可以使資料集表現最好的超引數。

但是這種方式其實非常的糟糕,比如說在之前部落格中寫到的k-鄰近演算法,當我們假設k是乙個非常小的值,演算法可以完美的分類訓練集中的每一資料,即使訓練集中的資料報含噪點。

但是實踐表明當k取乙個更大數值的時候,雖然模型可能在訓練集上表現不好,但是模型對於訓練集中未出現的資料分類效能更佳。

我們進行模型訓練的宗旨不是說在訓練集上取得完美的表現,而是在訓練集以外的資料上有較好的表現。(前者的情況也叫過擬合

2.基於以上想法,我們可能會想到將資料集分為訓練集測試集

我們用不同的超引數在訓練集上進行模型的訓練,然後將訓練好的模型在測試集上進行比較,找出乙個在測試集上表現最好的模型。

這看起來似乎是乙個合理的策略,但實際上也是非常糟糕的。因為我們設定測試集的目的是讓我們知道訓練的模型在未知資料上的表現是怎麼樣的。

當我們使用上述這種方法來選取超引數的時候,我們在訓練模型的時候就相當於考慮了測試集中的資料這樣在**模型效能的時候就不是使用的未知資料集。

3.最常見的方法是將資料分為三組,包括訓練集測試集驗證集

通常的做法是在訓練集上用不同的超引數訓練模型,在驗證集上進行評估,然後選在一組在驗證集上表現最好的超引數到測試集上評估模型的效能。

最終在測試集上 得出來的模型效能就是我們最後要寫在**裡面的資料。 這個資料才能表達出你的演算法在從未見過的資料上表現如何。

4.設定超引數還有乙個更為常見的方法就是交叉驗證(cross-validation)。這是統計學裡面乙個比較重要的方法。本篇文章不會從統計學的角度來過多解釋。

之所以會考慮交叉驗證,是因為以上的所有方法都會存在兩個個弊端,

右邊是十種不同的訓練集和測試集劃分方法得到的test mse,可以看到,在不同的劃分方法下,test mse的變動是很大的,而且對應的最優degree也不一樣。所以如果我們的訓練集和測試集的劃分方法不夠好,很有可能無法選擇到最好的模型與引數。

交叉驗證的方法適合於資料集比較小的情況。通常的做法是將資料集先固定的分出測試集,然後將剩下的資料集我們不是只分為乙個訓練集和乙個驗證集,而是分成多組,見下圖:

在深度學習領域中,我們往往需要涉及到大量的資料,本身計算量就很大,因此 在深度學習中很少使用交叉驗證這種方式。

機器學習 cross-validation(交叉驗證)詳解

如何進行Monkey Test

一 簡介 monkey是android中的乙個命令列工具,可以執行在模擬器裡或實際裝置中。它向系統傳送偽隨機的使用者事件流 如按鍵輸入 觸控螢幕輸入 手勢輸入等 實現對正在開發的應用程式進行壓力測試。monkey包括許多選項,它們大致分為四大類 基本配置選項,如設定嘗試的事件數量 執行約束選項,如設...

如何進行Code Review

code review應該怎麼做 如何高效迅速的進行codereview 下面推薦一些 code review 工具 crucible atlassian 內部 審查工具 gerrit google 開源的 git 審查工具 github 程式設計師應該很熟悉了,上面的 pull request 在...

如何進行CodeReview

規範主要分為風格規範與設計規範兩大類 主要是文字上的規定,看似表面文章,實際上非常重要。具體有如下幾個方面 1 縮排 2 行寬 3 斷行 空白行 4 括號 5 命名 字母 下劃線 大小寫 6 注釋 a 單行注釋 b 多行注釋 c 變數 方法 類 包注釋 牽涉到程式設計 模組之間的關係 設計模式等方方...