開主選單
一個前饋人工神經網絡嘅抽象圖;每個圓圈代表咗一粒模擬嘅神經細胞,而每粒神經細胞嘅啟動程度由佢打前嗰排神經細胞嘅啟動程度話事-就好似動物嘅神經系統噉。

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

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

舉個例說明,例如家吓搵個神經網絡入面某一粒人工神經細胞集中睇佢,佢會有返個數字嚟反映佢嘅啟動程度,而呢個數字取決於第啲人工神經細胞嘅啟動程度-即係話個程式會有一條類似噉樣嘅算式:

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

到咗廿一世紀頭,人工神經網絡經已俾科學界廣泛噉應用落去各種各樣嘅問題嗰度,例如係機械視覺同埋語音識別呢啲傳統嘅電腦程式好難解決到嘅問題,都有得用人工神經網絡嘅方法應付[2][9][10][11]

網絡組成

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

基本諗頭

睇埋:神經細胞

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

細胞組成

內文: 人工神經細胞

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

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

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

傳遞函數

 
線性函數 y(x) = −x + 2 畫出嚟嘅圖

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

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

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

網絡結構

睇埋:生物神經網絡

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

幅圖入面嘅每一個圓圈都代表咗一粒人工神經細胞。呢個網絡由三大層組成,分別係[21]

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

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

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

結構分類

睇埋:人工神經網絡種類

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

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

例子碼

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

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

喺呢個過程裏面,個研究者會想令以下條方程式入面嗰個   有噉細得噉細:

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

反向傳播算法

內文: 反向傳播算法

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

 ;當中
  •   係指喺時間點   嘅權重值  
  •   係學習率;
  •   係個誤差,反映咗喺個個案入面個神經網絡俾嘅輸出同正確輸出差幾遠;
  •    隨住  偏導數(partial derivative);
  •   係一個隨機(stochastic)嘅數值。

如果一個以電腦程式寫嘅神經網絡跟呢條式(或者係類似嘅式)嚟行嘅話,佢喺計完每一個個案之後,都會計出佢裏面嘅權重值要點樣改變,並且將呢個「每個權重應該要點變」嘅訊息傳返去個網絡嗰度(所以就叫「反向傳播」)。而每次有個權重值改變嗰陣,佢嘅改變幅度會同「誤差值」有一定嘅關係,而且佢對計個輸出嘅參與愈大,佢嘅改變幅度會愈大[38]-個神經網絡會一路計個案一路變,變到誤差值愈嚟愈接近零為止[21][39]。而除咗確率勾配降下法之外,反向傳播仲有好多其他方法做[40][41]

演算法

用反向傳播算法幫神經網絡學習嘅演算法如下[21][42][43][44]

第一步:傳播
  1. 由數據嗰度邏一個個案,按照個神經網絡嘅權重同埋個個案嘅輸入值計個神經網絡會俾啲乜嘢輸出值;
  2. 計吓個誤差係幾多(個神經網絡俾嘅輸出值同個個案嘅實際輸出值差幾遠);
  3. 用條式計吓每個權重數值應該要變幾多。
第二步:更新權重值
  1. 每一個權重值,佢都會由條式嗰度有一個梯度值(gradient);
  2. 每一個權重值嘅改變幅度等如個梯度值乘以學習率-如果學習率係 0,噉個神經網絡永遠都唔會變,而如果學習率數值大,噉個神經網絡會變化得好化,所以學習率掌管咗個神經網絡學習有幾快;
  3. 將柞值「反向傳播」返去個神經網絡嗰度,將每個權重值變成佢嘅新數值;
  4. 重複以上步驟,理想嘅係直至誤差值變成 0 為止。

例子碼

以下係一段用 MATLAB(一種程式語言)寫嘅簡單前饋神經網絡嘅源碼[45]

function m = neural()
[Attributes, Classifications] = mendez; % 由「mendez」嗰度攞數據,「mendez」係個檔案嘅名。
n = 2.6; % 設個變數做學習率。
nbrOfNodes = 8;
nbrOfEpochs = 800;

% 設矩陣嚟代表啲權重。
W = rand(nbrOfNodes, length(Attributes(1,:)));
U = rand(length(Classifications(1,:)),nbrOfNodes);

m = 0; figure; hold on; e = size(Attributes);

while m < nbrOfEpochs % 係噉 run 若干次。

    % Increment loop counter
    m = m + 1;
    
    % Iterate through all examples
        for i=1:e(1)
        % 由數據嗰度攞輸入。
            I = Attributes(i,:).';
            D = Classifications(i,:).';
    
        % 根據輸入同權重計吓個神經網絡俾啲乜嘢輸出。
            H = f(W*I);
            O = f(U*H);
   
        % 計誤差值。
            delta_i = O.*(1-O).*(D-O);
    
        % 計前面嗰層嘅誤差值。
            delta_j = H.*(1-H).*(U.'*delta_i);
   
        % 根據誤差值調較吓啲權重。
            U = U + n.*delta_i*(H.');
            W = W + n.*delta_j*(I.');
        end
   
        RMS_Err = 0;
   
        % 計 RMS 誤差值。
        for i=1:e(1)
            D = Classifications(i,:).';
            I = Attributes(i,:).';
            RMS_Err = RMS_Err + norm(D-f(U*f(W*I)),2);
        end
        
        y = RMS_Err/e(1);
        plot(m,log(y),'*'); % 畫幅圖展示 RMS 誤差值點樣隨住學習次數演變;結果通常會係個誤差隨時間變細。
        
end
        
function x = f(x)
x = 1./(1+exp(-x));

呢個網絡用嘅學習屬於監督式學習(睇下面)。

批量式訓練

要用反向傳播算法訓練一個神經網絡學習,可以用所謂嘅批量式訓練(batch training)。喺一個用批量式訓練學習嘅神經網絡入面,源碼會講定一個批量大細(batch size; ),而個神經網絡會「每讀取咗   個個案之後先至更新啲權重」[46]。想像以下呢段虛擬碼[47]

loop maxEpochs times /* 將柞數據睇 maxEpochs 噉多次。*/

  for each training item /* 將直至「end for」為止段碼,對每個個案做一次。*/
    compute weights and bias deltas for curr item /* 計權重要變幾多。*/
    accumulate the deltas /* 累積權重值變幅,而唔係即刻改變啲權重值。*/
  end for

  adjust weights and bias deltas using accumulated deltas /* 喺 run 嗮所有個案之後,先 update 柞權重值;喺呢段碼入面,b = 個案數量。*/
end loop

批量式訓練嘅一個好處係,用佢會令到每一次嘅權重更新都有考慮成個批量入面嘅趨勢(而唔係淨係考慮單一個案),所以可以令個神經網絡學起嘢上嚟更加穩定[46]

學習率

內文: 學習率

學習率(learning rate)係一個神經網絡入面好緊要嘅參數。喺每次更新啲權重之前,會有條式計每個權重要變幾多,而個變幅往往會乘以學習率。因為噉,學習率掌管咗個神經網絡學習學得有幾快,例如如果學習率係 0,噉個神經網絡啲權重數值永遠都唔會變,而學習率數值愈大,個神經網絡學習就會愈快,但係學習快唔一定係一件好事[48]:學習率快就表示喺每次更新啲權重嗰陣,每個權重嘅變幅都會偏大,好多時噉會搞到權重改變嗰陣「郁過龍」-假想有個權重家陣數值係 0.7,而佢個理想數值係 0.65,但因為個神經網絡學習率大得滯,搞到權重更新嗰陣佢個數值唔係變成理想嘅 0.65,而係變成 0.6;另一方面,學習率細得滯又會搞到個神經網絡學嘢好慢。所以喺對神經網絡嘅研究上,「學習率要設做幾多先算理想」係一個相當重要嘅課題[49][50]

動量

喺最原始嘅神經網絡當中,學習率係一個常數,但近期啲嘅研究者有嘗試將個學習率設做一個可以視乎手上個案嘅屬性而變化嘅數值[51][52]。其中一個最簡單嘅方法係運用所謂嘅動量(momentum;唔係物理學講嘅動量):喺神經網絡研究上,動量建基於一個諗頭-如果喺之前嗰幾個個案入面,個權重都係要下降嘅話,噉呢個權重喺下一個個案當中都要將數值下降嘅機會率相當大,而同理如果個權重喺之前嗰幾個個案入面都係要數值上升嘅話,噉佢喺下一個個案都要將數值上升嘅機會率相當大[53]

喺一個原始嘅神經網絡裏面,一個權重嘅改變幅度如下[51]

 

當中   係權重改變幅度,  係學習率,  係梯度值。而喺用動量嘅情況下,權重變幅條式如下[51]

 

  係一個常數,掌控「動量衰退得有幾快」,而   喺之前嗰個個案入面嘅權重變幅-即係話喺呢個情況下,當個權重(例如)喺之前嗰一個個案係下降咗嗰陣,佢喺今個個案下降起上嚟會下降得更勁,而上升起上嚟會上升得冇噉快。調較   嘅數值可以左右「之前嘅權重變幅」對「而家嘅權重變幅」有幾大影響力[51]

在線學習

睇埋:在線機械學習

 (數據庫入面嘅個案數量)數值偏向極大嗰陣,一個研究者冇噉易有嗮數據喺手頭上,好多時會靠在線機械學習(online machine learning)-指喺一段時間之內俾個神經網絡係噉由外界攞輸入[54],例如喺整一個用嚟預測股價嘅在線神經網絡嗰陣,可以俾個神經網絡(例如)日日睇一次隻股票嘅價格(個網絡要有演算法令佢曉接駁去啲網上嘅數據庫,並且攞啲數據做自己輸入),每次睇完,都要個神經網絡估吓隻股票聽日係乜嘢價格,跟手聽日睇吓個真實價格同個神經網絡嘅估計差幾遠,再計返個誤差值出嚟同埋用呢個數值改變個神經網絡啲權重,等佢第日可以做到更加準嘅預測。在線機械學習成本低,而且喺要預測嗰樣嘢嘅變化規律唔係恆定不變嘅情況下零舍有用[54]

學習範式

 
一個數據集;每一橫行代表一個個案,每一個直行代表一個變數。

一個神經網絡可以隨住經驗變得更加有能力做準確嘅預測-曉好似動物噉樣學習。所以神經網絡技術對機械學習(machine learning)嚟講至關重要,而要訓練一個神經網絡學嘢,主要有三大學習範式:監督式學習、非監督式學習、同埋強化學習[55][56]

監督式學習

內文: 監督式學習

監督式學習(supervised learning)會搵一柞例子個案返嚟,將每個個案嘅輸入入落去個神經網絡嗰度等佢計個輸出出嚟,跟手再計返誤差值同埋用誤差值計吓個神經網絡啲權重要點改。用數學行話講嘅話,即係要搵出一柞已知嘅例子,有若干對輸入( )同正確輸出( ), ,並且由可容許嘅函數當中搵返個同啲例子最吻合嘅函數   出嚟。喺呢種學習之下,個神經網絡會由個研究者嗰度收到一柞數據俾佢學,好似有個老師噉-所以就叫「監督」式學習[55][57]

用監督式學習可以訓練一個神經網絡做好多工作,好似係圖形辨識(pattern recognition)[58]同埋迴歸分析(regression analysis) [59]呀噉。舉個例說明,家吓有個研究員想訓練一個神經網絡分辨一個病人係咪有肺癌[60],用嚟幫啲醫生手做檢查;佢可以去問醫院同醫學院等嘅單位借有關肺癌病人嘅數據,呢柞數據要包括咗每個病人嘅檢查結果( )以及佢係咪真係有肺癌( )等嘅資訊;跟手個研究員就會逐個逐個將啲病人個案嘅檢查結果同 X 光片嗰柞數字入落去個神經網絡嘅輸入層嗰度,啲隱藏層會計吓啲輸入嘅數據,而個輸出層就會係是但一個二元(binary)嘅輸出-「有肺癌」(用「1」代表)同「冇肺癌」(用「0」代表)。喺初頭嗰陣,個神經網絡會犯好多錯,但係喺用呢柞數據訓練到噉上下之後,個神經網絡會根據佢啲學習法則改變咗佢啲權重,順利嘅話啲誤差會變到愈嚟愈細[61];而最後如果個誤差細到去一個可以接受嘅水平嘅話,啲醫生就有可能會有興趣用呢個神經網絡幫佢哋手做肺癌檢查。事實係,喺醫學上經已有唔少醫護人員會用神經網絡幫手做診斷,有研究甚至發現,用神經網絡嚟做診斷有陣時仲準過用人手做[62]

例子碼

用電腦程式嚟整人工神經細胞,例如以下呢段碼,係頭先嗰個用 Python 寫嘅感知器嘅擴充版,用一個簡單嘅演算法教個感知器學識邏輯或(logical or)[29]

import numpy, random, os # 指明要用邊柞指令。
a = 1 # 設一個數做學習率。
bias = 1 # 設定 bias 值
weights = [random.random(),random.random(),random.random()]
# 設定三個權重值,每個都係一個隨機喺 0 同 1 之間揀嘅數值。

# set 好嗮所有嘢喇,開始程式。

def Perceptron(input1, input2, output) : # 定義一個感知器,個感知器有兩個輸入同一個輸出。
   x = input1
   y = input2
   outputP = input1*weights[0]+input2*weights[1]+bias*weights[2] # 按照柞權重、輸入、同 bias 計個感知器嘅輸出係乜。
   if outputP > 0 :
      outputP = 1
   else :
      outputP = 0
   # 個感知器衹有兩個輸出值-「0」同「1」。

   error = output - outputP # 計個誤差值-即係「實際輸出」同「個感知器俾嘅輸出」差幾遠。
   weights[0] += error * input1 * a 
   weights[1] += error * input2 * a
   weights[2] += error * bias * a
   # 按誤差值計吓,每個權重值要改變幾多。
   print(x, "or", y, "is : ", outputP) # 將輸入值同輸出值 show 出嚟俾個用家睇。

for i in range(50) :
   Perceptron(1,1,1)
   Perceptron(1,0,1)
   Perceptron(0,1,1)
   Perceptron(0,0,0)
# 俾柞數據個感知器 run 好多次。由呢柞數據睇得出,數據所顯示嘅係一個邏輯或-當「是但一個輸入係 1」或者「兩個都係 1」嗰陣,個輸出要係「1」,而當「兩個都係 0」嗰陣,輸出要係「0」-「輸出係 1」 if 「第一個輸入係 1」 or 「第二個輸入係 1」。
# 結果係,初頭嗰陣個感知器會犯錯,例如喺其中一個輸入係 1 另一個係 0 嗰陣俾 0 做輸出,但係慢慢學吓學吓,佢就變到識得做邏輯或噉嘅反應。

非監督式學習

 
聚類分析嘅圖解;每一點代表一個個案,每個個案喺用 X 軸同 Y 軸分別代表嗰兩個變數上都各有其數值,由幅圖睇得出,啲個案明顯可以按呢兩個變數分三大類。
內文: 非監督式學習

非監督式學習(unsupervised learning)當中,個研究者會有一柞數據   俾個神經網絡處理,但係同監督式學習唔同嘅係,個研究者唔會明確噉話俾個神經網絡知佢做嘅預測係啱定錯-所以就嗌做「非監督」式學習[63]

非監督式學習最常見嘅用途係攞嚟做聚類分析(cluster analysis)。舉個例子說明,家吓有個生態學家想研究吓一個區域入面嗰啲傾向聚集喺啲乜嘢位置,佢可以坐直昇機或者用人造衛星影啲返嚟,再記錄嗮嗰個區域入面每樖樹生喺邊個位(呢個過程會嘥唔少時間),會得出一個數據庫,記錄嗮每樖樹喺 X 軸同 Y 軸嗰度嘅坐標。跟手佢就可能會想睇吓啲樹會唔會傾向聚集喺個區域入面嘅某啲位置(呢啲資訊可能有助佢保育一啲靠樹生存嘅動物)。如果有某一柞嘅樹彼此之間距離近,又同佢哋以外嘅樹距離遠,噉就可以話佢係「聚埋一羣」,而聚類分析就正係用嚟分析一柞個案入面會唔會有幾羣個體係「彼此之間距離近,同羣以外嘅個體距離遠」嘅[64][65][66]

喺呢次研究入面,個生態學家唔會事先知道啲樹要點分羣,所以用唔到監督式學習[65],但係佢可以運用非監督式學習嚟整一個神經網絡幫佢手做呢個聚類分析。一個簡單嘅可能做法係好似以下噉:將浸輸入層設做「樖樹嘅坐標」,等啲隱藏層用每一樖樹嘅數據逐個逐個計吓,而浸輸出層就有(例如)5 粒人工神經細胞,喺每樖樹嘅運算之後都會有一粒輸出層神經細胞嘅啟動程度係大過其他嘅-所以個生態學家就可以按「喺將嗰樖樹嘅數據入咗落去個神經網絡度之後,邊粒輸出層神經細胞嘅啟動程度最大」為準則將啲樹分做聚類,而且佢仲有得按照分類結果分得好唔好,嚟計吓使唔使改變吓個神經網絡嗰啲參數-個神經網絡喺度進行學習。除咗噉,電腦科學界仲有第啲更加精良嘅演算法嚟做非監督式學習[65][66]

例子碼

睇埋:自組織對映

想像一個做聚類分析,用四個變數將啲個案分做三類嘅神經網絡:個神經網絡有四個輸入三個輸出;每個個案喺嗰四個變數上都會各有一個數值,而當用呢個四個數值做個神經網絡嘅輸入嗰陣,會令個神經網絡嗰三粒輸出細胞都各有一定程度嘅啟動(每粒細胞都有一個向量代表呢個啟動)-跟住視乎嗰個個案引致邊粒輸出細胞有最勁嘅啟動,就可以將個個案歸做三個類嘅其中一個,同埋更新啲權重嘅數值。以下係個神經網絡嘅 Python 源碼[67]

# 指明要用邊柞指令。
import numpy as np
import pandas as pd

# 由網站嗰度讀取數據集,將柞數據集擺喺 ds 嗰度。ds 會係一個表,列嗮每個個案同埋佢喺變數上嘅數值出嚟。
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['sepal length', 'sepal width', 'petal length', 'petal width', 'class']
ds = pd.read_csv(url, names=names)
ds.head()

# 整柞 list,並且將所有數字 normalize,每個 list 包含咗所有個案喺一個變數上嘅數值,個數據集有四個用嚟將個案分類嘅變數,所以有四個 list。
list_sl=[]
list_sw=[]
list_pl=[]
list_pw=[]
for sl in ds['sepal length']:
    sl = (sl-min(ds['sepal length'])) / (max(ds['sepal length'])-min(ds['sepal length']))
    list_sl.append(sl)
for sw in ds['sepal width']:
    sw = (sw-min(ds['sepal width'])) / (max(ds['sepal width'])-min(ds['sepal width']))
    list_sw.append(sw)    
for pl in ds['petal length']:
    pl = (pl-min(ds['petal length'])) / (max(ds['petal length'])-min(ds['petal length']))
    list_pl.append(pl)
for pw in ds['petal width']:
    pw = (pw-min(ds['petal width'])) / (max(ds['petal width'])-min(ds['petal width']))
    list_pw.append(pw) 

# X 係一個 array,當中每個組成元素係一個個案喺四個變數上嘅數值(normalize 咗)。
X = np.array(list(zip(list_sl,list_sw, list_pl, list_pw)) )

# 設定啲參數
nc = 3         # 要將啲個案分做三類
W = []         # 儲住柞每粒輸出層細胞嘅權重嘅向量
M = len(X)     # 有幾多個個案
N = len(X[0])  # 有幾多個變數

# 呢個子程式會俾出隨機產生嘅數字,用嚟初始化嗰陣產生柞權重值。
def get_weights():
    y = np.random.random() * (2.0 / np.sqrt(M))
    return 0.5 - (1 / np.sqrt(M)) + y

# 產生權重,並且將柞數值放入去 W 嗰度。
for i in range(nc): # 三粒輸出層細胞,所以 W 有三個元件。
    W.append(list()) 
    for j in range(N): # 每粒輸出細胞又有四個子元件做權重,即係話每當個網絡讀到一個個案喺四個變數上嘅數值嗰時,三粒輸出層細胞都會分別有若干程度嘅啟動。
        W[i].append(get_weights() * 0.5)

# 一個子程式;呢個子程式會計出兩個點(向量)之間嘅距離。呢個子程式會俾個距離做輸出。
def distance(w, x):
    r = 0
    for i in range(len(w)):
        r = r + (w[i] - x[i])*(w[i] - x[i])
    
    r = np.sqrt(r)
    return r

# 又一個子程式;呢個子程式會搵出 x 入面邊個向量同 W 呢個 array 當中嘅向量最接近。
def Findclosest(W, x):
    wm = W[0]
    r = distance(wm, x)
    i = 0
    i_n = i
    for w in W:
        if distance(w, x) < r:
            r = distance(w, x)
            wm = w
            i_n = i
        i = i + 1
    
    return (wm, i_n)

# 將個權重向量 show 出嚟睇。
print(W)

la = 0.3    # λ 系數
dla = 0.05  # Δλ

while la >= 0: # 重複係噉做以下嘅作業,做到 la 變成 0 以下為止。
    for k in range(10):
        for x in X: # For X 入面每個元件 x,搵出 W 入面邊個最近 x,跟住...
            wm = Findclosest(W, x)[0]
            for i in range(len(wm)): # 再調較柞權重
                wm[i] = wm[i] + la * (x[i] - wm[i]) 

    la = la - dla
    
    Data = list() # 整個叫「data」嘅新 list 出嚟。

for i in range(len(W)):
    Data.append(list())

dfList = ds['class'].as_matrix()

DS = list() # 整個叫「DS」嘅新 list 出嚟。呢個 list 每個元件係一個個案由個神經網絡分嘅類同埋佢(根據個數據集)個實際類。
i = 0
for x in X: # For X 入面每個元件,做以下嘅指令。
    i_n = Findclosest(W, x)[1]
    Data[i_n].append(x)
    DS.append([i_n, dfList[i]])
    i = i + 1

print (DS) # Show 個 DS 出嚟睇。結果係,個神經網絡做嘅分類同數據集嘅分類好一致。

強化學習

 
強化學習過程嘅圖解;一個運用神經網絡解決問題嘅機械會自己同個環境互動,再睇自己嘅行動會帶嚟啲乜嘢回輸。
內文: 強化學習

強化學習(reinforcement learning)係機械學習嘅一種,喺機械人設計上好有用。喺神經網絡強化學習嘅過程裏面,個研究者唔會有個數據庫   俾個神經網絡睇同跟住學,而係俾個神經網絡係噉同佢周圍嘅環境互動:喺每一個時間點  ,個神經網絡會產生一個用輸出嘅數字表示嘅動作(例如用「0」代表「企喺度唔郁」同「1」代表「向前行」呀噉),而跟住佢周圍個環境會俾返一啲回輸(feedback)-簡單啲講就係話返俾個神經網絡聽佢個動作係咪一個好嘅決定(例如個地下有個窿,「向前行」會跌得好痛)。而個神經網絡跟手就會根據呢個回輸計吓,睇吓要點樣改佢嗰啲參數先可以令到下次佢做行動嗰陣得到正面回應嘅機會率高啲-而上述嘅呢個例子就有可能可以攞嚟教一個機械人行路[68][69][70]

人工神經網絡強化學習嘅過程大致可以想像成噉[71][72]

  1. 個神經網絡俾出一個輸出, 
  2. 個環境會根據佢嘅內部運作法則決定回輸, ,係乜(  係現時狀態,而   係下一個狀態);
  3. 個神經網絡會根據   決定係咪要修改自己內部嘅參數同埋(如果要)要點改;
  4. 返去步驟 1。

個神經網絡內部要有一個演算法,個演算法要用   做輸入,俾出「內部參數要變幾多」做輸出。

例演算法

睇埋:Q-學習

Q-學習(Q-learning)係強化學習上常用嘅一種演算法,用 Q-學習嘅人工神經網絡會儲住一個數據庫,個數據庫包含咗一大柞「狀態-行動」嘅配對,每當有個行動喺某個狀態之下引致正面結果嗰陣,相應嘅狀態-行動配對嘅數值會上升,反之就下降-而當個神經網絡撞到類似狀態嗰陣,就可以靠「邊個行動同呢個狀態嘅配對數值最大」做準則決定採取乜嘢行動。 Q-學習嘅核心係以下嘅更新算式[71][73]

 ,當中
  •   係狀態   同行動   之間嘅配對值;
  •   係學習率;
  •   係環境所俾嘅回輸,數值視乎   等因素而定。
  • 呢條式表達嘅係,喺每一個時間點,  都有可能改變數值,而佢新數值由「佢之前個數值」同「環境所俾嘅回輸」話事,學習率就主宰咗「環境所俾嘅回輸」對佢有幾大影響力。

一個簡單-得兩個行動同兩個狀態-嘅 Q-學習神經網絡嘅演算法例子大致上如下(個網絡可以想像成有兩層每層兩粒神經細胞)[71]

  1. 初始化,將行動 1 粒神經細胞嘅權重,  (兩個權重分別代表嗰粒細胞同輸入層嗰兩粒細胞嘅連繫),設做隨機揀嘅數值,而行動 2 嘅相應神經細胞,  ,設做同一數值,以是但一個狀態開始系統模擬,「發生咗幾多次狀態改變」( )設做 0,將   嘅最大值( )設做一個大嘅數值。
  2.   係現時狀態,  就係下一個狀態。
  3. 評估每個 Q-因素(Q-factor;狀態-行動配對嘅數值)。
  4. 更新啲權重,等下次再撞到   噉嘅狀態嗰陣,個網絡比較有機會作出能夠帶嚟回報嘅行動。
  5.   數值提升 1,除非   大過或者等如  ,返去步驟 2。

應用概論

人工神經網絡能夠模擬輸入同輸出之間一啲非線性(non-linear)嘅關係,所以好多時都能夠有效噉對現實世界嘅現象做出預測。比較普通嘅前饋同遞迴神經網絡都有好廣泛嘅用途:

  • 醫療診斷:喺醫療上,人工神經網絡能夠幫手對病人做診斷。曉寫程式嘅醫療人員可以製作一啲人工神經網絡,輸入設做「病徵」,而輸出設做「診斷」(兩者都用某啲數字代表),再用已有嘅醫療數據俾啲網絡做監督式學習,就會造出能夠基於病徵預測「診斷應該係乜」嘅網絡。事實係,廿一世紀初嘅學界經已有曉有效噉基於病人資訊診斷肺癌[74]大腸癌[75]、同前列腺癌[76]等病症嘅神經網絡。有啲神經網絡仲曉靠有關細胞形狀嘅數據嚟分辨邊啲癌細胞係比較惡性嘅[77][78]
  • 電腦保安:電腦保安係一個研究點樣確保電腦同互聯網安全嘅領域,包含咗對電腦病毒惡意程式嘅應付同埋探測黑客等等嘅課題。人工神經網絡嘅技術可以用嚟教電腦分辨邊啲程式係惡意程式[79]、搵出搞破壞嘅人(例如係黑客)嘅戶口[80]、探測邊啲網址具有威脅性[81]、同埋探測信用卡詐騙呀噉[82];例:用一個監督式學習嘅神經網絡,輸入設做個網站嘅特徵(「有冇嘗試攞個瀏覽者嘅 IP」、「有冇彈視窗出嚟」、或者「有冇啲連咗去已知惡意網站嘅連結」等等)而輸出設做「係咪惡意網站」[80]
  • 結構分析:喺建築學結構工程學上,設計一棟建築物嗰陣需要分析吓棟嘢能唔能夠穩陣噉企到喺度,而建築師等嘅人員可以將有關過去嘅建築物嘅數據攞嚟幫個神經網絡做監督式學習(例:輸入做「棟建築物嘅形狀同幾何特徵」等嘅變數,而輸出就設做「棟嘢係五十年內會冧嘅機會率」),用嚟預測一楝建築物有幾穩陣[83][84][85]
  • 其他
  • ... 等等。

進階變種

睇埋:人工神經網絡種類

學界有好多進階嘅神經網絡類型。呢啲網絡類型複雜過普通嘅前饋同遞迴網絡,好多時每種都係專門攞嚟處理某啲特定類型嘅問題嘅,好似係:

圖像處理

 
卷積神經網絡嘅抽象圖解;隱藏層(藍色嗰柞)嘅一粒細胞負責處理輸入層(紅色嗰浸)當中嘅一橛,唔會同佢負責嗰橛以外嘅部份有連繫。
睇埋:數碼圖像處理同埋卷積神經網絡

人工神經網絡可以攞嚟幫電腦處理傳統演算法好難搞得掂嘅圖像。想像以下一個噉嘅神經網絡:佢係一個卷積神經網絡(convolutional neural network;一種處理圖像上常用嘅神經網絡),輸入層有若干粒細胞,若干浸隱藏層,同一浸輸出層;輸入層每粒細胞代表咗一個像素(幅圖片上面嘅某一個點),第一浸隱藏層就每粒細胞相應輸入層嘅某一橛仔-例如第一粒隱藏層細胞負責處理輸入層最左上角嗰 3 x 3 粒像素大嘅一橛仔(令到個網絡能夠處理啲解像度高嘅圖像),而最後輸出層有 10 粒細胞,每一粒輸出層細胞代表咗一個類別;個神經網絡有個演算法能夠由一幅圖片嗰度讀取輸入,所以每當佢讀到一幅圖片嗰陣,佢嘅神經細胞會跟住輸入層嘅啟動,最後輸出層嘅規律就可能提供到「幅圖屬於邊個類別」嘅資訊[92][93][94][95][96][97]

喺電腦入面,一幅圖片可以用數字代表:一幅圖片由好多粒細點(像素)組成,每粒細點都有特定嘅色水;用三原色模式想像嘅話,任何色水都可以由、同呢三隻原色砌出嚟,所以一個點嘅色水可以用   噉嘅向量代表-當中   表示嗰一點嘅紅色量,  代表嗰點嘅綠色量,而   代表嗰點嘅藍色量,而一幅圖片喺部電腦內部可以用類似噉嘅向量代表[92][98][99]

 ,表示第一個點有 207 個單位噉多嘅紅、229 噉多個單位嘅綠、同 78 個單位噉多嘅藍,如此類推。

例演算法

一個可以攞嚟將圖片分類嘅卷積神經網絡演算法(監督式學習)大致上如下[100][101]

  1. 指定「有啲乜嘢類別」同埋啲輸入嘅圖片有幾多像素等嘅資訊;
  2. 由目標位置嗰度讀取圖片數據,得到每幅圖片嘅相應向量,而且每幅圖片都要有個已知嘅類別;
  3. 做一啲事先處理(preprocessing),等啲圖片方便由神經網絡處理;
  4. 建立一個卷積神經網絡,輸入層嘅細胞係圖片每粒像素嘅色水,而輸出層就係幅圖片「屬乜嘢類別」;
  5. 重複噉做監督式學習嘅基本過程(俾個網絡計出佢嘅答案,將佢嘅答案同正確答案相比,再按結果更改柞權重)。

最後如果順利嘅話,呢個神經網絡就會曉分一幅圖片到底係(例如)屬於 A 類定 B 類。

深度學習

 
一個有 3 粒輸入層細胞同 4 粒隱藏層細胞嘅 RBM;一個深度信念網絡內含多個噉嘅結構。
睇埋:深度學習同埋深度信念網絡

喺廿一世紀嘅社會,互聯網嘅發展令到訊息嘅傳播變得好快,極大量嘅數據喺互聯網上流動,呢啲數據可以好有用,但係因為量大,所以用傳統嘅數據分析法好難處理,而大數據(Big Data)就係一門廿一世紀初嘅新興領域,專門研究點樣做自動化嘅數據分析同埋用呢啲分析方法嚟到由大量嘅數據當中提取有用嘅資訊,而人工神經網絡-尤其係深度信念網絡(deep belief network)-就係大數據處理上常用嘅一種工具[102][103]

深度信念網絡結構如下:一個深度信念網絡由多個受限玻爾茲曼機(restricted Boltzmann machine;RBM)再加一個前饋神經網絡組成;一個 RBM 得一浸隱藏層,而隱藏層細胞之間冇任何相互連繫,但曉將佢哋嘅啟動回輸返去輸入層嗰度;一個受緊訓練嘅深度信念網絡會以第一層 RBM 嘅隱藏層細胞做第二層嗰個 RBM 嘅輸入,再用演算法做學習嘅過程[104]

例演算法

一個深度信念網絡嘅演算法大致上如下[105]

  1. 初始化-指定好啲參數同埋隨機設定權重值等等;
  2. 按照輸入層細胞嘅啟動同權重,計隱藏層細胞嘅啟動程度;
  3. 按照隱藏層細胞嘅啟動同權重,計輸入層細胞嘅啟動程度;
  4. 同時再按照輸入層細胞嘅啟動同權重,計隱藏層細胞嘅啟動程度;
  5. 更新權重。

喺一個 RBM 完成學習之後,個程式會「疊」另一個 RBM 喺上面-攞之前嗰個 RBM 嘅隱藏層做新嗰個 RBM 嘅輸入層,再重複上面嘅步驟,直至成個深度信念網絡有若干層 RBM 為止[106]。事實表明咗,深度信念網絡能夠有效噉處理一啲冇事先標籤好嘅數據-例如係喺互聯網上流動、冇人幫手事先執靚嘅數據噉[107]

長期記憶

 
一個基本 LSTM 入面嘅一粒細胞;方格代表成粒細胞,  係喺時間點   嘅輸入,而   係粒細胞喺時間點   嘅輸出,細胞 A 有箭咀指去細胞 B 表示 A 能夠影響 B,而交叉就代表「做嘢」。
睇埋:記憶同埋長短期記憶

一般嘅遞迴神經網絡曉處理一連串嘅訊息,例如係用自然語言寫嘅句子噉,但現實世界嘅解難好多時都要求一個個體能夠睇得出時間上差距大嘅因同果。事實證明咗,普通嘅遞迴神經網絡好難處理呢啲問題,於是就有咗所謂嘅長短期記憶(long short-term memory,簡稱「LSTM」)呢種特殊嘅遞迴神經網絡[108]。LSTM 網絡特徵係內置一啲門控神經細胞(gated neuron),呢啲特殊嘅人工神經細胞具有「門」(gate),曉決定要儲起乜嘢訊息同埋幾時讀取、寫入、或者刪除訊息:喺 LSTM 網絡嘅碼當中,會有演算法幫門控細胞決定幾時要改變自身嘅啟動程度;相比之下,一般嘅遞迴神經網絡冇能力控制現存嘅過去訊息會唔會喺新訊息嚟到嗰陣被替換。呢個特點令到 LSTM 網絡有能力儲訊息儲好耐,而且有能力由輸入嘅數值當中搵出時間上相距不定嘅因同果[108][109][110]

一粒 LSTM 嘅人工神經細胞除咗主細胞( )之外仲有幾個元件[108]

  • 輸出門(output gate; )、
  • 輸入門(input gate; )、同埋
  • 遺忘門(forget gate; )。

呢三道門當中每一道都可以當係一粒子細胞噉嚟睇,有各自嘅啟動程度值,會受到第啲人工神經細胞影響,決定自身嘅啟動程度,再按自身嘅啟動程度睇吓係咪要「做嘢」。輸出門「做嘢」嘅話會左右甚至封鎖粒細胞嘅輸出,輸入門「做嘢」嘅話會左右甚至封鎖粒細胞嘅輸入,而遺忘門「做嘢」嗰陣就可以完全刪除粒主細胞入面嘅訊息-即係重設粒主細胞嘅啟動值或者權重等[111][112]。事實表明咗,LSTM 網絡可以用嚟教電腦做一啲要求長期記憶嘅作業,例如係閱讀理解呀噉[108]

問題

「黑盒」問題

有好多神經網絡相關領域嘅學者都對神經網絡存有「黑盒」(black box)嘅疑問[113][114][115][116]。人類喺用個腦諗完嘢解決完問題之後,曉將自己嘅思考過程用口頭報告返出嚟,但係一個神經網絡唔會識做呢樣嘢,唔會話到俾研究者聽佢經過啲乜嘢思考過程先能夠達到佢所俾嘅輸出。所以有人將神經網絡比喻做一個黑盒-就算佢嘅輸出係準確嘅都好,個研究者都淨係知個神經網絡嘅輸入同輸出,冇辦法知道當中嘅思考過程。即係話對於「個神經網絡俾嘅答案點解係啱嘅」呢條問題,目前唯一嘅答覆係「因為一部醒過人類嘅系統俾咗個答案出嚟」,雖然呢點唔損害神經網絡喺實用上預測現象嘅能力,但噉表示神經網絡嘅可解釋度(explainability)低得好交關,令好多學者都覺得難以接受。因為噉,有好多科學家都致力研究點樣先可以拆解一個經歷咗訓練、做緊準確預測嘅神經網絡[113][117]

 
喺科學同工程學上,一個黑盒系統嘅輸入同輸出之間有已知嘅關係,問題係研究者唔知佢內部點樣運作,點樣由輸入產生輸出[118]

理論特性

雖然話人工神經網絡成個諗頭係建基於生物神經網絡嘅,但查實佢喺好多地方都同生物神經網絡好唔同,例如[16]

  • 拓撲特徵:一個人工神經網絡會分開做若干層(同一層嘅人工神經細胞彼此之間冇任何連繫),而且做起運算上嚟好多時都係逐層逐層噉做嘅,但生物嘅神經網絡通常都冇明顯分層,而且做起運算上嚟係成個網絡各部份同時間噉做嘅。
  • 速度:喺生物神經網絡當中,訊號嘅速度唔淨衹影響個網絡嘅運算速度,仲可以影響所傳送嘅訊息嘅內容,例如係人類嘅噉,眼嘅感光神經細胞會向個腦塊視覺皮層傳訊號,話俾個腦知睇到啲乜,而神經科學上嘅研究表明咗,一粒感光神經細胞射訊號嘅頻率係用嚟俾個腦知道光嘅強度嘅(詳情可以睇神經編碼);相比之下,一個普通嘅人工神經網絡之中訊號嘅速度同頻率淨係會影響個網絡嘅運算速度[119]
  • 容錯:喺生物神經網絡當中,一份訊息係儲多咗幾份嘅,所以個網絡能夠容許訊號傳播上嘅出錯,就算傳訊號嘅過程裏面個訊號走咗少少樣,都唔會造成記憶損失,而且生物神經網絡冇「中央」部份,就算個腦某部份受損,個腦嘅第啲部份好多時都有能力自己改變等自己可以做埋受損嗰部份本嚟做嘅工作[120]。相比之下,人工神經網絡一般唔具有呢啲能力。
  • 反向傳播:生物神經網絡並冇任何類似反向傳播嘅機制[121]

因為呢啲原因,科學界普偏有質疑到底人工神經網絡可唔可以喺人工智能等嘅領域上攞嚟模仿人類同第啲動物所展現嘅智能

硬件問題

廿一世紀初,大同有效嘅人工神經網絡要求相當多嘅運算資源[122]。動物嘅腦有高度嘅能量效率,例如普通大人嘅腦據估計平均使用大約 20 能量;相比之下,廿一世紀初嘅 GPU 閒閒地要用幾百瓦嘅能量,而且能量流失好勁,行起上嚟產生嘅可以令塊 GPU 去到成攝氏 50 至 80 度噉熱(相對於人腦溫度能夠維持喺攝氏 37 至 38 度左右)。由此可見,廿一世紀初嘅人工神經網絡喺能量嘅使用效率上同生物神經網絡大相逕庭,而事實係,到咗 2019 年為止都仲係冇方法用近似生物神經網絡嘅能量效率嘅方法做一個模擬人腦嘅人工神經網絡[16][122]

電腦科學家指出,廿一世紀初人工神經網絡之所以會再興起,好大程度上係因為電腦硬件上嘅進步:喺 1991 至 2015 年間,GPU 嘅運算力提高咗成 100 萬倍噉多,令到反向傳播算法變成有可能-打前嘅電腦因為運算速度低,可能同一個得幾粒細胞嘅神經網絡做反向傳播都要做幾日噉耐,所以實際應用上根本冇用[123]。而對加速器嘅使用令到本嚟要用成幾個月先做完嘅人工神經網絡學習喺幾日之間就做得嗮[122][124]

 
Alexey Ivakhnenko 嘅相

起源

人工神經網絡呢條橋最先係由美國神經科學家 Warren Sturgis McCulloch 同埋邏輯學家 Walter Pitts 喺 1943 年提出嘅[125],佢哋基於數學方法同一種叫做閾值邏輯(threshold logic)嘅演算法創造咗神經網絡嘅基本計算模型,令到科學界對神經網絡嘅研究分裂咗做兩個唔同嘅子領域,一個專係分析大腦裏面嘅生物學過程,而另一個就研究神經網絡可以點樣應用落去人工智能嗰度,正式噉開展咗現代嘅人工神經網絡研究[125]

赫布學習

睇埋:赫布理論

1940 年代尾橛,加拿大心理學家 Donald O. Hebb 諗咗一個假說出嚟描述神經細胞點隨住隻動物進行學習而有所改變,呢個後嚟會演變成所謂嘅赫布理論(Hebbian theory)。赫布理論嘅基本原則係,兩粒神經細胞愈係會一齊射神經訊號,就愈係會有強嘅連繫[126],呢個理論後尾演變做描述長期增強作用(long-term potentiation)嘅模型。喺 1954 年,美國有一啲科學家用運算機械去模擬一個跟住赫布定律嚟行嘅神經網絡[127],而呢種嘗試仲有第啲科學家跟住做,確立咗人類用運算機械(好似電腦噉)嚟模擬神經網絡嘅做法[128]

美國心理學家 Frank Rosenblatt 喺 1956 年創造咗感知機(perceptron)呢個演算法嚟去做模式識別[129],用簡單嘅實現咗一個兩層嘅電腦學習網絡。Rosenblatt 仲用數學符號描述咗啲基本感知機冇嘅迴路,例如係異或(exclusive-or circuit)迴路噉,呢啲迴路要打後電腦運算能力提高先有得用運算機械實現[130]。而後尾烏克蘭裔蘇聯數學家 Alexey Ivakhnenko 同佢嘅同事史上首次成功噉整咗個行到嘅多層神經網絡出嚟[131][132]

雖然神經網絡學界有呢啲成就,但係因為嗰陣啲電腦運算能力低得滯,搞到好多時啲科學家都冇辦法真係攞部電腦去模擬佢哋啲神經網絡模型,令到對人工神經網絡嘅研究停滯咗成十幾年。

反向傳播演算法

後嚟喺 1975 年出現咗個關鍵嘅進展-反向傳播演算法(backpropagation algorithm),呢個演算法有效噉解決咗異或嘅問題同埋多層神經網絡要點樣訓練嘅問題,令到對神經網絡嘅研究開始復甦[130]。喺廿世紀 80 年代中,科學界開始興用分散式並列處理(parallel distributed processing)模型嚟模擬人腦當中嘅過程,呢種模型將人腦當做一個同一時間處理大量訊息嘅物體(而唔係好似電腦噉好多時單一線路處理),而美國心理學家 Rumelhart 同 McClelland 詳細噉論述咗點樣將呢種模型用落去用電腦模擬神經活動嗰度[133]

後嚟支援向量機(support vector machines)同第啲簡單過神經網絡嘅運算方法(例如係線性分類器)喺機械學習(machine learning;指教機械學嘢嘅領域)上嘅人氣超越咗神經網絡,搞到神經網絡研究又稍微低沉咗一輪,但係喺 2000 年代尾出現嘅深度學習(deep learning)又重新激發咗人對神經網絡嘅興趣[134][135]

廿一世紀

到咗廿一世紀,運算力勁嘅電腦同埋人工智能領域嘅展開令到世界各地嘅科學家都開始睇重神經網絡研究[136],神經網絡俾人廣泛噉用嚟解決一啲之前以為係電腦冇可能解到問題,例如係翻譯視覺、甚至乎係藝術創作噉[137],仲開始有啲國際比賽俾啲科學家鬥用神經網絡嚟解決難題[138]。總括嚟講,廿一世紀初嘅神經網絡學界可以話係多姿多采。

睇埋

參考

  • Bhadeshia H. K. D. H. (1999). "'Neural Networks in Materials Science" (PDF). ISIJ International. 39 (10): 966–979. doi:10.2355/isijinternational.39.966.
  • Bishop, Christopher (1995). Neural networks for pattern recognition. Clarendon Press. ISBN 978-0198538493. OCLC 33101074.
  • Borgelt, Christian (2003). Neuro-Fuzzy-Systeme: von den Grundlagen künstlicher Neuronaler Netze zur Kopplung mit Fuzzy-Systemen. Vieweg. ISBN 9783528252656. OCLC 76538146.
  • Cybenko, G.V. (2006). "Approximation by Superpositions of a Sigmoidal function". In van Schuppen, Jan H. (ed.). Mathematics of Control, Signals, and Systems. Springer International. pp. 303–314.
  • Dewdney, A. K. (1997). Yes, we have no neutrons: an eye-opening tour through the twists and turns of bad science. New York: Wiley. ISBN 9780471108061. OCLC 35558945.
  • Duda, Richard O.; Hart, Peter Elliot; Stork, David G. (2001). Pattern classification (2 ed.). Wiley. ISBN 978-0471056690. OCLC 41347061.
  • Egmont-Petersen, M.; de Ridder, D.; Handels, H. (2002). "Image processing with neural networks – a review". Pattern Recognition. 35 (10): 2279–2301. CiteSeerX 10.1.1.21.5444. doi:10.1016/S0031-3203(01)00178-9.
  • Fahlman, S.; Lebiere, C (1991). "The Cascade-Correlation Learning Architecture" (PDF).
    • created for National Science Foundation, Contract Number EET-8716324, and Defense Advanced Research Projects Agency (DOD), ARPA Order No. 4976 under Contract F33615-87-C-1499.
  • Gurney, Kevin (1997). An introduction to neural networks. UCL Press. ISBN 978-1857286731. OCLC 37875698.
  • Haykin, Simon S. (1999). Neural networks: a comprehensive foundation. Prentice Hall. ISBN 978-0132733502. OCLC 38908586.
  • Hertz, J.; Palmer, Richard G.; Krogh, Anders S. (1991). Introduction to the theory of neural computation. Addison-Wesley. ISBN 978-0201515602. OCLC 21522159.
  • Information theory, inference, and learning algorithms. Cambridge University Press. 25 September 2003. ISBN 9780521642989. OCLC 52377690.
  • Kruse, Rudolf; Borgelt, Christian; Klawonn, F.; Moewes, Christian; Steinbrecher, Matthias; Held, Pascal (2013). Computational intelligence: a methodological introduction. Springer. ISBN 9781447150121. OCLC 837524179.
  • Lawrence, Jeanette (1994). Introduction to neural networks: design, theory and applications. California Scientific Software. ISBN 978-1883157005. OCLC 32179420.
  • MacKay, David, J.C. (2003). Information Theory, Inference, and Learning Algorithms (PDF). Cambridge University Press. ISBN 9780521642989.
  • Masters, Timothy (1994). Signal and image processing with neural networks: a C++ sourcebook. J. Wiley. ISBN 978-0471049630. OCLC 29877717.
  • Ripley, Brian D. (2007). Pattern Recognition and Neural Networks. Cambridge University Press. ISBN 978-0-521-71770-0.
  • Siegelmann, H.T.; Sontag, Eduardo D. (1994). "Analog computation via neural networks". Theoretical Computer Science. 131 (2): 331–360. doi:10.1016/0304-3975(94)90178-3.
  • Smith, Murray (1993). Neural networks for statistical modeling. Van Nostrand Reinhold. ISBN 978-0442013103. OCLC 27145760.
  • Wasserman, Philip D. (1993). Advanced methods in neural computing. Van Nostrand Reinhold. ISBN 978-0442004613. OCLC 27429729.

  1. "Artificial Neural Networks as Models of Neural Information Processing | Frontiers Research Topic". Retrieved 2018-02-20.
  2. 2.0 2.1 Gardner, M. W., & Dorling, S. R. (1998). Artificial neural networks (the multilayer perceptron)—a review of applications in the atmospheric sciences. Atmospheric environment, 32(14-15), 2627-2636.
  3. Russell, Stuart J.; Norvig, Peter (2010). Artificial Intelligence A Modern Approach. Prentice Hall. p. 578.
  4. Bryson, Arthur Earl (1969). Applied Optimal Control: Optimization, Estimation and Control. Blaisdell Publishing Company or Xerox College Publishing. p. 481.
  5. Omidvar, O., & Elliott, D. L. (1997). Neural systems for control. Elsevier.
  6. Tahmasebi; Hezarkhani (2012). "A hybrid neural networks-fuzzy logic-genetic algorithm for grade estimation". Computers & Geosciences. 42: 18–27
  7. The Machine Learning Dictionary - activation level 互聯網檔案館歸檔,歸檔日期2018年8月26號,..
  8. 8.0 8.1 Learning process of a neural network[失咗效嘅鏈]. Towards Data Science.
  9. Ivakhnenko, A. G.; Grigorʹevich Lapa, Valentin (1967). Cybernetics and forecasting techniques. American Elsevier Pub. Co.
  10. Akira Hirose, Shotaro Yoshida (2012). “Generalization Characteristics of Complex-valued Feedforward Neural Networks in Relation to Signal Coherence”. IEEE TNNLS, 23(4): 541-551.
  11. Forrest MD (April 2015). "Simulation of alcohol action upon a detailed Purkinje neuron model and a simpler surrogate model that runs >400 times faster". BMC Neuroscience. 16 (27): 27.
  12. Herz, A. V., Gollisch, T., Machens, C. K., & Jaeger, D. (2006). Modeling single-neuron dynamics and computations: a balance of detail and abstraction. Science, 314(5796), 80-85.
  13. Neuringer, M., Connor, W. E., Lin, D. S., Barstad, L., & Luck, S. (1986). Biochemical and functional effects of prenatal and postnatal omega 3 fatty acid deficiency on retina and brain in rhesus monkeys. Proceedings of the National Academy of Sciences, 83(11), 4021-4025.
  14. Hubel, D. H., & Wiesel, T. N. (1962). Receptive fields, binocular interaction and functional architecture in the cat's visual cortex. The Journal of physiology, 160(1), 106-154.
  15. 15.0 15.1 15.2 15.3 15.4 15.5 Zell, Andreas (1994). "chapter 5.2". Simulation Neuronaler Netze [Simulation of Neural Networks] (in German) (1st ed.). Addison-Wesley.
  16. 16.0 16.1 16.2 The differences between Artificial and Biological Neural Networks. Towards Data Science.
  17. Hagan, Martin. Neural Network Design. PWS Publishing Company. 1996.
  18. Abbod, Maysam F (2007). "Application of Artificial Intelligence to the Management of Urological Cancer". The Journal of Urology. 178 (4): 1150–1156.
  19. Dawson, Christian W (1998). "An artificial neural network approach to rainfall-runoff modelling". Hydrological Sciences Journal. 43 (1): 47–66.
  20. Multi-Layer Neural Networks with Sigmoid Function— Deep Learning for Rookies (2). Towards Data Science.
  21. 21.0 21.1 21.2 21.3 Schmidhuber, J. (2015). "Deep Learning in Neural Networks: An Overview". Neural Networks. 61: 85–117.
  22. Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.
  23. Wanas, N., Auda, G., Kamel, M. S., & Karray, F. A. K. F. (1998, May). On the optimal number of hidden nodes in a neural network. In IEEE Canadian Conference on Electrical and Computer Engineering (Vol. 2, pp. 918-921).
  24. Auer, Peter; Harald Burgsteiner; Wolfgang Maass (2008). "A learning rule for very simple universal approximators consisting of a single layer of perceptrons". Neural Networks. 21 (5): 786–795.
  25. 2.3.4 Single-Layer Network
  26. The mostly complete chart of Neural Networks, explained. Towards Data Science.
  27. Siegelmann, H.T.; Sontag, E.D. (1991). "Turing computability with neural nets" (PDF). Appl. Math. Lett. 4 (6): 77–80.
  28. 28.0 28.1 Sak, Hasim; Senior, Andrew; Beaufays, Francoise (2014). "Long Short-Term Memory recurrent neural network architectures for large scale acoustic modeling 互聯網檔案館歸檔,歸檔日期2018年4月24號,." (PDF).
  29. 29.0 29.1 First neural network for beginners explained (with code). Towards Data Science.
  30. How do Artificial Neural Networks learn?.
  31. Haykin, S. S., Haykin, S. S., Haykin, S. S., Elektroingenieur, K., & Haykin, S. S. (2009). Neural networks and learning machines (Vol. 3). Upper Saddle River: Pearson education.
  32. Jain, A. K., Mao, J., & Mohiuddin, K. M. (1996). Artificial neural networks: A tutorial. Computer, (3), 31-44.
  33. Nielsen, Michael A. (2015). "Chapter 6". Neural Networks and Deep Learning.
  34. Kelley, Henry J. (1960). "Gradient theory of optimal flight paths". ARS Journal. 30 (10): 947–954.
  35. Dreyfus, Stuart (1962). "The numerical solution of variational problems". Journal of Mathematical Analysis and Applications. 5 (1): 30–45.
  36. Rumelhart, David E.; Hinton, Geoffrey E.; Williams, Ronald J. (1986). "Learning representations by back-propagating errors". Nature. 323 (6088): 533–536.
  37. Mei, Song (2018). "A mean field view of the landscape of two-layer neural networks". Proceedings of the National Academy of Sciences. 115 (33): E7665–E7671.
  38. Dreyfus, Stuart (1973). "The computational solution of optimal control problems with time lag". IEEE Transactions on Automatic Control. 18 (4): 383–385.
  39. Dreyfus, Stuart E. (1990-09-01). "Artificial neural networks, back propagation, and the Kelley-Bryson gradient procedure". Journal of Guidance, Control, and Dynamics. 13 (5): 926–928.
  40. Huang, Guang-Bin; Zhu, Qin-Yu; Siew, Chee-Kheong (2006). "Extreme learning machine: theory and applications". Neurocomputing. 70 (1): 489–501.
  41. Widrow, Bernard; et al. (2013). "The no-prop algorithm: A new learning algorithm for multilayer neural networks". Neural Networks. 37: 182–188.
  42. Werbos, Paul J. (1994). The Roots of Backpropagation. From Ordered Derivatives to Neural Networks and Political Forecasting. New York, NY: John Wiley & Sons, Inc.
  43. Eiji Mizutani, Stuart Dreyfus, Kenichi Nishio (2000). On derivation of MLP backpropagation from the Kelley-Bryson optimal-control gradient formula and its application. Proceedings of the IEEE International Joint Conference on Neural Networks (IJCNN 2000), Como Italy, July 2000.
  44. Arthur E. Bryson (1961, April). A gradient method for optimizing multi-stage allocation processes. In Proceedings of the Harvard Univ. Symposium on digital computers and their applications.
  45. A very simple and intuitive neural network implementation. MathWorks.
  46. 46.0 46.1 What is the Difference Between a Batch and an Epoch in a Neural Network?.
  47. Understanding Neural Network Batch Training: A Tutorial.
  48. How to Configure the Learning Rate Hyperparameter When Training Deep Learning Neural Networks.
  49. Hwang, S. K. J. (1988). An algebraic projection analysis for optimal hidden units size and learning rates in back-propagation learning. In IEEE... International Conference on Neural Networks (Vol. 1). SOS Printing.
  50. Reed, R., & MarksII, R. J. (1999). Neural smithing: supervised learning in feedforward artificial neural networks. Mit Press. p. 72.
  51. 51.0 51.1 51.2 51.3 Zeiler, M. D. (2012). ADADELTA: an adaptive learning rate method. arXiv preprint arXiv:1212.5701.
  52. Li, Y.; Fu, Y.; Li, H.; Zhang, S. W. (1 June 2009). The Improved Training Algorithm of Back Propagation Neural Network with Self-adaptive Learning Rate. 2009 International Conference on Computational Intelligence and Natural Computing. 1. pp. 73–76.
  53. D.E. Rumelhart, G.E. Hinton, and R.J. Williams, “Learning representations by back-propagating errors,” Nature, vol. 323, pp. 533–536, 1986.
  54. 54.0 54.1 Bottou, Léon (1998). "Online Algorithms and Stochastic Approximations". Online Learning and Neural Networks. Cambridge University Press.
  55. 55.0 55.1 Ojha, Varun Kumar; Abraham, Ajith; Snášel, Václav (2017-04-01). "Metaheuristic design of feedforward neural networks: A review of two decades of research". Engineering Applications of Artificial Intelligence. 60: 97–116.
  56. Ting Qin, et al. "A learning algorithm of CMAC based on RLS." Neural Processing Letters 19.1 (2004): 49–61.
  57. M.R. Smith and T. Martinez (2011). "Improving Classification Accuracy by Identifying and Removing Instances that Should Be Misclassified". Proceedings of International Joint Conference on Neural Networks (IJCNN 2011). pp. 2690–2697.
  58. Looney, C. G. (1997). Pattern recognition using neural networks: theory and algorithms for engineers and scientists (pp. 171-172). New York: Oxford University Press.
  59. Tu, J. V. (1996). Advantages and disadvantages of using artificial neural networks versus logistic regression for predicting medical outcomes. Journal of clinical epidemiology, 49(11), 1225-1231.
  60. Cancer Detection - MATLAB Example.
  61. Menéndez, L. Á., de Cos Juez, F. J., Lasheras, F. S., & Riesgo, J. Á. (2010). Artificial neural networks applied to cancer detection in a breast screening programme. Mathematical and Computer Modelling, 52(7-8), 983-991.
  62. Milani, C., & Jadavji, N. M. (2017). Solving cancer: The use of artificial neural networks in cancer diagnosis and treatment. Journal of Young Investigators, 33(4).
  63. Introduction to Unsupervised Learning.
  64. Unsupervised learning - MathWorks.
  65. 65.0 65.1 65.2 Unsupervised Learning and Data Clustering[失咗效嘅鏈]. Towards Data Science.
  66. 66.0 66.1 Dostál, P., & Pokorný, P. (2009). Cluster analysis and neural network. In 17th Annual Conference Proceedings on Technical Computing Prague (pp. 131-57).
  67. Neural Network for Clustering in Python.
  68. Dominic, S.; Das, R.; Whitley, D.; Anderson, C. (July 1991). "Genetic reinforcement learning for neural networks". IJCNN-91-Seattle International Joint Conference on Neural Networks. IJCNN-91-Seattle International Joint Conference on Neural Networks. Seattle, Washington, USA: IEEE.
  69. Hoskins, J.C.; Himmelblau, D.M. (1992). "Process control via artificial neural networks and reinforcement learning". Computers & Chemical Engineering. 16 (4): 241–251.
  70. Bertsekas, D.P.; Tsitsiklis, J.N. (1996). Neuro-dynamic programming. Athena Scientific. p. 512.
  71. 71.0 71.1 71.2 NEURAL NETWORKS AND REINFORCEMENT LEARNING 互聯網檔案館歸檔,歸檔日期2018年10月24號,. (PDF).
  72. Miller, W. T., Werbos, P. J., & Sutton, R. S. (Eds.). (1995). Neural networks for control. MIT press.
  73. Tsitsiklis, J., (1994), 'Asynchronous Stochastic Approximation and Q-learning. Machine Learning'.
  74. Ganesan, N. "Application of Neural Networks in Diagnosing Cancer Disease Using Demographic Data" (PDF). International Journal of Computer Applications.
  75. Bottaci, Leonardo. "Artificial Neural Networks Applied to Outcome Prediction for Colorectal Cancer Patients in Separate Institutions" (PDF). The Lancet.
  76. Djavan, B., Remzi, M., Zlotta, A., Seitz, C., Snow, P., & Marberger, M. (2002). Novel artificial neural network for early detection of prostate cancer. Journal of Clinical Oncology, 20(4), 921-929.
  77. Alizadeh, Elaheh; Lyons, Samanthe M; Castle, Jordan M; Prasad, Ashok (2016). "Measuring systematic changes in invasive cancer cell shape using Zernike moments". Integrative Biology. 8 (11): 1183–1193.
  78. Lyons, Samanthe (2016). "Changes in cell shape are correlated with metastatic potential in murine". Biology Open. 5(3): 289–299.
  79. Nix, R.; Zhang, J. (May 2017). "Classification of Android apps and malware using deep neural networks". 2017 International Joint Conference on Neural Networks (IJCNN): 1871–1878.
  80. 80.0 80.1 "Machine Learning: Detecting malicious domains with Tensorflow". The Coruscan Project.
  81. "Detecting Malicious URLs". The systems and networking group at UCSD.
  82. Ghosh, S., & Reilly, D. L. (1994, January). Credit card fraud detection with a neural-network. In System Sciences, 1994. Proceedings of the Twenty-Seventh Hawaii International Conference on (Vol. 3, pp. 621-630). IEEE.
  83. Nabian, Mohammad Amin; Meidani, Hadi (28 August 2017). "Deep Learning for Accelerated Reliability Analysis of Infrastructure Networks". Computer-Aided Civil and Infrastructure Engineering. 33 (6): 443–458.
  84. Nabian, Mohammad Amin; Meidani, Hadi (2018). "'Accelerating Stochastic Assessment of Post-Earthquake Transportation Network Connectivity via Machine-Learning-Based Surrogates". Transportation Research Board 97th Annual Meeting.
  85. Díaz, E.; Brotons, V.; Tomás, R. (September 2018). "Use of artificial neural networks to predict 3-D elastic settlement of foundations on soils with inclined bedrock". Soils and Foundations. 58 (6): 1414–1422.
  86. Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." Nature, 529.7587 (2016): 484.
  87. Sengupta, Nandini; Sahidullah, Md; Saha, Goutam (August 2016). "Lung sound classification using cepstral-based statistical features". Computers in Biology and Medicine. 75 (1): 118–129.
  88. Choy, Christopher B., et al. "3d-r2n2: A unified approach for single and multi-view 3d object reconstruction." European conference on computer vision. Springer, Cham, 2016.
  89. Roman M. Balabin; Ekaterina I. Lomakina (2009). "Neural network approach to quantum-chemistry data: Accurate prediction of density functional theory energies". J. Chem. Phys. 131 (7): 074104.
  90. French, Jordan (2016). "The time traveller's CAPM". Investment Analysts Journal. 46 (2): 81–96.
  91. Bahdanau, D., Cho, K., & Bengio, Y. (2014). Neural machine translation by jointly learning to align and translate. arXiv preprint arXiv:1409.0473.
  92. 92.0 92.1 Image Classification using Deep Neural Networks — A beginner friendly approach using TensorFlow. Towards Data Science.
  93. Parisi, R., Di Claudio, E. D., Lucarelli, G., & Orlandi, G. (1998, May). Car plate recognition by neural networks and image processing. In ISCAS'98. Proceedings of the 1998 IEEE International Symposium on Circuits and Systems (Cat. No. 98CH36187) (Vol. 3, pp. 195-198). IEEE.
  94. Egmont-Petersen, M., de Ridder, D., & Handels, H. (2002). Image processing with neural networks—a review. Pattern recognition, 35(10), 2279-2301.
  95. Sengupta, Nandini; Sahidullah, Md; Saha, Goutam (August 2016). "Lung sound classification using cepstral-based statistical features". Computers in Biology and Medicine. 75 (1): 118–129.
  96. Fukushima, K. (1980). "Neocognitron: A self-organizing neural network model for a mechanism of pattern recognition unaffected by shift in position". Biol. Cybern. 36 (4): 193–202.
  97. Ran, Lingyan; Zhang, Yanning; Zhang, Qilin; Yang, Tao (12 June 2017). "Convolutional Neural Network-Based Robot Navigation Using Uncalibrated Spherical Images". Sensors. 17 (6): 1341.
  98. LeCun et al., "Backpropagation Applied to Handwritten Zip Code Recognition," Neural Computation, 1, pp. 541–551, 1989.
  99. Szegedy, Christian; Liu, Wei; Jia, Yangqing; Sermanet, Pierre; Reed, Scott; Anguelov, Dragomir; Erhan, Dumitru; Vanhoucke, Vincent; Rabinovich, Andrew (2014). Going Deeper with Convolutions. Computing Research Repository.
  100. Image Classifier - Cats vs Dogs. Medium.
  101. All the Steps to Build your first Image Classifier (with code). Towards Data Science.
  102. J. Gantz and D. Reinsel, Extracting Value from Chaos. Hopkinton, MA, USA: EMC, Jun. 2011.
  103. Larochelle, Hugo; Erhan, Dumitru; Courville, Aaron; Bergstra, James; Bengio, Yoshua (2007). An Empirical Evaluation of Deep Architectures on Problems with Many Factors of Variation. Proceedings of the 24th International Conference on Machine Learning. ICML '07. New York, NY, USA: ACM. pp. 473–480.
  104. Deep Learning : Deep Belief Network Fundamentals. Medium.
  105. Hinton GE (2010). "A Practical Guide to Training Restricted Boltzmann Machines". Tech. Rep. UTML TR 2010-003.
  106. Bengio Y (2009). "Learning Deep Architectures for AI". Foundations and Trends in Machine Learning. 2 (1): 1–127.
  107. Al-Jarrah, O. Y., Yoo, P. D., Muhaidat, S., Karagiannidis, G. K., & Taha, K. (2015). Efficient machine learning for big data: A review. Big Data Research, 2(3), 87-93.
  108. 108.0 108.1 108.2 108.3 Sepp Hochreiter; Jürgen Schmidhuber (1997). "Long short-term memory". Neural Computation. 9(8): 1735–1780.
  109. Bayer, Justin; Wierstra, Daan; Togelius, Julian; Schmidhuber, Jürgen (14 September 2009). Evolving Memory Cell Structures for Sequence Learning (PDF). Artificial Neural Networks – ICANN 2009. Lecture Notes in Computer Science. 5769. Springer, Berlin, Heidelberg. pp. 755–764.
  110. Gers, F. A., Schraudolph, N. N., & Schmidhuber, J. (2002). Learning precise timing with LSTM recurrent networks. Journal of machine learning research, 3(Aug), 115-143.
  111. Fernández, Santiago; Graves, Alex; Schmidhuber, Jürgen (2007). "Sequence labelling in structured domains with hierarchical recurrent neural networks". In Proc. 20th Int. Joint Conf. On Artificial Intelligence, Ijcai 2007: 774–779.
  112. Graves, Alex; Fernández, Santiago; Gomez, Faustino (2006). "Connectionist temporal classification: Labelling unsegmented sequence data with recurrent neural networks". In Proceedings of the International Conference on Machine Learning, ICML 2006: 369–376.
  113. 113.0 113.1 THE BLACK BOX PROBLEM CLOSES IN ON NEURAL NETWORKS. The Next Platform.
  114. Trust, and don’t verify: the AI black box problem. Medium.
  115. Peres, D. J.; Iuppa, C.; Cavallaro, L.; Cancelliere, A.; Foti, E. (1 October 2015). "Significant wave height record extension by neural networks and reanalysis wind data". Ocean Modelling. 94: 128–140.
  116. Dwarakish, G. S.; Rakshith, Shetty; Natesan, Usha (2013). "Review on Applications of Neural Network in Coastal Engineering". Artificial Intelligent Systems and Machine Learning. 5 (7): 324–331.
  117. Dewdney, A. K. (1 April 1997). Yes, we have no neutrons: an eye-opening tour through the twists and turns of bad science. Wiley. p. 82.
  118. Holzinger, Andreas; Plass, Markus; Holzinger, Katharina; Crisan, Gloria Cerasela; Pintea, Camelia-M.; Palade, Vasile (3 August 2017). "A glass-box interactive machine learning approach for solving NP-hard problems with the human-in-the-loop". arXiv:1708.01104
  119. Adrian, Edward D. (1926). "The impulses produced by sensory nerve endings". The Journal of Physiology. 61 (1): 49–72.
  120. Kandel ER, Schwartz JH, Jessell TM (2003). "Chapter 55: The formation and regeneration of synapses". Principles of Neural Science (fourth ed.). Cambridge: McGrawHill.
  121. Crick, Francis (1989). "The recent excitement about neural networks". Nature. 337(6203): 129–132.
  122. 122.0 122.1 122.2 Edwards, Chris (25 June 2015). "Growing pains for deep learning". Communications of the ACM. 58 (7): 14–16.
  123. Schmidhuber, Jürgen (2015). "Deep learning in neural networks: An overview". Neural Networks. 61: 85–117.
  124. "A Survey of FPGA-based Accelerators for Convolutional Neural Networks", NCAA, 2018.
  125. 125.0 125.1 McCulloch, Warren S.; Pitts, Walter. A logical calculus of the ideas immanent in nervous activity. The bulletin of mathematical biophysics. 1943-12-01, 5 (4): 115–133.
  126. Hebb, D.O. (1949). The Organization of Behavior. New York: Wiley & Sons.
  127. Farley, B.G.; W.A. Clark (1954). "Simulation of Self-Organizing Systems by Digital Computer". IRE Transactions on Information Theory. 4 (4): 76–84.
  128. Rochester, N.; J.H. Holland; L.H. Habit; W.L. Duda (1956). "Tests on a cell assembly theory of the action of the brain, using a large digital computer". IRE Transactions on Information Theory. 2 (3): 80–93.
  129. Rosenblatt, F. (1958). "The Perceptron: A Probabilistic Model For Information Storage And Organization In The Brain". Psychological Review. 65 (6): 386–408.
  130. 130.0 130.1 Werbos, P.J. (1975). Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences.
  131. Schmidhuber, J. (2015). "Deep Learning in Neural Networks: An Overview". Neural Networks. 61: 85–117.
  132. Ivakhnenko, A. G. (1973). Cybernetic Predicting Devices. CCM Information Corporation.
  133. Rumelhart, D.E; McClelland, James (1986). Parallel Distributed Processing: Explorations in the Microstructure of Cognition. Cambridge: MIT Press.
  134. Qian, N.; Sejnowski, T.J. (1988). "Predicting the secondary structure of globular proteins using neural network models". Journal of Molecular Biology. 202. pp. 865–884. Qian1988.
  135. Rost, B.; Sander, C. (1993). "Prediction of protein secondary structure at better than 70% accuracy". Journal of Molecular Biology. 232. pp. 584–599. Rost1993.
  136. Strukov, D. B.; Snider, G. S.; Stewart, D. R.; Williams, R. S. The missing memristor found. Nature. 2008, 453: 80–83.
  137. AI Painter.
  138. 2012 Kurzweil AI Interview with Jürgen Schmidhuber on the eight competitions won by his Deep Learning team 2009–2012 互聯網檔案館歸檔,歸檔日期2018年8月31號,..