當前位置:
首頁 > 科技 > 在神經網路中,數學是如何發揮巨大作用的?

在神經網路中,數學是如何發揮巨大作用的?

在本文中,我們將討論簡單神經網路背後的數學概念。其主要目的是說明在建立人工智慧模型時,數學是如何發揮巨大作用的。

在直接進入神經網路之前,我們需要看一下它的基本原理。我們將從一個簡單的預測器和一個構成神經網路基礎的分類器開始介紹,然後再到神經網路本身。


目錄:

· 簡化預測器

· 簡化分類器

· 訓練分類器

· 簡化多分類器

· 神經網路體系結構簡介


簡化預測器

人類和機器所採用的解決問題的過程:

左邊:人類是如何解決問題的

右邊:計算機是如何解決問題的

讓我們用例子來說明機器如何解決問題。

問題陳述:

考慮一台可以將kilometers轉化為miles的機器。它可以是計算器,也可以是任何簡單的設備:

從我們的常識來看,我們知道增加一倍的距離(以miles為單位),也是增加以公里為單位的距離的一倍。因此,如果我們要擬合一個英里和公里之間的數學方程式,它會是這樣的:

miles = kilometres x c,c是一個未知的常數。

根據觀察,我們可以創建一個truthtable,詳情如下:

真值表/訓練數據

目標:

我們的主要目的是計算constant 『c』。這是因為一旦我們知道了c的值,我們就可以在方程中插入這個值:miles = kilometres x c,並將任何英里的價值轉換為公里,反之亦然。

步驟

我們將從一些隨機值開始測試並計算第二個真理示例的錯誤值。讓我們分別考慮這三個常數的情況:0.5,0.6 and0.7。為了更好地理解,已將計算結果列於下表。

·案例1*選擇「c」=0.5,給出的誤差值約為12個單位,與實際值相比,計算值要小得多。為減少誤差,計算項應具有較高的值。我們也知道英里和公里線性相關的,所以增加『c』將增加輸出。

·案例2* 令「c」=0.6,將使誤差降低。這促使我們增加「c」=0.7。

·案例3*關於進一步增加「c」的值,將會超調正確的答案。因此,0.6是一個比0.7更好的選擇。在第二種情況下增加『c』,只增加一個很小的數值,比如0.1。讓我們看看結果:

我們的輸出值為61,僅與正確的62.137相差1.137。

學習

這就是用於給定的真值表的簡單預測演算法。真值表通常稱為訓練數據。演算法通過調整參數,根據模型的錯誤程度,將模型與已知的例子進行比較。我們在這裡簡化了一個預測器。


簡化分類器

現在讓我們嘗試簡化一個分類器。

問題:

下面的圖表,顯示了被測到的花園蟲子的寬度和長度。

我們觀察到兩類bug。幼蟲又長又瘦,瓢蟲又寬又短。如果一個新的bug進入了這個場景,我們如何才能將它歸類為毛毛蟲或瓢蟲(考慮到這是僅有的兩類)?

我們知道,當線性函數的輸出與它們的輸入相對應時,它們就會產生直線。在前面的示例中討論的預測器的情況下,「c」表示可調整參數,該參數定義了該直線的斜率。

目標:

我們想找到一條線,可以正確地分類任何未知的蟲子進入花園的毛蟲或瓢蟲。

步驟:

如果我們在給定的圖形上隨機放置一條線,可能有三種情況。

1和2都沒有給出好的結果,而3成功地分離了這兩類bug。現在,如果一個新的蟲子被放置在花園,它可以很容易地被歸類為兩個已知的類別之一,這取決於它在線上或線下的位置。

我們看到線性函數是如何用於對以前未見的數據進行分類。但是,我們如何決定將直線放置在哪裡,即如何確定直線的斜率呢?這一問題的答案同樣是神經網路學習的核心,接下來我們將討論這個問題。


簡單分類器的訓練

為什麼我們要訓練我們的分類器?這是因為我們希望分類器能夠學會正確地將蟲子識別為毛蟲或瓢蟲。我們在預測器的例子中看到,模型是根據真實世界實例/真值表對比訓練數據得到的誤差提供反饋。對於分類器,我們也會遵循同樣的原則。

訓練數據

所有這三種場景中的分界線都可以通過以下方式獲得:調整梯度。為了訓練數據,我們需要如下的表格和可視化數據:

加工過程

我們的目標是找到一條線,可以正確地將任何未知的昆蟲分類為毛毛蟲或瓢蟲;我們可以從繪製一條隨機線開始。這條線可以用方程式表示:

一條穿過原點的直線方程,

y和x分別表示bug的長度和寬度,而A表示直線的斜率。

讓我們假設A成為0.25(隨機猜測),所以這條線的方程變成y=0.25x。畫線:

plot for y= 0.25x

這不是一個好的分類器,因為它不能分類錯誤。對我們來說下一個明顯的步驟是增加梯度,而不是隨機選擇梯度。設計一種更新斜率/參數A的方法這樣我們的模型就可以從錯誤中訓練數據。

用第一個例子學習

如果我們測試了Y=Ax函數,在這個例子中,x是3.0,我們將得到:

1)這裡y對應於bug的長度,而x是寬度。

2)這裡A被設置為如上所述的0.25的隨機值

3)x = 3.0,來自第一個例子的訓練數據

y的計算值遠小於實際值1,即如果不是0.75,我們應該考慮y的值。

如果y等於1,這意味著分類器線將通過瓢蟲坐在(x,y)=(3.0,1.0)處的點。我們不想那樣。我們希望這條線超過那一點。為什麼?因為我們希望所有的瓢蟲點都在線下,而不是在線上,因為這條線需要是一條分隔線。

因此,讓其略高於1,選擇y=1.1,x=3.0。

error =(所需目標 - 實際輸出)

E = 1.1-0.75 = 0.35

視覺表現有助於我們更好地理解這些事實:

·誤差

這裡的一個重要而明顯的問題是誤差值,幫助我們細化行/參數A的斜率。

我們知道,分類器的線性函數是由方程給出的:

讓我們調用正確的輸出值為『t』(t代表目標值)。要得到那個值t,我們需要對A進行少量的調整。

新的斜率:

請記住,誤差E是計算值與正確值之間的差值,是根據我們目前對A的猜測計算出來的,即:

結合所有方程並求解參數A:

就這樣。我們發現了誤差項和參數A。我們可以用誤差E對分類線的斜率A進行δA的細化,這正是我們想要知道的,也就是通過調整A來提高直線的斜率,因此它是一個較好的分類器。

回到示例,插入公式中的值,我們得到:

這意味著我們需要將A=0.25改為0.1167,而A的新的改進值是(A+δA),為0.25+0.1167=0.3667。碰巧,這個新的A的計算值為1.1,它是期望的目標值。

最後,通過所有這些計算,我們有了一種方法,可以根據當前的誤差來改進參數A,從而幫助我們確定直線的斜率。


簡化多分類器

神經網路是由多個分類器共同組成的。儘管簡單的分類器非常有用,但它並不能在所有情況下提供解決方案。

簡單分類器的極限

我們將藉助以下方法來研究簡單分類器的局限性:布爾函數。布爾邏輯函數通常接受兩個輸入併產生一個輸出。典型的布爾邏輯函數可以表示為:

邏輯與或

我們可以代表邏輯與和或函數具有輸入A和B的真值表形式。

AND函數僅在A和B都為真時才為真

只要輸入A或B中的任何一個為真,OR就為真

邏輯函數也可以以圖形的形式表示,其中兩個輸入A和B作為圖形上的坐標。 True輸出顯示為綠色,而False顯示為紅色。

我們甚至可以畫出一條直線,作為一個線性分類器,將紅色區域和綠色區域無縫地劃分開來。這條分界線有許多不同的形式,但最主要的一點是,這種形式的簡單線性分類器確實是可能的。Y=AX+b學習布爾值和/或功能。

異或門

XOR代表異或邏輯,只有當輸入A或B中的任一輸入為真時才有真正的輸出。

在輸入為坐標的情況下,繪製與上面相同的圖,得到如下所示的圖:

這似乎有一個問題,因為我們無法將綠色區域與紅色區域分開,只有一條直線。事實上,似乎沒有一條直線可以完成這項任務。因此,如果向一個簡單的線性分類器提供由XOR函數控制的訓練數據,則無法學習布爾XOR。這似乎是線性分類器的一個重大缺點,如果根本的問題不能用直線分離,它們就會變得多餘。

什麼是修正?

並不是所有的問題都是線性的。我們如何解決這些問題呢?如果在上面的例子中,我們用的不是一條直線,而是兩條直線。這就像多個分類器一起工作一樣,這也構成了神經網路的基本原理。


簡化神經網路

神經網路只不過是許多分類器一起工作。但是,在討論這個問題之前,讓我們先了解一下動物大腦,它啟發了神經網路方法。

神經元——神經網路的構造塊

已經發現神經元通過沿軸突的樹突將電信號從一端傳遞到另一端。信號穿過不同的神經元,這就是我們身體感知光、聲音、疼痛等的方式。信號從神經系統的感覺神經元傳遞到我們的大腦,以引起所需的反應。

神經元的工作

神經元接收電輸入並傳輸另一個電輸入,準確地模擬分類器/預測器的工作方式。然而,神經元不能表示為線性函數。這僅僅是因為神經元不產生輸入的線性函數的輸出,而不像遵循方程的簡單分類器或預測器:輸出=(常量*輸入)+(另一個常數)。

激活函數

人們已經發現,神經元不會立即行動,而只是在它們到達某一特定點時才會起作用。這主要是因為神經元不想讓噪音和微小的信號通過。接收輸入信號併產生輸出信號但考慮某種閾值的函數稱為激活函數。激活函數有很多種,但我們只討論少數幾種重要的激活函數。

·階躍函數

在階躍函數中,對於低輸入值,輸出為零,一旦達到閾值輸入,輸出就會跳轉。

STEP函數在創建二進位分類器時運行良好,我們需要對單個類說「是」或「否」。然而,在多分類器問題的情況下,它失敗了。

·Sigmoid函數

Sigmoid函數比階躍函數平滑。它也被稱為邏輯函數,它的公式為:

y = 1/(1+e^-x)

Sigmoid函數是非線性的,與階躍函數不同,激活函數的輸出始終在(0,1)範圍內。Sigmoid函數是廣泛應用,但他們處於不利地位。如果我們看一下Sigmoid圖,我們會注意到,在函數的兩端,Y值在變化X時變化不大。這意味著這些區域的斜率/坡度很小,這就導致了。「消失梯度」問題。這意味著由於梯度的最小值,網路學習得非常慢。儘管如此,Sigmoid仍然主要用於分類問題。

·Tanh函數

Tanh函數只是Sigmoid函數的一個縮放版本,他們在原點上是對稱的。Tanh函數範圍從-1到1。它們的公式如下:

tanh(x)=2sigmoid(2x)-1

tanh(x)=2/(1+e^(-2x)) -1

Tanh函數的梯度比Sigmoid函數的梯度更陡,但也存在消失梯度問題。那麼,我們如何在Sigmoid和Tanh之間做出選擇呢?這取決於對梯度的要求。它也是一個非常流行和廣泛使用的激活函數。

·ReLU

ReLU或校正線性單元是最廣泛使用的激活函數。它也是一個非線性函數,可以表示為:

f(x)=max(0,x)

與其他激活函數相比,使用relu函數的主要優點是它不同時激發所有神經元。這意味著一次只有少數神經元被激活,從而使網路變得易於管理。與Tanh和Sigmoid相比,relu的計算成本更低,因為它涉及到簡單的數學運算,在設計深度神經網路時非常方便。

但是,漸變梯度問題也會影響RELU函數。

在概述了重要的激活函數之後,我們可以選擇最適合當前問題的激活函數。然而,在本文中,為了簡單起見,我將繼續使用Sigmoid激活函數。

人工神經元的建模

在複習了基本知識之後,是時候從頭開始模擬一個人工神經元了。通過本節,你不僅可以更好地理解神經網路,而且還將更好地了解它的複雜性和結構。

生物神經需要多個輸入,而不僅僅是一個輸入。由於我們有多個輸入,一種邏輯方法是將它們加起來,並通過一個激活函數(例如Sigmoid函數),再反過來控制輸出。

只有當輸入的總和超過閾值時,神經元才會觸發。

讓我們來看一個典型的腦電信號傳導的場景:

上圖顯示了幾個相互關聯的神經元。每個神經元一次接受來自多個神經元的輸入並將信號輸出到多個神經元。要將這一特徵映射到人工模型中,需要繪製多層神經元,每一層都連接到前一層和下一層。

· 一種三層人工神經元模型

· 每一層依次有三個分別標記為1、2和3的節點。

· 每個節點都連接到上一層和下一層的節點。

我們可以通過調整節點間連接的強度來進行神經網路。節點可以表示如下:

我們可以通過以下方法來調整連接的強度:

· 改變輸入之和的強度,或

· 通過調整激活函數的形狀。

現在,讓我們用與每個連接相關的權重表示相同的人工神經網路體系結構。權重是重要的參數,因為低權重抑制信號,而高權重則放大信號。

權重由W符號表示,表示法如下:

我們已經證明了每個節點連接到上一層和下一層的每一個其他節點。在學習階段,如果不需要額外的連接,那麼額外的連接就會被取消。

這意味著在訓練階段,當網路學習通過細化網路內部的鏈路權重來提高其輸出時,一些權重變為零或接近於零。這意味著這些鏈路不會對網路做出貢獻,因為信號不會通過。


結語

在本文中,我們學習了神經網路的構建塊。我們從零開始創建了一個簡單的預測器和分類器,並了解了它們是如何構成理解神經網路的基礎的。我們還了解了神經網路在某種程度上是人腦的一種表現形式,並以同樣的方式將其可視化。

原文標題《Demystifying Neural Networks: A Mathematical Approach (Part 1)》

作者:Parul Pandey

譯者:lemon

本文為譯文,不代表雲加社區觀點

關注云加社區,回復

3加讀者群


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲加社區 的精彩文章:

鵝廠專家、技術大咖喊你來參與直播啦!
小程序·雲開發體驗:簡單幾步快速開發小程序

TAG:雲加社區 |