1、調整過程
在訓練神經網路時,超引數的除錯十分重要,下面分享一些指導原則。
通常來說,①學習因子α是最重要的超引數,也是需要重點除錯的超引數。②動量梯度下降因子beta、各隱藏層神經元個數hidden units和mini-batch size的重要性僅次於alpha。③然後就是神經網路層數layers和學習因子下降引數learning rate decay。④最後,Adam演算法的三個引數bata1,bata2,sigma一般常設定為0.9,0.999和10^-8,不需要反覆除錯。當然,這裡超引數重要性的排名並不是絕對的,具體情況,具體分析。
當你嘗試調整一些超引數時,在深度學習領域,推薦隨機選擇點,另一個慣例是採用由粗糙到精細的策略。
2、為超引數選擇合適的範圍
在超引數範圍中,隨機取值可以提升你的搜尋效率。但隨機取值並不是在有效範圍內的隨機均勻取值,而是選擇合適的標尺,用於探究這些超引數,這很重要。
對於某些超引數(隱藏單元的數量或者神經網路的層數)是可以進行尺度均勻取樣的,它們都是正整數,是可以進行均勻隨機取樣的(即超引數每次變化的尺度都是一致的),這是合理的。
某些超引數需要選擇不同的合適尺度進行隨機取樣。設你在搜尋超引數α(學習速率),假設你懷疑其值最小是0.0001或最大是1。如果你畫一條從0.0001到1的數軸,沿其隨機均勻取值,那90%的數值將會落在0.1到1之間,結果就是,在0.1到1之間,應用了90%的資源,而在0.0001到0.1之間,只有10%的搜尋資源,這看上去不太對。反而,用對數標尺搜尋超引數的方式會更合理,因此這裡不使用線性軸,分別依次取0.0001,0.001,0.01,0.1,1,在對數軸上均勻隨機取點。
除了α之外,動量梯度因子β(用於計算指數的加權平均數)的取值也是一樣,在超引數除錯的時候也需要進行非均勻取樣,因為當β越接近1時,所得結果的靈敏度(sensitivity)會變化,即使只有微小的變化,所以需要更加密集地取值。一般β的取值範圍在[0.9, 0.999]之間,那麼1−β的取值範圍就在[0.001, 0.1]之間。那麼直接對1−β在[0.001, 0.1]區間內進行log變換即可。
3、超引數除錯實踐:Pandas VS Caviar
如今的深度學習(deep learning)已經應用到許多不同的領域,某個應用領域的超引數設定,有可能通用於另一領域,不同的應用領域出現相互交融。關於如何搜尋超引數的問題,人們通常採用的兩種重要但不同的方式,分別如下圖所示:
一種是照看一個模型(babysit one model),通常有龐大的資料組,但是沒有許多計算資源或足夠的CPU和GPU,這樣的話一次試驗一個模型或者一小批模型,然後每天花時間觀察它,不斷調整引數,如上圖左。
另一種方法則是同時試驗多種模型,已經設定了一些超引數,讓它自己執行,或者是一天甚至多天,然後會獲得像這樣的學習曲線,這可以是損失函式 J 或訓練誤差的損失或資料誤差的損失,但都是曲線軌跡的度量,如上圖右。
4、歸一化網路的啟用函式
在深度學習興起後,最重要的一個思想是它的一種演算法,叫做Batch歸一化(Batch Normalization)。Batch歸一化旨在加速神經網路訓練並提高模型的泛化能力。透過對每個mini-batch內的啟用值進行歸一化,Batch歸一化能夠有效地緩解梯度消失和梯度爆炸的問題,使得模型在深層網路中表現更加穩定。
Batch歸一化還有一個作用,它有輕微的正則化效果(不要當做是正則化,正則化效果微弱),它的特點表現為:
- 加速訓練:Batch歸一化可以使得模型的訓練更加穩定,允許使用更高的學習率,從而加速了訓練過程。
- 減輕梯度消失和梯度爆炸問題
- 減少對引數初始化的敏感性:Batch歸一化可以讓模型對權重初始化不那麼敏感,即使是較差的權重初始化,也能透過歸一化操作糾正輸入分佈,從而加快收斂。
- 一定程度的正則化效果:由於每個mini-batch的資料都不一樣,因此Batch歸一化會在訓練中引入一些噪聲,這種噪聲在一定程度上具有正則化效果,能夠減少模型的過擬合。
- 依賴mini-batch的大小:Batch歸一化依賴於mini-batch的大小,較小的mini-batch可能導致均值和方差估計不準確,影響訓練效果。
5、Softmax迴歸(Softmax Regression)
Softmax迴歸(Softmax Regression)是分類問題中的一種常見方法,特別適用於多分類問題。它是邏輯迴歸的擴充套件版,邏輯迴歸通常用於二分類問題,而Softmax迴歸則用於處理多個類別的分類任務。
Softmax迴歸模型的核心思想是透過Softmax函式將模型的輸出轉化為每個類別的機率分佈,並選擇機率最大的類別作為最終的預測結果。