万维百科粤语版

人工神經網絡

跳去導覽 跳去搵嘢
一個前饋人工神經網絡嘅抽象圖;每個圓圈代表咗一粒模擬嘅神經細胞,而每粒神經細胞嘅啟動程度由佢打前嗰排神經細胞嘅啟動程度話事-就好似動物嘅神經系統噉[1]

人工神經網絡粵拼jan4 gung1 san4 ging1 mong5 lok6英文artificial neural network,簡稱「ANN」)係指一啲模仿生物神經網絡(即係動物中樞神經系統,尤其係個)嘅結構同功能嘅數學模型:一隻(例如)靈長目動物嘅腦閒閒地有斷百億計嘅神經細胞(neuron),一粒神經細胞喺俾化學物訊號刺激到嗰陣,會跟住以電或者化學物嚟傳新訊號,所以當一粒神經細胞射訊號嗰陣可以引起連鎖反應,將資訊(information)喺成個神經網絡度傳開去[2][3];而人工神經網絡主要以電腦程式模擬呢個過程,令電腦程式能夠出現類似動物神經系統噉嘅行為-對人工智能機械人學等嘅領域嚟講好有用[4][5]

一個人工神經網絡由大量嘅人工神經細胞(artificial neuron)組成。喺用電腦程式整神經網絡嗰陣,研究者(通常)會每粒人工神經細胞都同佢設返個數值代表佢嘅啟動程度(activation level)[6],而每粒神經細胞嘅啟動程度嘅數值都有條式計,呢條式包括咗喺佢之前嗰啲神經細胞嘅啟動程度。啲函數當中嘅參數可以變化,而如果個神經網絡嘅程式令到佢識得靠自己嘅經驗嚟到調整呢啲參數嘅話,嗰個神經網絡就會具有學習嘅能力[7][8]。即係例如個程式 foreach 細胞有一條類似噉樣嘅算式:

;(啟動函數

代表粒神經細胞嘅啟動程度, 代表前嗰排嘅神經細胞當中第 粒嘅啟動程度,而 就係前嗰排嘅神經細胞當中第 粒嘅權重(指嗰粒細胞有幾影響到 )。所以當一粒人工神經細胞啟動嗰陣,會帶起佢後面啲細胞跟住佢啟動-似十足生物神經網絡入面嗰啲細胞噉。假如個神經網絡嘅程式令佢能夠自行按照經驗改變 嘅數值嘅話,佢就會曉學習[註 1][7][9]

到咗廿一世紀初,人工神經網絡經已俾科學界廣泛噉用落去各種各樣嘅問題嗰度。喺應用上,事實證實咗人工神經網絡能夠處理機械視覺同埋語音識別呢啲傳統嘅電腦程式好難解決到嘅問題[10][11];而喺理論性嘅認知科學上亦有聯結主義(connectionism)理論,主張心靈可以用人工神經網絡嚟模擬[12]

基本諗頭

睇埋:神經細胞

人工神經網絡最基本嘅諗頭係要用人工方法模仿動物神經細胞嘅功能。一粒動物神經細胞喺受到某啲特定刺激嗰陣,會用電或者化學方式向第啲神經細胞傳出訊號,然後同呢粒神經細胞相連嗰啲神經細胞會受到佢嘅訊號刺激,跟住又會各自噉射新嘅訊號-於是資訊就會喺成個神經系統當中傳播開去[13];例如係視網膜上面嗰啲感光神經細胞噉,呢啲細胞喺受到刺激嗰時,會傳訊號(signal)去同佢哋相連嘅神經細胞嗰度,而呢一串神經細胞一路連到上去個嗰度,所以喺每一個時刻,對眼嗰啲感光細胞都會受到光刺激並且射訊號,而啲訊號就會一路傳上去個腦嘅視覺相關區域,個腦靠住收到嘅資訊(有幾多粒感光神經細胞射訊號、射訊號嘅係喺眼邊忽嘅感光細胞等),就可以判斷對眼睇到啲乜嘢[14][15]。呢種訊號傳遞過程就係人工神經網絡技術想模擬嘅嘢[16]

一粒動物神經細胞嘅圖解;神經細胞會收訊號(),按訊號改變自己啟動程度,而啟動程度決定佢會唔會傳新訊號()。

網絡組成

人工神經細胞

內文:人工神經細胞

人工神經細胞(artificial neuron)係人工神經網絡嘅基本組成部件。一粒人工神經細胞係一個人造嘅物體,會好似動物神經細胞噉接收訊號、並且按照所收到嘅訊號改變自己內在嘅狀態,跟住再按照自己內在狀態,決定係咪要射新訊號以及要射點樣嘅新訊號-原理上同動物嘅神經細胞極之相似(但唔完全一樣[17])。當一大柞人工神經細胞互相連繫住,就會形成一個人工神經網絡,而每當研究者俾某啲輸入(input)數值落去其中一啲人工神經細胞嗰陣,佢哋就會帶動其他人工神經細胞跟住啟動,最後每一粒人工神經細胞都會達致某啲啟動值-即係話個網絡可以有一啲輸出(output)數值。實用嘅研究證實咗,一個人工神經網絡嘅輸出值同輸入值會成某啲特定嘅關係,呢點表示人工神經網絡可以攞嚟做一啲有用嘅運算(詳情睇下面)[16][18]

一粒典型嘅人工神經細胞結構如下[16]

Ncell.png
  • 係各個輸入嘅數值,啲輸入可以係嚟自外界嘅,但又可以嚟自同一個網絡入面嘅第啲人工神經細胞都得。
  • 係每個輸入嘅權重,代表咗嗰一個輸入對呢粒人工神經細胞嘅啟動程度有幾大影響力。
  • 偏向(bias),即係嗰粒神經細胞本身喺啟動上嘅傾向,例如如果有某一粒人工神經細胞嘅 係正數而且數值大,佢就會傾向無論輸入係幾多都有強烈嘅啟動[19][20]
  • (以下簡稱「」)指粒人工神經細胞嘅啟動程度(activation level),呢個數值由上面嗰柞因素話事,個函數如下:
    • 指粒細胞喺時間點 嘅啟動程度, 指粒細胞喺時間點 嘅啟動程度,而 指喺時間點 嗰柞輸入嘅數值。呢條式表示, 嘅值由 、同埋 呢三個數值話事。
    • 好多人工神經細胞嘅啟動函數會包含 呢個數值。呢個係所謂嘅門檻值(threshold value):一粒典型嘅動物神經細胞係一定要所受到嘅刺激有返咁上下勁,先會射訊號嘅;如果佢受嘅刺激數值唔超過門檻值嘅話,佢就乜嘢訊號都唔會射;為咗要更加接近動物神經細胞,好多研究人員喺設計神經網絡嗰時會特登每粒人工神經細胞俾個門檻值佢,令個網絡嘅各粒人工神經細胞好似動物神經細胞噉,收到嘅輸入唔超過門檻值就完全唔射訊號。
  • 係粒人工神經細胞嘅輸出數值。
  • 同埋 之間嗰個函數,可以有多個款,但 好多時會係一個恆等函數(identity function)-即係話 數值好多時同 一樣。

傳遞函數

內文:啟動函數

喺數學上,一粒普通嘅人工神經細胞成個傳遞函數(propagation function)可以簡化噉用以下呢條式表達:

  • 權重向量(weight vector),即係指包括嗮所有權重在內嘅一個向量[註 2]
  • 輸入向量(input vector),同理係指包括嗮所有輸入在內嘅一個向量。
  • 係粒人工神經細胞嘅輸出,係一個純量(scalar)。

以上呢個函數所講嘅嘢用日常用語表達係噉嘅:粒人工神經細胞嘅輸出值取決於佢收到嘅輸入值、啲權重、同埋佢嘅偏向值[16]。上述呢個例子係一個線性函數(linear function;即係如果將 同是但一個 畫幅圖,會出一條直線),不過喺實際應用上,人工神經細胞嘅傳遞函數仲有得用 sigmoid 函數(sigmoid function)等唔同類嘅函數嚟模擬:例如喺 sigmoid 函數之下,y 嘅數值會一路大致上等如 0,直至 x 嘅數值超越某個臨界值為止,而喺 x 過咗個臨界值之後,y 嘅數值會一路大致等如佢最大可能數值(下圖)-就好似現實世界嘅神經細胞噉,要輸入訊號超過一個臨界值先會射新訊號[21]。睇埋線性整流函數(rectifier)。

Logistic-curve.svg

網絡結構

睇埋:生物神經網絡

當有多粒人工神經細胞互相連埋一齊,就會組成一個人工神經網絡。喺實際使用上,設計者一般會用電腦程式嚟整人工神經網絡,叫個程式喺開始嗰陣粒粒人工神經細胞都設個數代表佢嘅啟動程度,再設啲數代表神經細胞之間嘅連結權重。人工神經網絡多數會用多層結構-同一層嘅神經細胞唔會影響彼此嘅啟動程度,但粒粒嘅啟動程度都會受前一層嘅神經細胞影響。例如常見嘅多層前饋網絡(multilayer feedforward network)可以想像成以下噉嘅樣[22][23]

Artificial neural network.svg

幅圖入面嘅每一個圓圈都代表咗一粒人工神經細胞,箭咀表示箭咀前嗰粒細胞嘅啟動能夠影響箭咀後嗰粒細胞嘅啟動(箭咀後細胞嘅啟動 箭咀前細胞嘅啟動)。呢個網絡由三大層組成,分別係[22]

  • 輸入層(input layer)嘅人工神經細胞負責由外界嗰度攞資訊-佢哋嘅啟動程度主要由呢啲外界資訊話事(輸入層嘅啟動 外界資訊)。
  • 隱藏層(hidden layer)係輸入層同輸出層之間嘅一排排人工神經細胞,可以得一層或者有好多層都得,一粒喺隱藏層入面嘅人工神經細胞嘅啟動程度通常都係主要取決於佢打前嗰層嗰啲人工神經細胞嘅啟動程度(隱藏層嘅啟動 前一排細胞嘅啟動)。一般嚟講,隱藏層愈多人工神經細胞,個神經網絡嘅就愈會有顯著嘅非線性(nonlinearity),但表現唔一定會愈好[24]。喺實際應用上,啲科學家整神經網絡嗰陣,會設每浸隱藏層嘅神經細胞數目做輸入層嘅 1.2 至 1.5 倍。
  • 輸出層(output layer),呢層嗰啲人工神經細胞嘅啟動程度由佢哋之前嗰層嘅人工神經細胞嘅話事(輸出層嘅啟動 前一排細胞嘅啟動),負責俾出個神經網絡嘅運算結果。

亦都有一啲人工神經網絡係冇隱藏層嘅-呢啲神經網絡浸輸出層嘅啟動程度數值會直接噉由輸入層嘅決定,即係話佢哋嘅結構如下:

SingleLayerNeuralNetwork english.png

當中左手邊黑點代表輸入層嘅人工神經細胞。呢種冇隱藏層嘅神經網絡嘅缺點係,佢哋所模擬嘅輸入同輸出之間嘅關係唔會太複雜-而一旦個設計者需要個輸入同輸出之間嘅關係唔係簡單嘅線性(linear)嗰陣,單層嘅人工神經網絡好多時就會搞唔掂[25][26]

結構分類

內文:前饋神經網絡遞迴神經網絡

按照結構嚟分類嘅話,神經網絡有得分做好多種,而以下呢兩大種最常見[27]

  • 前饋神經網絡(feedforward network),指訊號淨係由輸入到輸出一個方向流動嘅神經網絡-冇任何人工神經細胞能夠影響自己前排嗰啲人工神經細胞,好似上面嗰幾幅圖所描述嘅噉。
  • 遞迴神經網絡(recurrent network),指啲訊號會喺個神經網絡之內「遞迴」,即係話個神經網絡啲人工神經細胞當中有至少一部份嘅會有能力影響佢哋之前嗰幾層嘅人工神經細胞嘅啟動程度[28]。因為佢哋呢種結構上嘅特徵,佢哋識得處理喺時間上前後倚賴嘅資訊,例如係人口講嘅嘢噉[29]:一個人講一句嘢嗰陣,句嘢嘅第二個字會影響到第一個字嘅意思(例如「家吓」同「家庭」嘅意思就唔同嗮),所以喺分析喺時間點 聽到嘅字嗰陣,要考慮埋喺打前嗰啲時間點聽到嘅字先可以理解到嗮成個意思-遞迴神經網絡比起前饋神經網絡更加能夠做到呢一點。而事實係喺廿一世紀初,已經有科學家成功噉運用遞迴神經網絡嚟令到電腦學識處理人類用自然語言(natural language;指好似廣東話閩南話呢啲日常傾偈用嘅語言)講嘅嘢(睇埋機械翻譯[29]。例如以下呢幅圖噉:
RecurrentLayerNeuralNetwork english.png

喺呢個網絡當中,一粒細胞可以影響佢自己喺下一個時間點嘅啟動程度-係一個簡單嘅冇隱藏層遞迴神經網絡。

例子碼

有咗上面嘅知識式,就可以用電腦程式嚟整人工神經細胞,例如以下呢段用 Python 程式語言寫嘅源碼定義咗一個簡單嘅感知機(perceptron)神經網絡[註 3][30]

def Perceptron(input1, input2, output) : # 定義一個網絡,個網絡有兩個輸入同埋一個輸出。
   outputP = input1*weights[0] + input2*weights[1] + biais*weights[2] # 個網絡嘅輸出條式
   if outputP > 0 : #activation function (here Heaviside) # 如果個輸出值大過 0,噉將輸出值 set 做 1。
      outputP = 1
   else :
      outputP = 0 # 呢個網絡係一個開關網絡,即係話佢輸出值淨係得兩個可能性,「0」同「1」。

網絡學習

基本諗頭

睇埋:機械學習

學習法則(learning rule)係指一啲改變個神經網絡嗰柞參數嘅法則。一個神經網絡喺收到一個輸入嗰陣會計一個輸出出嚟,但係呢個輸出唔一定係正確嘅,可能會同正確嘅結果有所出入。所以如果要用神經網絡嚟計出正確嘅結果,好多時就要靠一個好似學習噉嘅過程[31]:例如喺監督式學習當中,個研究者可以走去搵柞數據返嚟-呢柞數據就係所謂嘅訓練集(training set);呢個訓練集會包括咗一連串嘅輸入個案,而每個個案都有一個已知嘅正確輸出值;跟手個研究者就可以將個訓練集嘅數據入落去個神經網絡度,等部電腦自動噉計出喺每一個個案入面,個神經網絡俾出嚟嘅輸出同正確嘅輸出值有幾大出入,跟手啲事先編寫好嘅學習法則就會按照呢啲落差值計吓啲(例如)權重要點樣改變先可以令到個神經網絡俾出更準確嘅答案。如是者,喺個神經網絡運算過大量嘅個案之後,佢嗰啲權重等嘅參數就會有所改變,變到更加能夠計到正確嘅答案-個研究者就可以攞呢個神經網絡嚟去預測一啲將來會撞到嘅同類個案(睇埋通用近似定理[16]

喺呢個過程裏面,個研究者會想令以下條方程式入面嗰個殘差平方和 有咁細得咁細[32][33]

;(誤差函數;error function)當中
  • 係個訓練集入面嘅個案數量;
  • 係第 個個案入面嗰個輸入;
  • 係個神經網絡用 做輸入嗰陣俾出嚟嘅輸出;而
  • 係第 個個案入面嗰個正確輸出;所以
  • 呢個數值反映咗攞個神經網絡嚟計嘢嗰陣嘅平均誤差。

反向傳播算法

內文:反向傳播算法

反向傳播算法(backpropagation)係一種用嚟計個神經網絡啲權重要點樣調整嘅方法,喺個神經網絡俾出咗佢嘅運算結果之後,就可以計個結果同正確數值差幾遠[34][35],例如確率勾配降下法(stochastic gradient descent)噉,就會運用以下呢條算式嚟計出每個權重值要點變[36]