隨堂搜尋

此單元著重於準隨機搜尋。

使用準隨機搜尋的好處

在疊代調整過程中使用半隨機搜尋 (以低誤差序列) 時,建議您使用雜訊黑箱最佳化工具,以充分掌握調整問題 (我們稱之為「探索階段」)。貝氏最佳化功能和類似工具更適合用於漏洞攻擊階段。以隨機變動的低誤差序列為依據的準隨機搜尋可被認為是「瞬間移動式格狀搜尋」,因為這樣可以一致地探索指定的搜尋空間,並將搜尋點分散到非隨機搜尋。

與較複雜的黑箱最佳化工具 (例如貝氏最佳化方法、演化演算法) 相較,進行準隨機搜尋的優點包括:

  • 以非適應性取樣搜尋空間,可讓您在臨時分析中變更調整目標,而不必重新執行實驗。例如,我們通常會希望找出在訓練中任何時間點獲得的驗證錯誤最佳試驗。不過,非適應性同質搜尋的準隨機搜尋也能根據最終驗證錯誤、訓練錯誤或某些替代評估指標找出最佳試驗,而不需重新執行任何實驗。
  • 準隨機搜尋會以一致且可重現的統計方式運作。只要搜尋演算法的實作有所改變,但只要維持相同的統一屬性,就算不可能在六個月前重現了一項研究。如果使用精密的貝葉斯最佳化軟體,實作方式可能會在版本之間有重要變動,導致更難重現舊搜尋。 有時無法復原至舊的實作方式 (例如:最佳化工具以服務形式執行時)。
  • 這種搜尋空間統一地探索,可讓您更輕鬆地解讀結果,以及分析對於搜尋空間的建議。舉例來說,如果準隨機搜尋的周遊最佳點位於搜尋空間的邊界,這是值得變更的搜尋空間邊界 (但並非萬無一失) 的信號。然而,自動調整黑箱最佳化演算法仍可能忽略搜尋空間的中間位置,因為即使剛好也包含相同的好點,卻仍會進行早期試驗,因為良好的最佳化演算法必須採用這種非統一性,才需採用良好的最佳化演算法才能加快搜尋速度。
  • 與自動調整演算法不同的是,同時使用準隨機搜尋 (或其他非自動調整式搜尋演算法) 時,同時同時執行不同的試驗數量和依序執行,不會產生具有統計顯著性的結果。
  • 更複雜的搜尋演算法有時可能無法正確處理不可行的點,特別是在設計時並非考慮類神經網路超參數調整時。
  • 準隨機搜尋相當簡單,而且在同時進行多個調整試驗時特別有效。理論上1,自動調整演算法很難完全勝過有 2 倍預算的準隨機搜尋,尤其是當許多試驗必須平行執行 (因此在啟動新的試驗時,不太可能使用之前的試驗結果)。如果沒有貝葉斯最佳化和其他進階黑箱最佳化方法的專業知識,您可能無法達到它們帶來的效益。在真實的深度學習調整條件中,要針對進階黑箱最佳化演算法進行基準測試並不容易。它們在目前研究的領域中非常活躍,但較複雜的演算法卻會陷入不肖使用者的陷阱。這些方法的專家可以獲得良好結果,但在高度平行處理的情況下,搜尋空間和預算通常較為顯著。

即便如此,如果您的運算資源只能平行進行少量試驗,而且您可以負擔包含連續多次試驗的費用,但由於調整結果難以解讀,貝葉斯最佳化會變得更加吸引。

開放原始碼 Vizier實作準隨機搜尋。請在這個 Vizier 使用範例中設定 algorithm="QUASI_RANDOM_SEARCH"這個超參數掃描範例有替代實作方式。這兩種實作方式都會針對特定搜尋空間產生 Halton 序列 (目的是按照關鍵超參數 (關鍵超參數:無隨機、不適用) 中的建議,實作經過轉移的亂碼 Halton 序列。

如果無法使用以低差異序列為基礎的準隨機搜尋演算法,可以改為替代虛擬隨機統一搜尋,不過效率可能會略低。在 1 到 2 個維度中,也可以使用格狀搜尋,但維度並不適用。(請參閱 Bergstra 和 Bengio,2012 年)。

需要進行多少次測試才能取得準隨機搜尋的最佳結果?

一般而言,無法判斷需要多少次測試才能獲得準隨機搜尋的結果,但您可參考特定範例。如圖 3 所示,研究中的試驗次數可能會對結果造成重大影響:

驗證錯誤率 (y 軸) 與調整預算 (x 軸) 的方塊圖,其中調整預算是指測試的數量。調整預算之後,平均驗證錯誤率通常會下降。

圖 3:在 100 次試用的情況下,透過 ImageNet 調整 ResNet-50。過程中使用啟動程序模擬不同量的調整預算。 以方框特別標出各項試用預算的最佳成效。

 

請注意圖 3 的注意事項:

  • 6 次試驗的取樣後,重疊範圍與取樣 20 次的差距很大。
  • 即使在執行 20 次試驗,幸好與運氣研究之間的差距,可能遠大於以不同隨機種子重新訓練這個模型的一般差異。使用固定的超參數。在這個工作負載中,這個工作負載的驗證錯誤率約為 +/- 0.1%。

  1. Ben Recht 和 Kevin Jamieson 指出將 2 倍預算隨機搜尋做為基準 (超頻論文會產生類似的引數),但很有可能會找到搜尋空間和問題,因為最先進的貝氏最佳化技術工作花費預算進行 2 倍。然而,根據我們的經驗,在高平行處理計畫中,將 2 倍預算隨機搜尋的工作變得更加困難,因為貝葉斯最佳化結果無法觀察先前試驗的結果。