神經網路模型的分類
人工神經網路的模型很多,可以按照不同的方法進行分類。其中,常見的兩種分類方法是,按照網路連接的拓樸結構分類和按照網路內部的信息流向分類。
1 按照網路拓樸結構分類
網路的拓樸結構,即神經元之間的連接方式。按此劃分,可將神經網路結構分為兩大類:層次型結構和互聯型結構。
層次型結構的神經網路將神經元按功能和順序的不同分為輸出層、中間層(隱層)、輸出層。輸出層各神經元負責接收來自外界的輸入信息,並傳給中間各隱層神經元;隱層是神經網路的內部信息處理層,負責信息變換。根據需要可設計為一層或多層;最後一個隱層將信息傳遞給輸出層神經元經進一步處理後向外界輸出信息處理結果。
而互連型網路結構中,任意兩個節點之間都可能存在連接路徑,因此可以根據網路中節點的連接程度將互連型網路細分為三種情況:全互連型、局部互連型和稀疏連接型
2 按照網路信息流向分類
從神經網路內部信息傳遞方向來看,可以分為兩種類型:前饋型網路和反饋型網路。
單純前饋網路的結構與分層網路結構相同,前饋是因網路信息處理的方向是從輸入層到各隱層再到輸出層逐層進行而得名的。前饋型網路中前一層的輸出是下一層的輸入,信息的處理具有逐層傳遞進行的方向性,一般不存在反饋環路。因此這類網路很容易串聯起來建立多層前饋網路。
反饋型網路的結構與單層全互連結構網路相同。在反饋型網路中的所有節點都具有信息處理功能,而且每個節點既可以從外界接受輸入,同時又可以向外界輸出。
『貳』 論文筆記-卷積神經網路中的感受野
感受野(receptive field或者field of view)是卷積神經網路中的一個基本概念。與全連接層中每個輸出值都與全部輸入特徵值有關不同的是,卷積層的一個輸出值只與一部分的輸入特徵值有關。輸入特徵值中與輸出特徵值有關的部分就是它的感受野。
對於處於中心位置的特徵值,對於輸出的影響會更大,根據實驗結果在一個接受野的影響分布是高斯分布。由此也引入了一個 有效感受野 的概念,因為高斯分布在中心位置強度更高,然後逐漸向周圍遞減。
我們想用數學的方法來描述一個接收野中的每個輸入像素對網路上一個單元層的輸出的影響程度,並研究這種影響是如何在輸出單元的接收野內分布的。為了簡化符號,我們只考慮每層上的一個信道,但是對於具有更多輸入和輸出的卷積層,可以很容易地得到類似的結果通道。
假設每層上的像素用(i,j)索引,其中心位於(0,0)。表示第層的第(i,j)個像素為 ,其中 作為網路的輸入, 作為第n層的輸出。我們要測量每個 對 貢獻了多少。我們將這個中央輸出單元的有效感受野(ERF)定義為包含任何輸入像素且對其影響不可忽略的區域單位。
本文採用偏導數 ,j來度量 隨 有多大的變化;因此,它是 相對於 重要性的自然度量。然而,這種度量不僅取決於網路的權值,而且在大多數情況下也依賴於輸入,因此我們的大多數結果都是期望值大於輸入分布。
偏導數 可以用反向傳播法計算。在標准設置中,反向傳播傳播相對於某個損耗函數的誤差梯度。假設我們有一個任意的損失函數l,根據鏈式規則,我們有
我們可以設置誤差梯度 和 ,然後將這個梯度從那裡傳播回網路。得到的 ,相當於期望的partial{y_{0,0}}}{partial {x^0_{i,j}}。這里我們使用無顯式損失函數的反向傳播過程,並且該過程可以用標准神經網路輕松實現工具。
在下面我們首先考慮線性網路,其中這個導數不依賴於輸入,而純粹是網路權重和(i,j),它清楚地顯示了感受野中像素的影響是如何分布的。然後我們繼續考慮更現代的架構設計,並討論非線性激活、dropout、子采樣、空洞卷積和跳躍連接對ERF的影響。
2.1最簡單的情況:權值都等於1的卷積層
考慮使用k×k卷積核的步長為1的卷積層的情況,每層一個單通道,無非線性,疊加成一個深線性CNN。在這個分析中,我們忽略了所有層上的偏差。我們首先分析權值都等於1的卷積核。(推理過程公式好多,看原文吧……)
在本節中,我們將實證研究各種深層CNN架構的ERF。我們首先使用人工構造的CNN模型來驗證我們分析中的理論結果。然後,我們提出了在實際數據集上訓練深層cnn時ERF如何變化的觀察結果。對於所有ERF研究,我們在輸出平面的中心放置一個梯度信號1,在其他任何地方放置0,然後通過網路反向傳播該梯度,得到輸入的梯度。
3.1驗證理論結果
我們首先在人工構建的CNN中驗證我們的理論結果。為了計算ERF我們使用隨機輸入,對於所有隨機權重網路,我們進行適當的隨機初始化。在本節中,我們驗證以下內容結果:
ERF是高斯分布的 。如圖所示在圖1中,我們可以觀察到均勻加權卷積核和隨機加權,沒有非線性激活卷積核的完美高斯形狀,以及隨機加權非線性激活的卷積核的近似高斯形狀。加上ReLU非線性使得分布的高斯性變小,因為ERF的分布也取決於輸入。另一個原因是ReLU單元的一半輸入輸出正好為零,而且很容易為輸出平面上的中心像素設置零輸出,這意味著感受野的路徑無法到達輸出,因此梯度都為零。在這里,ERF在不同的傳輸種子下平均運行20次。下圖顯示了具有20層隨機權值、具有不同非線性的網路的ERF。在這里,結果是不同的隨機權重以及不同的隨機輸入平均運行的100次的結果。在這種情況下,感受野更像高斯分布。
絕對增長和 相對收縮 。圖2中,我們給出了ERF尺寸的改變和ERF相對於理論RF的比例隨卷積層數的變化。ERF大小的最佳擬合線在對數域的斜率為0.56,而ERF比值的擬合線斜率為-0.43。這表明ERF大小對於 呈線性增長,ERF比率對於 呈線性縮小。注意這里我們使用2個標准偏差作為ERF大小的測量值,即任何大於中心點1−95.45%的像素都被視為ERF。ERF大小由ERF中像素數目的平方根表示,而理論RF大小是平方的邊長,在該邊長中,所有像素對輸出像素的影響都是非零的,無論多麼小。所有實驗是在超過20次的結果上平均得到的。
3.2在訓練過程中ERF是如何演變的
在這一部分中,我們將研究分類CNN和語義分割CNN最頂層的單元ERF在訓練過程中是如何演變的。對於這兩個任務,我們採用了 ResNet架構,它廣泛地使用了skip-connection。分析表明,該網路的ERF應明顯小於理論感受野。這是我們最初觀察到的。有趣的是,隨著網路的學習,ERF變得更大,並且在訓練結束時,ERF明顯大於初始ERF。
對於分類任務,我們在CIFAR-10數據集上訓練了一個包含17個殘差塊的ResNet。在訓練結束時,該網路的測試准確率達到89%。請注意,在這個實驗中,我們沒有使用池或降采樣,而是專門關注具有跳過連接的體系結構。網路的精確度雖然不是最先進的,但仍然相當高。在圖3中,我們顯示了在訓練開始時(隨機初始化權重)和訓練結束時,當達到最佳驗證精度時,32×32圖像空間上的有效感受野。請注意,我們網路的理論接收場實際上是74×74,大於圖像大小,但是ERF仍然可以完全填充圖像。比較訓練前後的結果,我們發現有效感受野有所增加很明顯。
對於語義分割任務利用CamVid數據集進行城市場景分割。我們訓練了一個「前端」模型,它是一個純粹的卷積網路,它預測輸出的解析度略低。該網路與VGG網路在許多以前的著作中所起的作用相同。我們訓練了一個ResNet,16個殘差塊交錯,每個子采樣操作的因子為2。由於這些子采樣操作,輸出是輸入大小的1/16。對於這個模型,頂層卷積層單元的理論感受野為505×505。然而,如圖3所示,在訓練開始時,ERF只得到直徑為100的部分。我們再次觀察到,在訓練過程中,ERF的尺寸增大,最後達到直徑約為150的直徑。
上述分析表明ERF只佔理論接收野的一小部分,這對於需要較大接收能力的任務是不可取的領域。
新的初始化。 一增加有效感受野的簡單方法是控制初始權重。我們提出了一種新的隨機權值初始化方案,使得卷積核中心的權值具有較小的尺度,而外部的權值較大,這使得中心的集中度向外圍擴散。實際上,我們可以用任何初始化方法對網路進行初始化,然後根據中心低標度、外標度高的分布來調整權重。
在極端情況下,我們可以優化w(m)以使ERF大小最大化,或者等價地使等式(前面推公式部分里的公式)中的方差最大化。解決這個優化問題的結果是在卷積核的4個角上平均地設置權重,而其他地方都是0。但是,使用此解決方案進行隨機權重初始化過於激進,並且將大量權重保留為0會使學習變慢。這種想法的溫和版本通常是有效的更好。
我們用這種初始化方法訓練了一個用於CIFAR-10分類任務的CNN,使用了幾種隨機種子。在一些情況下,與更標準的初始化相比,我們的訓練速度提高了30%。但總的來說,這種方法的好處並不總是如此很重要。
我們請注意,無論我們如何改變w(m),有效感受野仍然是高斯分布的,因此上述建議只解決了問題部分。
改變構架。 一個潛在的更好的方法是對cnn進行架構上的更改,這可能會改變在更基本的方面。例如,我們不用將CNN中的每個單元連接到本地矩形卷積窗口,而是可以使用相同的連接數將每個單元稀疏地連接到下層的一個較大區域。空洞卷積屬於這一類,但我們可以進一步推進,並使用不類似網格的稀疏連接。
與生物神經的聯系網路。 在我們的分析表明,深部CNN中的有效接收場實際上比我們以前想像的要慢得多。這表明即使經過許多卷積層,仍然保留了許多局部信息。這一發現與深層生物網路中一些長期持有的相關概念相矛盾。哺乳動物視覺系統的一個普遍特徵是分為「什麼」和「哪裡」路徑。沿著what或where路徑進行,連通性的性質逐漸改變:感受野大小增加,空間組織變得鬆散,直到沒有明顯的視網膜色素組織;視網膜脫離意味著單個神經元對視野中的面部等物體做出反應。然而,如果ERF比RF小,這表明表示可以保留位置信息,同時也提出了一個有趣的問題,即這些區域在發育過程中的大小變化。
我們的分析的第二個相關影響是,它表明卷積網路可能會自動地產生一種中心凹表現形式。人類視網膜中央凹只在中心像素附近提取高解析度信息。等解析度的子場的排列使得它們的大小隨著距中心的距離而增大固定。在視網膜的外圍,低解析度的信息是從圖像的較大區域提取的。一些神經網路已經明確地構造了這種形式的表示。然而,由於卷積網路形成高斯感受野,其底層表示自然會有這種感受野特性。
與之前研究的聯系。 雖然CNN中的感受野尚未得到深入研究,一些人在計算方差如何通過網路演化方面進行了類似的分析。他們開發了一個很好的卷積層初始化方案,遵循的原則是方差在經過網路。
研究人員為了理解神經網路是如何工作的,我們還利用了可視化技術。[14] 展示了使用自然圖像先驗的重要性,以及卷積層的激活將代表什麼。[22]使用反褶積網路來顯示圖像中像素點與被激活神經元之間的關系。[23]對感受野進行了實證研究,並將其作為定位的提示。也有可視化研究使用梯度上升技術[4]產生有趣的圖像,如[15]。這些都集中在單位激活或特徵圖上,而不是我們在這里研究的有效感受野。
本文對CNN的感受野進行了細致的研究,並對有效感受野大小進行了初步探討。特別地,我們已經證明了在感受野內的影響分布是漸近高斯的,有效感受野只佔整個理論感受野的一小部分。實證結果與我們建立的理論相呼應。我們認為這只是有效感受野研究的一個開始,它為深入了解CNN提供了一個新的視角。在未來的研究中,我們希望更多地研究在實踐中影響有效感受野的因素以及如何更好地控制這些因素。
『叄』 網路架構搜索
作為計算智能方法的代表,起源於上個世紀四十年代的人工神經網路經歷了五六十年代的繁榮,七十年代的低潮,八十年代的再次復甦,到近十年的廣泛關注,如今已經成為理論日趨完善,應用逐步發展的前沿方向。Hinton 等人2006 年在《Science》上發表的文章引發了深度神經網路研究的熱潮。面對大數據的諸多挑戰,以深度信念網路、卷積神經網路和遞歸神經網路為代表的深度神經網路模型在很多應用領域展示出明顯的優勢和潛力,特別是隨著數據量和數據維數的增加,深度學習的優勢愈加突出。例如,Google 藉助深度學習開發的AlphaGo 能從海量的對弈中學習正確的決策,微軟語音識別採用深度學習使識別錯誤率顯著降低,網路基於深度學習開發的機器人「小度」在跨年齡人臉識別上超越了人類。
經過多年的研究和發展,基於人工神經網路的識別方法也逐漸取代傳統的模式識別方法。神經網路已成為當前比較先進的技術,用來解決許多具有挑戰性的識別任務如文字識別、語音識別、指紋識別、遙感圖像識別、人臉識別、手寫體字元的識別等。其中主流的神經網路模型有卷積網路和遞歸神經網路,卷積神經網路由 Yann LeCun 在 1998 年提出,自從 AlexNe 在 2012 年的 ImageNet 比賽中使用了這一架構拔得頭籌,卷積神經網路迅速流行起來並廣泛應用到視覺任務。如今,最先進的卷積神經網路演算法在進行圖像識別時,甚至可以超過人類肉眼識別的准確率。遞歸神經網路網路提出於 1990 年,被視為循環神經網路的推廣,遞歸神經網路可以引入門控機制以學習長距離依賴,適用於包含結構關系的機器學習任務,在序列識別方面有重要應用。
深度神經網路和深度學習演算法因為在科研工作與工程任務中都取得了顯著的效果從而大受歡迎。它取代了傳統的手動提取特徵方法,夠端到端地自動提取和學習特徵。而其中取得顯著成功的深度神經網路通常是由於它們成功的架構設計,研究的工作重心從提取特徵轉移到了尋找最優架構上。通常來說,模型的容量越大網路的性能就越好,能夠擬合任意函數。因此為了提升網路性能,網路結構被設計的越來越復雜。例如,VGG-16 約有1.4億浮點數參數,整個網路佔用超過500兆存儲空間,需要153億次浮點操作來處理一個$224\times224$大小的圖像。雖然更深的網路層次和復雜的拓撲結構能夠更有效地學習特徵,但是網路規模的增大意味著人工設計網路時需要花費更多時間來反復試驗,即使是專家也需要大量的資源和時間來創建性能良好的模型。
神經網路架構搜索(NAS)是一種自動化學習網路結構的新方法,用於減少繁重的網路設計成本。目前為止,NAS方法設計的網路在識別任務上的表現已經超過了人工設計的架構。NAS可以視作自動機器學習(AutoML)的子領域,與超參數優化和元學習有明顯的重疊。不同的NAS方法的區別主要在於三個維度:搜索空間、搜索策略和性能評估,我們對此分別進行了調研。
搜索空間:搜索空間定義了網路的所有可選結構和操作,通常指數級大,甚至無界。在設計搜索空間時結合先驗知識,即參考現有的針對當前任務的先進結構設計知識,能夠有效減小搜索空間並簡化搜索。但這也會引入偏好,從而限制網路學習到超越當前人類知識的結構。
搜索策略:定義搜索空間後,搜索策略引導尋找高性能的模型架構,其中的難點是保證探索和利用的平衡。一方面,希望快速找到性能良好的架構,另一方面,需要避免過早收斂到次優的架構。
性能評估:NSA的目的是找到一個在未知數據上具有良好泛化性能的架構,一旦模型生成,就需要對其性能進行評估。直觀的方法是在訓練集上訓練收斂,並在驗證集上得到其性能,但是這種方法會耗費巨大的算力,從而限制了可探索的網路結構。一些先進的方法關注於減小性能評估時的計算代價,但會引入誤差。因此,平衡評價的效率和效果是一個需要研究的問題。
從計算的角度來看,神經網路代表了一個通過一系列操作將輸入變數 x 轉換為輸出變數 y 的函數。基於計算圖語言,神經網路可以表示為一個有向無環圖(DAG),其中每個節點表示一個張量 z ,通過邊連接其父節點 I(k),每條邊表示從候選操作集O中選擇的一個操作 o 。節點 k 的計算公式為:
其中候選操作集合$O$主要包括卷積、池化、激活函數、跳躍連接、拼接、加法等基本操作。此外,為了進一步提高模型的性能,一些先進的人工設計模塊也可以作為候選操作,如深度可分離卷積、膨脹卷積、組卷積。基於操作的類型可以選擇不同的超參數,例如輸入節點選取、卷積核數量、尺寸、步長等。不同的搜索空間設計,選擇和組合操作的方法也不同所以參數化的形式也不一樣。一般來說,一個好的搜索空間應該能夠排除人類的偏見,並且足夠靈活,能夠覆蓋更廣泛的模型架構。
全局搜索空間搜索一個完整的網路結構,具有很高的自由度。最簡單的例子是鏈式搜索空間,見圖1左。固定的數量的節點按順序堆疊,只有前一個節點的輸出提供給後一個節點作為輸入,每個節點代表一個層,並具有指定的操作。右圖引入更復雜的跳躍鏈接和多支路結構,此時當前節點可以結合前面所有節點的輸出作為輸入,使得搜索的自由度顯著增大。許多網路都是多分支網路的特例,比如
1)鏈式網路: ;
2)殘差網路: ;
3)DenseNets:
雖然整體結構搜索很容易實現,但它也有一些缺點。首先,搜索空間的大小與網路深度是指數級關系,尋找泛化性能好的深度網路計算成本高。此外,生成的架構缺乏可遷移性和靈活性,在小型數據集上生成的模型可能不適合較大的數據集。有研究提出,初始架構的選擇在搜索全局結構時十分重要。在適當的初始條件下,可以獲得與單元搜索空間性能相當的架構,但是初始架構選擇的指導原則仍然不明確。
基於單元的搜索空間受啟發於人工設計知識,許多有效的網路結構都會重復使用固定結構,例如在RNNs中重復LSTM塊或堆疊殘差模塊。因此可以只搜索這樣的重復單元(cells),整個神經結構的搜索問題被簡化為在單元搜索空間中搜索最優的單元結構,從而極大的減小搜索空間。大多數研究對比了基於全局搜索空間和單元搜索空間的實驗結果,證明在基於單元的搜索空間中可以獲得良好的性能。單元搜索空間的另一個優勢是能方便地在數據集和任務之間進行泛化,因為通過增減卷積核和單元的數量,架構的復雜性幾乎可以任意改變。
NASNet是最早提出的單元搜索空間之一,也是當前最熱門的選擇,之後的大部分改進只是在此基礎上對操作選擇和單元組合策略進行了少量修改。如圖2所示,它由兩種單元組成,分別為保持輸入特徵維度的標准單元(normal cell),和減小空間維度的簡化單元(rection cell)。每個單元由b個塊組成,每個塊由它的兩個輸入和相應的操作定義。可選的輸入包括前兩個單元的輸出和單元中先前定義的塊的輸出,所以它支持跨單元的跳躍連接。未使用的塊被連接起來並作為單元格的輸出,最終通過預定義好的規則級聯這些單元。
不同於上面將單元結構按照人工定義的宏結構進行連接,層次結構是將前一步驟生成的單元結構作為下一步單元結構的基本組成部件,通過迭代的思想得到最終的網路結構。Hier提出的層次搜索空間,通過合並低層單元生成高級單元實現單元級別和網路級別的同時優化。此方法具體分為3層。第一層包含一系列的基礎操作;第二層通過有向無環圖連接第一層的基礎操作,構建不同的單元,圖結構用鄰接矩陣編碼;第三層是網路級的編碼,決定如何連接第二層的單元,組合成一個完整的網路。基於單元的搜索空間可以看作是這種層次搜索空間的一個特殊情況。
強化學習方法(RL)能夠有效建模一個順序決策的過程,其中代理與環境相互作用,代理學會改善其行為從而使目標回報最大化。(圖3)給出了一個基於強化的NAS演算法的概述。代理通常是一個遞歸神經網路(RNN),它在每一步t執行一個動作 來從搜索空間采樣一個新的樣本,同時接收狀態 的觀察值和環境中的獎勵 ,以更新代理的采樣策略。這種方法非常適合於神經結構搜索,代理的行為是生成神經結構,行為空間是搜索空間,環境是指對代理生成的網路進行訓練和評估,獎勵是訓練後的網路結構對未知數據的預測性能,在最後一個行為之後獲得。
4.2進化演算法
進化演算法(EA)是一種成熟的全局優化方法,具有較高的魯棒性和廣泛的適用性。許多研究使用進化演算法來優化神經網路結構。進化演算法演化了一組模型,即一組網路;在每個世代中,至少從這組模型中選擇一個模型,作為親本在突變後作為生成子代。在對子代進行訓練之後,評估它們的適應度並將它們添加到種群中。
典型的進化演算法包括選擇、交叉、變異和更新等步驟。選擇時一般使用聯賽選擇演算法對父類進行采樣,其中適應性最好的一個作為親本。Lemonade對適應度使用核密度估計,使網路被選擇的概率與密度成反比。交叉方式因編碼方案的不同而不同。突變針對的是親本的部分操作,例如添加或移除層,改變層的超參數,添加跳躍連接,以及改變訓練超參數。對於產生的後代,大多數方法隨機初始化子網路權重,而Lemonade把父網路學習到的權重通過使用網路態射傳遞給其子網路。Real等人讓後代繼承其父母的所有不受突變影響的參數,雖然這種繼承不是嚴格意義上的功能保留,它可以加速學習。生成新的網路的同時需要從種群中移除一些個體。Real等人從群體中移除最差的個體,AmoebaNet移除最老的個體。也有一些方法定期丟棄所有個體,或者完全不移除個體。EENA通過一個變數調節最壞模型和最老模型的刪除概率。
基於代理模型的優化方法(SMBO)用一個代理模型來近似目標函數。即不需要訓練采樣到的網路結構,只需要訓練一個代理模型,使用代理模型預測網路的性能。通常在實踐中只需要得到架構的性能排序,而不一定要計算出具體的損失值,因此代理模型只需要預測相對得分並選出有前途的候選架構。然後只對預測性能好的架構進行評估,用它們的驗證精度更新代理模型,這樣只需要完全訓練少量候選架構,大大減少搜索時間。代理模型通常訓練為最小化平方誤差:
貝葉斯優化(BO)是用於超參數優化的最流行的方法之一。最經典的是基於高斯過程的BO,生成的神經結構的驗證結果可以建模為高斯過程,然而,基於高斯的BO方法在觀察次數上的推理時間尺度是立方的,並且不擅長處理變長神經網路。有些工作使用基於樹或者隨機森林的方法來在非常高維的空間中高效的搜索,並且在很多問題上取得了優異的效果。Negrinho利用其搜索空間的樹形結構,並使用蒙特卡洛樹搜索。雖然沒有完整的比較,但初步的證據表明這些方法可以超越進化演算法。
上面的搜索策略搜是從一個離散的搜索空間提取神經結構樣本。DARTS提出搜索空間的連續鬆弛,在連續可微的搜索空間上搜索神經架構如圖4所示,並使用如下softmax函數來鬆弛離散空間:
鬆弛後,架構搜索的任務轉化為網路架構與神經權值的聯合優化。這兩類參數分別在訓練集和驗證集上交替優化,表示為一個雙層優化問題。
為了對搜索過程進行引導,必須對產生的神經網路性能進行評估。一種直觀的方法是訓練網路至收斂,然後評估其性能。但是,這種方法需要大量的時間和計算資源。因此提出了幾種加速模型評估的方法。
為了減少計算負擔,可以用實際性能的低質近似來估測性能。實現方法包括: 縮短訓練時間、選擇數據集的子集、在低解析度的圖像上訓練、每層使用更少的通道數、堆疊更少的單元結構。在低質條件下搜索到的最優網路或單元,構建出最終結構在數據集上重新訓練,得到目標網路。雖然這些低精度的近似能夠減少訓練花費,但性能被低估的同時不可避免地引入了誤差。最近的研究表明,當這種低質評價與完全評價之間的差異較大時,網路性能的相對排名可能變化很大,並強調這種誤差會逐漸增加。
早停技術最初用於防止過擬合。一些研究通過在訓練初期預測網路性能,在驗證集上預計表現不佳的模型被強制停止訓練,以此來加速模型評估。一種在早期估計網路性能的方法是學習曲線外推法。Domhan 等提出訓練初期對學習曲線進行插值,並終止那些預測性能不好的網路結構的訓練。Swersky等在評估學習曲線的好壞時,把網路架構的超參數作為參考因素。另一種方法根據梯度的局部統計信息實現早期停止,它不再依賴驗證集,允許優化器充分利用所有的訓練數據。
代理模型可以被訓練用預測網路性能。PNAS提出訓練一個代理網路(LSTM)來預測網路結構的性能,他不考慮學習曲線而是基於結構的特點來預測性能,並在訓練時推斷更大的網路結構。SemiNAS是一種半監督NAS方法,利用大量的未標記架構進一步提高搜索效率。不需要在對模型進行訓練,只使用代理模型來預測模型精度。預測網路性能的主要難點是:為加快搜索過程,需要在對較大的搜索空間進行較少的評估的基礎上進行良好的預測。當優化空間過大且難以量化,且對每個結構的評估成本極高時,基於代理的方法就不適用。
代理模型還可以用來預測網路權重。超網路(Hypernetworks)是一種神經網路,被訓練來為各種架構生成網路權值。超網路在搜索過程中節省了候選體系結構的訓練時間,因為它們的權值是通過超網路的預測得到的。Zhang等人提出了一種計算圖表示,並使用圖超網路(GHN)比常規超網路(SMASH)更快更准確地預測所有可能架構的權值。
權重繼承是讓新網路結構繼承之前訓練完成的其他網路結構的權值。其中一種方法是網路態射,一般的網路設計方法是首先設計出一個網路結構,然後訓練它並在驗證集上查看它的性能表現,如果表現較差,則重新設計一個網路。可以很明顯地發現這種設計方法會做很多無用功,因此耗費大量時間。而基於網路態射結構方法能夠在原有的網路結構基礎上做修改,修改後的網路可以重用之前訓練好的權重。其特殊的變換方式能夠保證新的網路結構還原成原網路,因此子網路的表現至少不會差於原網路,並且能在較短的訓練時間內繼續成長為一個更健壯的網路。具體地,網路射態能夠處理任意非線性激活函數,可以添加跳躍連接,並且支持添加層或通道得到更深或更寬的等效模型。經典的網路態射只能使網路變大,這可能導致網路過於復雜,之後提出的近似網路態射通過知識蒸餾允許網路結構減小。進化演算法經常使用基於網路態射的變異,或者直接讓孩子繼承親本的權重,再執行一般變異操作,這樣產生的網路具有一個更好的初始值,而不用重頭開始訓練。
『肆』 人工智慧:什麼是人工神經網路
許多 人工智慧 計算機系統的核心技術是人工神經網路(ANN),而這種網路的靈感來源於人類大腦中的生物結構。
通過使用連接的「神經元」結構,這些網路可以通過「學習」並在沒有人類參與的情況下處理和評估某些數據。
這樣的實際實例之一是使用人工神經網路(ANN)識別圖像中的對象。在構建一個識別「貓「圖像的一個系統中,將在包含標記為「貓」的圖像的數據集上訓練人工神經網路,該數據集可用作任何進行分析的參考點。正如人們可能學會根據尾巴或皮毛等獨特特徵來識別狗一樣,人工神經網路(ANN)也可以通過將每個圖像分解成不同的組成部分(如顏色和形狀)進行識別。
實際上,神經網路提供了位於託管數據之上的排序和分類級別,可基於相似度來輔助數據的聚類和分組。可以使用人工神經網路(ANN)生成復雜的垃圾郵件過濾器,查找欺詐行為的演算法以及可以精確了解情緒的客戶關系工具。
人工神經網路如何工作
人工神經網路的靈感來自人腦的神經組織,使用類似於神經元的計算節點構造而成,這些節點沿著通道(如神經突觸的工作方式)進行信息交互。這意味著一個計算節點的輸出將影響另一個計算節點的處理。
神經網路標志著人工智慧發展的巨大飛躍,在此之前,人工智慧一直依賴於使用預定義的過程和定期的人工干預來產生所需的結果。人工神經網路可以使分析負載分布在多個互連層的網路中,每個互連層包含互連節點。在處理信息並對其進行場景處理之後,信息將傳遞到下一個節點,然後向下傳遞到各個層。這個想法是允許將其他場景信息接入網路,以通知每個階段的處理。
單個「隱藏」層神經網路的基本結構
就像漁網的結構一樣,神經網路的一個單層使用鏈將處理節點連接在一起。大量的連接使這些節點之間的通信得到增強,從而提高了准確性和數據處理吞吐量。
然後,人工神經網路將許多這樣的層相互疊放以分析數據,從而創建從第一層到最後一層的輸入和輸出數據流。盡管其層數將根據人工神經網路的性質及其任務而變化,但其想法是將數據從一層傳遞到另一層,並隨其添加附加的場景信息。
人腦是用3D矩陣連接起來的,而不是大量堆疊的圖層。就像人類大腦一樣,節點在接收到特定刺激時會在人工神經網路上「發射」信號,並將信號傳遞到另一個節點。但是,對於人工神經網路,輸入信號定義為實數,輸出為各種輸入的總和。
這些輸入的值取決於它們的權重,該權重用於增加或減少與正在執行的任務相對應的輸入數據的重要性。其目標是採用任意數量的二進制數值輸入並將其轉換為單個二進制數值輸出。
更復雜的神經網路提高了數據分析的復雜性
早期的神經網路模型使用淺層結構,其中只使用一個輸入和輸出層。而現代的系統由一個輸入層和一個輸出層組成,其中輸入層首先將數據輸入網路,多個「隱藏」層增加了數據分析的復雜性。
這就是「深度學習」一詞的由來——「深度」部分專門指任何使用多個「隱藏」層的神經網路。
聚會的例子
為了說明人工神經網路在實際中是如何工作的,我們將其簡化為一個實際示例。
想像一下你被邀請參加一個聚會,而你正在決定是否參加,這可能需要權衡利弊,並將各種因素納入決策過程。在此示例中,只選擇三個因素——「我的朋友會去嗎?」、「聚會地點遠嗎?」、「天氣會好嗎?」
通過將這些考慮因素轉換為二進制數值,可以使用人工神經網路對該過程進行建模。例如,我們可以為「天氣」指定一個二進制數值,即『1'代表晴天,『0'代表惡劣天氣。每個決定因素將重復相同的格式。
然而,僅僅賦值是不夠的,因為這不能幫助你做出決定。為此需要定義一個閾值,即積極因素的數量超過消極因素的數量。根據二進制數值,合適的閾值可以是「2」。換句話說,在決定參加聚會之前,需要兩個因素的閾值都是「1」,你才會決定去參加聚會。如果你的朋友要參加聚會(『1'),並且天氣很好(『1'),那麼這就表示你可以參加聚會。
如果天氣不好(『0'),並且聚會地點很遠(『0'),則達不到這一閾值,即使你的朋友參加(『1'),你也不會參加聚會。
神經加權
誠然,這是神經網路基本原理的一個非常基本的例子,但希望它有助於突出二進制值和閾值的概念。然而,決策過程要比這個例子復雜得多,而且通常情況下,一個因素比另一個因素對決策過程的影響更大。
要創建這種變化,可以使用「神經加權」——-通過乘以因素的權重來確定因素的二進制值對其他因素的重要性。
盡管示例中的每個注意事項都可能使你難以決策,但你可能會更重視其中一個或兩個因素。如果你不願意在大雨中出行去聚會,那惡劣的天氣將會超過其他兩個考慮因素。在這一示例中,可以通過賦予更高的權重來更加重視天氣因素的二進制值:
天氣= w5
朋友= w2
距離= w2
如果假設閾值現在已設置為6,則惡劣的天氣(值為0)將阻止其餘輸入達到所需的閾值,因此該節點將不會「觸發」(這意味著你將決定不參加聚會)。
雖然這是一個簡單的示例,但它提供了基於提供的權重做出決策的概述。如果要將其推斷為圖像識別系統,則是否參加聚會(輸入)的各種考慮因素將是給定圖像的折衷特徵,即顏色、大小或形狀。例如,對識別狗進行訓練的系統可以對形狀或顏色賦予更大的權重。
當神經網路處於訓練狀態時,權重和閾值將設置為隨機值。然後,當訓練數據通過網路傳遞時將不斷進行調整,直到獲得一致的輸出為止。
神經網路的好處
神經網路可以有機地學習。也就是說,神經網路的輸出結果並不受輸入數據的完全限制。人工神經網路可以概括輸入數據,使其在模式識別系統中具有價值。
他們還可以找到實現計算密集型答案的捷徑。人工神經網路可以推斷數據點之間的關系,而不是期望數據源中的記錄是明確關聯的。
它們也可以是容錯的。當神經網路擴展到多個系統時,它們可以繞過無法通信的缺失節點。除了圍繞網路中不再起作用的部分進行路由之外,人工神經網路還可以通過推理重新生成數據,並幫助確定不起作用的節點。這對於網路的自診斷和調試非常有用。
但是,深度神經網路提供的最大優勢是能夠處理和聚類非結構化數據,例如圖片、音頻文件、視頻、文本、數字等數據。在分析層次結構中,每一層節點都在前一層的輸出上進行訓練,深層神經網路能夠處理大量的這種非結構化數據,以便在人類處理分析之前找到相似之處。
神經網路的例子
神經網路應用還有許多示例,可以利用它從復雜或不精確數據中獲得見解的能力。
圖像識別人工神經網路可以解決諸如分析特定物體的照片等問題。這種演算法可以用來區分狗和貓。更重要的是,神經網路已經被用於只使用細胞形狀信息來診斷癌症。
近30年來,金融神經網路被用於匯率預測、股票表現和選擇預測。神經網路也被用來確定貸款信用評分,學習正確識別良好的或糟糕的信用風險。而電信神經網路已被電信公司用於通過實時評估網路流量來優化路由和服務質量。
『伍』 人工智慧時代,神經網路的原理及使用方法 | 微課堂
人工智慧時代已經悄然來臨,在計算機技術高速發展的未來,機器是否能代替人腦?也許有些讀者會說,永遠不可能,因為人腦的思考包含感性邏輯。事實上,神經網路演算法正是在模仿人腦的思考方式。想不想知道神經網路是如何「思考」的呢?下面我向大家簡單介紹一下神經網路的原理及使用方法。
所謂人工智慧,就是讓機器具備人的思維和意識。人工智慧主要有三個學派——行為主義、符號主義和連接主義。
行為主義是基於控制論,是在構建感知動作的控制系統。理解行為主義有個很好的例子,就是讓機器人單腳站立,通過感知要摔倒的方向控制兩只手的動作,保持身體的平衡,這就構建了一個感知動作控制系統。
符號主義是基於算數邏輯和表達式。求解問題時,先把問題描述為表達式,再求解表達式。如果你在求解某個問題時,可以用if case這樣的條件語句,和若干計算公式描述出來,這就使用了符號主義的方法,比如「專家系統」。符號主義可以認為是用公式描述的人工智慧,它讓計算機具備了理性思維。但是人類不僅具備理性思維,還具備無法用公式描述的感性思維。比如,如果你看過這篇推送,下回再見到「符號主義」幾個字,你會覺得眼熟,會想到這是人工智慧相關的知識,這是人的直覺,是感性的。
連接主義就是在模擬人的這種感性思維,是在仿造人腦內的神經元連接關系。這張圖給出了人腦中的一根神經元,左側是神經元的輸入,「軸突」部分是神經元的輸出。人腦就是由860億個這樣的神經元首尾相接組成的網路。
神經網路可以讓計算機具備感性思維。我們首先理解一下基於連接主義的神經網路設計過程。這張圖給出了人類從出生到24個月神經網路的變化:
隨著我們的成長,大量的數據通過視覺、聽覺湧入大腦,使我們的神經網路連接,也就是這些神經元連線上的權重發生了變化,有些線上的權重增強了,有些線上的權重減弱了。
我們要用計算機仿出這些神經網路連接關系,讓計算機具備感性思維。
首先需要准備數據,數據量越大越好,以構成特徵和標簽對。如果想識別貓,就要有大量貓的圖片和這張圖片是貓的標簽構成特徵標簽對,然後搭建神經網路的網路結構,再通過反向傳播優化連接的權重,直到模型的識別准確率達到要求,得到最優的連線權重,把這個模型保存起來。最後用保存的模型輸入從未見過的新數據,它會通過前向傳播輸出概率值,概率值最大的一個就是分類和預測的結果。
我們舉個例子來感受一下神經網路的設計過程。鳶尾花可以分為三類:狗尾鳶尾、雜色鳶尾和佛吉尼亞鳶尾。我們拿出一張圖,需要讓計算機判斷這是哪類鳶尾花。人們通過經驗總結出了規律:通過測量花的花萼長、花萼寬、花瓣長、花瓣寬分辨出鳶尾花的類別,比如花萼長>花萼寬,並且花瓣長/花瓣寬>2,則可以判定為這是第一種,雜色鳶尾。看到這里,也許有些讀者已經想到用if、case這樣的條件語句來實現鳶尾花的分類。沒錯,條件語句根據這些信息可以判斷鳶尾花分類,這是一個非常典型的專家系統,這個過程是理性計算。只要有了這些數據,就可以通過條件判定公式計算出是哪類鳶尾花。但是我們發現鳶尾花的種植者在識別鳶尾花的時候並不需要這么理性的計算,因為他們見識了太多的鳶尾花,一看就知道是哪種,而且隨著經驗的增加,識別的准確率會提高。這就是直覺,是感性思維,也是我們這篇文章想要和大家分享的神經網路方法。
這種神經網路設計過程首先需要採集大量的花萼長、花萼寬、花瓣長、花瓣寬,和它們所對應的是哪種鳶尾花。花萼長、花萼寬、花瓣長、花瓣寬叫做輸入特徵,它們對應的分類叫做標簽。大量的輸入特徵和標簽對構建出數據集,再把這個數據集喂入搭建好的神經網路結構,網路通過反向傳播優化參數,得到模型。當有新的、從未見過的輸入特徵,送入神經網路時,神經網路會輸出識別的結果。
展望21世紀初,在近十年神經網路理論研究趨向的背景下,神經網路理論的主要前沿領域包括:
一、對智能和機器關系問題的認識進一步增長。
研究人類智力一直是科學發展中最有意義,也是空前困難的挑戰性問題。人腦是我們所知道的唯一智能系統,具有感知識別、學習、聯想、記憶、推理等智能。我們通過不斷 探索 人類智能的本質以及聯結機制,並用人工系統復現或部分復現,製造各種智能機器,這樣可使人類有更多的時間和機會從事更為復雜、更富創造性的工作。
神經網路是由大量處理單元組成的非線性、自適應、自組織系統,是在現代神經科學研究成果的基礎上提出的,試圖模擬神經網路加工、記憶信息的方式,設計一種新的機器,使之具有人腦風格的信息處理能力。智能理論所面對的課題來自「環境——問題——目的」,有極大的誘惑力與壓力,它的發展方向將是把基於連接主義的神經網路理論、基於符號主義的人工智慧專家系統理論和基於進化論的人工生命這三大研究領域,在共同追求的總目標下,自發而有機地結合起來。
二、神經計算和進化計算的重大發展。
計算和演算法是人類自古以來十分重視的研究領域,本世紀30年代,符號邏輯方面的研究非常活躍。近年來,神經計算和進化計算領域很活躍,有新的發展動向,在從系統層次向細胞層次轉化里,正在建立數學理論基礎。隨著人們不斷 探索 新的計算和演算法,將推動計算理論向計算智能化方向發展,在21世紀人類將全面進入信息 社會 ,對信息的獲取、處理和傳輸問題,對網路路由優化問題,對數據安全和保密問題等等將有新的要求,這些將成為 社會 運行的首要任務。因此,神經計算和進化計算與高速信息網路理論聯系將更加密切,並在計算機網路領域中發揮巨大的作用,例如大范圍計算機網路的自組織功能實現就要進行進化計算。
人類的思維方式正在轉變,從線性思維轉到非線性思維神經元,神經網路都有非線性、非局域性、非定常性、非凸性和混沌等特性。我們在計算智能的層次上研究非線性動力系統、混沌神經網路以及對神經網路的數理研究,進一步研究自適應性子波、非線性神經場的興奮模式、神經集團的宏觀力學等。因為,非線性問題的研究是神經網路理論發展的一個最大動力,也是它面臨的最大挑戰。
以上就是有關神經網路的相關內容,希望能為讀者帶來幫助。
以上內容由蘇州空天信息研究院謝雨宏提供。
『陸』 神經網路的功能!
完成某種信號處理或模式識別的功能、構作專家系統、製成機器人、復雜系統控制等等。
在機器學習和相關領域,人工神經網路(人工神經網路)的計算模型靈感來自動物的中樞神經系統(尤其是腦),並且被用於估計或可以依賴於大量的輸入和一般的未知近似函數。人工神經網路通常呈現為相互連接的「神經元」,它可以從輸入的計算值,並且能夠機器學習以及模式識別由於它們的自適應性質的系統。
人工神經網路的最大優勢是他們能夠被用作一個任意函數逼近的機制,那是從觀測到的數據「學習」。然而,使用起來也不是那麼簡單的,一個比較好理解的基本理論是必不可少的。
『柒』 BP神經網路原理
人工神經網路有很多模型,但是日前應用最廣、基本思想最直觀、最容易被理解的是多層前饋神經網路及誤差逆傳播學習演算法(Error Back-Prooaeation),簡稱為BP網路。
在1986年以Rumelhart和McCelland為首的科學家出版的《Parallel Distributed Processing》一書中,完整地提出了誤差逆傳播學習演算法,並被廣泛接受。多層感知網路是一種具有三層或三層以上的階層型神經網路。典型的多層感知網路是三層、前饋的階層網路(圖4.1),即:輸入層、隱含層(也稱中間層)、輸出層,具體如下:
圖4.1 三層BP網路結構
(1)輸入層
輸入層是網路與外部交互的介面。一般輸入層只是輸入矢量的存儲層,它並不對輸入矢量作任何加工和處理。輸入層的神經元數目可以根據需要求解的問題和數據表示的方式來確定。一般而言,如果輸入矢量為圖像,則輸入層的神經元數目可以為圖像的像素數,也可以是經過處理後的圖像特徵數。
(2)隱含層
1989年,Robert Hecht Nielsno證明了對於任何在閉區間內的一個連續函數都可以用一個隱層的BP網路來逼近,因而一個三層的BP網路可以完成任意的n維到m維的映射。增加隱含層數雖然可以更進一步的降低誤差、提高精度,但是也使網路復雜化,從而增加了網路權值的訓練時間。誤差精度的提高也可以通過增加隱含層中的神經元數目來實現,其訓練效果也比增加隱含層數更容易觀察和調整,所以一般情況應優先考慮增加隱含層的神經元個數,再根據具體情況選擇合適的隱含層數。
(3)輸出層
輸出層輸出網路訓練的結果矢量,輸出矢量的維數應根據具體的應用要求來設計,在設計時,應盡可能減少系統的規模,使系統的復雜性減少。如果網路用作識別器,則識別的類別神經元接近1,而其它神經元輸出接近0。
以上三層網路的相鄰層之間的各神經元實現全連接,即下一層的每一個神經元與上一層的每個神經元都實現全連接,而且每層各神經元之間無連接,連接強度構成網路的權值矩陣W。
BP網路是以一種有教師示教的方式進行學習的。首先由教師對每一種輸入模式設定一個期望輸出值。然後對網路輸入實際的學習記憶模式,並由輸入層經中間層向輸出層傳播(稱為「模式順傳播」)。實際輸出與期望輸出的差即是誤差。按照誤差平方最小這一規則,由輸出層往中間層逐層修正連接權值,此過程稱為「誤差逆傳播」(陳正昌,2005)。所以誤差逆傳播神經網路也簡稱BP(Back Propagation)網。隨著「模式順傳播」和「誤差逆傳播」過程的交替反復進行。網路的實際輸出逐漸向各自所對應的期望輸出逼近,網路對輸入模式的響應的正確率也不斷上升。通過此學習過程,確定下各層間的連接權值後。典型三層BP神經網路學習及程序運行過程如下(標志淵,2006):
(1)首先,對各符號的形式及意義進行說明:
網路輸入向量Pk=(a1,a2,...,an);
網路目標向量Tk=(y1,y2,...,yn);
中間層單元輸入向量Sk=(s1,s2,...,sp),輸出向量Bk=(b1,b2,...,bp);
輸出層單元輸入向量Lk=(l1,l2,...,lq),輸出向量Ck=(c1,c2,...,cq);
輸入層至中間層的連接權wij,i=1,2,...,n,j=1,2,...p;
中間層至輸出層的連接權vjt,j=1,2,...,p,t=1,2,...,p;
中間層各單元的輸出閾值θj,j=1,2,...,p;
輸出層各單元的輸出閾值γj,j=1,2,...,p;
參數k=1,2,...,m。
(2)初始化。給每個連接權值wij、vjt、閾值θj與γj賦予區間(-1,1)內的隨機值。
(3)隨機選取一組輸入和目標樣本
(4)用輸入樣本
基坑降水工程的環境效應與評價方法
bj=f(sj) j=1,2,...,p (4.5)
(5)利用中間層的輸出bj、連接權vjt和閾值γt計算輸出層各單元的輸出Lt,然後通過傳遞函數計算輸出層各單元的響應Ct。
基坑降水工程的環境效應與評價方法
Ct=f(Lt) t=1,2,...,q (4.7)
(6)利用網路目標向量
基坑降水工程的環境效應與評價方法
(7)利用連接權vjt、輸出層的一般化誤差dt和中間層的輸出bj計算中間層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(8)利用輸出層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(9)利用中間層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(10)隨機選取下一個學習樣本向量提供給網路,返回到步驟(3),直到m個訓練樣本訓練完畢。
(11)重新從m個學習樣本中隨機選取一組輸入和目標樣本,返回步驟(3),直到網路全局誤差E小於預先設定的一個極小值,即網路收斂。如果學習次數大於預先設定的值,網路就無法收斂。
(12)學習結束。
可以看出,在以上學習步驟中,(8)、(9)步為網路誤差的「逆傳播過程」,(10)、(11)步則用於完成訓練和收斂過程。
通常,經過訓練的網路還應該進行性能測試。測試的方法就是選擇測試樣本向量,將其提供給網路,檢驗網路對其分類的正確性。測試樣本向量中應該包含今後網路應用過程中可能遇到的主要典型模式(宋大奇,2006)。這些樣本可以直接測取得到,也可以通過模擬得到,在樣本數據較少或者較難得到時,也可以通過對學習樣本加上適當的雜訊或按照一定規則插值得到。為了更好地驗證網路的泛化能力,一個良好的測試樣本集中不應該包含和學習樣本完全相同的模式(董軍,2007)。
『捌』 深度前饋網路
看過西瓜書和李航的《統計學習方法》,對機器學習的基本演算法算是有了初步的理解。機器學習的演算法和思想固然重要,在實際中也有很多應用場景,但在超大數據集的表現上,深度學習才是當下效果最好的工具。可惜的是,花書這樣一本經典著作的中文版翻譯和機翻差不多水平,因此看的時候只能放慢速度。閑言少敘,下面是第六章的學習記錄。
深度前饋網路(deep feedforward network) ,也叫作前饋神經網路(feedforward neural network)或者多層感知機(multilayer perceptron, MLP),是典型的深度學習模型。 前饋網路的目標是近似某個函數 。例如,對於分類器, 將輸入 映射到一個類別 。前饋網路定義了一個映射 ,並且學習參數 的值使它能夠得到最佳的函數近似。
下面我們把「深度前饋網路」這個詞拆開來看:
那麼深度前饋網路的各層之間有什麼區別呢?從功能來講,訓練樣本直接指明了 輸出層 在每一點x上必須做什麼,它必須產生一個接近 y 的值。但訓練數據並沒有給出其它層中的所需的輸出,所以這些層被稱為 隱藏層(hidden layer) 。
一種理解前饋網路的方式是從線性模型開始,並考慮如何克服它的局限性。如果各層的函數 都是線性函數,那麼復合後的函數依然是線性的,此時我們的網路模型等價於線性模型。為了提高模型的表示能力,我們需要將各層的 設置為非線性的,從而得到一個非線性映射 。我們可以認為 提供了一組描述 的特徵,或者認為它提供了 的一個新的表示。
設計和訓練神經網路與使用梯度下降訓練其他任何機器學習模型並沒有太大不同。神經網路和線性模型等演算法的最大區別,在於神經網路的非線性導致大多數我們感興趣的代價函數都變得 非凸 。這意味著神經網路的訓練通常使用迭代的、基於梯度的優化, 僅僅使得代價函數達到一個非常小的值 ;而不是像用於訓練線性回歸模型的線性方程求解器或者用於訓練邏輯回歸或 SVM 的凸優化演算法那樣保證全局收斂。
用於非凸損失函數的隨機梯度下降沒有這種收斂性保證,並且 對參數的初始值很敏感。對於前饋神經網路,將所有的權重值初始化為小隨機數是很重要的。偏置可以初始化為零或者小的正值。
大多數現代的神經網路使用最大似然來訓練。這意味著代價函數就是負的對數似然,它與訓練數據和模型分布間的 交叉熵 等價。這個代價函數表示為
使用最大似然來導出代價函數的方法的一個優勢是,它減輕了為每個模型設計代價函數的負擔。明確一個模型 則自動地確定了一個代價函數 。
用於實現最大似然估計的交叉熵代價函數有一個不同尋常的特性,那就是當它被應用於實踐中經常遇到的模型時,它 通常沒有最小值。 如果模型可以控制輸出分布的密度(例如,通過學習高斯輸出分布的方差參數),那麼它可能對正確的訓練集輸出賦予極其高的密度,這將導致交叉熵趨向負無窮。 正則化技術提供了一些不同的方法來修正學習問題,使得模型不會通過這種方式來獲得無限制的收益。
一種簡單的輸出單元是基於仿射變換的輸出單元,仿射變換不具有非線性。這些單元往往被直接稱為 線性單元 。給定特徵 ,線性輸出層產生一個向量 ,線性輸出層經常被用來 產生條件高斯分布的均值 :
最大化其對數似然此時等價於最小化均方誤差。
許多任務需要預測二值型變數 的值。具有兩個類的分類問題可以歸結為這種形式。此時最大似然的方法是定義 在 條件下的 Bernoulli 分布。為保證模型給出了錯誤答案時,總能有一個較大的梯度。可以使用 sigmoid輸出單元 結合最大似然來實現。sigmoid 輸出單元定義為:
這種在對數空間里預測概率的方法可以很自然地使用最大似然學習。因為用於最大似然的代價函數是 ,代價函數中的 抵消了 中的 。如果沒有這個效果,sigmoid 的飽和性會阻止基於梯度的學習做出好的改進。因此, 最大似然幾乎總是訓練 輸出單元的優選方法。
當我們想要表示一個具有 n 個可能取值的離散型隨機變數的分布時,我們可以使用 函數。它可以看作是 函數的擴展。
函數最常用作分類器的輸出,來表示 個不同類上的概率分布。比較少見的是, 函數可以在模型內部使用,例如如果我們想要在某個內部變數的 個不同選項中進行選擇。 函數的形式為:
和 一樣,當使用最大化對數似然訓練 來輸出目標值 時,使用指數函數工作地非常好。
隱藏單元的設計是一個非常活躍的研究領域,並且還沒有許多明確的指導性理論原則。
整流線性單元(Rectified Linear Unit, ReLU)是隱藏單元極好的默認選擇。許多其他類型的隱藏單元也是可用的。決定何時使用哪種類型的隱藏單元是困難的事(盡管整流線性單元通常是一個可接受的選擇)。我們這里描述對於每種隱藏單元的一些基本直覺。這些直覺可以用來建議我們何時來嘗試一些單元。 通常不可能預先預測出哪種隱藏單元工作得最好。設計過程充滿了試驗和錯誤,先直覺認為某種隱藏單元可能表現良好,然後用它組成神經網路進行訓練,最後用驗證集來評估它的性能。
大多數的隱藏單元都接受輸入向量 x,計算仿射變換 ,然後使用一個逐元素的非線性函數 。大多數隱藏單元的區別僅僅在於激活函數 的形式。
整流線性單元使用激活函數:
整流線性單元通常作用於仿射變換之上:
當初始化仿射變換的參數時,可以將 b 的所有元素設置成一個小的正值,例如 0.1。這使得整流線性單元很可能初始時就對訓練集中的大多數輸入呈現激活狀態,並且允許導數通過。
整流線性單元的一個缺陷是它們不能通過基於梯度的方法學習那些使它們激活為零的樣本。整流線性單元的各種擴展保證了它們能在各個位置都接收到梯度。
整流線性單元的三個擴展基於當 時使用一個非零的斜率 :
絕對值整流(absolute value rectification) 固定 來得到: ,它用於圖像中的對象識別 (Jarrett et al., 2009a); 滲漏整流線性單元(Leaky ReLU) (Maas et al., 2013) 將 固定成一個類似 0.01 的小值; 參數化整流線性單元(parametric ReLU) 將 作為學習的參數 (He et al., 2015)。
maxout 單元(maxout unit) (Goodfellow et al., 2013a) 進一步擴展了整流線性單元。maxout單元將 劃分為每組有 個值的組,而不是使用作用於每個元素的函數 。每個maxout單元則輸出每組中的最大元素:
這里 是組 的輸入索引集 。因為激活函數中有了max操作,所以整個maxout網路也是一種非線性的變換。
maxout的擬合能力是非常強的,它可以擬合任意的的凸函數。最直觀的解釋就是任意的凸函數都可以由分段線性函數以任意精度擬合,而maxout又是取k個隱隱含層節點的最大值,這些」隱隱含層"節點也是線性的,所以在不同的取值范圍下,最大值也可以看做是分段線性的(分段的個數與k值有關)。
整流線性單元和它們的這些擴展都是基於一個原則,那就是如果它們的行為更接近線性,那麼模型更容易優化。
在引入整流線性單元之前,大多數神經網路使用 logistic sigmoid 激活函數:
或者是雙曲正切激活函數:
這些激活函數緊密相關,因為:
我們已經看過 sigmoid 單元作為輸出單元用來預測二值型變數取值為 1 的概率。與分段線性單元不同,sigmoid 單元在其大部分定義域內都飽和——當 z 取絕對值很大的正值時,它們飽和到一個高值,當 z 取絕對值很大的負值時,它們飽和到一個低值,並且僅僅當 z 接近 0 時它們才對輸入強烈敏感。sigmoid 單元的廣泛飽和性會使得基於梯度的學習變得非常困難。因為這個原因,現在不鼓勵將它們用作前饋網路中的隱藏單元。當使用一個合適的代價函數來抵消 sigmoid 的飽和性時,它們作為輸出單元可以與基於梯度的學習相兼容。
當必須要使用 sigmoid 激活函數時,雙曲正切激活函數通常要比 logistic sigmoid 函數表現更好。在 而 的意義上,它更像是單位函數。因為 tanh 在 0 附近與單位函數類似。
架構(architecture) 一詞是指網路的整體結構: 它應該具有多少單元,以及這些單元應該如何連接。
在鏈式架構中,主要的架構考慮是選擇網路的深度和每一層的寬度。我將會看到,即使只有一個隱藏層的網路也足夠適應訓練集。 更深層的網路通常能夠對每一層使用更少的單元數和更少的參數,並且經常容易泛化到測試集,但是通常也更難以優化。 對於一個具體的任務,理想的網路架構必須通過實驗,觀測在驗證集上的誤差來找到。
萬能近似定理(universal approximation theorem)
一個前饋神經網路如果具有線性輸出層和至少一層具有任何一種 『『擠壓』』 性質的激活函數(例如logistic sigmoid激活函數)的隱藏層,只要給予網路足夠數量的隱藏單元,它可以 以任意的精度來近似任何從一個有限維空間到另一個有限維空間的 Borel 可測函數 。前饋網路的導數也可以任意好地來近似函數的導數 (Hornik et al., 1990)。
萬能近似定理意味著無論我們試圖學習什麼函數,我們知道一個大的MLP一定能夠表示這個函數。
然而,我們不能保證訓練演算法能夠學得這個函數。即使 MLP能夠表示該函數,學習也可能因兩個不同的原因而失敗。 首先,用於訓練的優化演算法可能找不到用於期望函數的參數值。其次,訓練演算法可能由於過擬合而選擇了錯誤的函數。
總之,具有單層的前饋網路足以表示任何函數,但是網路層可能大得不可實現,並且可能無法正確地學習和泛化。在很多情況下,使用更深的模型能夠減少表示期望函數所需的單元的數量,並且可以減少泛化誤差。
存在一些函數族能夠在網路的深度大於某個值d時被高效地近似,而當深度被限制到小於或等於d時需要一個遠遠大於之前的模型。在很多情況下,淺層模型所需的隱藏單元的數量是n的指數級。
Montufar et al. (2014) 的主要定理指出, 具有 個輸入深度為 每個隱藏層具有 個單元的深度整流網路可以描述的線性區域的數量是 :
根據經驗,更深的模型似乎確實在廣泛的任務中泛化得更好。
目前為止,我們都將神經網路描述成層的簡單鏈式結構,主要的考慮因素是網路的深度和每層的寬度。在實踐中,神經網路顯示出相當的多樣性。
一般的,層不需要連接在鏈中,盡管這是最常見的做法。許多架構構建了一個主鏈,但隨後又添加了額外的架構特性,例如從層 i 到層 i + 2 或者更高層的 跳躍連接 。這些跳躍連接使得梯度更容易從輸出層流向更接近輸入的層。
架構設計考慮的另外一個關鍵點是如何將層與層之間連接起來。默認的神經網路層採用矩陣 W 描述的線性變換,每個輸入單元連接到每個輸出單元。許多專用網路具有較少的連接,使得輸入層中的每個單元僅連接到輸出層單元的一個小子集。這些用於 減少連接數量 的策略減少了參數的數量以及用於評估網路的計算量,但通常高度依賴於問題。
當我們使用前饋神經網路接收輸入 並產生輸出 時,信息通過網路向前流動。輸入 提供初始信息,然後傳播到每一層的隱藏單元,最終產生輸出 。這稱之為 前向傳播(forward propagation) 。在訓練過程中,前向傳播可以持續向前直到它產生一個標量代價函數 。 反向傳播(back propagation) 演算法 (Rumelhart et al., 1986c),經常簡稱為backprop,允許來自代價函數的信息通過網路向後流動,以便計算梯度。
將計算形式化為圖形的方法有很多。這里,我們使用圖中的每一個節點來表示一個變數。變數可以是標量、向量、矩陣、張量、或者甚至是另一類型的變數。為了形式化我們的圖形,我們還需引入操作(operation)這一概念。操作是指一個或多個變數的簡單函數。我們的圖形語言伴隨著一組被允許的操作。我們可以通過將多個操作復合在一起來描述更為復雜的函數。
如果變數 y 是變數 x 通過一個操作計算得到的,那麼我們畫一條從 x 到 y 的有向邊。我們有時用操作的名稱來注釋輸出的節點,當上下文很明確時,有時也會省略這個標注。計算圖的實例如下:
使用符號到符號的方法計算導數的示例如下。在這種方法中,反向傳播演算法不需要訪問任何實際的特定數值。相反,它將節點添加到計算圖中來描述如何計算這些導數。通用圖形求值引擎可以在隨後計算任何特定數值的導數。 本例從表示 的圖開始,運行反向傳播演算法,指導它構造表達式 對應的圖。
這部分花書上講了很多內容……我看得有些失去耐心……可能是講得太細致了吧……我對反向傳播演算法的認識很簡單,就是一個鏈式法則,一層一層計算梯度然後向後傳播。這里根據之前上課時候的課件內容做下簡單回顧:
總之反向傳播演算法的要點就是 以恰當的順序計算梯度,從而充分利用鏈式法則來提高計算效率 。我個人認為理解BP的最佳方式就是自己畫個圖手推一遍。
『玖』 神經網路的基本原理是什麼
神經網路的基本原理是:每個神經元把最初的輸入值乘以一定的權重,並加上其他輸入到這個神經元里的值(並結合其他信息值),最後算出一個總和,再經過神經元的偏差調整,最後用激勵函數把輸出值標准化。基本上,神經網路是由一層一層的不同的計算單位連接起來的。我們把計算單位稱為神經元,這些網路可以把數據處理分類,就是我們要的輸出。
神經網路常見的工具:
以上內容參考:在眾多的神經網路工具中,NeuroSolutions始終處於業界領先位置。它是一個可用於windows XP/7高度圖形化的神經網路開發工具。其將模塊化,基於圖標的網路設計界面,先進的學習程序和遺傳優化進行了結合。該款可用於研究和解決現實世界的復雜問題的神經網路設計工具在使用上幾乎無限制。
以上內容參考:網路-神經網路
『拾』 深度卷積網路
LeNet網路的結構如下圖所示,可以看出,LeNet網路並沒有使用padding,每進行一次卷積,圖像的高度和寬度都會縮小,而通道數會一直增加。在全連接層中有400個節點,每個極點都有120個神經元,有時還會從這400個節點抽取一部分節點構建一個全連接層,即有兩個全連接層。在該網路中,最後一步就是利用84個特徵得到最後的輸出,該網路剛開始使用的是 sigmoid 函數 tanh 函數,而現在常常傾向於使用 softmax 函數。需要注意的是,LeNet-5網路進行圖像分類時,輸入的圖像是單通道的灰度圖像。
AlexNet是以論文第一作者的名字命名的,該網路的結構,如下圖所示,該網路的輸出層使用了 softmax 函數。AlexNet網路比LeNet網路規模更大,大約有6000萬個參數,用於訓練圖像和數據集時,能夠處理非常相似的基本構造模塊,這些模塊中包含著大量的隱藏單元,並且與LeNet網路不同的是,該網路使用了ReLu的激活函數。
VGG-16網路沒有太多的超參數,這是一種專注於構建卷積層的簡單網路。如下圖所示,該網路首先利用64個過濾器進行了兩次卷積,接著在池化層將輸入圖像壓縮,接著又是128個過濾器進行兩次卷積,接著載池化。繼續用256個過濾器進行3次卷積,再池化,接著再利用512個過濾器卷積3次,再池化,將稍後得到的特徵圖進行全連接操作,再進 softmax 激活。
由於存在梯度消失和梯度爆炸的原因,深層次的神經網路是很難訓練的,如果採用一種跳躍連接的方式,即從某一層網路層獲取激活,然後迅速反饋給另外一層,甚至是神經網路的更深層。這種利用跳躍連接構建的深度神經網路ResNets,深度能夠超過100層
一個簡單的兩層神經網路示例,如下圖所示:
常規的輸出和輸出之間的關系可以用如下的公式表示:
如上公式所述,這是一條神經網路的主路徑。如果將 的輸入直接到深層的激活函數之前,此時,神經網路有了一條副路徑,其對應輸出將有公式(5)變成如下所示的公式(6)
此時的輸入除了原先的輸入 外,多了一個 項,即由於 產生了一個殘差塊。
構建一個ResNet網路就是將很多這樣的殘差塊堆積在一起,形成一個深度神經網路,如下所示:
使用傳統的標准優化演算法訓練一個網路,隨著網路深度的增加,訓練誤差會先減小再增加,隨著網路層數的增加,優化演算法會越難以訓練,訓練誤差也會越來越多。但是,使用ResNet網路,能夠有效地避免這種情況。
如上所述,加入殘差網路之後,其輸出計算公式如公式(6)所示,展開這個公式,則有:
如果使用L2正則化或者權重衰減,則會壓縮權重參數 的值,如果參數 和參數 等於0,其輸出將由公式(7)變成 ,假定使用ReLU激活函數,則有:
由於殘差網路存在的這種跳躍連接,很容易得出以上等式,這意味著,即使給神經網路增加兩層,但是其效率並不遜色與更簡單的神經網路。並且由於存在以上恆等式,使得網路學習隱藏層的單元的信息更加容易。而普通網路,隨著網路層數的增加,學習參數會變得很困難。
此外,關於殘差網路,如公式(6)所示,假設 與 具有相同的維度,由於ResNets使用了許多same卷積, 的維度等於輸出層的維度。如果輸入和輸出具有不同的維度,可以再增加一個矩陣 ,使得 和 具有相同的維度。而 的維度可以通過0值填充調節。
在卷積網路的架構設計中,一種有趣的想法是會使用到1×1的過濾矩陣,實際上,對於單通道的圖像而言,1×1的過濾矩陣,意義不大,但是,對於多通道的圖像而言,1×1的過濾矩陣能夠有效減少圖像卷積之後的通道數量。
根據卷積和池化的基本知識,隨著神經網路層數的增加,圖像的通道數量會逐漸增加,採用1×1的過濾矩陣卷積之後,可以有效減少圖像的通道數量,一個簡單的示例,如下所示:
假設有一個6×6×32的圖片,使用1×1×32的過濾矩陣進行卷積運算,整個運算過程將會遍歷36個單元格,並計算過濾矩陣所覆蓋區域的元素積之和,將其應用到ReLu非線性函數,會得到一個輸出值。此計算過程中,可能會用到多個1×1×32的過濾器,那麼,通過以上計算會得到一個 6×6×過濾器數量 的矩陣。
構建卷積神經網路時,有時會很難決定過濾器的大小,而Inception網路的引入,卻能很好的解決這個問題。
Inception網路的作用就是代替人工確定選擇卷積層的過濾器類型。如下圖所示,對於一個多通道圖像,可以使用不同的過濾矩陣或者池化層,得到不同的輸出,將這些輸出堆積起來。
有了如上圖所示的Inception塊,最終輸出為32+32+64+128=256,而Inception模塊的輸入為28×28×192,其整個計算成本,以5×5的過濾矩陣為例,其乘法的計算次數為:28×28×32×5×5×192,整個計算次數超過了1.2億次。而如果使用如下所示的優化計算方法,則可以有效減少計算量。
如果利用1×1的過濾器,將輸入矩陣的通道減少至16,則可以有效減少計算量,如下所示:
如上圖所示的價格中,整個網路的運算次數為:28×28×192×16+28×28×32×5×5×16=1240萬,整個計算成本降低至原來的十分之一。而,通過1×1×192過濾器卷積得到的這個網路層被稱之為瓶頸層。
如上,所示,可以給每一個非1×1的卷積層之前,加入一個1×1的瓶頸層,就可以構建一個基本的inception模塊了,如下圖所示:
而一個inception網路就是多個Inception模塊連接起來,如下圖所示:
事實上,以上網路中,還存在一些分支,如編號1所示,這些分支就是全連接層,而全連接層之後就是一個softmax層用於預測。又如分支2所示,包含一些隱藏層(編號3),通過全連接層和softmax進行預測。這些分支結構能夠確保,即使是隱藏層和中間層也參與了特徵計算,並且也能夠預測圖片的分類。這種做法能夠有效避免網路過擬合。
對於計算機視覺領域而言,神經網路的訓練可能需要大量的數據,但是當數據量有限時,可以通過數據增強來實現數據量的擴充,以提高系統的魯棒性,具體的數據增強方法如下所示:
除了以上三種數據增強的方法外,更多的數據增強方法和實現可以參考 圖像數據增強
數據增強可以利用計算機多線程實現,一個線程用來實現載入數據,實現數據增強,其他線程可以訓練這些數據以加快整體的運算速度。