最佳化 · 機器學習基礎

什麼是
非凸函數?

凸函數像一個碗,球放哪都會滾到同一個底。
非凸函數像一片山谷地形——你可能困在一個小坑裡,卻看不見更深的谷。

往下滑,親手操作
01 — 直覺

一顆球,兩種命運

想像把一顆球放到函數的曲線上,讓它沿著斜坡往下滾,停在最低處。下面兩個動畫不斷重複「隨機放球 → 滾到谷底」的過程,注意觀察兩者的差別。

凸函數 (Convex)
不管從哪裡放,球永遠滾到同一個最低點。
非凸函數 (Non-convex)
球常常卡在附近的小坑,到不了真正的谷底。

關鍵差別

凸函數只有一個最低點(全域最小值);非凸函數則有許多高低起伏的坑——除了最深的那個「全域最小值」,還有很多較淺的「局部最小值」。卡在局部最小值,正是訓練模型時最常遇到的麻煩。

02 — 嚴謹定義

弦線測試:凸性怎麼判斷?

數學上,判斷一個函數是不是凸函數,有個很直觀的方法:在曲線上任取兩點,連成一條直線(稱為弦線 / chord)。

f( λa + (1−λ)b ) ≤ λ·f(a) + (1−λ)·f(b), 0 ≤ λ ≤ 1

白話翻譯:弦線必須永遠在曲線的上方(或剛好貼著)。只要存在任何一組兩點,讓弦線「跌到曲線下面」,這個函數就不是凸函數。

弦線完全在曲線上方 — 符合凸性

拖曳曲線上的兩個圓點,改變弦線的位置。試試在「非凸函數」上,找出能讓弦線陷到曲線下方的位置。

03 — 為什麼這很重要

梯度下降:會卡住的旅程

訓練模型時,我們用梯度下降(Gradient Descent)來找最小值——說穿了就是「往腳下最陡的下坡方向走一小步」,重複很多次。在凸函數上這保證找到答案;但在非凸地形上,球只會滾進最靠近起點的那個坑,從此停住。

實驗一:從哪裡出發,決定了結局

點擊下方地形上的任一處放球,看它往哪裡滾。星號 ★ 是全域最小值(真正的谷底)。

0.08
滾到全域最小值
0
卡在局部最小值
0
命中率

把學習率拉大,觀察球如何「跨過」小坑,甚至開始劇烈彈跳——這正對應深度學習中「學習率調太大導致發散」的現象。

04 — 連結到機器學習

為什麼深度學習離不開非凸

神經網路的損失函數(Loss Function)幾乎都是高度非凸的——而且不是二維,是動輒上百萬維的超高維地形。這帶來幾個重要的觀念:

一句話總結

凸函數是「閉著眼睛都能找到底」的理想世界;非凸函數則是真實機器學習所在的崎嶇山谷——我們無法保證找到最深的谷,但靠著聰明的優化策略,通常能找到一個夠好的容身之處。

📝 iPAS 考點提醒

非凸最佳化是深度學習的本質難題,iPAS 數學與訓練考點(中級科目三)。重點:凸函數只有單一全域最小、好優化;神經網路損失高度非凸,有許多局部最小、鞍點與平原,沒有保證找到全域最小。易混點:高維下多數局部最小品質相近、鞍點比壞的局部最小更常見更需逃離;靠 SGD 隨機性、動量、好初始化常能找到夠好的解。情境:解釋為何同模型多次訓練結果略不同。

想練情境題與詳解 → AI 學習與考證地圖

❓ 常見問題

凸函數和非凸函數差在哪?

凸函數只有一個全域最小、任何局部最小都是全域最小,好優化;非凸函數有多個局部最小與鞍點,優化較難。

為什麼神經網路是非凸的?

多層非線性與大量參數讓損失地形高度複雜,存在許多局部最小、鞍點與平原;沒有保證找到全域最小。

非凸優化怎麼還能訓練成功?

高維下多數局部最小品質相近、且多為鞍點;靠 SGD 的隨機性、動量、好的初始化與架構,常能找到夠好的解。

什麼是鞍點?

某些方向是極小、某些方向是極大的點;梯度為零但非最小。深度學習中鞍點比壞的局部最小更常見、更需逃離。

怎麼應對非凸地形?

好的初始化、動量與自適應優化器、學習率排程、批次正規化、殘差連結等,都幫助穿越複雜地形找到好解。

🧭 相關主題

← 返回 AI 學習與考證地圖