介紹一種有趣的競爭神經網路!

人工智慧頻道發表於2019-01-22

幾年前,我想出了一個有趣的方法來理解複雜的概念。典型的大學教學方式是首先通過大量的時間投入去做奠定理論基礎的事情,重新學習一些可能你已經知道的基礎科目,然後用來解釋正在發生的事情。與這種方法相反,當你試圖理解某些東西的時候,其實實際的步驟是這樣的,你會先從一個很有趣的動機出發,然後再深入瞭解它的原因和方法。

本篇文章將為大家提供一個有趣的介紹:競爭神經網路及其在向量量化中的應用。

向量量化:一般概念

想象一下,假設你有一張黑白影像。您可以將這樣的影像想象為您想要為每個座標為(x,y)的點著色,就像是數學練習冊中的那樣的網格以及每個列表上的點的顏色,你的點越多,那麼你的列表就越長。在下面這個例子中,我將我的工作徽章頭像進行了數字化,併為它建立了這樣一個相對較低密度的列表 - 它給了我大約15,000個點:

介紹一種有趣的競爭神經網路!

我的工作徽章照片,數字化

問題是,我們是否可以減少點數並仍然可以獲得一個可識別的、語義上忠實的影像?一種解決方案是找到相當好地代表其附近的一堆點的點,並將它們用作這些點的“代理”。我們不是使用15,000個點,而是指定幾百個新點,並將它們放在適當位置,以便它們各自相對代表它們周圍的點。這將允許我們用最近的新點替換所有這些點,有效地將15,000點減少到幾百點。更重要的是,我們可以建立一個新點列表 - 這通常被稱為'code book' - 而不是每次都要放下座標,我們只需要替換每個點的(x,y)座標對與最近的code book的索引。如果我們已經很好地設定了點數,那麼我們將獲得相當不錯的近似值。

介紹一種有趣的競爭神經網路!

向量量化的基本思想是:通過 codebook中較少數量的條目來表示大量向量,每個條目對於它所代表的點是相對良好的代理。

只剩下一個問題:我們如何做到這一點?我的意思是,這是一個好主意,但我們需要找到一些方法來找到這些點。當然,最簡單的方法是定義一個錯誤函式並繼續優化,直到我們得到。

介紹一種有趣的競爭神經網路!

Neural Gas 演算法相對快速地收斂到點集:在20次迭代中,它建立了語義可理解的表示,只有2,500個點,是原來15,564個點的16%。

介紹一種有趣的競爭神經網路!

一種方法是簡單地丟棄隨機點,計算它們代表的新點數以及它們的鄰域中有多少點已經被表示,而其鄰域中有多少點根本不應該被表示。然後我們繼續新增新點並拋棄表現不佳的點。這通常類似於兩種較舊的機器學習方法,稱為簡單競爭性Hebbian學習,問題是這些可能需要很長時間才能收斂。而且大多數時候,結果並不是太令人印象深刻。

Delaunay三角剖分的概念:將點集劃分為三角形,使得沒有點位於另一個三角形(灰色)的外接圓內。根據定義,這也意味著Delaunay三角剖分在三角測量線之間沒有交集。

相反,我們可以做得更好。我們有一些數學技巧可以幫助我們解決這個問題,稱為三角測量。三角測量基本上以特定方式將空間劃分為三角形。有了分數,最簡單的三角測量當然是開始連線點,直到你得到很多三角形。事實證明,有更聰明的方法可以做到這一點。 Delaunay三角剖分在多個點之間建立三角形,使得任何三角形的外接圓(包括三角形的所有三個點的圓)內沒有其他點。這給了我們一個不相交的三角形網格。一個奇妙的小副作用是,如果我們連線外接圓的中心,我們得到所謂的由點限定的空間的Voronoi分割槽。將繪製每個Voronoi分割槽的邊界,使得圍繞點P的Voronoi分割槽將包括更接近P的每個點而不是初始點集中的任何其他點。這有助於我們在點之間很好地劃分空間:我們可以通過簡單地測量codebook點網格內Voronoi分割槽內的點百分比,以及它的空白百分比來測量模型的有效性。這使得相對容易優化的錯誤功能成為可能。一個好處是,Delaunay三角剖分和Voronoi分割槽都很好地推廣到更高的維度,因此無論在二維空間中工作的是什麼,也可以用於更高維空間。

獲得競爭力

介紹一種有趣的競爭神經網路!

一個成長的Neural Gas 演算法模型可以學習相當複雜的拓撲結構,100次迭代,具有高 drop-out 率。

那麼,“競爭”神經網路呢?您可能遇到的大多數神經網路遵循某種模式:具有啟用功能的神經元獲得輸入併產生輸出。從這個意義上講,“競爭”神經網路是完全不同的。相反,在競爭神經網路中,神經元“競爭”被啟用,其中啟用通常是距所選資料點的距離的函式。最接近資料點的神經元 - 即具有最高啟用 - 的“神經元”獲勝,並且朝向資料點移動,吸引其一些鄰域。從這個意義上講,競爭力允許學習拓撲,當用於從較低維度表示重構高維形狀時,這是一種有用的副作用。事實上,建立第一個簡單Neural Gas 模型的Martinetz和Schulten稱其為拓撲代表網路(TRN)。由Marco Piastra撰寫的這篇論文展示了競爭神經網路令人印象深刻的潛力,即複製甚至非常複雜的形狀,例如史丹佛兔子。

介紹一種有趣的競爭神經網路!

Neural Gas 模型可以學習相當複雜的拓撲,例如人臉,如前所述。在這個例子中,從兩個頂點開始並且每十次迭代新增一個新頂點,就會產生一個高dropout、慢收斂的增長Neural Gas,從而產生一個近似於我的照片的效果。該圖僅包含752個節點,壓縮率為原始15,564個點的95.17%。

競爭學習與神經生理學有相當密切的相似性。這是Hebbian學習的一種形式。當獨立的神經元同時對刺激產生響應時,突觸強度(神經元'接近度的度量)就會增加。神經元的這一特徵被生長Neural Gas用於連線各個頂點,並且我們不得不指定地圖大小和形狀,就像自組織特徵對映那樣:最佳匹配和第二最佳匹配作為“共同響應者”連線起來並且連線的強度取決於兩點之間響應的相對強度。如果兩個點都響應強烈,則表明它們與資料點幾乎等距,因此可以視為緊密連線 - “一起觸發”會導致演算法將相關點“連線在一起”。

雖然聽起來很抽象,但這些演算法可以很容易地在我們日常的機器學習工作量中發揮作用。在無監督學習中,生長 Neural Gas和自組織特徵對映許多應用中的第一個也是最重要的,當然是聚類。但是與許多聚類演算法不同,生長 Neural Gas不需要提前提供簇的數量。在不相交的簇的數量是開始的問題的情況下,可能是有用的。例如,考慮計算頁面上單詞數量的問題:如果配置良好,生長Neural Gas可以將單詞連線到單個子圖中,並且斷開連線的子圖數量會給出單詞計數。類似地,使用基於生長Neural Gas的演算法可以容易地計算難以視覺化和解釋的多個高維聚類。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545819/viewspace-2564394/,如需轉載,請註明出處,否則將追究法律責任。

相關文章