← M04 深度學習 M04 深度學習

M04.01|神經網路基礎:從生物神經元到人工神經元

AI 的大腦不是真的腦 — 但運作邏輯有幾分相似

L1-AI基礎知識-神經網路基礎 L1-AI基礎知識-深度學習概念
神經網路 感知器 激活函數 深度學習 前向傳播
📋

本講學習重點

生物神經元和人工神經元各有哪些對應組件?
感知器的運作流程是什麼?
sigmoid 和 ReLU 激活函數各有什麼特性?
神經網路的三種層各自扮演什麼角色?
前向傳播的計算步驟是什麼?

生物神經元的樹突接收訊號、細胞體整合訊號、軸突輸出訊號; 人工神經元的輸入值接收資料、加權求和計算、激活函數決定是否「觸發」輸出。 感知器(Perceptron)是最早的人工神經元模型(1958 年 Rosenblatt): 1. 每個輸入 x_i 乘以對應權重 w_i 2. 加總所有加權輸入並加上偏差值 b 3. 通過激活函數決定輸出 兩種常用激活函數: - Sigmoid:輸出範圍 0~1,適合二元分類的輸出層;缺點是梯度消失問題 - ReLU(Rectified Linear Unit):輸入大於 0 就直接輸出,小於 0 輸出 0; 計算快速,有效緩解梯度消失,現代深度網路主流選擇 神經網路三層結構: - 輸入層(Input Layer):接收原始特徵,不做計算 - 隱藏層(Hidden Layer):提取抽象特徵,層數越多越「深」 - 輸出層(Output Layer):產生最終預測結果 前向傳播(Forward Propagation): 資料從輸入層流向輸出層,每一層對上一層的輸出進行線性變換再通過激活函數。

📌 神經網路的設計靈感來自生物大腦,但實際運作是純數學:加權求和加上激活函數。 感知器是最基本的人工神經元;堆疊多層感知器形成深度神經網路。 激活函數決定每個神經元「要不要被激活」,ReLU 是現代深度學習的主流選擇。 前向傳播讓資料從輸入層流向輸出層,產生預測值,是所有神經網路的基礎計算流程。
神經網路基礎:從生物神經元到人工神經元

🎙️ Podcast(中文)

0:00 / 0:00

一句話搞懂

神經網路就是把許多「做加法再做判斷」的小單元層層串聯起來——每一層從上一層的輸出提取更抽象的特徵,最終讓電腦從原始資料中自動學出複雜的判斷規則,不需要人工寫規則。


白話解說

從生物到機器:神經元的類比

大腦裡有大約 860 億個神經元,每個神經元透過樹突(Dendrites)接收來自其他神經元的訊號,在細胞體(Cell Body)整合這些訊號,一旦整合後的訊號強度超過「觸發閾值」,就沿著軸突(Axon)把訊號傳給下一個神經元。這個「收訊號、整合、決定要不要觸發」的機制,是整個大腦處理資訊的基礎。

1943 年,神經科學家 McCulloch 和數學家 Pitts 提出了一個問題:能不能用數學公式模仿神經元的行為?他們建立了第一個數學版本的神經元模型,奠定了人工神經網路的理論基礎。

對應關係如下:

生物神經元 人工神經元 功能
樹突(Dendrites) 輸入值(x₁, x₂, …, xₙ) 接收外部訊號
突觸強度(Synapse Strength) 權重(w₁, w₂, …, wₙ) 決定每個訊號的重要程度
細胞體(Cell Body) 加權求和(Σ wᵢxᵢ + b) 整合所有輸入訊號
觸發閾值(Threshold) 激活函數(Activation Function) 決定是否「觸發」並輸出
軸突(Axon) 輸出值(Output) 把結果傳給下一層

這個類比不是說電腦在「模擬大腦」,而是數學上借用了類似的計算結構——實際的人工神經元遠比生物神經元簡單得多。


感知器:最簡單的人工神經元

1958 年,心理學家 Frank Rosenblatt 提出了感知器(Perceptron),這是第一個可以「學習」的人工神經元模型。感知器的計算過程只有三步:

第一步:加權求和

把所有輸入值 x₁, x₂, …, xₙ 分別乘以對應的權重 w₁, w₂, …, wₙ,再加上一個偏差值(Bias)b:

z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
  = Σ(wᵢxᵢ) + b

權重 w 代表每個輸入特徵的「重要程度」——正的大權重表示這個特徵強烈支持輸出;負的大權重表示強烈反對;接近零的權重表示這個特徵幾乎不影響結果。偏差值 b 讓整個函數可以左右平移,增加靈活性。

第二步:激活函數

把加權求和的結果 z 丟進激活函數,決定輸出值:

output = f(z)

第三步:輸出結果

輸出值再傳到下一個神經元或作為最終預測。

用一個具體例子理解:假設你要預測一封郵件是否為垃圾郵件,輸入特徵是:

  • x₁ = 郵件包含「免費」這個詞(1=是,0=否)
  • x₂ = 郵件包含外部連結數量
  • x₃ = 寄件人在聯絡人清單(1=是,0=否)
z = 2.5 × x₁ + 0.8 × x₂ + (-3.0) × x₃ + (-0.5)

若 x₁=1(含「免費」)、x₂=3(三個連結)、x₃=0(不在聯絡人清單):

z = 2.5×1 + 0.8×3 + (-3.0)×0 + (-0.5)
  = 2.5 + 2.4 + 0 - 0.5 = 4.4

z = 4.4 是個正數且很大,代表「高度可疑是垃圾郵件」。激活函數會把這個數字轉換成最終的分類結果。


激活函數:神經元的「觸發機制」

激活函數的作用是在線性計算(加權求和)之後,引入非線性——沒有非線性,不管堆多少層神經元,整個網路的計算能力都等價於一個線性模型,無法學習複雜的模式。激活函數讓神經網路能夠逼近任意複雜的函數。

Sigmoid 函數

\[\sigma(z) = \frac{1}{1 + e^{-z}}\]

Sigmoid 把任意實數壓縮到 (0, 1) 之間:

z = -10  → σ(z) ≈ 0.00005(幾乎是 0)
z = 0    → σ(z) = 0.5
z = 10   → σ(z) ≈ 0.99995(幾乎是 1)

優點:輸出可以直接解釋為「機率」,適合作為二元分類的輸出層激活函數。

缺點(梯度消失問題):當 z 很大或很小時,sigmoid 曲線接近水平,導數幾乎為零。在深度網路(多層)中,反向傳播要把梯度從輸出層往輸入層乘回去,每乘一次接近零的數字,梯度就變得更小,傳到前面幾層時梯度已微乎其微,前面的層根本學不到任何東西。這個問題在深層網路中致命,是 sigmoid 在隱藏層被淘汰的主因。

ReLU(Rectified Linear Unit)

\[\text{ReLU}(z) = \max(0, z)\]

ReLU 的規則極其簡單:輸入若大於 0 就直接輸出;輸入若小於等於 0 就輸出 0。

z = -5  → ReLU = 0
z = 0   → ReLU = 0
z = 3.7 → ReLU = 3.7
z = 100 → ReLU = 100

優點

  • 計算極快(只是一個比較運算)
  • 當 z > 0 時,梯度恆為 1,不存在梯度消失問題
  • 稀疏激活(許多神經元輸出為 0),增加網路表達效率

缺點(死亡 ReLU 問題):若某個神經元長期輸入負值,它的輸出永遠是 0,梯度也是 0,這個神經元就「死掉了」永遠學不到東西。實務上可用 Leaky ReLU(負數區域給一個很小的斜率)或 ELU 緩解。

現況:ReLU 及其變種(Leaky ReLU、ELU、GELU)是現代深度學習隱藏層的主流選擇。

激活函數 輸出範圍 主要用途 現狀
Sigmoid (0, 1) 二元分類輸出層 隱藏層已被取代
Tanh (-1, 1) RNN 閘門 部分場景仍用
ReLU [0, +∞) 深度網路隱藏層 主流
Leaky ReLU (-∞, +∞) 解決死亡 ReLU 常見替代方案
Softmax (0,1),加總=1 多分類輸出層 標準配備

神經網路的三層結構

單一個感知器能力有限。把許多感知器串聯、並聯,排列成「層(Layer)」,就形成了神經網路。標準的神經網路由三種層組成:

輸入層(Input Layer)

接收原始資料的特徵值。輸入層的神經元數量等於特徵數量——如果你的資料有 10 個特徵,輸入層就有 10 個神經元。輸入層本身不做任何計算,只是把原始數值傳給第一個隱藏層。

隱藏層(Hidden Layer)

藏在輸入層和輸出層之間的所有層,統稱隱藏層。每一層從前一層的輸出中提取更抽象的特徵:

輸入層 → 第一隱藏層:學習低階特徵(邊緣、顏色梯度)
       → 第二隱藏層:組合出中階特徵(眼睛形狀、鼻子輪廓)
       → 第三隱藏層:組合出高階特徵(人臉結構)
       → 輸出層:根據高階特徵做最終判斷

「深度」學習(Deep Learning)的「深」就是指有多個隱藏層。層數越多,網路能學習的特徵抽象程度越高,但計算量也越大、訓練難度也越高。

每個隱藏層的神經元數量(稱為「寬度」)是超參數,需要根據問題複雜度調整——太少學不到足夠的特徵,太多容易過擬合且浪費計算資源。

輸出層(Output Layer)

產生最終預測結果。輸出層的神經元數量取決於任務類型:

任務類型 輸出層神經元數 激活函數 輸出解釋
二元分類 1 Sigmoid 0~1 之間的機率值
多分類(N 類) N Softmax N 個機率值,加總為 1
迴歸(預測數值) 1 無(線性) 直接輸出預測數值

前向傳播:資料如何流過網路

前向傳播(Forward Propagation)是神經網路進行預測的過程——資料從輸入層進入,一層一層地向右流動,最終從輸出層輸出預測值。

以一個簡化的兩層網路(一個隱藏層)為例:

輸入特徵:x = [x₁, x₂]
隱藏層:3 個神經元,ReLU 激活
輸出層:1 個神經元,Sigmoid 激活(二元分類)

計算步驟:

步驟一:輸入層 → 隱藏層

隱藏層神經元 h₁:z₁ = w₁₁x₁ + w₁₂x₂ + b₁
                  a₁ = ReLU(z₁)

隱藏層神經元 h₂:z₂ = w₂₁x₁ + w₂₂x₂ + b₂
                  a₂ = ReLU(z₂)

隱藏層神經元 h₃:z₃ = w₃₁x₁ + w₃₂x₂ + b₃
                  a₃ = ReLU(z₃)

步驟二:隱藏層 → 輸出層

輸出神經元:  z_out = v₁a₁ + v₂a₂ + v₃a₃ + b_out
              ŷ = Sigmoid(z_out)  ← 最終預測機率

前向傳播是純粹的「計算」過程——把輸入資料代進去,一路乘以權重、通過激活函數,最後得到預測值。這個過程本身不涉及學習;學習(調整權重)是透過反向傳播(Backpropagation)完成的,那是下一個主題。


應用場景

台灣健保的慢性病風險預測

台灣健保資料庫是全球最完整的醫療資料庫之一,涵蓋超過 2,300 萬人的就醫紀錄。衛福部國健署與多個學研機構合作,利用神經網路分析多種慢性病(糖尿病、高血壓、腎臟病)的早期風險因子。

在「糖尿病前期篩查」專案中,研究團隊建立了一個三層神經網路:

  • 輸入層(24 個神經元):年齡、BMI、空腹血糖、血壓、膽固醇、三酸甘油酯、家族史等 24 個特徵
  • 隱藏層一(64 個神經元,ReLU):從基礎生化指標中提取代謝症候群相關模式
  • 隱藏層二(32 個神經元,ReLU):組合出更高階的風險因子組合
  • 輸出層(1 個神經元,Sigmoid):輸出 5 年內發展為糖尿病的機率

與傳統的邏輯回歸模型相比,神經網路在同樣的特徵集上將 AUC-ROC 從 0.76 提升至 0.84,尤其在捕捉多個風險因子交互作用(例如「高 BMI + 高血糖 + 家族史同時存在」的非線性疊加效應)方面表現顯著更好。這種非線性特徵組合能力,正是隱藏層激活函數帶來的核心優勢。


常見誤區

誤區一:神經網路的「神經元」和大腦的神經元是一樣的東西

許多人看到「神經元」這個名稱,以為 AI 真的在模擬生物大腦。實際上,人工神經元只是一個數學函數:做加法(加權求和)再做一個非線性轉換(激活函數)。生物神經元是複雜的電化學系統,涉及離子通道、神經傳導物質、樹突整合等數十種機制,比人工神經元複雜幾個數量級。兩者的相似性是「計算流程的類比」,而非「生物機制的模仿」。把人工神經網路說成「AI 有大腦」是嚴重的誤導。

誤區二:隱藏層越多,神經網路一定越好

層數增加確實能提升網路的表達能力,但並不代表「越深越好」。在資料量不夠的情況下,層數太多會嚴重過擬合——網路把訓練資料的雜訊也記住了,對新資料的泛化能力反而更差。此外,層數太深會帶來梯度消失或梯度爆炸問題(在 ResNet 引入殘差連接之前,超過 20 層的網路幾乎無法有效訓練)。選擇層數要根據資料量、任務複雜度和計算資源三者權衡,沒有「越深越好」這回事。

誤區三:權重是由人來設定的

初學者常誤以為需要人工指定每個神經元的權重值。事實上,網路啟動時所有權重都是隨機初始化的(通常用 Xavier 或 He 初始化),然後透過反向傳播 + 梯度下降,用訓練資料自動調整權重,使得預測誤差(損失函數值)逐漸降低。人工設計的是網路架構(幾層、每層幾個神經元、用什麼激活函數),而不是具體的權重數值。權重是訓練的產物,不是設計的產物。


小練習

練習一:計算一個神經元的輸出

某個神經元有三個輸入特徵,權重和偏差值如下:

  • w₁ = 0.5,w₂ = -1.2,w₃ = 0.8
  • 偏差值 b = 0.3
  • 激活函數:ReLU

當輸入為 x₁ = 2.0、x₂ = 1.0、x₃ = 3.0 時:

(1) 計算加權求和 z 的值。 (2) 計算 ReLU(z) 的輸出值。 (3) 如果把激活函數改成 Sigmoid,輸出值大約是多少(不需精確計算,判斷範圍即可)?

看解答 **第 (1) 題:加權求和** ``` z = w₁x₁ + w₂x₂ + w₃x₃ + b = 0.5 × 2.0 + (-1.2) × 1.0 + 0.8 × 3.0 + 0.3 = 1.0 + (-1.2) + 2.4 + 0.3 = 2.5 ``` **第 (2) 題:ReLU 激活** ``` ReLU(2.5) = max(0, 2.5) = 2.5 ``` 因為 z = 2.5 > 0,ReLU 直接輸出原值,不做任何變換。 **第 (3) 題:Sigmoid 激活** z = 2.5 是一個正數,且數值不算小。 Sigmoid(0) = 0.5,Sigmoid(2) ≈ 0.88,Sigmoid(3) ≈ 0.95。 因此 Sigmoid(2.5) ≈ 0.92,輸出值接近 1,表示這個神經元「強烈激活」,輸出的機率值約為 92%。 **關鍵直覺**: - ReLU 的輸出是原始數值(不壓縮),適合隱藏層傳遞特徵強度 - Sigmoid 的輸出是 0~1 的機率值,適合最後輸出層表達「是/否」的置信度

練習二:設計神經網路架構

以下是三個不同的預測任務,請為每個任務設計輸出層的神經元數量和激活函數:

任務 A:判斷一張 X 光片是否有肺結節(只需回答「有」或「沒有」)。

任務 B:對一篇新聞文章進行分類,共有「政治」、「財經」、「運動」、「娛樂」、「科技」五個類別。

任務 C:預測台北市未來 24 小時的平均溫度(攝氏度,連續數值)。

看解答 **任務 A:肺結節偵測(二元分類)** - **輸出層神經元數**:1 個 - **激活函數**:Sigmoid - **輸出解釋**:輸出值在 0~1 之間,代表「有肺結節」的機率。通常設定閾值 0.5:輸出 ≥ 0.5 判定為「有」,< 0.5 判定為「沒有」。 - **注意**:醫療場景中,通常會把閾值調低(如 0.3),讓召回率更高,寧可多一些假警報也不要漏掉真正的病灶。 **任務 B:五分類新聞分類** - **輸出層神經元數**:5 個(每個類別一個神經元) - **激活函數**:Softmax - **輸出解釋**:輸出 5 個數字,分別代表屬於政治/財經/運動/娛樂/科技的機率,5 個數字加總必須等於 1。選機率最大的類別作為預測結果。 - **範例輸出**:[0.05, 0.72, 0.03, 0.08, 0.12] → 判定為「財經」(機率 72%) **任務 C:氣溫預測(迴歸)** - **輸出層神經元數**:1 個 - **激活函數**:無(線性輸出,即 f(z) = z) - **輸出解釋**:直接輸出一個實數值,即預測的氣溫(例如 23.7 度)。不需要激活函數,因為氣溫可以是任意實數,不需要壓縮到特定範圍。 **核心原則**: - 二元分類 → 1 個神經元 + Sigmoid - N 類多分類 → N 個神經元 + Softmax - 迴歸(預測數值)→ 1 個神經元 + 線性(無激活函數)

關鍵字自我檢核

✅ 生物神經元 ✅ 人工神經元 ✅ 感知器 ✅ 激活函數 ✅ sigmoid ✅ ReLU ✅ 輸入層 ✅ 隱藏層 ✅ 輸出層 ✅ 前向傳播 ✅ 權重 ✅ 偏差值