人工神經網絡

人工神經網絡（artificial neural network，ANNs）又稱人工神經網絡，簡稱神經網路（neural network，NNs），在機器學習和認知科學領域，是一種模仿生物神經網路（動物的中樞神經系統，特別是大腦）的結構和功能的數學模型或計算模型，用於對函數進行估計或近似。神經網路由大量的人工神經元聯結進行計算。大多數情況下人工神經網絡能在外界資訊的基礎上改變內部結構，是一種自適應系統，通俗地講就是具備學習功能。現代神經網路是一種非線性統計性數據建模(機率模型)工具，神經網路通常是透過一個基於數學統計學類型的學習方法得以優化，所以也是數學統計學方法的一種實際應用，透過統計學的標準數學方法我們能夠得到大量的可以用函數來表達的局部結構空間，另一方面在人工智慧學的人工感知領域，我們透過數學統計學的應用可以來做人工感知方面的決定問題（也就是說透過統計學的方法，人工神經網絡能夠類似人一樣具有簡單的決定能力和簡單的判斷能力），這種方法比起正式的邏輯學推理演算更具有優勢。

和其他機器學習方法一樣，神經網路已經被用於解決各種各樣的問題，例如機器視覺和語音識別。這些問題都是很難被傳統基於規則的編程所解決的。

## 背景

對人類中樞神經系統的觀察啟發了人工神經網絡這個概念。在人工神經網絡中，節點（node）是構成人工神經網絡的數位化元素，是網路中任何的連接點；人工神經元（neuron）屬於一種節點，特指人工神經網絡中基本的計算或處理單元，連接在一起形成一個類似生物神經網路的網狀結構。

人工神經網絡目前沒有一個統一的正式定義。不過，具有下列特點的統計模型可以被稱作是「神經化」的：

- 具有一組可以被調節的權重（被學習演算法調節的數值參數）
- 可以估計輸入數據的非線性函數關係

這些可調節的權重可以被看做神經元之間的連接強度。

人工神經網絡與生物神經網路的相似之處在於，它可以集體地、並行地計算函數的各個部分，而不需要描述每一個單元的特定任務。神經網路這個詞一般指統計學、認知心理學和人工智慧領域使用的模型，而控制中央神經系統的神經網路屬於計算神經科學。

在神經網路的現代軟體實現中，由生物學啟發的方法已經有了很重大的延伸，現在主流的是基於統計學和信號處理的更加實用的方法。在一些軟體系統中，神經網路或者神經網路的一部分（例如人工神經元）是大型系統中的一個部分。這些系統結合了適應性的和非適應性的元素。雖然這種系統使用的這種更加普遍的方法更適宜解決現實中的問題，但是這和傳統的連接主義人工智慧已經沒有什麼關聯了。不過它們還有一些共同點：非線性、分布式、並行化，局部性計算以及適應性。從歷史的角度講，神經網路模型的應用標誌著二十世紀八十年代後期從高度符號化的人工智慧（以用條件規則表達知識的專家系統為代表）向低符號化的機器學習（以用動力系統的參數表達知識為代表）的轉變。

## 歷史

沃倫·麥卡洛克和沃爾特·皮茨（1943）基於數學和一種稱為閾值邏輯的演算法創造了一種神經網路的計算模型。這種模型使得神經網路的研究分裂為兩種不同研究思路。一種主要關注大腦中的生物學過程，另一種主要關注神經網路在人工智慧裡的應用。

### 赫布型學習

二十世紀40年代後期，心理學家唐納德·赫布根據神經可塑性的機制創造了一種對學習的假說，現在稱作赫布型學習。赫布型學習被認為是一種典型的非監督式學習規則，它後來的變種是長期增強作用的早期模型。從1948年開始，研究人員將這種計算模型的思想應用到B型圖靈機上。

法利和韋斯利·A·克拉克(Wesley Allison Clark )（1954）首次使用電腦，當時稱作計算器，在MIT模擬了一個赫布網路。納撒尼爾·羅切斯特（1956）等人模擬了一台 IBM 704電腦上的抽象神經網路的行為。

弗蘭克·羅森布拉特創造了感知機。這是一種模式識別演算法，用簡單的加減法實現了兩層的電腦學習網路。羅森布拉特也用數學符號描述了基本感知機里沒有的迴路，例如異或迴路。這種迴路一直無法被神經網路處理，直到保羅·韋伯斯(1975)創造了反向傳播算法。

在馬文·明斯基和西摩爾·派普特（1969）發表了一項關於機器學習的研究以後，神經網路的研究停滯不前。他們發現了神經網路的兩個關鍵問題。第一是基本感知機無法處理異或迴路。第二個重要的問題是電腦沒有足夠的能力來處理大型神經網路所需要的很長的計算時間。直到電腦具有更強的計算能力之前，神經網路的研究進展緩慢。

### 反向傳播算法與復興

後來出現的一個關鍵的進展是保羅·韋伯斯發明的反向傳播算法（Werbos 1975）。這個演算法有效地解決了異或的問題，還有更普遍的訓練多層神經網路的問題。

在二十世紀80年代中期，分布式並行處理（當時稱作聯結主義）流行起來。戴維·魯姆哈特和詹姆斯·麥克里蘭德的教材對於聯結主義在電腦模擬神經活動中的應用提供了全面的論述。

神經網路傳統上被認為是大腦中的神經活動的簡化模型，雖然這個模型和大腦的生理結構之間的關聯存在爭議。人們不清楚人工神經網絡能多大程度地反映大腦的功能。

支持向量機和其他更簡單的方法（例如線性分類器）在機器學習領域的流行度逐漸超過了神經網路，但是在2000年代後期出現的深度學習重新激發了人們對神經網路的興趣。

### 2006年之後的進展

人們用CMOS創造了用於生物物理模擬和神經形態計算的計算裝置。最新的研究顯示了用於大型主成分分析和卷積神經網絡的納米裝置具有良好的前景。如果成功的話，這會創造出一種新的神經計算裝置，因為它依賴於學習而不是編程，並且它從根本上就是模擬的而不是數位化的，雖然它的第一個實例可能是數位化的CMOS裝置。

在2009到2012年之間，于爾根·施密德胡伯在瑞士研究小組(Dalle Molle Institute for Artificial Intelligence)的研發的循環神經網絡和深前饋神經網絡贏得了8項關於模式識別和機器學習的國際比賽。例如，艾力克斯·格雷夫斯的雙向、多維的LSTM贏得了2009年ICDAR的3項關於連筆字識別的比賽，而且之前並不知道關於將要學習的3種語言的資訊。

IDSIA的丹·奇爾桑 (Dan Ciresan)和同事根據這個方法編寫的基於GPU的實現贏得了多項模式識別的比賽，包括IJCNN 2011交通標誌識別比賽等等。他們的神經網路也是第一個在重要的基準測試中（例如IJCNN 2012交通標誌識別和NYU的楊立昆的MNIST手寫數字問題）能達到或超過人類水平的人工模式識別器。

類似1980年福島邦彥(Kunihiko Fukushima )發明的neocognitron和視覺標準結構（由David H. Hubel和Torsten Wiesel在初級視皮層中發現的那些簡單而又複雜的細胞啟發）那樣有深度的、高度非線性的神經結構可以被多倫多大學傑弗里·辛頓實驗室的非監督式學習方法所訓練。2012年，神經網路出現了快速的發展，主要原因在於計算技術的提高，使得很多複雜的運算變得成本低廉。以AlexNet為標誌，大量的深度網路開始出現。

2014年出現了殘差神經網絡，該網路極大解放了神經網路的深度限制，出現了深度學習的概念。

## 構成

典型的人工神經網絡具有以下三個部分：

- 結構（Architecture）結構指定了網路中的變量和它們的拓撲關係。例如，神經網路中的變量可以是神經元連接的權重（weights）和神經元的激勵值（activities of the neurons）。
- 激勵函數（Activation Rule）大部分神經網路模型具有一個短時間尺度的動力學規則，來定義神經元如何根據其他神經元的活動來改變自己的激勵值。一般激勵函數依賴於網路中的權重（即該網路的參數）。
- 學習規則（Learning Rule）學習規則指定了網路中的權重如何隨著時間推進而調整。這一般被看做是一種長時間尺度的動力學規則。一般情況下，學習規則依賴於神經元的激勵值。它也可能依賴於監督者提供的目標值和當前權重的值。例如，用於手寫識別的一個神經網路，有一組輸入神經元。輸入神經元會被輸入圖像的數據所激發。在激勵值被加權並透過一個函數（由網路的設計者確定）後，這些神經元的激勵值被傳遞到其他神經元。這個過程不斷重複，直到輸出神經元被激發。最後，輸出神經元的激勵值決定了識別出來的是哪個字母。

## 神經元

神經元示意圖：

- a1~an為輸入向量的各個分量
- w1~wn為神經元各個突觸的權重值(weight)
- b為偏置(bias)
- f為傳遞函數，通常為非線性函數。一般有traingd,tansig,hardlim。以下默認為hardlim
- t為神經元輸出

數學表示$$t = f(\vec{W'}\vec{A}+b)$$

- $\vec{W}$為權向量，$\vec{W'}$為$\vec{W}$的轉置
- $\vec{A}$為輸入向量
- $b$為偏置
- $f$為傳遞函數

可見，一個神經元的功能是求得輸入向量與權向量的內積後，經一個非線性傳遞函數得到一個標量結果。

單個神經元的作用：把一個n維向量空間用一個超平面分割成兩部分（稱之為判斷邊界），給定一個輸入向量，神經元可以判斷出這個向量位於超平面的哪一邊。

該超平面的方程：$\vec{W'}\vec{p}+b=0$

- $\vec{W}$權向量
- $b$偏置
- $\vec{p}$超平面上的向量

## 神經元網路

### 單層神經元網路

是最基本的神經元網路形式，由有限個神經元構成，所有神經元的輸入向量都是同一個向量。由於每一個神經元都會產生一個標量結果，所以單層神經元的輸出是一個向量，向量的維數等於神經元的數目。

示意圖：

## 人工神經網絡的實用性

人工神經網絡是一個能夠學習，能夠總結歸納的系統，也就是說它能夠透過已知數據的實驗運用來學習和歸納總結。人工神經網絡透過對局部情況的對照比較（而這些比較是基於不同情況下的自動學習和要實際解決問題的複雜性所決定的），它能夠推理產生一個可以自動識別的系統。與之不同的基於符號系統下的學習方法，它們也具有推理功能，只是它們是建立在邏輯演演算法的基礎上，也就是說它們之所以能夠推理，基礎是需要有一個推理演演算法則的集合。

## 人工神經元網路模型

通常來說，一個人工神經元網路是由一個多層神經元結構組成，每一層神經元擁有輸入（它的輸入是前一層神經元的輸出）和輸出，每一層（我們用符號記做）Layer(i)是由Ni(Ni代表在第i層上的N)個網路神經元組成，每個Ni上的網路神經元把對應在Ni-1上的神經元輸出做為它的輸入，我們把神經元和與之對應的神經元之間的連線用生物學的名稱，叫做突觸（Synapse），在數學模型中每個突觸有一個加權數值，我們稱做權重，那麼要計算第i層上的某個神經元所得到的勢能等於每一個權重乘以第i-1層上對應的神經元的輸出，然後全體求和得到了第i層上的某個神經元所得到的勢能，然後勢能數值透過該神經元上的激活函數（activation function，常是∑函數（Sigmoid function）以控制輸出大小，因為其可微分且連續，方便差量規則（Delta rule）處理。），求出該神經元的輸出，注意的是該輸出是一個非線性的數值，也就是說透過激勵函數求的數值根據極限值來判斷是否要激活該神經元，換句話說我們對一個神經元網路的輸出是否線性不感興趣。

## 基本結構

一種常見的多層結構的前饋網路（Multilayer Feedforward Network）由三部分組成。

- 輸入層（Input layer），眾多神經元（Neuron）接受大量非線形輸入訊息。輸入的訊息稱為輸入向量。
- 輸出層（Output layer），訊息在神經元鏈接中傳輸、分析、權衡，形成輸出結果。輸出的訊息稱為輸出向量。
- 隱藏層（Hidden layer），簡稱「隱層」，是輸入層和輸出層之間眾多神經元和鏈接組成的各個層面。隱層可以有一層或多層。隱層的節點（神經元）數目不定，但數目越多神經網路的非線性越顯著，從而神經網路的強健性（控制系統在一定結構、大小等的參數攝動下，維持某些性能的特性）更顯著。習慣上會選輸入節點1.2至1.5倍的節點。

這種網路一般稱為感知器（對單隱藏層）或多層感知器（對多隱藏層），神經網路的類型已經演變出很多種，這種分層的結構也並不是對所有的神經網路都適用。

## 學習過程

通過訓練樣本的校正，對各個層的權重進行校正（learning）而建立模型的過程，稱為自動學習過程（training algorithm）。具體的學習方法則因網路結構和模型不同而不同，常用反向傳播算法（Backpropagation/倒傳遞/逆傳播，以output利用一次微分來修正weight）來驗證。

## 種類

人工神經網絡分類為以下兩種：

1.依學習策略（Algorithm）分類主要有：

- 監督式學習網路（Supervised Learning Network）為主
- 無監督式學習網路（Unsupervised Learning Network）
- 混合式學習網路（Hybrid Learning Network）
- 聯想式學習網路（Associate Learning Network）
- 最適化學習網路（Optimization Application Network）

2.依網路架構（Connectionism）分類主要有：

- 前饋神經網絡（Feed Forward Network）
- 循環神經網絡（Recurrent Network）
- 強化式架構（Reinforcement Network）

## 理論性質

### 計算能力

多層感知器（Multilayer Perceptron，縮寫MLP）是一個通用的函數逼近器，由Cybenko定理證明。然而，證明不依賴特定的神經元數量或權重。Hava Siegelmann和Eduardo D. Sontag的工作證明了，一個具有有理數權重值的特定遞歸結構（與全精度實數權重值相對應）由有限個神經元和標準的線性關係構成的神經網路相當於一個通用圖靈機。他們進一步表明，使用無理數權重值會產生一個超圖靈機。

### 容量

人工神經網絡模型有一個屬性，稱為「容量」，這大致相當於他們記住（而非正確分類）輸入數據的能力。它與網路的參數、和結構有關。谷歌在研究中使用打亂標籤的方法，來測試模型是否能記住所有的輸出。雖然很明顯，這樣模型在測試集上的表現幾乎是隨機猜測，但是模型能夠記住所有訓練集的輸入數據，即記住他們被打亂後的標籤。而記住有限的樣本的資訊（Expressivity），需要的模型的參數（權重）數量存在下限。

### 收斂性

模型並不總是收斂到唯一解，因為它取決於一些因素。首先，函數可能存在許多局部極小值，這取決於成本函數和模型。其次，在遠離局部最小值時，優化方法可能無法保證收斂。第三，對大量的數據或參數，一些方法變得不切實際。在一般情況下，我們發現，理論保證的收斂不能成為實際應用的一個可靠的指南。

### 綜合統計

在目標是創建一個普遍系統的應用程式中，過度訓練的問題出現了。這出現在迴旋或過度具體的系統中當網路的容量大大超過所需的自由參數。為了避免這個問題，有兩個方向：第一個是使用交叉驗證和類似的技術來檢查過度訓練的存在和選擇最佳參數如最小化泛化誤差。二是使用某種形式的正規化。這是一個在機率化（貝葉斯）框架里出現的概念，其中的正則化可以透過為簡單模型選擇一個較大的先驗概率模型進行；而且在統計學習理論中，其目的是最大限度地減少了兩個數量：「風險」和「結構風險」，相當於誤差在訓練集和由於過度擬合造成的預測誤差。

## 外部連結

- 神經網路介紹
- Performance comparison of neural network algorithms tested on UCI data sets
- A close view to Artificial Neural Networks Algorithms
- Computers/Artificial_Intelligence/Neural_Networks
- A Brief Introduction to Neural Networks (D. Kriesel) - Illustrated, bilingual manuscript about artificial neural networks; Topics so far: Perceptrons, Backpropagation, Radial Basis Functions, Recurrent Neural Networks, Self Organizing Maps, Hopfield Networks.
- Neural Networks in Materials Science
- A practical tutorial on Neural Networks
- Applications of neural networks
- XOR實例