神经网络技术

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

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

## 背景

對人類中樞神經系統的觀察啟發了人工神經網路這個概念。在人工神經網路中，簡單的人工節點，稱作神經元（neurons），連接在一起形成一個類似生物神經網路的網狀結構。

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

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

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

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

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

## 歷史

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

### 赫布型學習

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

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

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

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

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

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

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

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

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

### 2006 年之後的進展

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

在 2009 到 2012 年之間，Jürgen Schmidhuber 在 Swiss AI Lab IDSIA 的研究小組研發的迴圈神經網路和深前饋神經網路贏得了 8 項關於圖型識別和機器學習的國際比賽。例如，艾力克斯・格雷夫斯的雙向、多維的 LSTM 贏得了 2009 年 ICDAR 的 3 項關於連筆字辨識的比賽，而且之前並不知道關於將要學習的 3 種語言的資訊。

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

類似 1980 年福島邦彥發明的 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 利用一次微分 Delta rule 來修正 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 的工作證明了，一個具有有理數權重值的特定遞迴結構（與全精度實數權重值相對應）由有限個神經元和標準的線性關係構成的神經網路相當於一個通用圖靈機。他們進一步表明，使用無理數權重值會產生一個超圖靈機。

### 容量

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

### 收斂性

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

### 綜合統計

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

## 相關

* 機器學習
* 深度學習
* 邏輯迴歸
* 線性迴歸

## 參看

* 感知機
* 多層感知器
* ER 隨機圖

## 參見

* 人工智慧

## 參考文獻

## 外部連結

* 神經網路介紹 （頁面存檔備份，存於網際網路檔案館）
* Performance comparison of neural network algorithms tested on UCI data sets （頁面存檔備份，存於網際網路檔案館）
* A close view to Artificial Neural Networks Algorithms （頁面存檔備份，存於網際網路檔案館）
* 開放式目錄計劃中和 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 實例 （頁面存檔備份，存於網際網路檔案館）