這篇博客主要介紹一下神經網絡中的激活函數以及為什么要存在激活函數。
首先,我先做一個簡單的類比:激活函數的作用就像給神經網絡里的 “數字信號” 加了一個 “智能閥門”,讓機器能學會像人類一樣思考復雜問題。
沒有激活i函數的神經網絡
沒有激活i函數的神經網絡就像是一臺“傻機器”,假設你用純數學公式搭一個神經網絡(沒有激活函數),它的計算邏輯是這樣的:
輸入層?→?隱藏層:h=W1??x+b1?
隱藏層?→?輸出層:y^?=W2??h+b2?
把兩層合并后會發現:y^?=W2??(W1??x+b1?)+b2?=(W2?W1?)?x+(W2?b1?+b2?)
本質還是一個線性公式(形如?y=kx+b),只能擬合直線,連 “判斷圖片里有沒有貓” 這種曲線問題都解決不了(因為貓和非貓的邊界通常是復雜曲線)。
就像你讓一個只會做加減乘除的計算器去解微積分題 —— 它根本看不懂題目。
激活函數
激活函數的核心作用是讓神經網絡學會 “非線性變換”,簡單說就是:
- 對符合條件的信號 “放行通過”,
- 對不符合條件的信號 “過濾或扭曲”,
- 讓不同信號之間產生復雜的邏輯關系。
激活函數的類比
像 “安檢門” 一樣過濾無效信號(以 ReLU 函數為例)
ReLU 函數:f(z)=max(0,z)
- 作用:如果輸入信號?z?是負數(比如?5),直接變成 0(相當于 “攔截”);如果是正數(比如 3),原樣輸出(相當于 “放行”)。
- 類比:
- 你去機場過安檢,包里的水如果超過 100ml(信號為負),直接被扣下(輸出 0);
- 小于 100ml 的水(信號為正),可以帶進去(輸出原值)。
- 效果:讓神經網絡專注于 “有意義的信號”,過濾掉干擾項,比如識別圖片時只關注 “有像素的區域”,忽略全黑的背景。
像 “調光開關” 一樣壓縮信號范圍(以 Sigmoid 函數為例)
Sigmoid 函數:f(z)=1+e?z1?,輸出永遠在 0 到 1 之間。
- 作用:把任意大小的信號(比如?100或+100)“擠壓” 到 0~1 的區間,類似把 “強光” 和 “弱光” 都轉化為 “手機屏幕能顯示的亮度”。
- 類比:
- 你用手機拍夜景,光線太強(信號值大)會過曝,太弱(信號值小)會漆黑,手機算法會自動把光線壓縮到適合顯示的范圍(0~1),讓亮處不過曝、暗處能看清。
- 效果:適合處理 “概率問題”,比如判斷 “這張圖是貓的概率是 90%”(輸出 0.9),不是貓的概率是 10%(輸出 0.1)。
像 “蹺蹺板” 一樣讓信號產生對立關系(以 Tanh 函數為例)
Tanh 函數:f(z)=ez+e?zez?e?z?,輸出在 - 1 到 1 之間。
- 作用:把信號轉化為 “正” 和 “負” 兩種對立狀態,類似給信號裝了一個 “蹺蹺板”,一頭是正向激活,一頭是負向激活。
- 類比:
- 你和朋友玩蹺蹺板,體重差異會讓一端升高(輸出 + 1),一端降低(輸出 - 1),體重相近時會平衡在中間(接近 0)。
- 效果:適合處理 “情感分類” 問題,比如判斷一句話是 “積極情緒”(輸出 + 0.8)還是 “消極情緒”(輸出 - 0.6)。
為什么一定要有激活函數(非線性)--人類思維的本質是 “非線性”
for example
- 你判斷 “今天要不要出門”,不是只看單一因素(比如 “溫度 > 20℃就出門”),而是綜合考慮:
- 溫度是否合適(激活 1)、
- 有沒有下雨(激活 2)、
- 朋友是否約你(激活 3)、
- 工作是否完成(激活 4)……
這些因素通過 “非線性組合”(比如 “溫度合適?且?沒下雨?或?朋友強烈約我”)最終決定你的行為。
激活函數就是在模擬這種非線性邏輯:
- 每個隱藏層神經元用激活函數處理信號后,相當于學會了一個 “局部判斷規則”(比如 “溫度 > 20℃時激活”),
- 多層神經元的激活函數疊加后,就能組合出無窮多復雜規則(比如 “溫度> 20℃?且?下雨概率 < 30%?或?朋友約我吃飯”),
- 最終讓神經網絡能像人類一樣解決復雜問題(如圖像識別、語言翻譯等)。
總結
無激活函數的網絡只能做?線性運算(低級計算器)有激活函數的網絡能做?非線性變換(智能大腦)
一句話:激活函數讓數字信號學會 “思考”,讓機器從 “機械計算” 進化到 “智能決策”!