人工神經網路/神經網路基礎
人工神經網路,也稱為“人工神經網路”、“神經網路”或簡稱 ANN,是一種計算工具,其模型是人類大腦和其他生物的神經系統中神經元之間的相互連線。生物神經網路 (BNN) 是 ANN 的自然對應物。BNN 和 ANN 都是由稱為“神經元”的原子元件構建的網路系統。人工神經網路與生物網路有很大不同,儘管生物系統中的許多概念和特徵在人工系統中得到了忠實地再現。人工神經網路是一種非線性處理系統,非常適合各種任務,特別是沒有現有演算法可以完成任務的任務。ANN 可以透過教學方法和樣本資料來訓練以解決某些問題。這樣,相同結構的 ANN 可以根據接收到的訓練執行不同的任務。經過適當訓練,ANN 能夠進行泛化,即識別不同輸入模式之間的相似性,尤其是受噪聲影響的模式。
術語“神經網路”指的是生物和人工變體,儘管通常該術語僅用於指代人工系統。在數學上,神經網路是非線性的。每一層代表來自前一層的非線性函式的非線性組合。每個神經元都是一個多輸入、多輸出 (MIMO) 系統,它接收來自輸入的訊號,產生一個結果訊號,並將該訊號傳輸到所有輸出。實際上,ANN 中的神經元排列成層。與環境互動以接收輸入的第一層稱為輸入層。與輸出互動以呈現處理資料的最後一層稱為輸出層。輸入層和輸出層之間的沒有與環境互動的層稱為隱藏層。增加 ANN 的複雜性,從而增加其計算能力,需要新增更多隱藏層和每層更多神經元。
生物神經元以非常複雜的網路連線。人腦的某些區域,例如小腦,由非常規則的神經元模式組成。大腦的其他區域,例如大腦,排列不那麼規則。典型的生物神經系統擁有數百萬甚至數十億個細胞,每個細胞都與其他神經元有數千個相互連線。目前的人工系統無法達到這種複雜程度,因此無法精確地再現生物系統的行為。
在人工神經網路中,神經元可以有多種形式,通常被稱為處理元素 (PE) 以區別於生物等效物。PE 連線成特定的網路模式,不同的模式服務於不同的功能目的。與具有化學相互連線的生物神經元不同,人工系統中的 PE 僅是電氣化的,可以是模擬的、數字的或混合的。但是,為了再現突觸的效果,PE 之間的連線被賦予了乘法權重,這些權重可以校準或“訓練”以產生正確的系統輸出。
處理元素通常用兩個方程來定義,這兩個方程代表神經元的麥卡洛克-皮茨模型
[麥卡洛克-皮茨模型]
其中 ζ 是輸入的加權和(輸入向量和抽頭權重向量的內積),σ(ζ) 是加權和的函式。如果我們認識到權重和輸入元素構成向量 w 和 x,則 ζ 加權和變為一個簡單的點積

這可以稱為啟用函式(在閾值比較的情況下)或傳遞函式。右邊的圖片以圖解方式顯示了這種關係。神經元中心的虛線代表使用權重向量計算輸入總和和使用啟用函式計算輸出值之間的分界線。在實際的人工神經元中,這種分界線可能不會明確地劃分。
網路的輸入 x 來自輸入空間,系統輸出是輸出空間的一部分。對於某些網路,輸出空間 Y 可能很簡單,例如 {0, 1},或者它可能是一個複雜的多維空間。神經網路傾向於在輸入空間的每個自由度有一個輸入,在輸出空間的每個自由度有一個輸出。
抽頭權重向量在訓練期間透過各種演算法更新。其中最流行的一種是反向傳播演算法,我們將在後面更詳細地討論。
人工神經網路具有一些特性,使其成為傳統問題解決技術的吸引人替代方案。使用神經網路的兩種主要替代方案是開發演算法解決方案和使用專家系統。
當有足夠的資料和底層理論資訊時,就會出現演算法方法。透過理解資料和資料之間的理論關係,我們可以直接從問題空間計算未知的解。普通馮·諾依曼計算機可以用來從數值演算法中快速有效地計算這些關係。
相反,專家系統用於缺乏足夠的資料和理論背景來建立任何可靠問題模型的情況。在這些情況下,人類專家的知識和推理被編入專家系統。專家系統透過收集資訊並以定向的方式遍歷解決方案空間來模擬人類專家的演繹過程。專家系統通常能夠在缺乏準確問題模型和完整資料的情況下表現出色。然而,在有足夠的資料或演算法解決方案的情況下,專家系統並不是理想的選擇。
人工神經網路對於資料豐富但理論基礎薄弱的情況非常有用。這些資料通常透過大量實驗獲得,可能是非線性的、非平穩的或混沌的,因此難以建模。輸入-輸出空間可能非常複雜,以至於使用專家系統進行合理的遍歷不是一個令人滿意的選擇。重要的是,神經網路不需要對問題空間進行任何先驗假設,甚至不需要關於統計分佈的資訊。雖然不需要這樣的假設,但人們發現,新增諸如輸入空間的統計分佈之類的先驗資訊有助於加快訓練速度。許多數學問題模型傾向於假設資料位於標準分佈模式中,例如高斯分佈或麥克斯韋-玻爾茲曼分佈。神經網路不需要這樣的假設。在訓練過程中,神經網路執行必要的分析工作,如果使用其他方法,則分析人員需要付出非凡的努力。
學習是智慧系統的一個基本組成部分,儘管很難對學習做出精確的定義。就人工神經網路而言,學習通常發生在特定的訓練階段。一旦網路訓練完畢,它就會進入生產階段,在此階段它會獨立生成結果。訓練可以採用許多不同的形式,使用學習正規化、學習規則和學習演算法的組合。具有明顯學習和生產階段的系統稱為靜態網路。能夠在生產過程中繼續學習的網路被稱為動力系統。
學習正規化是監督的、無監督的或兩者的混合,反映了訓練資料向神經網路呈現的方式。將監督學習和無監督學習結合在一起的方法被稱為混合方法。學習規則是用於訓練系統的各種方法模型,也是對要產生的結果型別目標。學習演算法是用於在每次訓練迭代期間更新神經元間突觸權重的特定數學方法。在每個學習規則下,可以使用各種可能的學習演算法。大多數演算法只能與單個學習規則一起使用。學習規則和學習演算法通常可以與監督學習或無監督學習正規化一起使用,但是,它們將產生不同的效果。
過度訓練是當提供太多訓練示例時出現的問題,系統變得無法進行有用的泛化。當網路中的神經元過多,計算能力超過輸入空間的維數時,也會發生這種情況。在訓練過程中,必須注意不要提供太多輸入示例,不同的訓練示例數量會導致網路質量和魯棒性的結果大不相同。
在設計神經網路時,必須確定許多不同的引數。這些引數包括層數、每層的神經元數量、訓練迭代次數等等。就訓練和網路容量而言,一些更重要的引數是隱藏神經元數量、學習率和動量引數。
隱藏神經元是既不在輸入層也不在輸出層的神經元。這些神經元本質上是隱藏的,它們的數量和組織通常可以被視為與系統互動的人員的“黑箱”。使用額外的隱藏神經元層可以增強處理能力和系統靈活性。這種額外的靈活性是以訓練演算法的額外複雜性為代價的。隱藏神經元過多類似於方程組的方程式數量大於自由變數的數量:系統過度指定,無法進行泛化。相反,隱藏神經元太少會阻止系統正確擬合輸入資料,並降低系統的魯棒性。


資料型別:整數域: [1, ∞) 典型值: 8
含義:隱藏層中的神經元數量(除了輸入層和輸出層以外的附加層,不連線到外部)。
資料型別:實數域: [0, 1] 典型值: 0.3
含義:學習率。訓練引數,控制學習演算法中權重和偏差變化的大小。
資料型別:實數域: [0, 1] 典型值: 0.9
含義:動量只是將前一個權重更新的一小部分 m 新增到當前權重更新中。動量引數用於防止系統收斂到區域性最小值或鞍點。較高的動量引數還有助於提高系統收斂速度。但是,將動量引數設定得太高可能會造成越過最小值的風險,這會導致系統變得不穩定。動量係數過低無法可靠地避免區域性最小值,也會減緩系統的訓練速度。
資料型別:整數域: [0, 1] 典型值: 1
含義: 0 = 按週期訓練,1 = 按最小誤差訓練
資料型別:整數域: [1, ∞) 典型值: 5000000
含義:當迭代次數超過週期時,確定訓練何時停止。當按最小誤差訓練時,這代表最大迭代次數。
資料型別:實數域: [0, 0.5] 典型值: 0.01
含義:週期的最小均方誤差。網路目標與實際輸出之間平方差的平方和除以模式數量的平方根(僅適用於按最小誤差訓練)。
- 儲存庫 在 GitHub 上。