Day8 神經網絡中的導數基礎
導數的定義
導數(Derivative)是微積分中的一個核心概念,用于描述函數在某一點的變化率。簡單來說,導數就是函數值隨自變量微小變化而產生的變化量,即斜率或變化率。假設有一個函數 f ( x ) f(x) f(x),其中 x x x 是自變量, y = f ( x ) y = f(x) y=f(x) 是因變量。函數 f ( x ) f(x) f(x) 在某一點 x 0 x_0 x0? 處的導數表示為 f ′ ( x 0 ) f'(x_0) f′(x0?),也可以寫作 d y d x \frac{dy}{dx} dxdy? 或 d f d x \frac{df}{dx} dxdf?。導數的定義是:
f ′ ( x 0 ) = lim ? h → 0 f ( x 0 + h ) ? f ( x 0 ) h f'(x_0) = \lim_{{h \to 0}} \frac{f(x_0 + h) - f(x_0)}{h} f′(x0?)=h→0lim?hf(x0?+h)?f(x0?)?
其中, h h h 表示自變量 x x x 的一個微小變化量,也經常用 Δ x \Delta x Δx標識。
注:希臘字母 ? 讀作 delta,對應拉丁字母 D。此外,帶有 '(prime)符號的函數或變量表示導函數。
神經網絡中用到的導數公式
在神經網絡中,導數主要用于計算損失函數對各個參數的梯度,從而進行反向傳播和參數更新。以下是一些常用的導數公式:
- 常數函數的導數: c ′ = 0 c' = 0 c′=0( c c c 為常數)
- 冪函數的導數: ( x a ) ′ = a x a ? 1 (x^a)' = ax^{a-1} (xa)′=axa?1( a a a 為常數且 a ≠ 0 a \neq 0 a=0), a = 1 時有 ( x ) ′ = 1 a=1時有(x)'=1 a=1時有(x)′=1
- 指數函數的導數: ( e x ) ′ = e x (e^x)' = e^x (ex)′=ex , ( e ? x ) ′ = ? e ? x (e^{-x})' = -e^{-x} (e?x)′=?e?x
- 對數函數的導數: ( ln ? x ) ′ = 1 x (\ln x)' = \frac{1}{x} (lnx)′=x1?( x > 0 x > 0 x>0)
- 三角函數的導數: ( sin ? x ) ′ = cos ? x (\sin x)' = \cos x (sinx)′=cosx, ( cos ? x ) ′ = ? sin ? x (\cos x)' = -\sin x (cosx)′=?sinx
這些公式在神經網絡中計算各層參數的梯度時非常有用。
導數符號
在神經網絡中,我們經常使用以下符號來表示導數:
- d L d x \frac{dL}{dx} dxdL?:表示損失函數 L L L 對變量 x x x 的導數(在單變量情況下)。
- c ′ = 0 c' = 0 c′=0( c c c 為常數),也可以記為 d c d x = 0 \frac{dc}{dx}=0 dxdc?=0
- ( x ) ′ = 1 (x)'=1 (x)′=1 ,也可以記為 d x d x = 1 \frac{dx}{dx}=1 dxdx?=1
- ? L ? w \frac{\partial L}{\partial w} ?w?L?:表示損失函數 L L L 對權重 w w w 的偏導數。(后續Day深入解釋)
- ? L \nabla L ?L:表示損失函數 L L L 關于所有參數的梯度向量。(后續Day深入解釋)
導數的性質
導數具有一些重要的性質,這些性質在神經網絡的梯度計算中非常有用:
- 線性性質:如果 f ′ ( x ) f'(x) f′(x) 和 g ′ ( x ) g'(x) g′(x) 都存在,那么 ( a f ( x ) + b g ( x ) ) ′ = a f ′ ( x ) + b g ′ ( x ) (af(x) + bg(x))' = af'(x) + bg'(x) (af(x)+bg(x))′=af′(x)+bg′(x)。
- 鏈式法則:如果 u = g ( x ) u = g(x) u=g(x) 且 g ′ ( x ) g'(x) g′(x) 存在,那么 ( f ( u ) ) ′ = f ′ ( u ) g ′ ( x ) (f(u))' = f'(u)g'(x) (f(u))′=f′(u)g′(x)。這個法則在多層神經網絡中計算梯度時至關重要。
證明 ( e ? x ) ′ = ? e ? x (e^{-x})' = -e^{-x} (e?x)′=?e?x
利用后Day的鏈式法則(復合函數的求導公式),我們可以簡單地推導出標題中的公式,如下所示。
y = e u , u = ? x , y ′ = d y d x = d y d u d u d x = e u ? ( ? 1 ) = ? e ? x y = e^{u}, \quad u = -x, \quad y' = \frac{dy}{dx} = \frac{dy}{du} \frac{du}{dx} = e^{u} \cdot (-1) = -e^{-x} y=eu,u=?x,y′=dxdy?=dudy?dxdu?=eu?(?1)=?e?x
分數函數的導數
分數函數(或稱為有理函數)在數學中通常指形式為 U V \frac{U}{V} VU? 的函數,其中 U U U 和 V V V 都是關于自變量(如 x x x)的函數。分數函數的導數公式為:
( U V ) ′ = U ′ V ? U V ′ V 2 \left(\frac{U}{V}\right)' = \frac{U'V - UV'}{V^2} (VU?)′=V2U′V?UV′?
這個公式在神經網絡中處理復雜函數時非常有用。例如,當損失函數中包含分數形式時,我們可以使用這個公式來計算其導數。
Sigmoid 函數的導數
Sigmoid 函數是神經網絡中常用的激活函數之一,其定義為:
σ ( x ) = 1 1 + e ? x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e?x1?
Sigmoid 函數的導數有一個非常簡潔的形式:
σ ′ ( x ) = σ ( x ) ( 1 ? σ ( x ) ) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ′(x)=σ(x)(1?σ(x))
這個導數公式在神經網絡的反向傳播過程中非常重要,因為它用于計算激活函數的梯度。
為了從分數函數的導數公式推導出Sigmoid函數的導數公式,可以按照以下步驟進行:
定義Sigmoid函數: Sigmoid函數定義為: σ ( x ) = 1 1 + e ? x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e?x1? 這可以看作是一個分數函數,其中 U = 1 U = 1 U=1 且 V = 1 + e ? x V = 1 + e^{-x} V=1+e?x。
應用分數函數的導數公式:分數函數的導數公式為: ( U V ) ′ = U ′ V ? U V ′ V 2 \left(\frac{U}{V}\right)' = \frac{U'V - UV'}{V^2} (VU?)′=V2U′V?UV′? 將 U U U 和 V V V 的定義代入此公式,得到:
? σ ′ ( x ) = U ′ ( 1 + e ? x ) ? 1 ? V ′ ( 1 + e ? x ) 2 \sigma'(x) = \frac{U'(1 + e^{-x}) - 1 \cdot V'}{(1 + e^{-x})^2} σ′(x)=(1+e?x)2U′(1+e?x)?1?V′? 其中 U ′ = 0 U' = 0 U′=0(因為 U = 1 U = 1 U=1 是常數),而 V ′ = ? e ? x V' = -e^{-x} V′=?e?x(因為 V = 1 + e ? x V = 1 + e^{-x} V=1+e?x)。
簡化表達式: 代入 U ′ U' U′ 和 V ′ V' V′ 的值,我們得到: σ ′ ( x ) = 0 ? ( 1 + e ? x ) ? 1 ? ( ? e ? x ) ( 1 + e ? x ) 2 \sigma'(x) = \frac{0 \cdot (1 + e^{-x}) - 1 \cdot (-e^{-x})}{(1 + e^{-x})^2} σ′(x)=(1+e?x)20?(1+e?x)?1?(?e?x)? = e ? x ( 1 + e ? x ) 2 = \frac{e^{-x}}{(1 + e^{-x})^2} =(1+e?x)2e?x?
進一步化簡: 注意到 σ ( x ) = 1 1 + e ? x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+e?x1?,我們可以將上面的表達式重寫為:
σ ′ ( x ) = e ? x ( 1 + e ? x ) ? 1 ( 1 + e ? x ) \sigma'(x) = \frac{e^{-x}}{(1 + e^{-x})} \cdot \frac{1}{(1 + e^{-x})} σ′(x)=(1+e?x)e?x??(1+e?x)1? = σ ( x ) ? ( 1 ? σ ( x ) ) = \sigma(x) \cdot (1 - \sigma(x)) =σ(x)?(1?σ(x)) 這里我們用到了 σ ( x ) \sigma(x) σ(x) 的定義,并且利用了 1 ? σ ( x ) = e ? x 1 + e ? x 1 - \sigma(x) = \frac{e^{-x}}{1 + e^{-x}} 1?σ(x)=1+e?xe?x? 這一事實。
因此,我們成功地從分數函數的導數公式推導出了Sigmoid函數的導數公式: σ ′ ( x ) = σ ( x ) ( 1 ? σ ( x ) ) \sigma'(x) = \sigma(x)(1 - \sigma(x)) σ′(x)=σ(x)(1?σ(x))
最小值的條件
一、基本概念
-
函數的最小值:
- 如果對于函數 f ( x ) f(x) f(x)的定義域內的所有 x x x,都有 f ( x ) ≥ f ( a ) f(x) \geq f(a) f(x)≥f(a),則稱 f ( a ) f(a) f(a)是函數 f ( x ) f(x) f(x)的最小值。
-
導數與函數單調性:
- 導數 f ′ ( x ) f'(x) f′(x)反映了函數 f ( x ) f(x) f(x)在某一點的切線斜率,也反映了函數在該點附近的增減性。
- 當 f ′ ( x ) > 0 f'(x) > 0 f′(x)>0時,函數在該區間內單調遞增;當 f ′ ( x ) < 0 f'(x) < 0 f′(x)<0時,函數在該區間內單調遞減。
二、最小值的一階必要條件
- 費馬小定理(Fermat’s Theorem):
- 如果函數 f ( x ) f(x) f(x)在點 x = a x = a x=a處取得局部最小值,且 f ( x ) f(x) f(x)在 a a a點可導,則必有 f ′ ( a ) = 0 f'(a) = 0 f′(a)=0。
- 這意味著,在最小值點處,函數的切線斜率為零,即函數在該點處“平緩”。
三、最小值的二階充分條件
-
二階導數的作用:
- 為了進一步確定一個臨界點(即一階導數為零的點)是最大值、最小值還是拐點,我們需要考察二階導數。
-
二階充分條件:
- 假設函數 f ( x ) f(x) f(x)在點 x = a x = a x=a處有一階導數 f ′ ( a ) = 0 f'(a) = 0 f′(a)=0,且二階導數 f ′ ′ ( a ) f''(a) f′′(a)存在。
- 如果 f ′ ′ ( a ) > 0 f''(a) > 0 f′′(a)>0,則函數在 x = a x = a x=a處取得局部最小值。
- 如果 f ′ ′ ( a ) < 0 f''(a) < 0 f′′(a)<0,則函數在 x = a x = a x=a處取得局部最大值。
- 如果 f ′ ′ ( a ) = 0 f''(a) = 0 f′′(a)=0,則無法直接通過二階導數判斷該點的性質,可能需要進一步的分析(如考察更高階的導數或利用其他方法)。
四、全局最小值與局部最小值
-
局部最小值:
- 只在函數定義域的某個小區間內是最小的值。
-
全局最小值:
- 在函數整個定義域內都是最小的值。
- 要找到全局最小值,通常需要考察函數的所有局部最小值,并比較它們的大小。
五、實例分析
考慮函數 f ( x ) = x 2 + 4 x + 4 f(x) = x^2 + 4x + 4 f(x)=x2+4x+4。
-
求一階導數:
- f ′ ( x ) = 2 x + 4 f'(x) = 2x + 4 f′(x)=2x+4。
-
找臨界點:
- 令 f ′ ( x ) = 0 f'(x) = 0 f′(x)=0,解得 x = ? 2 x = -2 x=?2。
-
判斷最小值:
- 計算二階導數: f ′ ′ ( x ) = 2 f''(x) = 2 f′′(x)=2。
- 因為 f ′ ′ ( ? 2 ) = 2 > 0 f''(-2) = 2 > 0 f′′(?2)=2>0,所以函數在 x = ? 2 x = -2 x=?2處取得局部最小值。
- 由于該函數是一個開口向上的拋物線,且在整個實數域內只有一個臨界點,因此這個局部最小值也是全局最小值。