機器學習
超參數(hyperparameter)
/ HY-pur-puh-RAM-uh-tur /
超參數,是你在訓練開始前就要選定的設置——它是學習過程本身上的一個旋鈕,而不是模型學出來的東西。想想烤麵包:配方裡麵粉和水的分量,像是麵團在發酵時「自己揣摩」出來的參數,可烤箱溫度和烘烤時間,卻是你事先做的決定。這些設得不好,再好的原料也會給你烤出一塊磚頭,或是一團濕軟的麵坨。超參數,就是機器學習裡的這些烤箱設置。
典型的超參數包括:把模型造多大(多少參數或多少層)、訓練時它該調整得多快(學習率)、訓練多久,以及對過擬合的抑制力度有多強。它與普通參數的關鍵區別在於「由誰來定」:參數是訓練演算法從資料裡自動找出來的,而超參數是由人(或由一層外部搜尋)設定,並在那一輪訓練執行期間保持不變。
把它們選好,一半靠科學,一半靠反覆試錯——這個過程叫超參數調優。你用不同的設置把模型訓練許多次,留下在驗證集上表現最好的那一組——驗證集是專門留在一旁的資料,正是為了讓你別自欺欺人。世上沒有一種放之四海皆準的最優選擇;好的取值取決於資料和任務,這正是「沒有免費的午餐」思想在日常中的一副面孔。誠實的告誡是:若拿你的測試集來調參,你會得到一個好看的數字,可它一到真實世界就悄悄蒸發了。
兩位工程師用同樣的資料訓練同樣的網路。一個把學習率設成 0.1,另一個設成 0.001。第一個模型一步邁得太大,始終安定不下來;第二個慢吞吞,卻落得很穩。同樣的資料、同樣的架構、同樣將要學習的參數——只改了一個超參數,它卻決定了一切。
一個手動設定的旋鈕(學習率),就能成就或毀掉一個模型。
「超」不過是「在……之上」的意思:這些旋鈕位於普通參數之上一層,掌管那些參數如何被學出來。永遠在驗證集上調它們,絕不能動你為最終、誠實評分而留出的測試集。
又稱
另見