1.4 Dense Layer 與 Activation
Dense layer 是全連接層,activation function 則決定神經網路能不能學到非線性關係。若模型只有線性轉換,即使堆很多層,整體仍然等價於線性模型;加入非線性 activation 後,模型才有能力學習更複雜的決策邊界。
1. 學習目標
這篇用 XOR 任務說明 activation 的重要性。XOR 是一個典型的非線性分類問題:單純線性模型很難分類,但加入 ReLU 隱藏層後,DNN 可以把資料切出更好的決策邊界。
Notebook 會先畫出常見 activation function,再建立 XOR-like 二維資料,最後比較沒有隱藏層的線性模型與加入 ReLU 隱藏層的 DNN。這樣可以直接看到 activation 對模型表示能力的影響。
2. Dense layer 在做什麼?
Dense layer 的核心運算可以簡化成:
其中權重與偏差是模型會在訓練過程中學習的參數。
3. 常見 activation function
| Activation | 常見用途 | 特性 |
|---|---|---|
linear |
回歸輸出層 | 不做非線性轉換 |
sigmoid |
二元分類輸出層 | 輸出 0 到 1 的機率 |
tanh |
部分序列模型或隱藏層 | 輸出 -1 到 1 |
relu |
DNN/CNN 隱藏層 | 訓練穩定、常用 |
softmax |
多類別分類輸出層 | 輸出多類別機率分布 |
4. 為什麼 ReLU 常用?
ReLU 的公式是 max(0, x)。它簡單、計算快,而且在深層網路中通常比 sigmoid 更容易訓練。實務上,DNN 和 CNN 的隱藏層常以 ReLU 作為預設選擇。
Note
sigmoid 不代表不能用在隱藏層,但在深層網路中容易遇到梯度變小的問題。現代 DNN 通常把 sigmoid 留給二元分類輸出層。
5. 如何套用自己的模型?
常見搭配如下:
| 任務 | 輸出層 | Loss |
|---|---|---|
| 回歸 | Dense(1) |
mse 或 mae |
| 二元分類 | Dense(1, activation='sigmoid') |
binary_crossentropy |
| 多類別分類 | Dense(class_count, activation='softmax') |
sparse_categorical_crossentropy 或 categorical_crossentropy |
6. 小結
Dense layer 負責學習特徵之間的加權組合,activation function 則讓模型具備非線性能力。理解這兩者,是看懂 DNN 架構的第一步。
後續在表格資料、影像或文字任務中,hidden layer 多半會使用 ReLU 或其變形,輸出層則依任務改成線性、sigmoid 或 softmax。