神經網路白話文 (一) – 神經元是什麼

這是小八,我的貓。

此系列文章的目的在於以最白話、簡單的方式,來讓沒什麼基礎、有一點點基礎想要了解神經網路的人能夠有所收穫。

我盡量不用看起來高深、厲害的詞彙,因為那樣只會增加距離感。

本文源自於以下文章:

Understanding neural networks 1: The concept of neurons | by Aleksander Obuchowski | Becoming Human: Artificial Intelligence Magazine

感謝此作者,提供了很值觀、白話的介紹,讓我在工作、研究上得到不錯的成果。

在一個風和日麗的下午,我在滑手機,此時姪女拿了一張畫來,長得像這樣:

Kitten Clipart Rainbow – Unicorn Cat, HD Png Download – kindpng

「靠北,怎麼這麼會畫,你是鬼還是天才?」我不禁這麼驚嘆道。

好,現在問題來了:

這是一隻貓嗎?

Features 特徵

假設我們很理工腦,凡事都要分析它、量化它,那這個時候「這是一隻貓嗎?」就成為了我們要分析、證明的假說。

那為了要驗證這個「假說」,我們必須從這張畫中舉出各種能夠幫助我們進行判斷的特徵。

簡單地列出了五個可以幫助我們判斷這是什麼生物的評斷方法,接下來針對那張畫來分析看看吧。

頭頂上那根,應該87趴是角啦。

眼睛就不用說了,臉上只有兩顆類似的東西,就當作眼睛吧!

但是真的有四隻腳嗎?有一隻被擋住了,我看不到,搞不好那邊是空的,所以這一題我只有60%的把握。

至於翅膀跟尾巴,雖然顏色有點詭異,但應該沒什麼問題。

好,現在我們針對這五個特徵打完分數了。

Weights 權重

但是這五個特徵,各自對於「這是貓嗎?」這個問題的重要程度不一樣。

好比說兩隻眼睛、四隻腳,其實對於是不是貓來說並不是那麼重要,因為也有可能是蜥蜴。就算少了一隻眼睛、缺了一條腿,並不會影響是不是貓這個事實。

至於翅膀這件事,撇除掉基因突變外,有翅膀的絕大部分就不是貓。

從上述可以看出來,翅膀、眼睛、幾條腿各自的重要程度(對於這個問題)來說是不同的,因此我們需要進行再一次的評分,這次是針對這個特徵本身來打分數。

紅色的代表扣分項,綠色代表加分值,接下來我們就可以來計算此時我們所得到的分數:

Y = (0.87 x -0.9) + (0.9 x 0.3) + (0.6 x 0.3) + (0.95 x -1) + (0.85 x 0.1) = -1.198

基本上得到負值,就可以表示說,這東西不是隻貓!(以現實世界的考量來說啦)

但是我們可以把得到的分數再弄得「漂亮」一點。

Activation Function 激勵函數

其實有另外一個翻法叫做「激活函數」,我覺得比較貼切一點,但有點支。

回到正題,在上一個步驟中我們得到了一個分數,但在實際的情況中可能我們會有千千萬萬個特徵,這個時候加總起來的數值就會很大。

這樣我不開心,我希望最後出來的分數可以把範圍限定在零到一之間,可以方便我們把計算出來的數值傳遞到接下來的運算中。
(當然你也可以說你想要把範圍限定在負一到正一之間,都可以,你的神經網路你做主)

那手法有很多,這邊我挑其中一種來使用:Sigmoid Function

Znalezione obrazy dla zapytania sigmoid function

從上圖可以看到,如果我們的z值是負無限大,那麼經過這個式子之後就會趨近於0,如果是正無限大,那麼就會趨近於1。

這下子我們就可以把我們的結果丟進這個函式中,算式變成:

Y = Sigmoid[(0.87 x -0.9) + (0.9 x 0.3) + (0.6 x 0.3) + (0.95 x -1) + (0.85 x 0.1)] = 0.2318

那得到這個結果之後,我們可以這麼說:

這畫中之物為貓的機率為23%

Neuron 神經元

此時此刻,恭喜你,你懂得身為一顆神經元該怎麼思考了!

我懶了啦,直接偷原文的圖來用 (挖鼻孔)

那麼這顆神經元究竟做了哪些事呢?

  • 它將Inputs(特徵)乘上Weights(權重)
  • 把上述結果加總起來
  • 把加總後的值送進激勵函數

那它學了什麼?怎麼學?

一顆神經元在學習(訓練)的過程中,目的是為了調整權重,它必須去學習到這個特徵有多重要、對於問題來說是正面的還是負面的? 所以在訓練的時候,我們必須給它一大堆的題目跟答案,這樣這個神經元才能夠從什麼都不懂的(隨機初始)狀態下學習到我們希望它學習到的權重。

那麼根據這些訓練題目,這個神經元會學到:

  • 哪些特徵很重要,而且是正向的。
  • 哪些特徵不是那麼重要。
  • 那些特徵很重要,而且是負面的。

這邊要再提醒一點,所謂的正面、負面,完全是取決於你的題目怎麼設計,所以如何問對題目也是一門很大的學問。

這裡面的數學,就留到接下來的文章中再來做詳細的說明吧。(如果有的話啦XD)

Neural Networks 神經網路

神經網路,顧名思義就是由一堆神經元所疊加而成的。

上圖中就是把一個神經元的輸出當作下一個神經元的輸入,這樣就簡單地構成一個神經網路啦。

這篇文章透過一個比較逗趣的例子,來解釋說單個神經元是怎麼運作的,以及Features、Weights和Activation Function這幾個在神經網路中非常重要且常見的議題。

當然實際應用在商務、研究上不會這麼地簡單,大部分時間我們根本不知道什麼特徵是重要的,或是我們的訓練資料本身就有很大的問題,但這些都是後話了,這篇文章重點在於了解整個神經網路中最基本的神經元其中運作的概念。

下一篇文章不知道何時才會有興致寫,那如果有什麼問題想問地話歡迎留言在底下,我心情好的時候會回一下 🙂

在〈神經網路白話文 (一) – 神經元是什麼〉中有 2 則留言

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

error: 我鎖起來惹 ˊ_>ˋ