㈠ BP神經網路
神經網路能很好地解決不同的機器學習問題。神經網路模型是許多邏輯單元按照不同層級組織起來的網路,每一層的輸出變數都是下一層的輸入變數。
上圖顯示了人工神經網路是一個分層模型,邏輯上可以分為三層:
輸入層 :輸入層接收特徵向量 x
輸出層 :輸出層產出最終的預測 h
隱含層 :隱含層介於輸入層與輸出層之間,之所以稱之為隱含層,是因為當中產生的值並不像輸入層使用的樣本矩陣 X或者輸出層用到的標簽矩陣 y 那樣直接可見。
下面引入一些標記法來幫助描述模型:
!$ a^{(j)}_{i} $ 代表第j層的第i個激活單元。 !$ heta^{(j)} $ 代表從第 j 層映射到第 j+1 層時的權重的矩陣,例如 !$ heta^{(1)} $ 代表從第一層映射到第二層的權重的矩陣。其尺寸為:以第 j+1層的激活單元數量為行數,以第 j 層的激活單元數加一為列數的矩陣。例如:上圖所示的神經網路中 !$ heta^{(1)} $ 的尺寸為 3*4。
對於上圖所示的模型,激活單元和輸出分別表達為:
!$ a^{(2)}_{1} = g( heta^{(1)}_{10}x_0 + heta^{(1)}_{11}x_1 + heta^{(1)}_{12}x_2 + heta^{(1)}_{13}x_3 ) $
!$a^{(2)}_{2} = g( heta^{(1)}_{20}x_0 + heta^{(1)}_{21}x_1 + heta^{(1)}_{22}x_2 + heta^{(1)}_{23}x_3 ) $
!$a^{(2)}_{3} = g( heta^{(1)}_{30}x_0 + heta^{(1)}_{31}x_1 + heta^{(1)}_{32}x_2 + heta^{(1)}_{33}x_3 ) $
!$h_{ heta}{(x)} = g( heta^{(2)}_{10}a^{2}_{0} + heta^{(2)}_{11}a^{2}_{1} + heta^{(2)}_{12}a^{2}_{2} + heta^{(2)}_{13}a^{2}_{3} ) $
下面用向量化的方法以上面的神經網路為例,試著計算第二層的值:
對於多類分類問題來說:
我們可將神經網路的分類定義為兩種情況:二類分類和多類分類。
二類分類: !$ S_{L} = 0,y = 0,y = 1$
多類分類: !$ S_{L} = k, y_{i} = 1表示分到第i類;(k>2)$
在神經網路中,我們可以有很多輸出變數,我們的 !$h_{ heta}{(x)} $ 是一個維度為K的向量,並且我們訓練集中的因變數也是同樣維度的一個向量,因此我們的代價函數會比邏輯回歸更加復雜一些,為: !$ h_{ heta}{(x)} in R^{K}(h_{ heta}{(x)})_{i} = i^{th} output$
我們希望通過代價函數來觀察演算法預測的結果與真實情況的誤差有多大,唯一不同的是,對於每一行特徵,我們都會給出K個預測,基本上我們可以利用循環,對每一行特徵都預測K個不同結果,然後在利用循環在K個預測中選擇可能性最高的一個,將其與y中的實際數據進行比較。
正則化的那一項只是排除了每一層 !$ heta_0$ 後,每一層的 矩陣的和。最里層的循環j循環所有的行(由 +1 層的激活單元數決定),循環i則循環所有的列,由該層( !$ s_l$ 層)的激活單元數所決定。即: !$h_{ heta}{(x)}$ 與真實值之間的距離為每個樣本-每個類輸出的加和,對參數進行 regularization 的 bias 項處理所有參數的平方和。
由於神經網路允許多個隱含層,即各層的神經元都會產出預測,因此,就不能直接利用傳統回歸問題的梯度下降法來最小化 !$J( heta)$ ,而需要逐層考慮預測誤差,並且逐層優化。為此,在多層神經網路中,使用反向傳播演算法(Backpropagation Algorithm)來優化預測,首先定義各層的預測誤差為向量 !$ δ^{(l)} $
訓練過程:
當我們對一個較為復雜的模型(例如神經網路)使用梯度下降演算法時,可能會存在一些不容易察覺的錯誤,意味著,雖然代價看上去在不斷減小,但最終的結果可能並不是最優解。
為了避免這樣的問題,我們採取一種叫做梯度的數值檢驗( Numerical Gradient Checking )方法。這種方法的思想是通過估計梯度值來檢驗我們計算的導數值是否真的是我們要求的。
對梯度的估計採用的方法是在代價函數上沿著切線的方向選擇離兩個非常近的點然後計算兩個點的平均值用以估計梯度。即對於某個特定的 ,我們計算出在 !$ heta - epsilon$ 處和 !$ heta + epsilon$ 的代價值(是一個非常小的值,通常選取 0.001),然後求兩個代價的平均,用以估計在 !$ heta$ 處的代價值。
當 !$ heta$ 是一個向量時,我們則需要對偏導數進行檢驗。因為代價函數的偏導數檢驗只針對一個參數的改變進行檢驗,下面是一個只針對 !$ heta_1$ 進行檢驗的示例:
如果上式成立,則證明網路中BP演算法有效,此時關閉梯度校驗演算法(因為梯度的近似計算效率很慢),繼續網路的訓練過程。
㈡ 利用神經網路進行文本分類演算法綜述(持續更新中)
傳統的文本分類一般都是使用詞袋模型/Tf-idf作為特徵+機器學習分類器來進行分類的。隨著深度學習的發展,越來越多的神經網路模型被用來進行文本分類。本文將對這些神經網路模型做一個簡單的介紹。
本文介紹了一種詞向量模型,雖然算不得文本分類模型,但由於其可以說是fasttext的基礎。因此也簡單提一下。
作者認為cbow和skipgram及大部分詞向量模型都沒有考慮到單詞的多態性,而簡單的將一個單詞的多種形態視為獨立的單詞。例如like的不同形式有likes,liking,liked,likes,這些單詞的意思其實是相同的,但cbow/skipgram模型卻認為這些單詞是各自獨立的,沒有考慮到其形態多樣性。
因此作者提出了一個可以有效利用單詞字元級別信息的n-gram詞向量模型,該模型是以skipgram模式實現的。例如單詞 where,其n-gram表示為<wh, whe, her, ere, re>, where。其中<>分別表示前後綴。在原始的skipgram模型中,輸入僅僅只是where的onehot向量,而在此模型中輸入則變成了<wh, whe, her, ere, re>, where的onehot編碼的加和,有效的利用了字元級別的信息,因此效果更加好。
而在loss方面,文中採用了負采樣+binary LogisticRegression的策略。即對每一個目標單詞都預測為正負中的一種。
在本文中作者提供了一個基於神經網路的文本分類模型,這個模型是基於cbow的,與cbow非常類似。
和CBOW一樣,fastText模型也只有三層:輸入層、隱含層、輸出層(Hierarchical Softmax),輸入都是多個經向量表示的單詞,輸出都是一個特定的target,隱含層都是對多個詞向量的疊加平均。不同的是,CBOW的輸入是目標單詞的上下文,fastText的輸入是多個單詞及其n-gram特徵的embeding表示方式,這些特徵用來表示單個文檔;CBOW的輸入單詞被onehot編碼過,fastText的輸入特徵是被embedding過;CBOW的輸出是目標詞彙,fastText的輸出是文檔對應的類標。輸出層的實現同樣使用了層次softmax,當然如果自己實現的話,對於類別數不是很多的任務,個人認為是可以直接使用softmax的。
最後,貼一個Keras的模型fasttext簡化版。
基於詞向量表示,本文提出利用卷積神經網路來進行文本分類。其演算法如上圖所示:
在本文中,作者嘗試了多種不同的詞向量模式:
在上一篇文章中CNN網路的輸入一般是預訓練好的詞向量,而在本文中作者提出一種直接將embedding訓練與分類任務結合在一起,且能有效提取/保留詞序信息,也即有效訓練出n-gram的模型方法,其實也可以理解為一種利用CNN來進行embedding的方法。
此外,另一個問題是輸入序列長度變化問題(在上一篇文章textCNN中通過padding解決的?),在本文作者提出使用一個動態可變的pooling層來解決這個問題,使得卷積層輸出的大小是相同的。關於可變pooling其實與圖像識別中的 空間金字塔池化 (Spatial Pyramid Pooling) 是類似的。
這篇文章有點將fastText與TextCNN結合在一起的感覺,將n-gram embedding與分類任務結合在了一起進行訓練,通過CNN來進行Embedding。
Text Categorization via Region Embedding》
在本篇文章中作者提出了一個tv-embedding(即two-view embedding),它也屬於region embedding(也可以理解為ngram embedding)。這種方法與上面的bow-CNN表示相似,使用bow(bag of words)的方式來表示一個區域的詞句,然後通過某個區域(region,左右鄰域的單詞或詞句)來預測其前後的區域(單詞或詞句),即輸入區域是view1,target區域是view2。tv-embedding是單獨訓練的,在使用的時候與CNN中的embedding組合在一起(形成多個channel?)。作者認為,word2vec方法預訓練得到的embedding向量是普適性的,而通過特定任務的數據集的訓練得到tv-embedding具有任務相關的一些信息,更有利於提升我們的模型效果。
吐槽一下,這篇文章沒太看懂,也可能是英語太差,作者文章中沒有那種一眼就能讓人理解的網路圖,像textCNN的圖就非常一目瞭然,看圖就知道是怎麼做的了。
本文提出了一個使用監督學習加半監督預訓練的基於LSTM的文本分類模型。文章作者與上面相同,所以用到的很多技術可以說與上面也是同出一轍。因此簡單說下本文的一些思路。
作者認為已有的直接使用LSTM作為文本分類模型並直接將LSTM的最後一個輸出作為後續全連接分類器的方法面臨兩個問題:(1)這種方式一般都是與word embedding整合在一起(即輸入onehot經過一個embedding層再進入LSTM),但是embedding訓練不穩定,不好訓練;(2)直接使用LSTM最後一個輸出來表示整個文檔不準確,一般來說LSTM輸入中後面的單詞會在最後輸出中佔有較重的權重,但是這對於文章表示來說並不總是對的。因此作者對這兩點進行了改進:
本文其實可以看作是作者將自己前面的tv-embedding半監督訓練與RCNN的一個融合吧,大有一種一頓操作猛如虎,一看人頭0-5的感覺(因為作者的實驗結果跟一般的CNN相比其實也搶不了多少)。
本文的作者也是前面兩篇使用CNN來進行文本分類處理的文章的作者。因此在本文中,結合了前面兩篇文章提出的一些方法,並使用了一個深層的卷積神經網路。具體的細節包括:
更多詳細的關於DPCNN的細節可以查看 從DPCNN出發,撩一下深層word-level文本分類模型 。
本文提出了一種基於CNN+Attention的文本分類模型。作者認為已有的基於CNN的文本分類模型大都使用的是固定大小的卷積核,因此其學習到的表示也是固定的n-gram表示,這個n與CNN filter大小相關。但是在進行句子的語義表示時,不同句子發揮重要作用的ngram詞語常常是不同的,也即是變化的。因此,模型能根據句子來自適應的選擇每個句子最佳的n-gram對於提升模型的語義表示能力是非常關鍵的。本文便是由此思路提出了一種自適應的來選擇不同n-gram表示的模型。
本文模型在主題結構上參照了CV中的DenseNet,藉由DenseNet中的稠密連接來提取到豐富的n-gram特徵表示。舉例來說,在layer3的特徵不僅能學習到f(x1, x2, x3),還能學習到f(x1(x2,x3))這種更多層次,更加豐富的特徵。網路的結構主要包括三部分:DenseCNN主網路,Attention mole和最後的全連接層分類網路。下面對這三部分進行簡單的說明:
本文通過Dense connection + Attention來自動獲取對於文本語義最重要的n-gram特徵,結果很好。但是缺點是,這個網路比較適合較短的文本,文中對輸入文本進行了padding補齊,對於不同數據集最大長度分別為50,100等,但這對於較長的文本明顯是不足的。因此對於較長的文本或許HAN這種借用RNN來不限制輸入長短的網路會更好。
本文提出了一種結合循環神經網路(RNN)和卷積神經網路來進行文本分類的方法,其結構如上圖所示,該網路可以分為三部分:
雖然說是RNN與CNN的結合,但是其實只用到了CNN中的pooling,多少有一點噱頭的意思。文中還提到了RCNN為什麼比CNN效果好的原因,即為什麼RCNN能比CNN更好的捕捉到上下文信息:CNN使用了固定大小window(也即kernel size)來提取上下文信息,其實就是一個n-gram。因此CNN的表現很大程度上受window大小的影響,太小了會丟失一些長距離信息,太大了又會導致稀疏性問題,而且會增加計算量。
在眾多自然語言處理任務中,一個非常突出的問題就是訓練數據不足,且標注難度大。因此文本提出了一種多任務共享的RNN模型框架,其使用多個不同任務數據集來訓練同一個模型共享參數,已達到擴充數據集的作用。
文中作者提出了三個模型,如上圖所示:
三個模型的訓練方式相同:
本文提出了一個層次LSTM+Attention模型。作者認為,雖然一篇文章有多個句子組成但真正其關鍵作用的可能是其中的某幾個,因此對各個句子施加了注意力機制,以使得對文章語義貢獻較多的句子佔有更多的權重。同樣的,組成一個句子的單詞有多個,但是發揮重要作用的可能就那麼幾個,因此使用注意力機制以使得重要單詞發揮更大的作用,這些便是本文的核心思想。整個網路可分為三層,兩個LSTM層分別用來進行word encode和sentence encode,最頂上為一個全連接分類層。若加上兩層注意力層,則可認為網路為5層。下面簡單聊聊這五層網路的結構:
總體來說,本文看起來還是比較有意思的,符合人閱讀文章的習慣,我們寫文章的時候也是有中心詞和中心句的。但是由於這個層級結構是否會導致訓練慢或者不好訓練還不得而知。最後,文中還提出對文章按長短先進行排序,長度相似的進入一個batch,這將訓練速度加快了3倍。
本文提出了一個基於圖神經網路的文本分類方法。該方法的主要思想是將所有文章及其包含的詞彙都放到一個圖網路裡面去,圖網路中的節點分為兩種類型:單詞節點和文章節點。其中連接單詞節點和文章節點的邊的權重使用TF-IDF來表示,而單詞與單詞之間邊的權重則是使用點互信息(PMI)來表示。點互信息與傳統語言模型中的條件概率計算方式非常相似。只不過PMI採用的是滑窗方式而條件概率是直接在所有語料中進行統計,可以認為是將所有語料當做一個大窗口,這時就又與PMI相同了。
A表示圖網路的鄰接矩陣,表示如下:
GCN同樣也是可以含有多層隱藏層的,其各個層的計算方式如下:
其中A'為歸一化對稱鄰接矩陣, W0 ∈ R^(m×k) 為權重矩陣,ρ是激活函數,例如 ReLU ρ(x) = max(0,x) 如前所述,可以通過疊加多個GCN層來合並更高階的鄰域信息:
其中j表示層數。
損失函數定義為所有已標記文檔的交叉熵誤差:
文中提到Text GCN運行良好的原因有兩個方面:
但是其也有一些缺:
總的來說,文章的idea還是挺有意思的,效果也還不錯。初識GCN可能還是有一點難以理解,可以參考如下資料進行進一步學習:
基於圖卷積網路的文本分類演算法
如何理解 Graph Convolutional Network(GCN)?
㈢ 人工神經網路評價法
人工神經元是人工神經網路的基本處理單元,而人工智慧的一個重要組成部分又是人工神經網路。人工神經網路是模擬生物神經元系統的數學模型,接受信息主要是通過神經元來進行的。首先,人工神經元利用連接強度將產生的信號擴大;然後,接收到所有與之相連的神經元輸出的加權累積;最後,將神經元與加權總和一一比較,當比閾值大時,則激活人工神經元,信號被輸送至與它連接的上一層的神經元,反之則不行。
人工神經網路的一個重要模型就是反向傳播模型(Back-Propagation Model)(簡稱BP模型)。對於一個擁有n個輸入節點、m個輸出節點的反向傳播網路,可將輸入到輸出的關系看作n維空間到m維空間的映射。由於網路中含有大量非線性節點,所以可具有高度非線性。
(一)神經網路評價法的步驟
利用神經網路對復墾潛力進行評價的目的就是對某個指標的輸入產生一個預期的評價結果,在此過程中需要對網路的連接弧權值進行不斷的調整。
(1)初始化所有連接弧的權值。為了保證網路不會出現飽和及反常的情況,一般將其設置為較小的隨機數。
(2)在網路中輸入一組訓練數據,並對網路的輸出值進行計算。
(3)對期望值與輸出值之間的偏差進行計算,再從輸出層逆向計算到第一隱含層,調整各條弧的權值,使其往減少該偏差的方向發展。
(4)重復以上幾個步驟,對訓練集中的各組訓練數據反復計算,直至二者的偏差達到能夠被認可的程度為止。
(二)人工神經網路模型的建立
(1)確定輸入層個數。根據評價對象的實際情況,輸入層的個數就是所選擇的評價指標數。
(2)確定隱含層數。通常最為理想的神經網路只具有一個隱含層,輸入的信號能夠被隱含節點分離,然後組合成新的向量,其運算快速,可讓復雜的事物簡單化,減少不必要的麻煩。
(3)確定隱含層節點數。按照經驗公式:
災害損毀土地復墾
式中:j——隱含層的個數;
n——輸入層的個數;
m——輸出層的個數。
人工神經網路模型結構如圖5-2。
圖5-2人工神經網路結構圖(據周麗暉,2004)
(三)人工神經網路的計算
輸入被評價對象的指標信息(X1,X2,X3,…,Xn),計算實際輸出值Yj。
災害損毀土地復墾
比較已知輸出與計算輸出,修改K層節點的權值和閾值。
災害損毀土地復墾
式中:wij——K-1層結點j的連接權值和閾值;
η——系數(0<η<1);
Xi——結點i的輸出。
輸出結果:
Cj=yj(1-yj)(dj-yj) (5-21)
式中:yj——結點j的實際輸出值;
dj——結點j的期望輸出值。因為無法對隱含結點的輸出進行比較,可推算出:
災害損毀土地復墾
式中:Xj——結點j的實際輸出值。
它是一個輪番代替的過程,每次的迭代都將W值調整,這樣經過反復更替,直到計算輸出值與期望輸出值的偏差在允許值范圍內才能停止。
利用人工神經網路法對復墾潛力進行評價,實際上就是將土地復墾影響評價因子與復墾潛力之間的映射關系建立起來。只要選擇的網路結構合適,利用人工神經網路函數的逼近性,就能無限接近上述映射關系,所以採用人工神經網路法進行災毀土地復墾潛力評價是適宜的。
(四)人工神經網路方法的優缺點
人工神經網路方法與其他方法相比具有如下優點:
(1)它是利用最優訓練原則進行重復計算,不停地調試神經網路結構,直至得到一個相對穩定的結果。所以,採取此方法進行復墾潛力評價可以消除很多人為主觀因素,保證了復墾潛力評價結果的真實性和客觀性。
(2)得到的評價結果誤差相對較小,通過反復迭代減少系統誤差,可滿足任何精度要求。
(3)動態性好,通過增加參比樣本的數量和隨著時間不斷推移,能夠實現動態追蹤比較和更深層次的學習。
(4)它以非線性函數為基礎,與復雜的非線性動態經濟系統更貼近,能夠更加真實、更為准確地反映出災毀土地復墾潛力,比傳統評價方法更適用。
但是人工神經網路也存在一定的不足:
(1)人工神經網路演算法是採取最優化演算法,通過迭代計算對連接各神經元之間的權值不斷地調整,直到達到全局最優化。但誤差曲面相當復雜,在計算過程中一不小心就會使神經網路陷入局部最小點。
(2)誤差通過輸出層逆向傳播,隱含層越多,逆向傳播偏差在接近輸入層時就越不準確,評價效率在一定程度上也受到影響,收斂速度不及時的情況就容易出現,從而造成個別區域的復墾潛力評價結果出現偏離。
㈣ 一道多層神經網路的計算題,請問該如何計算
BP神經網路,指的是用了「BP演算法」進行訓練的「多層感知器模型」。 多層感知器(MLP,Multilayer Perceptron)是一種前饋人工神經網路模型,其將輸入的多個數據集映射到單一的輸出的數據集上,可以解決任何線性不可分問題。 不要把演算法和網路搞混了。
㈤ 神經網路Hopfield模型
一、Hopfield模型概述
1982年,美國加州工學院J.Hopfield發表一篇對人工神經網路研究頗有影響的論文。他提出了一種具有相互連接的反饋型人工神經網路模型——Hopfield人工神經網路。
Hopfield人工神經網路是一種反饋網路(Recurrent Network),又稱自聯想記憶網路。其目的是為了設計一個網路,存儲一組平衡點,使得當給網路一組初始值時,網路通過自行運行而最終收斂到所存儲的某個平衡點上。
Hopfield網路是單層對稱全反饋網路,根據其激活函數的選取不同,可分為離散型Hopfield網路(Discrete Hopfield Neural Network,簡稱 DHNN)和連續型 Hopfield 網路(Continue Hopfield Neural Network,簡稱CHNN)。離散型Hopfield網路的激活函數為二值型階躍函數,主要用於聯想記憶、模式分類、模式識別。這個軟體為離散型Hopfield網路的設計、應用。
二、Hopfield模型原理
離散型Hopfield網路的設計目的是使任意輸入矢量經過網路循環最終收斂到網路所記憶的某個樣本上。
正交化的權值設計
這一方法的基本思想和出發點是為了滿足下面4個要求:
1)保證系統在非同步工作時的穩定性,即它的權值是對稱的,滿足
wij=wji,i,j=1,2…,N;
2)保證所有要求記憶的穩定平衡點都能收斂到自己;
3)使偽穩定點的數目盡可能地少;
4)使穩定點的吸引力盡可能地大。
正交化權值的計算公式推導如下:
1)已知有P個需要存儲的穩定平衡點x1,x2…,xP-1,xP,xp∈RN,計算N×(P-1)階矩陣A∈RN×(P-1):
A=(x1-xPx2-xP…xP-1-xP)T。
2)對A做奇異值分解
A=USVT,
U=(u1u2…uN),
V=(υ1υ2…υP-1),
中國礦產資源評價新技術與評價新模型
Σ=diαg(λ1,λ2,…,λK),O為零矩陣。
K維空間為N維空間的子空間,它由K個獨立的基組成:
K=rαnk(A),
設{u1u2…uK}為A的正交基,而{uK+1uK+2…uN}為N維空間的補充正交基。下面利用U矩陣來設計權值。
3)構造
中國礦產資源評價新技術與評價新模型
總的連接權矩陣為:
Wt=Wp-T·Wm,
其中,T為大於-1的參數,預設值為10。
Wp和Wm均滿足對稱條件,即
(wp)ij=(wp)ji,
(wm)ij=(wm)ji,
因而Wt中分量也滿足對稱條件。這就保證了系統在非同步時能夠收斂並且不會出現極限環。
4)網路的偏差構造為
bt=xP-Wt·xP。
下面推導記憶樣本能夠收斂到自己的有效性。
(1)對於輸入樣本中的任意目標矢量xp,p=1,2,…,P,因為(xp-xP)是A中的一個矢量,它屬於A的秩所定義的K個基空間的矢量,所以必存在系數α1,α2,…,αK,使
xp-xP=α1u1+α2u2+…+αKuK,
即
xp=α1u1+α2u2+…+αKuK+xP,
對於U中任意一個ui,有
中國礦產資源評價新技術與評價新模型
由正交性質可知,上式中
當i=j,
當i≠j,
對於輸入模式xi,其網路輸出為
yi=sgn(Wtxi+bt)
=sgn(Wpxi-T·Wmxi+xP-WpxP+T·WmxP)
=sgn[Wp(xi-xP)-T·Wm(xi-xP)+xP]
=sgn[(Wp-T·Wm)(xi-xP)+xP]
=sgn[Wt(xi-xP)+xP]
=sgn[(xi-xP)+xP]
=xi。
(2)對於輸入模式xP,其網路輸出為
yP=sgn(WtxP+bt)
=sgn(WtxP+xP-WtxP)
=sgn(xP)
=xP。
(3)如果輸入一個不是記憶樣本的x,網路輸出為
y=sgn(Wtx+bt)
=sgn[(Wp-T·Wm)(x-xP)+xP]
=sgn[Wt(x-xP)+xP]。
因為x不是已學習過的記憶樣本,x-xP不是A中的矢量,則必然有
Wt(x-xP)≠x-xP,
並且再設計過程中可以通過調節Wt=Wp-T·Wm中的參數T的大小來控制(x-xP)與xP的符號,以保證輸入矢量x與記憶樣本之間存在足夠的大小余額,從而使sgn(Wtx+bt)≠x,使x不能收斂到自身。
用輸入模式給出一組目標平衡點,函數HopfieldDesign( )可以設計出 Hopfield 網路的權值和偏差,保證網路對給定的目標矢量能收斂到穩定的平衡點。
設計好網路後,可以應用函數HopfieldSimu( ),對輸入矢量進行分類,這些輸入矢量將趨近目標平衡點,最終找到他們的目標矢量,作為對輸入矢量進行分類。
三、總體演算法
1.Hopfield網路權值W[N][N]、偏差b[N]設計總體演算法
應用正交化權值設計方法,設計Hopfield網路;
根據給定的目標矢量設計產生權值W[N][N],偏差b[N];
使Hopfield網路的穩定輸出矢量與給定的目標矢量一致。
1)輸入P個輸入模式X=(x[1],x[2],…,x[P-1],x[P])
輸入參數,包括T、h;
2)由X[N][P]構造A[N][P-1]=(x[1]-x[P],x[2]-x[P],…,x[P-1]-x[P]);
3)對A[N][P-1]作奇異值分解A=USVT;
4)求A[N][P-1]的秩rank;
5)由U=(u[1],u[2],…,u[K])構造Wp[N][N];
6)由U=(u[K+1],…,u[N])構造Wm[N][N];
7)構造Wt[N][N]=Wp[N][N]-T*Wm[N][N];
8)構造bt[N]=X[N][P]-Wt[N][N]*X[N][P];
9)構造W[N][N](9~13),
構造W1[N][N]=h*Wt[N][N];
10)求W1[N][N]的特徵值矩陣Val[N][N](對角線元素為特徵值,其餘為0),特徵向量矩陣Vec[N][N];
11)求Eval[N][N]=diag{exp[diag(Val)]}[N][N];
12)求Vec[N][N]的逆Invec[N][N];
13)構造W[N][N]=Vec[N][N]*Eval[N][N]*Invec[N][N];
14)構造b[N],(14~15),
C1=exp(h)-1,
C2=-(exp(-T*h)-1)/T;
15)構造
中國礦產資源評價新技術與評價新模型
Uˊ——U的轉置;
16)輸出W[N][N],b[N];
17)結束。
2.Hopfield網路預測應用總體演算法
Hopfield網路由一層N個斜坡函數神經元組成。
應用正交化權值設計方法,設計Hopfield網路。
根據給定的目標矢量設計產生權值W[N][N],偏差b[N]。
初始輸出為X[N][P],
計算X[N][P]=f(W[N][N]*X[N][P]+b[N]),
進行T次迭代,
返回最終輸出X[N][P],可以看作初始輸出的分類。
3.斜坡函數
中國礦產資源評價新技術與評價新模型
輸出范圍[-1,1]。
四、數據流圖
Hopfield網數據流圖見附圖3。
五、調用函數說明
1.一般實矩陣奇異值分解
(1)功能
用豪斯荷爾德(Householder)變換及變形QR演算法對一般實矩陣進行奇異值分解。
(2)方法說明
設A為m×n的實矩陣,則存在一個m×m的列正交矩陣U和n×n的列正交矩陣V,使
中國礦產資源評價新技術與評價新模型
成立。其中
Σ=diag(σ0,σ1,…σp)p⩽min(m,n)-1,
且σ0≥σ1≥…≥σp>0,
上式稱為實矩陣A的奇異值分解式,σi(i=0,1,…,p)稱為A的奇異值。
奇異值分解分兩大步:
第一步:用豪斯荷爾德變換將A約化為雙對角線矩陣。即
中國礦產資源評價新技術與評價新模型
其中
中國礦產資源評價新技術與評價新模型
j具有如下形式:
中國礦產資源評價新技術與評價新模型
其中ρ為一個比例因子,以避免計算過程中的溢出現象與誤差的累積,Vj是一個列向量。即
Vj=(υ0,υ1,…,υn-1),
則
中國礦產資源評價新技術與評價新模型
其中
中國礦產資源評價新技術與評價新模型
第二步:用變形的QR演算法進行迭代,計算所有的奇異值。即:用一系列的平面旋轉變換對雙對角線矩陣B逐步變換成對角矩陣。
在每一次的迭代中,用變換
中國礦產資源評價新技術與評價新模型
其中變換
在每次迭代時,經過初始化變換V01後,將在第0列的主對角線下方出現一個非0元素。在變換V01中,選擇位移植u的計算公式如下:
中國礦產資源評價新技術與評價新模型
最後還需要對奇異值按非遞增次序進行排列。
在上述變換過程中,若對於某個次對角線元素ej滿足
|ej|⩽ε(|sj+1|+|sj|)
則可以認為ej為0。
若對角線元素sj滿足
|sj|⩽ε(|ej-1|+|ej|)
則可以認為sj為0(即為0奇異值)。其中ε為給定的精度要求。
(3)調用說明
int bmuav(double*a,int m,int n,double*u,double*v,double eps,int ka),
本函數返回一個整型標志值,若返回的標志值小於0,則表示出現了迭代60次還未求得某個奇異值的情況。此時,矩陣的分解式為UAVT;若返回的標志值大於0,則表示正常返回。
形參說明:
a——指向雙精度實型數組的指針,體積為m×n。存放m×n的實矩陣A;返回時,其對角線給出奇異值(以非遞增次序排列),其餘元素為0;
m——整型變數,實矩陣A的行數;
n——整型變數,實矩陣A的列數;
u——指向雙精度實型數組的指針,體積為m×m。返回時存放左奇異向量U;
υ——指向雙精度實型數組的指針,體積為n×n。返回時存放右奇異向量VT;
esp——雙精度實型變數,給定的精度要求;
ka——整型變數,其值為max(m,n)+1。
2.求實對稱矩陣特徵值和特徵向量的雅可比過關法
(1)功能
用雅可比(Jacobi)方法求實對稱矩陣的全部特徵值與相應的特徵向量。
(2)方法說明
雅可比方法的基本思想如下。
設n階矩陣A為對稱矩陣。在n階對稱矩陣A的非對角線元素中選取一個絕對值最大的元素,設為apq。利用平面旋轉變換矩陣R0(p,q,θ)對A進行正交相似變換:
A1=R0(p,q,θ)TA,
其中R0(p,q,θ)的元素為
rpp=cosθ,rqq=cosθ,rpq=sinθ,
rqp=sinθ,rij=0,i,j≠p,q。
如果按下式確定角度θ,
中國礦產資源評價新技術與評價新模型
則對稱矩陣A經上述變換後,其非對角線元素的平方和將減少
綜上所述,用雅可比方法求n階對稱矩陣A的特徵值及相應特徵向量的步驟如下:
1)令S=In(In為單位矩陣);
2)在A中選取非對角線元素中絕對值最大者,設為apq;
3)若|apq|<ε,則迭代過程結束。此時對角線元素aii(i=0,1,…,n-1)即為特徵值λi,矩陣S的第i列為與λi相應的特徵向量。否則,繼續下一步;
4)計算平面旋轉矩陣的元素及其變換後的矩陣A1的元素。其計算公式如下
中國礦產資源評價新技術與評價新模型
5)S=S·R(p,q,θ),轉(2)。
在選取非對角線上的絕對值最大的元素時用如下方法:
首先計算實對稱矩陣A的非對角線元素的平方和的平方根
中國礦產資源評價新技術與評價新模型
然後設置關口υ1=υ0/n,在非對角線元素中按行掃描選取第一個絕對值大於或等於υ1的元素αpq進行平面旋轉變換,直到所有非對角線元素的絕對值均小於υ1為止。再設關口υ2=υ1/n,重復這個過程。以此類推,這個過程一直作用到對於某個υk<ε為止。
(3)調用說明
void cjcbj(double*a,int n,double*v,double eps)。
形參說明:
a——指向雙精度實型數組的指針,體積為n×n,存放n階實對稱矩陣A;返回時,其對角線存放n個特徵值;
n——整型變數,實矩陣A的階數;
υ——指向雙精度實型數組的指針,體積為n×n,返回特徵向量,其中第i列為與λi(即返回的αii,i=0,1,……,n-1)對應的特徵向量;
esp——雙精度實型變數。給定的精度要求。
3.矩陣求逆
(1)功能
用全選主元高斯-約當(Gauss-Jordan)消去法求n階實矩陣A的逆矩陣。
(2)方法說明
高斯-約當法(全選主元)求逆的步驟如下:
首先,對於k從0到n-1做如下幾步:
1)從第k行、第k列開始的右下角子陣中選取絕對值最大的元素,並記住此元素所在的行號和列號,再通過行交換和列交換將它交換到主元素位置上,這一步稱為全選主元;
2)
3)
4)αij-
5)-
最後,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復原則如下:在全選主元過程中,先交換的行、列後進行恢復;原來的行(列)交換用列(行)交換來恢復。
圖8-4 東昆侖—柴北緣地區基於HOPFIELD模型的銅礦分類結果圖
(3)調用說明
int brinv(double*a,int n)。
本函數返回一個整型標志位。若返回的標志位為0,則表示矩陣A奇異,還輸出信息「err**not inv」;若返回的標志位不為0,則表示正常返回。
形參說明:
a——指向雙精度實型數組的指針,體積為n×n。存放原矩陣A;返回時,存放其逆矩陣A-1;
n——整型變數,矩陣的階數。
六、實例
實例:柴北緣—東昆侖地區銅礦分類預測。
選取8種因素,分別是重砂異常存在標志、水化異常存在標志、化探異常峰值、地質圖熵值、Ms存在標志、Gs存在標志、Shdadlie到區的距離、構造線線密度。
構置原始變數,並根據原始數據構造預測模型。
HOPFIELD模型參數設置:訓練模式維數8,預測樣本個數774,參數個數8,迭代次數330。
結果分44類(圖8-4,表8-5)。
表8-5 原始數據表及分類結果(部分)
續表
㈥ torchsummary:計算神經網路模型各層輸出特徵圖尺寸及參數量
【注意】:此工具是針對PyTorch的,需配合PyTorch使用!
使用順序可概括如下:
(1)導入torchsummary中的summary對象;
(2)建立神經網路模型;
(3)輸入 模型(model)、輸入尺寸(input_size)、批次大小(batch_size)、運行平台(device) 信息,運行後即可得到summary函數的返回值。
4個參數在(3)中已進行了解釋, 其中device是指cpu或gpu .
輸出如下:
可以看出, batch_size可以不指定,默認為-1 。summary函數會對模型中的每層輸出特徵圖尺寸進行計算,並計算每層含有的參數量以及模型的參數總量等信息,對於逐層統計計算和分析非常直觀和簡潔。