初探Kolmogorov–Arnold Networks (KAN):神經網路的新曙光?

Martin Huang
13 min readJul 17, 2024

--

在今年4月,由來自麻省理工學院(MIT)、加州理工大學(CIT)以及東北大學(Northeastern University)的學者們,聯合提出了一個據稱是可以「簡化」並「加速」現有神經網路的方法。和過往在神經網路架構、參數上調整的手法不同,他們這次直指本源,認為現有的多層次感知器(multilayer perceptron,MLP)是造成目前神經網路運算消耗大量資源,卻仍不夠理想的原因。因此,他們提出了一個新的單元架構,並主張若以此單元架構建構神經網路,可以很有效的節省運算資源,並可以更準確地逼近我們要的目標(target function)。這個單元架構就是Kolmogorov-Arnold Networks (KANs)。

其實論文公開到今天也已經有三個月左右時間,有不少國內外的專家針對這篇文章在網路上提出見解。我就當作閱讀論文筆記,紀錄一下自己看的心得,也會發表 — 儘管不成熟 — 但是個人的感想。

原文在此[1],歡迎有興趣的同好再去搜尋。

一個新的單元結構

現有的MLP架構

單一感知器可以用下列數學式表示:

即輸入乘以權重加上偏誤之後,經由啟動函數判斷是否要輸出訊號,若有,再乘上一個比重,然後相加,匯入輸出。多層堆疊時,每一層的輸入即為上一層的輸出。因此,其可畫成下面的圖:

圖1:一個MLP為基底的神經網路架構。圖片來源:[1],figure 0.1

可以看到,權重、偏誤,或比重,都是線性組合。這些是可學習的參數,相對的,啟動函數為非線性居多(例如ReLu),但它們的投射(projection)方式是固定的,我們也不會調整它們。這些對於已經了解神經網路基本架構原理的人,相信是不陌生的。

B-spline functions

要進入到KAN結構之前,有幾個數學概念的前置工作要完成。首先是spine。這個字會在文章中反覆出現,所以它到底是什麼呢?

它是樣條。樣條是啥呢?古時候,也沒有多久以前啦,在人類還無法用電腦直接繪製出曲線之前,有這個需要的時候,會用硬木或者有彈性的鋼條,凹成想要的曲線形狀,再順其邊緣描繪。

樣條函數,就是指曲線函數。和一般多項式函數營造出來的曲線不同,樣條函數控制曲線的方式並非利用多項式的冪及係數,而是利用控制點(knots)和其對應的組成函數(多為多項式,piece-wise polynomial)達成。這些組成函數,通常只代表某兩個控制點之間的樣條。下圖是一個簡單的樣條函數案例。

圖2:一個簡單的樣條函數案例。圖片出處:[2]

圖2顯示三個控制點,及位於兩個區間內的兩個不同多項式函數。這張圖說明了樣條函數的幾個性質:

  1. 控制點可任意選定,並沒有明確的要求。
  2. 組成函數多半有特定的維度,但基本上取決於一個最高限制。這個限制決定了
  3. 函數連續性。亦即在控制點上,兩個組成函數須能連續。例如,若為一三次樣條函數,則組成函數間的一階和二階導數必須在控制點上連續。

樣條函數的目的是提供一種近似方法,有別於單一多項式體系的泰勒展開式,它使用指定控制點和限定區間函數的方式調整,好處是在各組成函數之間保有彈性,且也可以透過調整控制點的方式,更好的在區域間逼近目標函數。

— — —

再來,基於樣條函數的概念,在控制點的選定,及組成函數上進一步做限制,使其在設定和組合時更有一致性,就稱為B-spline函數。B指的是basis,即組成函數是一套基底函數。它有一定的組成規律,隨著冪次增加,須按照規律產生特定的函數。

來看一下B-spline函數的性質:

  1. 控制點的間距一致,且可描述為一組向量(若控制點本身維度為二為以上)
  2. 其組成函數全為B-spline函數的冪次減一。例如,一個3次方的B-spline函數,其組成函數全為2次方。
  3. 組成函數僅於其有效區間(控制點)之間為函數運算值,且此值不為負。非其有效區間則為0。
  4. 關於組成函數的格式如下:當次方(k)為0時,

若k > 0時,

5. 承4.,B-spline函數可表示為組成函數的線性組合,其式子為

式1

— — —

1D B-spline是B-spline函數的特殊形式,即只有一個變數(x)。請注意,函數本身可為多項式(高次),但仍稱作1D。這裡的D指的是變數種類,而非冪次。1D B-spline函數(S(x))和目標函數(f(x))的範數差可收斂,其式子為

式2

其中C為常數,和f(x)及其k階導數有關。h為控制點數量的導數,k則為B-spline函數的冪次。我是有去研究其證明,但在這邊,為求不離題太遠,暫時先略過。之後再寫一篇放這個證明,過程其實不難理解,也不會太長。

到此前置工作完成。可以來迎接我們的主角 — KAN了。

Kolmogorov–Arnold Networks (KAN)

首先,要定義單層的KAN,就像先定義一層的MLP一樣。其實已經定義好了,它的雛型就是式1。但我借用一下論文中的圖片,讓結構不是只有式子而已,而是可以有更具體的感覺:

圖3:一層KAN。圖片出處:[1]

上圖顯示輸入有兩個,x0,1和x0,2。輸出則有5個,x1,1~x1,5。中間的運算,其實只有相加而已,因為那些曲線,就是我們要逼近所取的B-spline函數。所以在這一層中,我們得到5個輸出,每一個輸出是兩個B-spline函數的輸出相加。我們可以寫成

若多一層呢?

圖4:兩層KAN。圖片出處:[1]

剛剛的5個輸出,變成第二層的輸入,最後的輸出則只剩一個。一樣,可以寫成

式3

其實這種兩層的網路,第一層輸入n,第二層2n+1,第三層輸出1,就是一個經典的Kolmogorov–Arnold representation theorm。只是在論文裡,作者把它看成兩層KAN。由此,可延伸出不斷堆疊的KAN,就像現在MLP為底的神經網路一樣。

定義一個KAN的大小為

其中,n_i表示在第i層的節點數量(就是圖3裡面每一層的x的數量)。設第l層的第i個神經元為(l,i),且其activation為x_(l,i)。在第l層和l+1層之間,會有nl*nl+1個函數,而連結第l層第i個神經元,和第l+1層第j個神經元間的函數,可寫為

進入函數前的x,稱為pre-activation,寫作x_(l,i)。進入函數後的x,稱作post-activation,寫作

依據上面式3的概念,第l+1層的第j個神經元,其activation即為所能接收到各post-activation之加總:

若把它擴寫成矩陣形式,可以寫成

以便擴展成一整層的狀況。整個矩陣就是這一層的B-spline函數,可以代寫為ɸl。那麼,隨著一層層KAN堆起來,我們可以這樣表示

式4

對比MLP的神經網路式子

就蠻像的了。但差別在於,MLP訓練的是權重,而KAN訓練的是函數,在這邊如果要對標MLP的話,就是啟動函數。而且,KAN有一點把權重跟啟動函數放在一起的味道。

KAN的特性

這邊介紹一些KAN的特性,包括參數量,以及其如何能擺脫變數增加,計算量也隨之遽增的困境(稱之為維度詛咒,curse of dimensionality)。接著,會提到一些調整冪次,或增加控制點,對於KAN精確度的影響。

KAN的參數量

假設一個KAN具有L層,每一層寬度(神經元數目)都為N,且每一個B-spline函數皆為3次,控制點數量為G+1(使其有G個間距),則該KAN之總參數量為

基於G >> k。相較之下,同規格MLP網路的參數量為

乍看之下是比較少的。不過作者指出,KAN實際所需的神經元數量比MLP少,但能達成更好的泛化。例如,在1D的情況,N=L=1,此時的KAN只是一個利用多段B-spline曲線逼近目標函數曲線的作法,這時的參數量當然是非常少。

利用Kolmogorov–Arnold Theorm(KAT)擺脫curse of dimensionality(COD)

在式4我們導出一個式子,其構造類似MLP神經網路。實際上,我們是用B-spline函數,設定G個間距,逼近目標函數f(x)。從1D B-spline的性質(式2),推廣得到KAT,即目標函數和B-spline近似函數的差異,其範數可收斂為

式5

C^m指目標函數和B-spline近似函數差異之「m階導數的範數」。C來自式1,其含有泰勒展開式之餘項,故本項其實仍與變數量 — 即維度 — 有關。儘管如此,另一項G^(-k-1+m)就完全與維度無關了,而與冪次、導數、控制點數量有關係。因此,KAT可以很大程度的排除變數量造成的計算複雜度。

利用控制點數量增加KAN的精確度

控制點算是KAN的主要特色。它和MLP增加神經元的做法,概念上不太一樣:KAN在增加控制點的同時,因為總領域長度不變,因此其實是減少了每一段區間的長度。用具體一點的想法類比,就是同樣長度的尺,但換一個刻度更細的來測量,理論上可以更貼近目標。因此,論文中把這個操作概念稱作grid extension。

還是先用1D函數來舉例好了。假設我們使用B-spline的k次函數,在(a,b)區間去近似目標函數f,首先使用一組區間G1,有如下的控制點集:

並可以增加至G1+2k個數量

但總共是G1+k個B-spline函數,每一個函數的「責任區間」(非0之有效區間)為

則根據B-spline之性質,f可被近似為這些B-spline函數之線性組合,如式1

在控制點增加的過程中,間距會縮短,函數也會越來越細緻。此時,每當改變控制點數量,其c’j可從上一個控制點數量所建立的B-spline函數線性組合中,取距離(歐式距離)最近者作為初始。

接著,作者用一個簡單的函數

來實驗改變控制點對於KAN近似目標函數的能力的影響。首先是一個KAN[2,5,1]網路在訓練和測試集上RMSE(均方根差)的表現。[2,5,1]表示第一層2個神經元,第二層5個,第三層一個,也就是圖4。

圖5:KAN[2,5,1]近似目標函數的過程。圖片出處:[1]

作者在每200 steps的時候調整控制點數量,最終到達1000。從訓練資料集的曲線可以看到,隨著控制點數量增加,損失下降的速度越快(以1600 steps = 1000控制點之前來看)。但在測試資料集,約莫在600 steps = 20控制點的時候,損失便達到平原線,之後開始增加,可以視為KAN的過度配適。作者的推論是,或許在KAN參數量和資料點數量相當的時候,測試資料集的損失便達最低點。以KAN[2,5,1]而言,其參數量為15*控制點數量。若以資料點數量1000計算,達到最低測試資料集損失的控制點數量為1000/15=67左右,而實驗顯示為大約50。

利用互動的過程找到KAN最佳的結構 — 可解釋性

個人感覺這段其實有一點噱頭。我不把整段詳細說明,僅說明大概流程:

  1. 利用類似MLP正規化的方式,使B-spline函數之間具有一定離散性,進而在訓練過程裡面較容易找出明確的路徑。即,有可能在眾多KAN的函數中,僅有一條路徑上的函數組合最能代表(逼近)目標函數。
    其正規化的式子我這邊就不列了,它算是結合L1和entropy的概念。
  2. 根據1.得到的線索,將多餘的路線的其他函數,即KAN網路減除。
  3. 「目視」函數的曲線,找到可能代表它的函數。意思就是說,根據這些函數曲線,有直覺的數學家可以快速想到對應的可能函數。若使用者沒有這個直覺,作者表示會提供程式來協助辨別。不過…這段我覺得有用人類取代機器學習成本的嫌疑。
  4. 再訓練,找到這些函數的係數(也可以說,線性組合的c’j)。
  5. 找到近似或目標函數。

結論和個人感想

這算是一篇剛公開就引起騷動的文章,說實話,我也是有被標題和它的宣稱震撼到。它提出了一種不一樣的神經網路概念,著重在函數本身,而非那些線性化的權重,的確是另外一種切入方向。

然而,它的本質仍然屬於回歸性質,亦即,在損失的求導上,避不開目前的主流作法。因此,資料量仍然是它避不開的硬傷,而且論文中也還無法說明,如何有效率地找到KAN神經網路架構。這篇論文算是提出一個實驗性的做法,將過往嘗試使用Kolmogorov–Arnold在深度學習的研究中,推進到可以堆疊產生神經網路的程度。

但論文畢竟還是概念性的,整體還有很多東西需要被驗證,例如是否真能擺脫COD,其實際上有效的神經網路架構是什麼模樣,以及大家最關心的,如何用它來處理目前已經被MLP神經網路處理過的許多問題,然後能證明其比MLP神經網路優秀?

我想,後面還有很多事情,需要花很多時間去做。而且,可能也不是AGI的最後解方。

參考文獻

[1] Z. Liu, Y. Wang et al., KAN: Kolmogorov–Arnold Networks. May, 2024. arXiv:2404.19756v2
[2] https://psu.pb.unizin.org/polynomialinterpretation/chapter/chapter-three-quadratic-spline-interpolation/

--

--

Martin Huang
Martin Huang

Written by Martin Huang

崎嶇的發展 目前主攻CV,但正在往NLP的路上。 歡迎合作或聯絡:martin12345m@gmail.com

No responses yet