深度學習引言
-
假定想要根據房屋面積擬合一個預測房價的函式,我們令房屋面積作為神經網路的輸入\(x\),透過一個神經元進行預測,最終輸出價格\(y\)。這就是最簡單的單神經網路(感知機),神經元對輸入進行加權求和,加上偏置,然後透過一個啟用函式得到輸出。
\[y=f(wx+b) \]為了捕捉更復雜的非線性關係,可以構建深度神經網路,它由多個層次的神經元組成。每一層對前一層的輸出進行非線性變換,使得整個網路能夠學習資料的高階特徵。深度神經網路透過堆疊簡單的神經元,並利用非線性啟用函式,可以用於解決各種複雜的預測和分類問題。
-
神經網路的強大之處在於,只需要提供輸入和輸出的資料,網路透過訓練可以自動學習輸入與輸出之間的複雜非線性關係,而無需人為地設計特徵提取的規則。神經網路的結構通常由輸入層、一個或多個隱藏層以及輸出層組成。輸入層接收原始資料,隱藏層透過一系列的加權求和和非線性啟用函式來提取特徵,輸出層生成最終的預測結果。透過調整網路的結構和訓練引數,神經網路能夠在各種任務中取得優異的效能。
-
每個神經元本質上都是函式,可以是線性函式也可以是非線性函式。ReLU(Rectified Linear Unit,修正線性單元)是一種線性啟用函式。
\[\text{ReLU}(x)=max(0,x) \]這意味著當輸入\(x\)為正時,輸出為\(x\),當輸入為0或負數時,輸出為0。ReLU函式形式簡單,計算速度快。還可以緩解梯度消失問題,ReLU在正區間梯度為1,能有效緩解深層神經網路中的梯度消失現象。ReLU會將部分神經元的輸出置為零,從而引入稀疏性,有助於防止過擬合併提高模型的泛化能力。
但是在訓練過程中,如果某些神經元的引數更新導致其再也無法啟用(輸出始終為零),這些神經元將對模型無貢獻。這可能是由於學習率過大或偏置初始化不當引起的。為了解決這個問題,引入Leaky ReLU,使得函式在負數區域也有非零輸出。
\[\text{Leaky ReLU}(x) = \begin{cases} x, & \text{if } x > 0 \\ \alpha x, & \text{if } x \leq 0 \end{cases} \] -
Sigmoid啟用函式是一種常用的非線性啟用函式。它能夠將輸入對映到0到1之間的輸出,有助於神經網路學習複雜的非線性關係。
Sigmod函式輸出範圍在\([0,1]\)之間,非常適合用於機率預測和二分類問題。函式在整個輸入範圍內都是平滑且可微的,有利於反向傳播演算法計算梯度。但是也存在一些問題,例如梯度消失問題,當輸入值過大或過小時,導數會變得非常小,導致梯度更新緩慢,影響深層網路的訓練效率。以及非零中心化輸出問題,輸出值始終為正數,可能導致後續層的神經元輸入出現偏移,影響訓練效果。
\[ Sigmod(x)=\frac{1}{1+e^{-x}} \] -
監督學習是機器學習的主要類別之一,主要任務是學習輸入\(x\)和輸出\(y\)之間的對映函式。一般來說,我們使用深度神經網路進行房價預測、廣告點選預測等,使用卷積神經網路(Convolutional Neural Network, CNN)進行影像分割、物體識別等,使用卷積神經網路(Recurrent Neural Network, RNN)處理序列資料,如機器翻譯、語音識別等。
-
結構化資料是指以預定義格式組織的、可以儲存在關係型資料庫中的資料,具有明確的欄位和資料型別。非結構化資料則包括音訊、影像、文字、影片等沒有固定資料模型的資料,需要特定的方法進行處理。在非結構化資料中,影像的畫素值、文字的單詞等都可以視為特徵。人類憑藉自身的感知和認知能力,能夠輕鬆理解這些非結構化資料的內容,但計算機要理解這些資料則較為困難。深度學習透過構建多層神經網路,能夠自動從非結構化資料中學習特徵表示,幫助計算機更好地理解和處理這些資料。
-
假設我們繪製一張圖,水平軸代表任務的資料量,垂直軸代表機器學習演算法的效能,代表著不同機器學習演算法隨著資料量增大的效能提升表現。
對於傳統的機器學習演算法,效能最初會隨著資料量的增加而提升,但由於模型容量的限制和對手動特徵工程的依賴,效能在達到一定程度後會趨於平穩,難以進一步提升。(傳統機器學習演算法需要精心設計的特徵來提升效能,當資料量增大且特徵複雜時,手動特徵工程變得困難。)
相比之下,神經網路,尤其是深度神經網路,展示了隨著資料量的增加和模型規模的擴大,效能可以持續提升的趨勢。如果我們訓練一個小型的神經網路,效能會有所提高;訓練一箇中等規模的神經網路,效能會進一步提升;而當我們訓練一個大型神經網路時,隨著資料量的增多,效能可能會持續顯著提高。
因此,要想獲得更高的效能,首先需要訓練一個規模足夠大的神經網路,以充分利用大量資料的優勢;其次,需要大量的標記訓練資料來支援模型的訓練,規模推動深度學習的進步。
-
我們用\(m\)表示訓練集的規模。當訓練集規模較小的時候,模型能從資料中學習到的資訊有限,這時特徵工程的能力以及演算法的精細調整決定了模型的最終效能。優秀的特徵工程可以幫助模型在小資料集上取得更好的效果。當訓練集規模龐大時,神經網路尤其是深度神經網路能夠持續展現其優勢,因為它們可以從大量資料中自動學習複雜的特徵和模式,效能會隨著資料量的增加而不斷提升。
-
經驗豐富的深度學習工程師在處理新問題時,通常可以利用對以往問題的洞察力,在第一次嘗試時就訓練出一個良好的模型,而無需多次迭代不同的模型。這個說法是錯誤的,因為找到模型的特點是獲得良好效能的關鍵。雖然經驗會有所幫助,但要建立一個好的模型需要多次反覆試驗。
-
GPU/CPU硬體的改進有助於發現更好的深度學習演算法。透過加快迭代過程,更好的硬體可以讓研究人員發現更好的演算法。而更好的演算法可以減少必要的計算時間,從而加快迭代過程。ReLU啟用函式的引入可以幫助縮短訓練模型所需的時間的。