【花師小哲】當(dāng)代煉金術(shù)(神經(jīng)網(wǎng)絡(luò))前沿(5)——稀疏網(wǎng)絡(luò)與特征篩選

其實(shí)這一篇才是預(yù)定第4篇,只不過七巧板的論文實(shí)在是太好玩了,于是就稍微把這篇放一放。
這里需要糾正一下,之前動(dòng)態(tài)我是說這篇文章是講attention的,其實(shí)說錯(cuò)了,attention在這里確實(shí)只是關(guān)注的意思,不是“attention is all you need”的attention機(jī)制的意思。這篇文章是講稀疏訓(xùn)練的。
這篇我就有些可以分享的東西了,不像上一篇只能簡單列舉下做了什么工作。

1.從神經(jīng)網(wǎng)絡(luò)到矩陣
之前的專欄中我們講了基礎(chǔ)的神經(jīng)網(wǎng)絡(luò):
【花師小哲】面向一般大眾的神經(jīng)網(wǎng)絡(luò)科普(1)-基礎(chǔ)知識(shí)
其中,最基礎(chǔ)和最經(jīng)典的就是全連接神經(jīng)網(wǎng)絡(luò),如圖所示:

這里,我們再稍微講的更具體一些,即我們把這個(gè)網(wǎng)絡(luò)轉(zhuǎn)變成機(jī)器能懂的東西。我們只關(guān)注輸入層和第一層隱藏層(即和輸入層直接相連的那一層)。
我們要用到的數(shù)學(xué)工具是線性代數(shù)。假設(shè)輸入層有m個(gè)節(jié)點(diǎn),那我們就可以把它寫成一個(gè)m*1的向量,同理,假設(shè)第一層隱藏層有n個(gè)節(jié)點(diǎn),我們也可以將他寫成一個(gè)n*1的向量,那么問題來了,怎樣把一個(gè)m*1的向量變成一個(gè)n*1的向量呢?很簡單,你需要的知識(shí)一個(gè)m*n的矩陣。而這個(gè)m*n的矩陣剛好就代表了從輸入層到第一層隱藏層的所有邊的權(quán)重。
于是,整個(gè)神經(jīng)網(wǎng)絡(luò)就可以寫成y=W2(W1(x))這樣的形式,整個(gè)神經(jīng)網(wǎng)絡(luò)只不過是矩陣運(yùn)算而已。當(dāng)然,正向確實(shí)非常簡單,但反向傳播會(huì)難很多。

2.稀疏網(wǎng)絡(luò)與稀疏矩陣
全連接網(wǎng)絡(luò)有什么問題的,顯而易見的問題就是慢,畢竟每次訓(xùn)練都要更新全部的參數(shù)。而且,并不是所有參數(shù)都是有用的,有些參數(shù)可能只發(fā)揮了很小的作用。
于是乎,有人開始想辦法把訓(xùn)練好的網(wǎng)絡(luò)做“剪枝”,即對于訓(xùn)練好的全連接神經(jīng)網(wǎng)絡(luò)中不重要的邊剪掉。這種方法經(jīng)過發(fā)展,就變成了直接訓(xùn)練稀疏網(wǎng)絡(luò),即一開始神經(jīng)網(wǎng)絡(luò)的邊就不是全連接的,如圖所示:

這種改法其實(shí)對于我們?nèi)绾伪硎旧窠?jīng)網(wǎng)絡(luò)其實(shí)影響不大,還是y=W2(W1(x))這樣的式子,只不過W2和W1變成了稀疏矩陣。稀疏矩陣其實(shí)就是一個(gè)大矩陣中只有少量元素是有用的矩陣,這一塊各種編程語言都能很好地支持稀疏矩陣了,所以由全連接網(wǎng)絡(luò)到稀疏網(wǎng)絡(luò)碰到的困難其實(shí)不大。

3.特征篩選
一個(gè)基本點(diǎn):對于輸入的數(shù)據(jù),不同特征對結(jié)果的影響是不一樣的,例如我們有三個(gè)特征:①a:星球的表面溫度②b:星球的直徑③c:小明的身高,以此來預(yù)測次星球的壽命。這時(shí)候,③基本上是和問題完全無關(guān)的特征。
如果我們使用線性回歸來做的話,估計(jì)可能會(huì)得到這樣一個(gè)公式:
y=10a+8b+0.01c+6(這個(gè)式子肯定不對,只是舉例子),可以看到權(quán)重大的特征相對更重要(當(dāng)然,實(shí)際應(yīng)用是要做其他處理的,否則d=c/1000這樣的特征好像就有用了)。
但是,這個(gè)式子是不對的,如果我們有強(qiáng)迫癥,那么0.01也是不允許的,這個(gè)就該是0。或者說,我們應(yīng)該把特征c直接排除掉。
解決這個(gè)東西的方法例如經(jīng)典的LASSO回歸(LASSO雖然并不是專門來解決這個(gè)問題的,但由于L1范數(shù)的特點(diǎn),確實(shí)經(jīng)常能夠達(dá)到這種效果)等。也有其他很多其他的方法,本論文就是使用稀疏神經(jīng)網(wǎng)絡(luò)來完成特征篩選的。

4.具體方法
本文使用的是動(dòng)態(tài)稀疏網(wǎng)絡(luò),很好理解,就是稀疏連接并不是靜態(tài)設(shè)置好的,而是會(huì)在運(yùn)算過程中不斷迭代變化的,具體來說是增加一些可能有用的邊并刪除一些作用較少的邊,整個(gè)過程如圖所示:

一個(gè)直覺是如果一個(gè)特征(輸入層的一個(gè)節(jié)點(diǎn))連接了更多的節(jié)點(diǎn),那么它就是更重要的,此論文就是通過這種方法來實(shí)現(xiàn)特征篩選的。

稀疏矩陣計(jì)算還是很重要的一個(gè)研究的。