首頁體育 > 正文

更聰明,更輕鬆的構建神經網路時,

2021-10-15由 資訊發射臺 發表于 體育

用一個簡單的例子闡明神經網路的設計原理

應用數學的一項基本技術是找到座標的變化,將一個困難或不可能的問題轉換為一個簡單的問題。 也許我最喜歡的例子是一個圓的方程。 如果用笛卡爾座標記下單位圓的方程,我們可以將圓的幾何概念表示為隱函式:

更聰明,更輕鬆的構建神經網路時,

當我們嘗試透過求解y獲得顯式表示式時,情況變得更糟。

更聰明,更輕鬆的構建神經網路時,

現在,我們必須從平方根的兩個分支(圓的上半部分和下半部分)將這個簡單的函式組合在一起。 除了美學之外,使用這種圓形表示還可以阻止我們看到完美圓形固有的幾何簡單性。 相反,如果我們使用極座標表示相同的數學物件,則單位圓變得非常簡單。

更聰明,更輕鬆的構建神經網路時,

> Polar coordinates for a point。

在極座標中,我們的單位圓採用簡單形式r = 1,θ∈[0,2π)。 因此,在極座標中,圓採用矩形的形式(高度= 1,寬度=2π)。 直角座標是矩形的自然座標,極座標是圓形的自然座標。 在本文中,我將把這種思路應用於構建簡單的神經網路,並建立一個說明示例,說明選擇正確座標的重要性。

人工神經網路擬合曲線

如果您正在閱讀本文,那麼您可能聽說過人工神經網路(ANN)。 在此討論中,我們將重點介紹最簡單的ANN型別,即前饋網路。 簡而言之,人工神經網路只是透過將簡單的非線性函式(層)連結在一起而構建的網路(函式)。

更聰明,更輕鬆的構建神經網路時,

> Feed-forward neural network

透過將這些簡單層連結(許多)在一起,通用逼近定理告訴我們,我們可以將任意(精細)函式表示為具有有限深度和寬度的ANN。 在起始極座標示例中,這就像是說我們可以在極座標(無孔)中寫入(x,y)平面中的每個點。 這很棒,是確保我們在更改座標時不會錯過任何東西的必要屬性,但是它不會告訴我們兩件事:

· 如何找到實際的座標。

· 如果這實際上是表示資訊的好方法。

對於人工神經網路,“座標”是神經網路的引數(神經網路中每一層的權重和偏差)。 對於神經網路,我們沒有使用快速的數學公式來找到這些座標,而是使用最佳化來最小化損失函式,從而找到了它們。 損失函式衡量的是我們指定函式與訓練資料之間的距離。

讓我們看一個簡單的例子,使用神經網路建立正弦函式的近似值。

使用神經網路擬合sin函式

讓我們應用這種功能強大的函式逼近方法來構建簡單函式sin(x)的神經網路版本。 我將使用用Julia寫的神奇的神經網路庫Flux。 該軟體包為構建神經網路提供了一個非常簡單而強大的框架。 它還增加了很少的額外語法來構建神經網路,讓我們專注於基本的構建塊。 我將在文章中包含程式碼片段。 有關完整的程式碼,請檢視此github儲存庫。

以下程式碼使用標準的非線性函式tanh構建了一個具有兩個隱藏層的簡單網路。

我們可以將該神經網路視覺化為:

更聰明,更輕鬆的構建神經網路時,

> A simple feed-forward neural network for learning the sin function

上圖顯示我們只有一個輸入和輸出值,中間有兩層。 這些圖層被稱為隱藏圖層,因為如果您僅跟蹤輸入和輸出,它們將不可見。 回想一下,該圖用於表示某些功能家族,如果透過固定引數指定了特定成員。

更聰明,更輕鬆的構建神經網路時,

> The functional form of the above neural network。 The parameters are given by the two weight matrices W and the bias vectors b。 The C parameter gives the intercept of the linear output layer。

好了,因此我們希望可以透過該函式族的某些成員近似表示函式sin(x)。 為了嘗試找到最接近此值的成員,我們應該使用一些訓練資料來最小化損失函式。

擬合神經網路後,我們可以看到它對訓練資料和一組測試資料的表現如何。

更聰明,更輕鬆的構建神經網路時,

> A feed-forward neural network with a tanh non-linearity fit for 3000 epochs to the training data shown as blue circles。 The test data is shown as green crosses。

顯然,這個神經網路在捕獲訊號的基本週期性方面做得很差。 對測試資料的概括性極差(綠色)突顯了這一點。 這也不只是我的網路。

什麼地方出了錯? 經常被引用的普遍逼近定理告訴我們,我們可以使用有限深度和寬度的前饋神經網路來表示該函式。 但是,正如我經常重新發現的那樣,有限度仍然可能非常大。 僅僅因為存在一些權重和偏差可以用於在典型的神經網路元件之外構建此功能,並不意味著我們可以輕鬆找到它們。

我們可以嘗試應用蠻力並建立更大的網路或訓練更長的時間,等等。但是,非常簡單的更改將使我們在很短的時間內就能獲得近似完美的近似值。

一個更好的主意

有了這些資料,我們可以看到它是週期性的。 目前,我們的神經網路設計中根本沒有包含這些資訊。 除了使用tanh非線性函式外,讓我們使用sin函式。 這樣,我們第一層的輸出將是週期性的。

下圖顯示了為該系統提供更好的近似網路的想法。

更聰明,更輕鬆的構建神經網路時,

> ANN with sin nonlinearity。

我們使用的功能族以功能形式寫成如下形式:

更聰明,更輕鬆的構建神經網路時,

其中Q是隱藏層中神經元的數量。 這在Flux中很容易做到:

讓我們適應這個新模型,看看是否可以獲得更好的模型。

更聰明,更輕鬆的構建神經網路時,

> A better neural network basis

這是一個更好的模型,因為它捕獲了週期性。 但是,請注意,我們在培訓和測試資料上仍然略有偏離。 這是因為我們的模型實際上仍然具有它並不需要的額外自由度。 我們可以透過對引數應用一些正則化來解決此問題,但是在這種情況下,我們可以使用一些很酷的數學方法來解決。

更聰明,更輕鬆的構建神經網路時,

> Jean-Baptiste Joseph Fourier 1768–1830

上面的神經網路的功能形式與傅立葉級數的形式非常接近。 傅立葉級數是一個基礎(座標集),可用於描述有限域[a,b]上的所有精細函式。 如果函式是週期性的,則可以將對有限域的描述擴充套件到整個實線。 因此,傅立葉級數通常用於週期函式。

傅立葉級數的形式為:

更聰明,更輕鬆的構建神經網路時,

我們的神經網路與傅立葉級數之間的唯一區別是,我們的神經網路允許權重W發生變化,而傅立葉只有A係數和可以選擇適合函式的偏差(b)項。

這是使用sin(x)函式和傅立葉ANN的擬合:

更聰明,更輕鬆的構建神經網路時,

> Fourier ANN approach generalizes well。

如果您想知道這種方法是否可以很好地推廣到其他更復雜的週期函式。 考慮一個混有一些高次諧波的週期訊號。

更聰明,更輕鬆的構建神經網路時,

更聰明,更輕鬆的構建神經網路時,

> Second example of a Fourier series neural network for a more complex periodic signal。

一些課程

這個簡單的示例提供了一些有關ANN的工作原理以及我們如何改進模型的重要見解。

· 神經網路的設計會對結果產生巨大影響。 對問題和領域的特定了解可能會產生巨大的影響。

· 確保將您所知道的有關問題的所有資訊都傳達給神經網路。 在這裡,我們看到告訴函式產生週期性訊號的作用遠遠超過了增加網路規模或訓練時間所能做的。

· 在上一課中,領域知識至關重要。

· 應用數學家和物理學家一直致力於函式逼近問題。 傅立葉級數是在1820年代發現的,用於解決熱傳導問題。 即使您不關心應用程式,這些技術也可能值得您花時間學習。

· 使用人工神經網路計算傅立葉級數非常愚蠢。 正是這種計算發明了上世紀十大演算法之一。 關鍵是要表明,進行較小的更改以合併更多領域知識就可以極大地改善結果。

有關構建更智慧的神經網路的更多資訊,建議您檢視Nathan Kutz的工作。

(本文翻譯自Kevin Hannay的文章《Work smarter, not harder when building Neural Networks》,參考:https://towardsdatascience。com/work-smarter-not-harder-when-building-neural-networks-6f4aa7c5ee61)

頂部