邏輯斯迴歸 (Logistic regression) 是一種廣義線性模型。廣義線性模型分三個部分組成:隨機成分 (random component)、連結函數 (link function)、線性預測子 (linear predictor)。邏輯斯迴歸模型的三個成分是:

隨機成分: Yi ~ Bernoulli(p_i) ;    μ_i = p_i, σ^2 = V(p_i) = p_i(1 - p_i)
連結函數: η_i = g(p_i) = ㏑(p_i/(1-p_i))
線性預測子: η_i = x_i'β

廣義線性模型的概似方程式:

Σ_i [(Yi - μ_i)/(V(μ_i) g'(μ_i))] x_i = 0

將邏輯斯迴歸的 g'(p) = 1/[p(1-p)] 及 V(p) = p(1-p) 代入,得

Σ_i [(Yi - μ_i) x_i = 0 或  X'(- μ) = 0   或  X'YX

矩陣方程式 X 的第 i 列即 x_i',或說 X' 第 i 行即 x_i;μ_i = 1/(1+e^{-x_i' β})。模型的主要參數是迴歸係數 β,如果模型完全正確,β 就是唯一參數;但有時候可能要多考慮一個「分散參數 (dispersion parameter)」φ,即 V(p) = φp(1-p)。不過,這時模型可能不是單純的上述邏輯斯迴歸,而是需要考慮隨機迴歸係數模型,因為如此處固定 β 及固定 x_i,就表示固定 p_i = 1/(1+e^{-x_i'β}),而在固定 p_i 的獨立二元反應資料,只有 Bernoulli 一種。

如果 X 中 n 個 x_i 都是相同的 x,對應反應是 y 個 1 和 n-y 個 0,即

X = x J',  Y = [ K'  0']',  μ = μ J

式中 J 是 n×1 元素皆為 1 的行向量,K 也是元素皆為 1 但階數是 y×1, 而 Y 中的 0 是 (n-y)×1 的 0 向量。則概似方程式左右分別為

左邊: x JY = y x;   右邊: x J' p J = np x

所以可以並為 y = np x 或 (y/n) x = p x。因此,若 n 筆資料不是個別資料,而是 Yi ~ bin(n_i, p_i) 也就是二項分布成功數資料,或二項比例,並附加 n_i,則概似方程式為

成功數資料:  XYXμ,   其中  μ_i = n_i p_i = n_i/(1 + e^{- x_i' β},
                                                    V(μ_i) = μ_i(n_i - μ_i)/n_i

比例資料:   XW YXW  μ,  μ_i = p_i = 1/(1 + e^{- x_i' β},
                                                      V(μ_i) = μ_i(1 - μ_i)/n_i,  Wi = n_i

不管是個別 0-1 資料,或分組比例資料,或分組(成功)次數資料,概似方程式都是參數 β 的非線性方程式,可以用 Newton-Raphson 迭代法求解。

假設由 n 筆資料得出 β 之 MLE,現在新增一筆二元資料,則 β 的 MLE 會有什麼樣的變動?本來 XYXμ,新增 (y*, x*),則

XY + x* y* = X' (μ + Δμ) + x* 1/(1+ e^{- x*' (β + Δβ)})

式中 μ 之各成分 μ_i = p_i = 1/(1 + e^{- x_i' β}), 而 μ + Δμ 之成分

μ_i + Δμ_i  = 1/(1 + e^{-  x_i' (β + Δβ)})

而 Δβ 是增加新資料後 β 應修正量。所以

x* y* = x* 1/(1+ e^{- x*' (β + Δβ)})
            + Σ_i x_i [1/(1 + e^{- x_i'(β + Δβ)}) - 1/(1 + e^{- x_i'β})]

設用原 n 個資料點配適 (fitting) 的模型計算的配適值 (fitted value) 為 p*,則

x* (y* - p*) ≒ Σ* x_i p_i(1-p_i)(1-e^{- x_i' Δβ})

式中 Σ* 是對 i = 1, ..., n 及新資料點的加總。此式是將 Δμ_i (或寫 Δp_i )近似如下:

Δp_i = (p_i + Δp_i)(1 - p_i)(1-e^{- x_i' Δβ})

右邊 Δp_i 忽略而得。再將 1 - e^{-u} ≒ u,則得

x* (y* - p*) ≒ Σ* x_i p_i(1-p_i) x_i' Δβ

X* 表示新資料加入後之 X 矩陣,以 V* 表示諸 p_i(1-p_i) 含 p*(1-p*) 構成的對角線矩陣,則

x* (y* - p*) ≒ X*' V* X* Δβ

所以 Δβ ≒ (X*' V* X*)^{-1} x* (y* - p*)。

如果是分組比例資料,Yi 是 n_i 個獨立重複二項試作 (binary trials) 中成功比例,μ_i 仍等於 p_i 但 V(p_i) = p_i(1-p_2)/n_i,迴歸係數 β 由概似方程式

  XW YXW  μ

可得。如果 Yi 是成功數,而 μ_i 是 n_i p_i,就沒有權量矩陣 W,而比例資料模型之 W Y 即成功數資料,並且

㏑(n_i p_i/(n_i - n_i p_i)) = ㏑(p_i/(1 - p_i))

所以即使原資料是分組比例,也可以化成成功計數,其實完全沒有差別。於是,在已配適好模型之後,新進一組資料  (n*, y*, x*) 則對 β 的影響滿足

x* n* (y* - p*) ≒ X*' V* X* Δβ

或 Δβ ≒ (X*' V* X*)^{-1} x* n* (y* - p*),式中 V* 的元素是 n_i p_i (1-p_i)。如果一次不是增加一個二元反應,而是一組相同 x* 的二項比例附樣本大小,此結果也是適用的,如新資料是 (n", y", X"),則

 Δβ ≒ (X*' V* X*)^{-1} (X")' W" (y" - p")

式中上標 " 代表新資料,上標 * 是新舊全部資料,W" 主對角線元素是新資料的 n_i; W* 是新舊資料的 n_i p_i (1-p_i), 而 p_i 是以原 β 值計算的。

同樣的 k 個輸入變數 x_{i1}, ..., x_{ik} 可以產生多個不同輸出 Y{i1}, ..., Y{ip}。視實務需要可以假設這些輸出是相關聯的,於是我們有多(反應)變量廣義線模;同時我們也可能可以各別處理各個反應變數 y_{ij},也就是做 p 個不同反應變數,而預測變數 x_i 則相同。這就像類神經網路,無隱藏層的情況。單一反應的情形在類神經網路中是一個類神經元,諸 x_i 構成輸入層,反應 Yi 是輸出,線性預測子 η_i 是加法單元,除了真實變數 x_i 與係數 β 相乘再加總以外,常數項 - β_0 是閥值或偏值,β 稱為權重或鍵結值,g^{-1} 稱活化函數或傳遞函數。下圖是從 Wiki 複製的:

邏輯斯迴歸與類神經網路

輸入 a(即 x)經加權 w(即 β) 加總得值,與閥值(偏值)b 相減,即我們的線性預測子,經 f (= g^{-1}) 活化後傳遞給輸出(反應),我們採取的是 S 形曲線 p = 1/(1+e^{-η}) 的活化函數,但類神經網路也可能採用其他活化函數。另外,單層(無隱藏層)類神經網路是多重輸出 (

):

邏輯斯迴歸與類神經網路

應用類神經網路幾乎沒在用單層模型的,最少也有個隱藏層,在統計上稱潛在變數 (latent variable)。在統計上,如果預測變數 x 與反應變數 Y 之間有隱藏變數 Z,那麼 Z 是什麼性質的變數需要先弄清楚,例如 x 是數值變數, 也被認為是數值變數;接下來要考慮 x, ZY 之間的關係方向:如以類神經網路的模型來看,x 影響 Z,且 Z 的元素都是 0-1 間數值型變數,輸出 Y 也是 0-1 數值,但很多時候又會把它們變成 0-1 二元變數。因此, 和 x 的關係似乎是一個多變量邏輯斯迴歸模型, 到 Y 也是一個邏輯斯迴歸模型。然而,說 x 到 Z 是邏輯斯迴歸模型又不完全對,至少它不是我們前面談的邏輯斯迴歸。它可能是:

變數轉換之線性模型: logit(Zj) = ㏑(Zj/(1-Zj)) = xβ_j + ε_j

廣義線性模型,例如: Zj ~ Beta(α, β),  μ_j = E[Zj],  ㏑(μ_j/(1-μ_j)) = x' β_j

而 Y 和 Z 的關係是依賴 Z 或是依賴 E[Z]?也就是說:Y 的期望值經連結函數(logit(Y) 變換後是 Z' γ 或 E[Z'] γ?無論如何,統計上潛在變數模型先要假設或確認潛在變數與觀測變數間的關係,然後以 ML 或其他方法估計相關參數。更重要的是:統計上潛在變數的使用,或者是事實上理應如此,如一些抽象概念真正影響外顯變數(觀測變數),但卻只能觀測到其替代變數,如測量誤差模型:X, Y 都只是潛在變數的代表或代理變數,真正的關係存在於潛在變數之間,但潛在變數無法觀測。潛在變數也做為縮減資料維度之用,如因素分析、典型相關等,模型上假設許多觀測變數其實只是少數潛在變數作用的結果(因素分析);或兩組大量變數其實可濃縮為少數潛在變數,用兩組潛在變數間的相關分析原來 X, Y 兩組大量變數間的相關(典型相關)。統計模型重在簡化,不管是縮減維度,平滑化資料或建立模型,都在簡化資料以呈顯規律性。杷反地,類神經網路卻不同,其目標在準確預測,把輸入 x 與輸出 Y 之間的關係弄得複雜,特意在其間設定一層或多層的隱藏層,使其間的關係更複雜難明,如

邏輯斯迴歸與類神經網路

上圖取自 AWS什麼是神經網路?」上圖呈現一個 784 個變數的輸入層和 10 個變數的輸出層,這些在實際問題自有其意義;在輸入到輸出之間,有兩層分別有 128 和 64 個變數的隱藏層。筆者不懂類神經網路,更不懂隱藏層的設置技術,看起來隱藏層似乎旨在提高輸入至輸出之間的非線性、多變化性,藉此使得輸出也就是根據輸入資料所做預測結果能更準確,但是為什麼?卻不得而知;是否提高隱藏層次,或增加各隱藏層變數就能提高預測準確度?筆者亦不知。統計模型如本文談的 logistic 迴歸模型,崇尚的是簡約或小氣 (parsimoney) 原則,從模型形式上儘可能以簡單的函數形式描述 x 和 Y 之間的關係,如線性或此處經簡單變化後成線性;從預測變數 x 而言也是儘可能減少變數數目,因為假如我們有性猜對了模型中的變數關係,增加無謂的變數卻會增大參數估計的誤差,從而也降低了預測準確度。但類神經網路似乎愈複雜愈好?從輸入變數個數來說,我們知道哪怕用了大量沒多少作用的輸入變數於預測模型,由於可以大量「學習」或「訓練」,像統計問題那樣所謂樣本數有限的問題可以忽略,那麼所謂不重要的預測變數將提高估計誤差並進而影響預測準確度的問題也就不存在了。另外,類神經網路模型的隱藏層與統計上的潛在變數似也有本質上的不同。統計的潛在變數,不管與預測變數間,與反應變數間,或不同潛在變數間,如果有關聯,是統計上的關聯,也就是說存在誤差。而類神經網路之隱藏層與預測變數之間完全是一個數學函數關係;若有誤差存在,也只是在輸出層。例如,前面的圖示,兩隱藏層變數群分別以 uv 表示,則模型是:

Y = ξ(u) + ε,    u = ψ(v),   v = h(x)

從輸入層 x 到輸出層 Y, 之所以加了隱藏層,不是實際上應該有那些層(變數)的存在,而是認為用簡單函數不足以表示 Y = f(x) + ε 的關係,所以多加些中間變數多個層次,試圖用這樣的多層次函數合成使關係複雜化;甚至,或許誤差 ε 之所以存在,不像統計上把它當作隨機誤差,而是因為我們並不清楚 x 到 Y 其實是怎樣的函數關係,實務上的 f 只是「以為是那樣」而設定的,所以才產生誤差。

舉個簡單的例子:輸入層只有一個變數,輸出層也是一個變數,則簡單(無隱藏層)的 logistic 模型是:

Y = 1/(1 + e^{- (w x - b)} + ε

若有一隱藏層,其中只有一個變數 u = u(x),則

Y = 1/(1 + e^{- (w u(x) - b)}) + ε

如果 u(x) = αx + γ,則 w u(x) - b = wα x  - (b-wγ),等於沒有隱藏層;若 u(x) = 1/(1+e^{-(ωx-δ)},則相當於

Y = 1/{ 1 + e^{- w/[1 + e^{- (ωx - δ)}]} } + ε

是一個全新曲線關係。若隱藏層有兩個變數,u = u(x), v = v(x), 則

Y = 1/( 1 + e^{ - (w_1 u(x) + w_2 v(x) - b)} ) + ε

而 u(x), v(x) 又各是曲線形,則 Y 其實仍只是 x 的函數,加誤差項,只是其函數形式在有隱藏層與無隱藏層,基本上是完全不同。以 logistic 曲線形為例,它是把 x 靠近中心 b/w 的點緊縮些,把遠離中心的點再拉遠些,而這緊縮和拉遠又是曲線變化。而加了 logistic 曲線形的隱藏層,等於把 x 做了 logistic 曲線形調整後,又把新標尺 u 做類似的緊縮拉伸後再對應到 Y。

類神經網路的權重和閥值,相當於 (logistic) 迴歸模型的迴歸係數,在 logistic 迴歸模型我們通常採用 MLE,或迭代重加權逼近的方式,無非是運用有限的樣本資料得到最好的結果。但在類神經網路,權重的估計卻另外一套辦法。統計上以觀測資料尋找預測變數(輸入層)與反應變數(輸出層)之間的函數明確公式,稱為模型配適 (fitting, 現常被譯為「校估」);在類神經網路則稱之為「學習 (learning)」。有一種 Hebbian learning(Hebb 式學習),是「非監督學習規則」的一種,基本上認為從我們的大腦在學習新事物時,神經元是被激活,並與其他神經元連結,構成了神經網路。這種連結一開始很微弱,但在重複刺激下逐漸加強,最終行為變成直覺。Hebb 式學習可以用下列公式表示:

w(ji;n+1) = w(ji;n) + η y_j(n+1) x_i(n+1)

原本預測 y_j 時 x_i 的權量是 w(ji;n),相當於前面 logistic 迴歸對應變數 x_i(非先前的資料點 x_i,資料註標 i 現以 n 代表)的 β_i;新的學習資料是 x_i(n+1) 及 y_j(n+1),故加上 η y_j(n+1) x_i(n+1) ,η 為學習率常數。如果一開始權重是 0,即 w(ji;0) = 0,則

w(ji;n) = η Σ_t y_j(t) x_i(t)

不過,在曲線型反應,y_j 應不是真實反應,而是如同前面的線性預測子 η_j 一般和諸 x_i 成線型關係的指標,即

y_j = Σ_i w(ji) x_i

以前面符號使用的慣例,可以矩陣表示為

W = η Xy        矩陣階數 (k×p) = (k×n) (n×p)

為了避免鍵結值無限制地增大,,可加上遺忘效果

w(ji;n+1) = (1 - α) w(ji;n) + η y_j(n+1) x_i(n+1)

或  w(ji;n+1) = w(ji;n) + y_j(n+1) (η x_i(n+1) - α w(ji;n))

不過 α 或者 η 似乎不必是固定的?筆者對機器學習、類神經網路、以及 Hebb 的學習理論很生疏,並不知道 α, η 是否會或應隨著學習或訓練過程而改變。

在監督式學習,y 是「正確的」線型輸出,也就是說 y = X W。如果 W = η Xy , 則

y = η X Xy

但此式要成立必須  η X X' = I,則學習資料數 n 必須不超過輸入端變數個數 k 才有可能,而且各變數(就這些資料點而言)相互正交,各變數之平方和都是 1/η,這很不實際。不論 y 是「應有的」或「實有的」線型輸出端資料,y 與 X W 之間是有誤差的,我們希望其誤差平方和最小:

minimize || y - X W ||^2

如果 y 只是單變量資料這和線性模型求最小平方解完全一致;在 y 是 p 變量資料時,權量,也就是迴歸係數,也是 p 行 k 列的矩陣,上列誤差平方和是 y 各行計算誤差平方和之和,結果一樣,其配適值

y* = X (X' X)^- Xy = M y

式中 M 是 C(X), X 的行空間上的垂直投影;雖然 (X' X)^-,矩陣 X' X 的廣義反矩陣,可能並不唯一,但 M 是唯一的。如果 y 是在 C(X) 中,則 y* = y。當 X' X 不可逆時,W 的最小平方解  (X' X)^- Xy 不唯一,但 M y 是唯一的。當 y 是應有的線型輸出端資料時,意謂 y = X c,所以

 y* = M y = M X c = X c = y

最小平方解可以重現監督式學習(訓練)的訓練資料;但這卻與 Hebb 式學習結果不同。

權量 W 的決定還有所謂梯度下降法 (gradient decent method),又稱「最陡下降法 (Method of steepest descent)」,說明如下:目標值是 y(n×s 矩陣),但依 W(k×s 矩陣)對 x(n×k 矩陣)加權而得的估計是 X W,我們希望

Q(W) = (1/2) || y - X W ||^2

最小。矩陣的模是以元素平方和的平方根計算,也就是元素平方和。以單一輸出變數,即 y 為 n×1 行向量來說,Q(W) 的梯度是

▽ Q(W) = - X' (y - X W)

因此應向 ▽ Q(W) 的相反方向修正 W,即

ΔW = η X' (y - X W)

式中 η 只是一個調整異動距離的乘數,因為梯度只是指出往哪個方向 Q(W) 增加最快,而取反向則下降最快。依微小變化的想法,它的值愈小結果愈精確;但為了調整 W 能產生作用,η 值也不能太小。因為是尋求 Q(W) 最小,不妨依循此方向使目標最小。這是就整批資料的「學習」來看的,應該是一種迭代計算程序,所以其實是最小平方法求解的一種迭代方法,當其收斂時,最後得到的 W 應該就是先前的最小平方解。不過,這最小平方誤差修正權量的想法如果用在逐筆修正:

 Q(W) = (1/2) Σ_j y_j(n+1) - W_j' x(n+1)||^2

 式中 W_j 是 W 的第 j 行,x(n+1) 是新的輸入向量,y_j(n+1) 是新資料線型輸出端第 j 變數的值,則其梯度為

_j = - x(n+1) (y_j(n+1) - W_j' x(n+1))
     = - x(n+1) (y_j(n+1) - x'(n+1) W_j)

故 ΔW_j = η x(n+1) (y_j(n+1) - x'(n+1) W_j) 或

ΔW = η x(n+1) (y'(n+1) - x'(n+1) W)

此處 W 是原來的權量矩陣,Δ 則是增加新資料 (x(n+1), y(n+1)) 後以梯度下降法做簡單修正,它和把新資料加入重新做最小平方配適並不等同。

對於 0-1 輸出,上述基於線性結果的最小平方法是不一定可行的,例如本文主要談的是 logistic 曲線型關係,Y 如果是介於 0-1 之間的比例而不含 0 或 1,則 y = ㏑(Y/(1-Y)) 也就是 Y = 1/(1+e^{-y});但 Y 是 0 或 1 則無法對應適當的 y 值。這種情形,我們必須從最後輸出端來考慮誤差以調整權量。仍然用平方誤差和,

Q(W) =  (1/2) || Y - f(X W) ||^2

此處 f(X W) 其中函數 f 是作用在整個矩陣  X W 的各元素。對 W 之第 j 行 W_j 的梯度是

▽_j Q(W) = - Σ_i x_i f'(x'_i W_j) (Y_j(i) - f(x'_i W_j))

式中 i 是指第 i 筆資料 (x_j, Y_i)。故 W_j 的調整是

ΔW_j = δ Σ_i x_i f'(x'_i W_j) (Y_j(i) - f(x'_i W_j))

對 W_j 的調整只是改變諸 Y_j(i) 的配適值,即輸出端第 i 個觀測值第 j 變數的網路輸出。對斤整個 W 矩陣的調整,可以寫成

ΔW = δ X' [f'(X W)⊙(Y - f(X W))]

式中 ⊙ 代表兩(同階)矩陣對應元素相乘,而 f' 及 f 兩函數都是對矩陣每一元素作用。這方法稱為 Delta 學習法。同樣地,我們可以考慮對新增訓練樣本的更新版本:

ΔW = δ x(n+1) [f'(x'(n+1) W)⊙(y'(n+1) - f(x'(n+1) W))]

但欲得加入新樣本後最適當的權量 W,唯有把新舊訓練樣本放在一起去極小化目標函數。又,純量 δ 的選取也應是在最陡下降方向上極小化目標(誤差或損失函數)。

一個簡單的 0-1 二元輸出類神經網路稱「感知機」。假設輸入是 x 向量,只有一個輸出,非 1 即 0。此網路模型為:

Y =  f(w'x - θ);   f(u) = 1 if u ≧ 0;  = 0 if u < 0.

把閥值 θ 併入 w'x'w,我們可以說:若且唯若 w'x ≧ 0 則輸出 1。假設新一筆資料輸入端 x,輸出端應為 1 但 w'x < 0,則欲使其輸出正確則應調整 w 使 w'x 增大。若向 x 方向調整,

(w + Δw)' x = (w + ηx)'x = w'x + ηx'x > w'x

適當的 η 值能使新資料的輸出呈現正確分類(但也可能使其他原本正確分類的反而會變成錯誤分類);反之,若輸出應為 0 卻 w'x ≧ 1,則應向 x 之相反方向調整:

Δw = - η x;   即  w (new) = w (old) - η x (new)

在整批資料之學習時,令 t_i = 1 或 0 為應有之輸出,對應權值向量 w 則第 i 筆資料輸出用 I(wx_i ≧ 0) 表示,則錯誤輸出數為

Q(w) = Σ_i (t_i -  I(wx_i ≧ 0))^2

目標是選擇適當的 w 以極小化上列 Q(w)。如果按 t_i 將諸 x_i 分成兩組,我們的目標是要找一個線型判(鑑)別函數 w'x 能把兩群 x_i 做最清楚的區隔,也就是說希望使錯誤分類次數最少,這就是所謂「線性(型)判別分析 (linear discriminant analysis)」。不過據我的理解,也沒有一個鑑別分析方法真正能保證樣本觀點的最小錯誤率。

上述問題的困難在於 I(.) 函數不是 w'x 的可微分函數,我們可換成例如 logistic 函數 f(u) = 1/(1+e^{-u}) 取代之,則前面 Delta 學習法可用。而在找出 w 的最適解後,輸出端 f(wx_i) 得到的是 0-1 之內的小數,可以找一個切割點來決定 0 或 1 的輸出得到最小的錯誤分類比例。當然如同判別分析,這只能產生某些準則下的最佳解,卻不是前述訓練樣本錯誤分類率最小的解。

筆者不知有何方法可以解決(就訓練樣本觀點)錯誤率最小的問題,或許可以用判別分析或邏輯斯迴歸之解進行下列調整:

(1) 把訓練樣本中正確分類的資料放入集合 P,錯誤分類則放入則放入 Q。

(2) 逐一檢查 Q 資料,依前述調整 w 方式調整,使被檢查資料可以正確分類。

(3) 檢查 P 中資料,若有一 x_j 在調整權量後分類錯誤,則捨棄此項調整,回到 (2);若全無問題,將此資料放入 P 集,回 (2)。

以判別分析而言,是對 w'x 定一分割點 θ 來決定分類,這 θ 就是感知機模型的閥值。以邏輯斯迴歸模型來說,是對 w'x 做邏輯斯苗線變換後再做0/ 1 變換,迴歸模型中的 w'x 可能也含常數項;不過如果是以 p 以上為 1,那就相當於

 w'x ≧ logit(p) = ㏑(p/(1-p))

所以 logit(p) 可以併到 w'x 的常數項裡。

上面簡單的感知機是單層類神經網路,沒有隱藏層;若有隱藏層,則為多層感知機,或一般的多層前饙式網路。這樣的類神經網路,在固定權量時是前向或前饋計算,輸入層經乘以權量後加總,再經傳遞函數進入第一層隱藏層,經乘上檯量後加總,再經傳競函數轉入下一隱藏層或輸出層。在網路訓練階段的計算,是監督式學習,是錯誤更正的倒傳邈算程 (backpropagation algorithm) 來計算、更正權量,因此也稱為倒傳遞類神經網路。首先來看批次的學習,意即由輸入層 X 是 n×k 矩陣,n  筆訓練資料,k 個輸入項(包含閥值項 -1),經類神經網路進入到隱藏層,再經類神經網路到輸出層,我們期望輸出是 Y,  n×p 矩陣,代表 n 筆輸出,p 個輸出琪。假設只有一個隱藏層,網路結構用資料流向表示如下:

x_i  →  vx_i  →  (z_i = φ(vx_i)  →  wz_i  →  (y_i ≒ f(wz_i))

類神經網路的做法不像統計上要考慮 y_i 的機率分布,考慮某種意義的「優良」估計,目標就是極小化誤差平方和

Q(v, w) = (1/2) Σ_i || y_i - f(wz_i) ||^2

在計算技巧上則採用梯度下降法,以 w(第二或最後階段)而言,如同前面單層網路所談的:

Δw = δ Z' [f'(Z w)⊙(Y - f(Z w))]

如前, ⊙ 代表兩同階矩陣對應元素相乘,而 f' 及 f 兩函數都是對矩陣每一元素作用。Y 是輸出層資料矩陣,n×p 階;Z 是隱藏層資料矩陣,n×q 階;是第二階段權量矩陣,q×p 階。以第一階段而言,v 的元素 v{rs}  對 Q(v, w) 的影響是

D{rs} Q(vw) = D{rs} Σ_i Σ_j (y{ij} - f(z'_i w_j)^2
    = Σ_i Σ_j [- D{rs} f(z'_i w_j)] (y{ij} - f(z'_i w_j))
    = - Σ_i Σ_j (D{rs} Σ_t z{it} w{tj}) f'(z'_i w_j) (y{ij} - f(z'_i w_j))
    = - Σ_i Σ_j Σ_t (D{rs} φ(x'_i v_t)) w{tj} f'(z'_i w_j) (y{ij} - f(z'_i w_j))
    = - Σ_i Σ_j Σ_t (D{rs} x'_i v_t) φ'(x'_i v_t) w{tj}f'(z'_i w_j)(y{ij}-f(z'_i w_j))
    = - Σ_i Σ_j (D{rs} x'_i v_s) φ'(x'_i v_s)) w{sj} f'(z'_i w_j) (y{ij} - f(z'_i w_j))
    = - Σ_i Σ_j x{ir} φ'(x'_i v_s) w{sj} f'(z'_i w_j) (y{ij} - f(z'_i w_j))
    = - Σ_i x{ir} φ'(x'_i v_s) [f'(z'_i w)⊙(y'_i - f(z'_i w))] w'{s}
    = - x'{r} φ'(X v_s)⊙{[f'(Z w)⊙(Y - f(Z w))] w'{s}}

式中 D{rs} 表示對 v{rs} 做偏微;是輸入層資料矩陣,n×k 階,x'_i 是第 i 列,x{r} 是第 r 行,x'{r} 的階是 1×n;v 是第一階段權量矩陣,w 是第二階段權量矩陣前已說明,另 w_j 是其第 j 行,w'{s} 則是其第 s 列之轉置。所以 v 之調整公式為

Δv = δ X' φ'(X v)⊙[f'(Z w)⊙(Y - f(Z w)) w']

若是逐筆學習,則 w 之調整公式為:

Δw = δ z(n+1) [f'(z'(n+1) w)⊙(y'(n+1) - f(z'(n+1) w)) ]

其中 z'(n+1) 是用新資料 x(n+1) 依舊權量 v 計算的。而 v 之調整式為

Δv = δ x(n+1) φ'(x(n+1) v)⊙[f'(z(n+1) w)⊙(y'(n+1) - f(z'(n+1) w)) w']

式中 vw 是原權量矩陣。

用梯度下降法調整權量,在整批學習(訓練)時可以反覆進行,收斂時得到的權量就是最小誤差平方和的解,梯度下降只是指出一個逐步調整的方向而不是直接給出最適解。在逐筆學習,上文並沒有給予反複迭代的方式,唯一可能的是調整學習率參數 δ 使目標平方和最小。筆者對於類神經模型,以前只知個基本模樣;今寫此文,完全是查閱網路資料和參考一本數十年前的書現學現賣,而計算式則是依所理解的推導,可能不盡正確。但如果依本文描述的逐筆學習方式,可能最後仍需以整批學習方式做調整,因為上面談逐筆學習方式只考慮到對新資料使其優化,而我們需要的絕不是新的一筆配適得最好。真正的目標是未來遇到的資料預測得準確,如果未來遇到的輸入如同整批學習的訓練資料,或在其「範圍之內」,意即未來的輸入資料可以用訓練資料的線性凸組合表示,則整批學習找到的最適解在真正預測上的表現可說是某種意義上的「最佳」;而逐筆學習的結果卻不能保證。另外,訓練資料的選擇,雖不一定能也可能不需要代表未來會遭遇的情況,但仍需要保證廣度及均勻性:筆者的意思,廣度指的是訓練資料 x_i 的分布範圍大致上能涵蓋未來會遇到的輸入資料 x* 的範圍;均勻性指的是諸 x_i 在其涵蓋範圍內「各種情形都有」。以簡單迴歸 y = f(x) + ε 這樣的模型來說,如果訓練資料的諸 x_i 最小至最大以 [0, 1] 來表示,未來遇到的輸入 x* 也在 [0, 1] 之內,就算超過 0-1 範圍也不能超過太多;另外,諸 x_i 雖不要求在 [0, 1] 內均勻地分布,但也不希望彼此間存在太大的差距。所以訓練資料也不能太少,如果不是從某一群體隨機抽樣也要儘可能把諸 x_i 均勻地在 [0, 1] 內取點。因為,以簡單直線迴歸為例,樣本諸 x_i 範圍之外固然配適(對 Y 之期望值而言)或預測(對 Y 而言)誤差會較大(可參考任何談簡單直線迴歸的書);如果 x_i 非 0 即 1,我們其實無法得知此模型對 x = 0 或 1 之外的點是否適用。如果諸 x_i 相鄰值都很接近,模型適當與否在統計所謂配適階段或機器學習或類神經網路所謂學習或訓練階段就能查覺(由殘差分析)。多層類神經網路雖形式比簡單迴歸模型繁複無數倍,道理還是一樣的。

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 等死的老賊 的頭像
    等死的老賊

    劉應興的部落格

    等死的老賊 發表在 痞客邦 留言(0) 人氣()