1. 程式人生 > >系統學習機器學習之神經網路(四) --SOM

系統學習機器學習之神經網路(四) --SOM

轉自:http://blog.csdn.net/xbinworld/article/details/50818803,其實內容更多的是百度文庫裡叫《SOM自組織特徵對映神經網路》這篇文章上的,博主增加了一些理解。

本文詳細介紹一下自組織神經網路概念和原理,並重點介紹一下自組織特徵對映SOM網路。SOM和現在流行的ANN(MLP)模型在結構上類似,都由非常簡單的神經元結構組成,但是SOM是一類“無監督學習”模型,一般的用法是將高維的input資料在低維的空間表示[1],因此SOM天然是一種降維方法。除了降維,SOM還可以用於資料視覺化,以及聚類等應用中。

1、背景:自組織(競爭型)神經網路

SOM是一種自組織(競爭型)神經網路,除了SOM外,其他常見的自組織(競爭型)神經網路還有對偶傳播(Counter propagation)網路,自適應共振理論(Adaptive Resonance Theory)網路等。

生物學研究表明,在人腦的感覺通道上,神經元的組織原理是有序排列的。當外界的特定時空資訊輸入時,大腦皮層的特定區域興奮,而且類似的外界資訊在對應的區域是連續映像的。生物視網膜中有許多特定的細胞對特定的圖形比較敏感,當視網膜中有若干個接收單元同時受特定模式刺激時,就使大腦皮層中的特定神經元開始興奮,輸入模式接近,與之對應的興奮神經元也接近;在聽覺通道上,神經元在結構排列上與頻率的關係十分密切,對於某個頻率,特定的神經元具有最大的響應,位置相鄰的神經元具有相近的頻率特徵,而遠離的神經元具有的頻率特徵差別也較大。大腦皮層中神經元的這種響應特點不是先天安排好的,而是通過後天的學習自組織形成的[2]。(注:我認為其中很大一部分是由無監督學習自發形成的)

在生物神經系統中,存在著一種側抑制現象,即一個神經細胞興奮以後,會對周圍其他神經細胞產生抑制作用。這種抑制作用會使神經細胞之間出現競爭,其結果是某些獲勝,而另一些則失敗。表現形式是獲勝神經細胞興奮,失敗神經細胞抑制。自組織(競爭型)神經網路就是模擬上述生物神經系統功能的人工神經網路[3]。

自組織(競爭型)神經網路的結構及其學習規則與其他神經網路相比有自己的特點。在網路結構上,它一般是由輸入層和競爭層構成的兩層網路;兩層之間各神經元實現雙向連線,而且網路沒有隱含層。有時競爭層各神經元之間還存在橫向連線(注:上面說的特點只是根據傳統網路設計來說的一般情況,隨著技術發展,尤其是深度學習技術的演進,我認為這種簡單的自組織網路也會有所改變,比如,變得更深,或者引入time series概念)。在學習

演算法上,它模擬生物神經元之間的興奮、協調與抑制、競爭作用的資訊處理的動力學原理來指導網路的學習與工作,而不像多層神經網路(MLP)那樣是以網路的誤差作為演算法的準則。競爭型神經網路構成的基本思想是網路的競爭層各神經元競爭對輸入模式響應的機會,最後僅有一個神經元成為競爭的勝者。這一獲勝神經元則表示對輸入模式的分類[3]。因此,很容易把這樣的結果和聚類聯絡在一起。

2、競爭學習的概念與原理

一種自組織神經網路的典型結構:如下圖,由輸入層和競爭層組成。主要用於完成的任務基本還是“分類”和“聚類”,前者有監督,後者無監督。聚類的時候也可以看成將目標樣本分類,只是是沒有任何先驗知識的,目的是將相似的樣本聚合在一起,而不相似的樣本分離。

這裡寫圖片描述

說到這裡,一般的資料都會介紹一下歐式距離和餘弦相似度,我也會講一下基本的概念,更多距離計算方法可以參考我前面轉載介紹的《距離計算方法總結》,以及《機器學習距離公式總結》,尤其是後一篇,寫的不錯:)

最常見的距離(相似度)計算方法就是歐氏距離和餘弦相似度了,示意圖如下,我就不多講了。

歐式距離:
這裡寫圖片描述

餘弦相似度:
這裡寫圖片描述

很容易證明,當圖中X與Xi都是模為1的單位向量時(其實不一定要1,只要是常數就行),歐氏距離等價於餘弦相似度(距離最小相似度越大),而餘弦相似度退化為向量內積。

競爭學習規則——Winner-Take-All
網路的輸出神經元之間相互競爭以求被啟用,結果在每一時刻只有一個輸出神經元被啟用。這個被啟用的神經元稱為競爭獲勝神經元,而其它神經元的狀態被抑制,故稱為Winner Take All。

那麼如何尋找獲勝神經元?首先,對網路當前輸入模式向量X和競爭層中各神經元對應的權重向量Wj(對應j神經元)全部進行歸一化,使得X和Wj模為1;當網路得到一個輸入模式向量X時,競爭層的所有神經元對應的權重向量均與其進行相似性比較,並將最相似的權重向量判為競爭獲勝神經元。前面剛說過,歸一化後,相似度最大就是內積最大:

這裡寫圖片描述

也就是在單位圓(2D情況)中找到夾角最小的點。
這裡寫圖片描述

知道哪個神經元獲勝後就是神經元的輸出和訓練調整權重了:
這裡寫圖片描述

因此,總結來說,競爭學習的步驟是:
(1)向量歸一化
(2)尋找獲勝神經元
(3)網路輸出與權值調整
步驟(3)完成後回到步驟1繼續訓練,直到學習率衰減到0。學習率處於(0,1],一般隨著學習的進展而減小,即調整的程度越來越小,神經元(權重)趨於聚類中心。

為了說明情況,用一個小例子[2]:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

第二部分這裡寫圖片描述

1、SOM背景

1981年芬蘭Helsink大學的T.Kohonen教授提出一種自組織特徵對映網,簡稱SOM網,又稱Kohonen網。Kohonen認為:一個神經網路接受外界輸入模式時,將會分為不同的對應區域,各區域對輸入模式具有不同的響應特徵,而且這個過程是自動完成的。自組織特徵對映正是根據這一看法提出來的,其特點與人腦的自組織特性相類似。

2、SOM典型結構

典型SOM網共有兩層,輸入層模擬感知外界輸入資訊的視網膜,輸出層模擬做出響應的大腦皮層。(講之前再提醒一句,這裡介紹的只是經典形式,但是希望讀者和我自己不要被現有形式束縛了思維,當然初學者,包括我自己,先從基本形式開始理解吧)。 下圖是1維和2維的兩個SOM網路示意圖。

這裡寫圖片描述

SOM網的權值調整域
和上一節介紹的WTA策略不同,SOM網的獲勝神經元對其鄰近神經元的影響是由近及遠,由興奮逐漸轉變為抑制,因此其學習演算法中不僅獲勝神經元本身要調整權向量,它周圍的神經元在其影響下也要程度不同地調整權向量。這種調整可用三種函式表示,下圖的bcd。

這裡寫圖片描述

Kohonen演算法:基本思想是獲勝神經元對其鄰近神經元的影響是由近及遠,對附近神經元產生興奮影響逐漸變為抑制。在SOM中,不僅獲勝神經元要訓練調整權值,它周圍的神經元也要不同程度調整權向量。常見的調整方式有如下幾種[2]:

  • 墨西哥草帽函式:獲勝節點有最大的權值調整量,臨近的節點有稍小的調整量,離獲勝節點距離越大,權值調整量越小,直到某一距離0d時,權值調整量為零;當距離再遠一些時,權值調整量稍負,更遠又回到零。如(b)所示
  • 大禮帽函式:它是墨西哥草帽函式的一種簡化,如(c)所示。
  • 廚師帽函式:它是大禮帽函式的一種簡化,如(d)所示。

以獲勝神經元為中心設定一個鄰域半徑R,該半徑圈定的範圍稱為優勝鄰域。在SOM網學習演算法中,優
勝鄰域內的所有神經元均按其離開獲勝神經元的距離遠近不同程度地調整權值。 優勝鄰域開始定得很大,但其大小隨著訓練次數的增加不斷收縮,最終收縮到半徑為零。

3、SOM Kohonen 學習演算法

演算法總結如下:

Kohonen學習演算法

  1. 初始化,對競爭層(也是輸出層)各神經元權重賦小隨機數初值,並進行歸一化處理,得到w^j,j=1,2,...m;建立初始優勝領域Nj(0);學習率η初始化;
  2. 對輸入資料進行歸一化處理,得到X^p,j=1,2,...P,總共有P個數據;
  3. 尋找獲勝神經元:從X^p與所有w^j的內積中找到最大j
  4. 定義優勝鄰域Nj(t)j為中心確定t時刻的權值調整域,一般初始鄰域Nj(0)較大,訓練時Nj(t)隨訓練時間逐漸收縮;
  5. 調整權重,對優勝鄰域Nj(t)內的所有神經元調整權重:

    wij(t+1)=wij(t)+η(t,N)[xPiwij(t)]i=1,2,...,njNj(t)
    其中i是一個神經元所有輸入邊的序標。式中,η(t,N)是訓練時間t和鄰域內第j個神經元與獲勝神經元j之間的拓撲距離N的函式,該函式一般有如下規律:
    這裡寫圖片描述
  6. 結束檢查,檢視學習率是否減小到0,或者以小於閾值。

第(5)點的規律是說,隨著時間(離散的訓練迭代次數)變長,學習率逐漸降低;隨著拓撲距離的增大,學習率降低。學習率函式的形式一般可以寫成這樣:η(t,N)=η(t)eN,其中η(t)可採用t的單調下降函式也稱退火函式,比如下面這些形式都符合要求:
這裡寫圖片描述

第(4)點中,j*的領域Nj(t)是隨時間逐漸收縮的,比如說下圖,其中8個鄰點稱為Moore neighborhoods,6個鄰點的稱為hexagonal grid。隨著t的增大,鄰域逐漸縮小。
這裡寫圖片描述

本篇最後看一個SOM工作原理示意圖,首先給定訓練資料(綠點)和神經元權重初始值(紅花)

這裡寫圖片描述

通過迭代訓練之後,神經元權重趨向於聚類中心;
這裡寫圖片描述

Test階段,給定資料點(黃點),基於WTA策略,用內積直接算出和哪個神經元最相似就是分到哪個類。
這裡寫圖片描述

演算法流程總結

這裡寫圖片描述

第三部分

SOM設計細節

輸出層設計
輸出層神經元數量設定和訓練集樣本的類別數相關,但是實際中我們往往不能清除地知道有多少類。如果神經元節點數少於類別數,則不足以區分全部模式,訓練的結果勢必將相近的模式類合併為一類;相反,如果神經元節點數多於類別數,則有可能分的過細,或者是出現“死節點”,即在訓練過程中,某個節點從未獲勝過且遠離其他獲勝節點,因此它們的權值從未得到過更新。

不過一般來說,如果對類別數沒有確定知識,寧可先設定較多的節點數,以便較好的對映樣本的拓撲結構,如果分類過細再酌情減少輸出節點。“死節點”問題一般可通過重新初始化權值得到解決。

輸出層節點排列的設計
輸出層的節點排列成哪種形式取決於實際應用的需要,排列形式應儘量直觀反映出實際問題的物理意義。例如,對於旅行路徑類的問題,二維平面比較直觀;對於一般的分類問題,一個輸出節點節能代表一個模式類,用一維線陣意義明確結構簡單。

權值初始化問題
基本原則是儘量使權值的初始位置與輸入樣本的大概分佈區域充分重合,不要出現大量的初始“死節點”。

  • 一種簡單易行的方法是從訓練集中隨機抽取m個輸入樣本作為初始權值
  • 另一種可行的辦法是先計算出全體樣本的中心向量,在該中心向量基礎上迭加小隨機數作為權向量初始值,也可將權向量的初始位置確定在樣本群中(找離中心近的點)。

優勝鄰域的設計
優勝領域設計原則是使領域不斷縮小,這樣輸出平面上相鄰神經元對應的權向量之間既有區別又有相當的相似性,從而保證當獲勝節點對某一類模式產生最大響應時,其領域節點也能產生較大響應。領域的形狀可以是正方形、六邊形或者菱形。優勢領域的大小用領域的半徑表示,r(t)的設計目前沒有一般化的數學方法,通常憑藉經驗來選擇。下面是兩種典型形式:

r(t)=C1(1tT)r(t)=C1eB1t/T
C1為於輸出層節點數有關的正常數,B1為大於1的常數,T為預先選定的最大訓練次數。

學習率的設計
在訓練開始時,學習率可以選取較大的值,之後以較快的速度下降,這樣有利於很快捕捉到輸入向量的大致結構,然後學習率在較小的值上緩降至0值,這樣可以精細地調整權值使之符合輸入空間的樣本分佈結構。在上一篇中,我們提到最終的學習率是由學習率*優勝領域的影響,也有一些資料是把兩者分開的,學習率就是一個遞減的函式(學習率可以參考上面優勝鄰域半徑的設定形式,可選形式類似),而優勝鄰域也是t的遞減函式,只不過我們隊優勝鄰域內的點進行更新罷了。

SOM功能分析

1、保序對映——將輸入空間的樣本模式類有序地對映在輸出層上。

1989年Kohonen給出一個SOM網的著名應用例項,即把不同的動物按其屬性對映到二維輸出平面上,使屬性相似的動物在SOM網輸出平面上的位置也相近。訓練集選了16種動物,每種動物用一個29維向量來表示。前16個分量構成符號向量(不同的動物進行16取1編碼),後13個分量構成屬性向量,描述動物的13種屬性的有或無(用1或0表示)。

這裡寫圖片描述

這裡寫圖片描述

SOM網輸出平面上有10×10個神經元,16個動物模式輪番輸入訓練,最後輸出平面呈現16種動物屬性特徵對映,屬性相似的挨在一起,實現了特徵的有序分佈。(實現這個圖只需要判斷每個神經元的模式和哪個樣本最近)
這裡寫圖片描述

2、資料壓縮
將高維空間的樣本在保持拓撲結構不變的條件下投影到低維的空間,在這方面SOM網具有明顯的優勢。無論輸入樣本空間是多少維,其模式都可以在SOM網輸出層的某個區域得到相應。SOM網經過訓練以後,在高維空間輸入相近的樣本,其輸出相應的位置也相近。

3、特徵提取
從高維空間樣本向低維空間的對映,SOM網的輸出層相當於低維特徵空間。

另外,[2]還提到了字元排序,複合材料損傷監測等等有趣的應用,有興趣的可以看一下。這裡就不展開了。

SOM提出的比較早,演算法的思想啟發於人腦,主要用於無監督學習,我個人認為是很有發展空間的一類模型;另外,比較早的還有一類網路叫做hopfiled神經網路,後面有時間再寫一下。好,本篇就到這裡,謝謝!

參考資料

相關推薦

系統學習機器學習神經網路 --SOM

轉自:http://blog.csdn.net/xbinworld/article/details/50818803,其實內容更多的是百度文庫裡叫《SOM自組織特徵對映神經網路》這篇文章上的,博主增加了一些理解。 本文詳細介紹一下自組織神經網路概念和原理,並重點介紹一下自組

機器學習神經網路:BP神經網路的介紹和Python程式碼實現

前言:本篇博文主要介紹BP神經網路的相關知識,採用理論+程式碼實踐的方式,進行BP神經網路的學習。本文首先介紹BP神經網路的模型,然後介紹BP學習演算法,推導相關的數學公式,最後通過Python程式碼實現BP演算法,從而給讀者一個更加直觀的認識。 1.BP網路模型 為了將理

【深度學習】卷積神經網路CNN

卷積神經網路(Convolutional Neural NetWork,CNN): 自然語言處理、醫藥發現、災難氣候發現、人工智慧程式。 輸入層: 整個神經網路的輸入 卷積層: 卷積神經網路中最重要的部分,卷積層中每一個節點的輸入只是上一層神經網路的一小塊,一般為3

神經網路:應用示例分類

一、 傳統分類模型的侷限 在之前的文章中(《神經網路(一)》、《神經網路(二)》和《神經網路(三)》),我們討論的重點是神經網路的理論知識。現在來看一個實際的例子,如何利用神經網路解決分類問題。(為了更好地展示神經網路的特點,我們在這個示例中並不劃分訓練集和測

Python實戰神經網路1

 python有專門的神經網路庫,但為了加深印象,我自己在numpy庫的基礎上,自己編寫了一個簡單的神經網路程式,是基於Rosenblatt感知器的,這個感知器建立在一個線性神經元之上,神經元模型的求和節點計算作用於突觸輸入的線性組合,同時結合外部作用的偏置,對若干個

TensorFlow神經網路手寫數字識別

內容來自mooc人工智慧實踐第五講 一、MNIST資料集一些用到的基礎函式語法 ############ warm up ! ############ # 匯入imput_data模組 from tensorflow.examples.tutorials.mnist import

CNN卷積神經網路dropout

第一篇文章介紹了卷積神經網路的資料輸入形式和權值的初始化:CNN)卷積神經網路(一) 第二篇文章介紹了卷積操作,常用的啟用函式(CNN)卷積神經網路(二) 第三篇介紹了卷積神經網路的池化層,視覺化理解以及用數學的角度理解卷積操作:(CNN)卷積神經網路(三)

卷積神經網路:學習率、權重衰減、動量

學習率、權重衰減、動量被稱為超引數,因為他們不是由網路訓練而得到的引數 權重衰減 L2正則化就是在代價函式後面再加上一個正則化項: C0代表原始的代價函式,後面那一項就是L2正則化項,λ就是權重衰減項。 作用:防止過擬合 原理: 一個所謂“顯

Tensorflow 框架搭建神經網路

# Copyright (c)2018, 東北大學軟體學院學生 # All rightsreserved # 檔名稱:test.py # 作 者:孔雲 #問題描述:利用placeholder實現輸入定義 #coding:utf-8 #兩層簡單神經網路(全連線) impor

MatConvNet卷積神經網路——用自己的資料訓練

嘗試過從Matconvnet官網上下載的已經訓練好的神經網路之後,最近自己訓練了能夠識別果樹上紅蘋果的神經網路。先上圖。原始碼放在https://github.com/YunpengZhai/MATCONVNET 10/21/2016 更新:把滑動窗的程式碼放到了githu

系統學習機器學習神經網路十一 --TDNN

近來在瞭解卷積神經網路(CNN),後來查到CNN是受語音訊號處理中時延神經網路(TDNN)影響而發明的。本篇的大部分內容都來自關於TDNN原始文獻【1】的理解和整理。該文寫與1989年,在識別"B", "D", "G"三個濁音中得到98.5%的準確率,高於HMM的93.7%。是CNN的先驅。 &

系統學習機器學習神經網路十二 --人工神經網路總結

本來這篇還缺個RBM,但RBM在DBN中使用,暫時放在深度學習那裡。這裡看到一篇非常好的總結,儲存下來。 轉自:http://blog.csdn.net/fengbingchun/article/details/50274471 本文主要對人工神經網路基礎進行了描述,主要包

機器學習迴圈神經網路

摘要:        多層反饋RNN(Recurrent neural Network、迴圈神經網路)神經網路是一種節點定向連線成環的人工神經網路。這種網路的內部狀態可以展示動態時序行為。不同於前饋神經網路的是,RNN可以利用它內部的記憶來處理任意時序的輸入序列,這讓

機器學習卷積神經網路

摘要:   卷積神經網路(Convolutional Neural Network,CNN)是一種前饋神經網路,它的人工神經元可以響應一部分覆蓋範圍內的周圍單元,對於大型影象處理有出色表現。 引言:   在傳統的機器學習中,通常是我們自己來尋找特徵,而深度學習中我們通過神經網路來自主的學習特診。在大量資

機器學習神經網路機器學習技法

神經網路的動機感知器的線性融合前面我們知道了將簡單的模型進行融合之後會得到一個非常強大的模型。我們試著將感知器(簡單的二元分類模型)做線性融合之後得到下圖:其中每一個節點都是一個感知器,其第一層的感知器都是由前一層X向量與W權重的線性組合,而第二層的感知器又是由前一層的得到的

機器學習-神經網路

上一篇:機器學習-神經網路(一) 神經網路的代價函式 符號 意義 L

深度學習神經網路CNN/RNN/GAN演算法原理+實戰目前最新

第1章 課程介紹 深度學習的導學課程,主要介紹了深度學習的應用範疇、人才需求情況和主要演算法。對課程章節、課程安排、適用人群、前提條件以及學習完成後達到的程度進行了介紹,讓同學們對本課程有基本的認識。 1-1 課程導學 第2章 神經網路入門 本次實戰課程的入門課程。對機器學習和深度學習做了引入

吳恩達深度學習筆記deeplearning.ai卷積神經網路CNN

1. Padding 在卷積操作中,過濾器(又稱核)的大小通常為奇數,如3x3,5x5。這樣的好處有兩點: 在特徵圖(二維卷積)中就會存在一箇中心畫素點。有一箇中心畫素點會十分方便,便於指出過濾器的位置。 在沒有padding的情況下,經過卷積操作,輸出的資

機器學習筆記20】神經網路鏈式求導和反向傳播)

【參考文獻】 【1】《面向機器智慧的TensorFlow實踐》4.7 假設存在網路結果如下 各個層輸出定義 L1=sigmoid(w1⋅x)L_1 = sigmoid(w_1 \cdot x)L1​=sigmoid(w1​⋅x) L2=sigmoid(w2⋅L

機器學習筆記21】神經網路多層感知機)

【參考資料】 【1】《深度學習》 花書 6.1 亦或問題 由於單層感知機相當於在一個空間增加了一個超平面進行分類,那麼對於像亦或問題這樣的情況則無法完成。 因此在多層感知機中增加了一個隱藏層,即一個啟用函式。現代神經網路最常用的啟用函式是整流線性單元,ReL