0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MNIST是一個簡單的計算機視覺數(shù)據(jù)集

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-05-07 16:14 ? 次閱讀

從某種程度上來說,沒有人真正理解機器學(xué)習(xí)。

這不是一個復(fù)雜的問題,我們所做的一切也都非常簡單,但由于一些天生的“障礙”,我們?nèi)祟惔_實難以理解發(fā)生在計算機“大腦”中的那些簡單事物。

人類長久以來的生理進(jìn)化決定了我們能推理二維、三維的空間,在這基礎(chǔ)上,我們也能靠想象思考四維空間里發(fā)生的變化。但這對于機器學(xué)習(xí)來說卻是小巫見大巫,它通常需要處理數(shù)千、數(shù)萬,甚至數(shù)百萬個維度!即便是很簡單的問題,如果我們把它放進(jìn)維度非常高的空間內(nèi)來解決,以人類的目前的大腦,不理解也不足為奇。

因此,直觀地感受高維空間是沒有希望的。

為了在高維空間中做一些事情,我們建立了許多工具,其中一個龐大的、發(fā)達(dá)的分支是降維,它探索的是把高維數(shù)據(jù)轉(zhuǎn)換為低維數(shù)據(jù)的技術(shù),也為此做了大量可視化方面的工作。

所以如果我們希望可視化機器學(xué)習(xí)、深度學(xué)習(xí),這些技術(shù)會是我們必備的基礎(chǔ)知識??梢暬馕吨覀兡芨庇^地感受實際正在發(fā)生的事情,我們也可以借此更深入地了解神經(jīng)網(wǎng)絡(luò)。為了這一目的,我們要做的第一件事是理解降維,我們選擇的數(shù)據(jù)集是MNIST。

MNIST

MNIST是一個簡單的計算機視覺數(shù)據(jù)集,它由28×28像素的手寫數(shù)字圖像組成,例如:

每個MNIST數(shù)據(jù)點,每個圖像,都可以被看作是描述每個像素有多暗的數(shù)字?jǐn)?shù)組。例如我們可以這么看待這個手寫數(shù)字“1”:

因為每個圖像的像素都是28×28,所以我們得到的其實是一個28×28的矩陣??紤]到矢量的每個分量都是介于0和1之間的一個描述明暗程度的值,如果我們把每一個值都看做是維向量,那這就是一個28×28=784的高維空間。

所以空間內(nèi)的矢量其實并不都是MNIST數(shù)字,不同像素點之間的區(qū)別稱得上是天差地別。為了論證這一點,我們從圖像中隨機選取了幾個點并把它們放大——這是個像素為28×28的圖像——每個像素的顏色可能是黑色的、白色的或帶陰影灰色的。如下圖所示,選取的隨機點看起來更像是噪聲。

像MNIST數(shù)字這樣的圖像是非常罕見的,雖然數(shù)據(jù)點被嵌入在784維空間中,但它們又被包含在一個非常小的子空間內(nèi)。用更復(fù)雜的話說,就是它們占據(jù)較低維的子空間。

人們對MNIST數(shù)字占據(jù)的子空間維數(shù)具體是多少有很多討論,其中流行在機器學(xué)習(xí)研究人員中的一個假設(shè)是流形理論:MNIST是一個低維流形結(jié)構(gòu),高維數(shù)據(jù)通過它嵌入高維空間中,形成掃掠和彎曲。而與拓?fù)鋽?shù)據(jù)分析更相關(guān)的另一個假設(shè)是,像MNIST數(shù)字這樣的數(shù)據(jù)具有一些觸手狀的突起,這些突起會嵌入周圍空間中。

但是事實究竟是什么,沒有人真正知道!

MNIST立方體

為了探索這一點,我們可以把MNIST數(shù)據(jù)點看作是在一個784維立方體中固定的一點。立方體的每個維度都對應(yīng)一個特定的像素,根據(jù)像素強度,數(shù)據(jù)點的范圍在0到1之間。在維度的一邊,是像素為白色的圖像,在另一邊,是像素為黑色的圖像。在它們之間的是灰色圖像。

如果這樣想,一個自然而然的問題是如果我們只看到一個特定的二維面,那這個立方體看起來會是什么樣的?就像盯著一個雪球,我們只能看到投影在二維平面上的數(shù)據(jù)點,一個維度對應(yīng)像素強度,另一個維度對應(yīng)另一個像素。這樣做能幫助我們用原始的方式探索MNIST。

在下圖中,每個點都表示一個MNIST數(shù)據(jù)點,顏色表示所屬類別(哪個數(shù)字)。當(dāng)我們把鼠標(biāo)放在上面后,它的圖像會出現(xiàn)在各個軸上。每個軸對應(yīng)特定的像素明暗強度。

探索這個可視化有助于我們挖掘MNIST結(jié)構(gòu)的一些信息。如下圖所示,如果選取坐標(biāo)為p18,16和p7,12的像素,數(shù)字0會聚集在右下角,數(shù)字9則會集中在左上角。

紅色點為0,粉色點為9

如果選取坐標(biāo)為p5,6和p7,9處的像素,那數(shù)字2會大量出現(xiàn)在右上角,數(shù)字3則集中在右下角。

黃綠色點為2,綠色點為3

這看似是個小小的進(jìn)步,但我們其實不可能完全以這種方式理解MNIST。這些小發(fā)現(xiàn)有時并沒什么說服力,它們更像是運氣的產(chǎn)物,雖然我們從中窺見的關(guān)于結(jié)構(gòu)的信息量很少,但這種思維方式是正確的。如果我們從平面看不到理想的數(shù)據(jù)結(jié)構(gòu),那我們也許能從某個角度來觀察這些數(shù)據(jù)。

這就牽出了第二個問題,我們該怎么選擇合適的角度。平行看數(shù)據(jù)時,我們該轉(zhuǎn)動幾度;垂直看數(shù)據(jù)時,我們又該怎么扭?好在這個難題已經(jīng)有人幫我們解決了——主成分分析(PCA)。比起手動計算,PCA將會找到最多的角度(捕捉盡可能多的變化)。

從一個角度看784維的立方體意味著我們要確定立方體每個軸的傾斜方向:是向這邊、向那邊。還是兩頭向中間。具體來說,以下是PCA選出的兩個角度的圖片,紅色表示像素的尺寸向一側(cè)傾斜,藍(lán)色則表示向另一側(cè)傾斜。

如果MNIST數(shù)字基本呈現(xiàn)紅色,它就在對應(yīng)的一側(cè)結(jié)束,反之亦然。我們選擇PCA選擇的第一個“主要成分”作為水平角度,然后再把“大部分紅色小部分藍(lán)色”的點推向左側(cè),把“大部分藍(lán)色小部分紅色”的點推向右側(cè)。

現(xiàn)在我們知道最佳的水平和垂直角度,我們可以嘗試從這個角度來觀察立方體。

下圖和之前的可視化動圖基本類似,不同的是它把兩個軸固定為第一個“主成分”和第二個“主成分”,也就是我們觀察數(shù)據(jù)的角度。在每個軸上的圖像中,藍(lán)色和紅色表示的是該像素的不同“傾向”。

用PCA可視化MNIST

雖然效果更好了,但它還稱不上是完美的,因為即便從最好的角度觀察,MNIST的數(shù)據(jù)也不能很好地排列。這是個很特別的高維解構(gòu),簡單的線性變換還不能分解其中的復(fù)雜性。

值得慶幸的是,我們有一些強大的工具來處理這類“不友好”的數(shù)據(jù)集。

基于優(yōu)化的降維

這里我們再明確一下可視化的目的——我們?yōu)槭裁匆非蟆巴昝馈钡目梢暬??可視化的目?biāo)又該是什么?

如果在可視化圖像中,數(shù)據(jù)點之間的距離和它們在原高維空間中的距離相同,那這就是個理想的結(jié)果。因為做到了這點,就意味著我們已經(jīng)捕捉到了數(shù)據(jù)的全局分布。

更準(zhǔn)確地說,對于MNIST圖像中的任意兩個數(shù)據(jù)點xi和xj,它們之間有兩種距離,一種是在原空間中的距離d?i,j,另一種則是在可視化圖像中的歐式距離di,j。它們之間的cost是:

這個值是衡量可視化是好是壞的標(biāo)準(zhǔn):只要距離不相同,那這就是個不好的可視化。如果C值過大,這意味著可視化圖像中的距離和原距離很不一樣;如果C值很小,這說明兩者十分相近;如果C值為0,我們就得到了一個“完美”的嵌入。

這聽起來就像一個優(yōu)化問題了!相信任何一個深度學(xué)習(xí)研究人員都知道該怎么做——選取一個隨機點并使用梯度下降。

用MDS可視化MNIST

這種方法被稱為多維縮放(MDS)。首先,我們把每個點隨機放在一個平面上,用一個長度等于原始距離d?i,j的“彈簧”把點與點連接起來,隨著點在空間中自由移動,這個“彈簧”能依靠物理把新距離控制在可控范圍內(nèi)。

當(dāng)然,事實上這個cost是不會等于0的,因為在控制距離不變的情況下把高維空間嵌入二位空間是不可能的,我們也需要這種不可能。雖然還有些缺陷,但從上圖中我們可以看到,這些數(shù)據(jù)點已經(jīng)顯示出了聚類趨勢,這是個進(jìn)步不小的可視化。

Sammon映射

為了更盡善盡美,這里我們再引入MDS的一個變體——Sammon映射。首先要聲明一點,就是MDS有很多變體,而且它們的共同特征是認(rèn)為cost函數(shù)強調(diào)數(shù)據(jù)的局部結(jié)構(gòu)比整體結(jié)構(gòu)更重要。當(dāng)采用中心化的內(nèi)積計算鄰近矩陣時,我們希望原始距離和主成分是相等的,為了捕捉更多可能性,Sammon映射的做法是保護(hù)較小的距離。

如下圖所示,比起關(guān)注距離較遠(yuǎn)兩點的位置,Sammon映射更關(guān)注附近點的距離控制,如果說某兩個點原距離是其他兩點的二分之一,那它們被“重視”的程度會是后者的兩倍。

用Sammon映射可視化MNIST

對于MNIST,這種方法并沒有顯示出太大的不同,這是因為高維空間中數(shù)據(jù)點的距離不夠直觀,例如MNIST中的相同數(shù)字“1”之間的距離:

或者不同的數(shù)字“9”和“3”之間的距離(比前者的3倍要少一些):

對于相同的數(shù)字,它們身上的不同細(xì)節(jié)變化數(shù)不勝數(shù),因此它們的實際平均距離會比我們想象中的高不少。相反地,對于本身距離很遠(yuǎn)的數(shù)字,它們的差異隨距離增加,因此遇到兩個完全不同的數(shù)字也在情理之中。簡而言之,在高維空間中,相同數(shù)字之間的距離和不同數(shù)字之間距離的差距并沒有我們想象中的那么大。

基于圖像的可視化

因此,如果我們最終希望得到的是低維空間嵌入結(jié)果,那優(yōu)化的目標(biāo)應(yīng)該更明確。

我們可以假設(shè)存在一個和MNIST距離最接近的圖(V,E),它之中的節(jié)點就是MNIST里的數(shù)據(jù)點,并且這些點都連接到原始空間中最接近它的三個點。有了它,我們就能丟掉高維信息,只需思考它嵌入地位空間的方式。

給定這樣的圖,我們可以使用標(biāo)準(zhǔn)圖形布局算法來可視化MNIST。 force-directed graph drawing是一種繪圖方法,它的做法是將圖的節(jié)點定位在二維或三維空間中,使得所有的邊或多或少具有相等的長度。在這里,我們可以假設(shè)所有數(shù)據(jù)點都是互相排斥的帶電粒子,距離是“彈簧”,這樣做之后得到的cost函數(shù)就是:

用圖像可視化MNIST

上圖發(fā)現(xiàn)了MNIST中的很多結(jié)構(gòu),尤其是它似乎找到了不同的MNIST類。雖然它們重疊,但在圖像布局優(yōu)化期間,我們可以發(fā)現(xiàn)聚類之間的相互滑動。由于這些連接,最終嵌入低維平面時它們還是保持重疊狀態(tài),但我們起碼看到了cost函數(shù)試圖分離它們的嘗試。

這也是基于圖像的可視化的一個優(yōu)點。在之前的可視化嘗試中,即便我們在某個聚類里看到了某個點,我們也無法確定它是否真的在那兒。但圖像可以完全規(guī)避這一點,例如如果我們檢查著色為紅色的數(shù)字“0”數(shù)據(jù)點聚類,我們可以在里面發(fā)現(xiàn)一個藍(lán)色點“6”,查看它周圍的數(shù)據(jù)點我們就能知道,這個“6”之所以被歸類在這里是因為它寫的太差了,長得更像個“0”。

t-SNE

t-SNE是本文介紹的最后一種降維方法,它在深度學(xué)習(xí)中非常受歡迎,但考慮到其中涉及不少數(shù)學(xué)知識,所以我們得先理一理。

粗略地說,t-SNE試圖優(yōu)化的東西是保存數(shù)據(jù)的拓?fù)浣Y(jié)構(gòu)。對于每一點,它構(gòu)造了一個概念,即周圍的其他點都是它的“鄰居”,我們要試圖使所有點具有相同數(shù)量的“鄰居”。因此它的目標(biāo)就是嵌入并使各個點擁有的“鄰居”數(shù)相同。

在某些方面,t-SNE很像基于圖像的可視化,但它的特色在于將數(shù)據(jù)點之間的關(guān)聯(lián)性轉(zhuǎn)換為概率,這個點可能是“鄰居”,也可能不是“鄰居”,每個點成為“鄰居”的程度不同。

用t-SNE可視化MNIST

t-SNE通常在揭示數(shù)據(jù)集聚類和子聚類中有優(yōu)秀表現(xiàn),但它容易陷入局部最小值。如下圖所示,兩側(cè)的紅點“0”因為中間的藍(lán)點“6”無法聚集在一起。

一些技巧可以幫助我們避免這些糟糕的局部極小值。其中首選的方法是增大數(shù)據(jù)量,考慮到這是一篇演示文章,我們在這里只用了1000個樣本,如果用上MNIST全部50000多個數(shù)據(jù)點,效果會更好。另外就是用模擬退火、調(diào)超參等。下圖是一個比較好的可視化:

用t-SNE可視化MNIST

在Maaten & Hinton(2008)最初那篇介紹t-SNE的論文里,他們給出了一些更完美的可視化結(jié)果,感興趣的讀者可以前往一讀。

在我們上面的例子中,t-SNE不僅給出了最好的聚類,我們也可以通過圖像從中推測一些東西。

用t-SNE可視化MNIST

圖中數(shù)字“1”這個聚類被橫向水平拉伸,從左向右查看數(shù)據(jù)點,我們觀察到了這個趨勢:

這些“1”先向左傾,再直立,最后向右傾。對此一個靠譜的想法是在MNIST中,相同數(shù)字變化的主要因素是傾斜。這很可能是因為MNIST通過多種方式使數(shù)字標(biāo)準(zhǔn)化,而這些變化又以直立的手寫體為分界線分屬兩邊。這種情況不是孤例,其他數(shù)字的分布也或多或少表現(xiàn)出了這個特點。

三維可視化

除了降維到二維平面,三維也是非常常見的一個維度??紤]到之前在平面中許多聚類有重疊,因此我們也可視化了MNIST數(shù)字降維到三維的一些情況。

用圖像可視化MNIST(3D版)

不出所料,三維版本效果更好。這些聚類分離地很徹底,并且在糾纏時不再重疊。

看到這里我們就能知道為什么分類MNIST數(shù)字的準(zhǔn)確率達(dá)到95%左右很容易,但越往上就越難。在可視化圖像中,這些數(shù)據(jù)的分類十分清晰,因此但凡性能較好的分類器都能達(dá)成任務(wù)目標(biāo)。如果要更細(xì)化,這就很難了,因為有些手寫體確實難以歸類。

用MDS可視化MNIST(3D版)

看來MDS的二維比三維表現(xiàn)更好一點。

用t-SNE可視化MNIST

因為t-SNE假想了一大堆鄰居,所以各聚類分得更散。但總體而言,它的效果還是不錯。

如果你想要將高維數(shù)據(jù)可視化,那么在三維空間應(yīng)該比二維更適合。

小結(jié)

降維是一個非常發(fā)達(dá)的領(lǐng)域,本文只抓住了事物表面,還有上百種方法亟待測試,所以各位讀者可以親自動手去試一試。

人們往往很容易陷入一種思維,固執(zhí)地認(rèn)定其中一種技術(shù)比其他技術(shù)更好。但我認(rèn)為其實大部分方法都是互補的,它們?yōu)榱俗龅綑?quán)衡,都必須放棄一個點來抓住另一個點,如PCA嘗試保留線性結(jié)構(gòu),MDS嘗試保留全局幾何,而t-SNE嘗試保留拓?fù)洌ㄠ徲蚪Y(jié)構(gòu))。

這些技術(shù)為我們提供了一種獲得理解高維數(shù)據(jù)的方法。盡管直接試圖用人的思想來理解高維數(shù)據(jù)幾乎是無望的,但通過這些工具,我們可以開始取得進(jìn)展。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 圖像
    +關(guān)注

    關(guān)注

    2

    文章

    1075

    瀏覽量

    40269
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8306

    瀏覽量

    131841
  • 數(shù)據(jù)集
    +關(guān)注

    關(guān)注

    4

    文章

    1197

    瀏覽量

    24538

原文標(biāo)題:可視化MNIST:探索圖像降維過程

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    機器視覺計算機視覺的關(guān)系簡述

    計算機視覺門獨立的學(xué)科,有著30年左右的歷史,圖像處理、模式識別、人工智能技術(shù)為體,著重服務(wù)于
    發(fā)表于 05-13 14:57

    計算機視覺/深度學(xué)習(xí)領(lǐng)域常用數(shù)據(jù)匯總

    數(shù)據(jù)。與Imagenet數(shù)據(jù)對應(yīng)的有享譽全球的“ImageNet國際
    發(fā)表于 08-29 10:36

    自動駕駛系統(tǒng)要完成哪些計算機視覺任務(wù)?

    Geiger 的研究主要集中在用于自動駕駛系統(tǒng)的三維視覺理解、分割、重建、材質(zhì)與動作估計等方面。他主導(dǎo)了自動駕駛領(lǐng)域著名數(shù)據(jù) KITTI 及多項自動駕駛計算機
    發(fā)表于 07-30 06:49

    用于計算機視覺訓(xùn)練的圖像數(shù)據(jù)介紹

    用于計算機視覺訓(xùn)練的圖像數(shù)據(jù)
    發(fā)表于 02-26 07:35

    RISC指令計算機的優(yōu)點有哪些

    術(shù)語RISC(Reduced Instruction Set Computer,精簡指令集計算機)CISC(Complex Instruction Set Computer,復(fù)雜指令計算機
    發(fā)表于 12-14 06:33

    計算機視覺與機器視覺區(qū)別

     “計算機視覺”,是指用計算機實現(xiàn)人的視覺功能,對客觀世界的三維場景的感知、識別和理解。計算機視覺
    的頭像 發(fā)表于 12-08 09:27 ?1.2w次閱讀

    計算機視覺常用算法_計算機視覺有哪些分類

    本文主要介紹了計算機視覺常用算法及計算機視覺的分類。
    的頭像 發(fā)表于 07-30 17:34 ?1.4w次閱讀

    用于計算機視覺訓(xùn)練的圖像數(shù)據(jù)

    角度的不同的攝像機查看圖像或來自醫(yī)療掃描儀的多維數(shù)據(jù)。 ? 用于計算機視覺訓(xùn)練的圖像數(shù)據(jù) Labelme:麻省理工學(xué)院
    的頭像 發(fā)表于 12-31 09:33 ?2258次閱讀

    用于計算機視覺訓(xùn)練的圖像數(shù)據(jù)

    計算機視覺使計算機能夠理解圖像和視頻的內(nèi)容。計算機視覺的目標(biāo)是使人類視覺系統(tǒng)可以實現(xiàn)任務(wù)自動化。
    的頭像 發(fā)表于 02-12 16:13 ?1310次閱讀

    機器學(xué)習(xí)和計算機視覺的前20圖像數(shù)據(jù)

    計算機視覺使計算機能夠理解圖像和視頻的內(nèi)容。計算機視覺的目標(biāo)是使人類視覺系統(tǒng)可以實現(xiàn)任務(wù)自動化。
    發(fā)表于 01-28 07:40 ?5次下載
    機器學(xué)習(xí)和<b class='flag-5'>計算機</b><b class='flag-5'>視覺</b>的前20<b class='flag-5'>個</b>圖像<b class='flag-5'>數(shù)據(jù)</b><b class='flag-5'>集</b>

    淺談計算機視覺的無人車感知

    數(shù)據(jù) (5)路面與車道檢測數(shù)據(jù) 3、計算機視覺能解決的問題: (1)物體的識別與跟蹤:識別(
    的頭像 發(fā)表于 03-24 15:23 ?1706次閱讀

    機器視覺計算機視覺的區(qū)別

    計算機視覺研究領(lǐng)域,專注于使機器能夠解釋和分析來自周圍世界的視覺數(shù)據(jù)
    發(fā)表于 02-22 09:34 ?949次閱讀

    你需要知道的11Torchvision計算機視覺數(shù)據(jù)

    計算機視覺顯著增長的領(lǐng)域,有許多實際應(yīng)用,從自動駕駛汽車到面部識別系統(tǒng)。該領(lǐng)域的主要挑戰(zhàn)之是獲得高質(zhì)量的
    的頭像 發(fā)表于 04-10 16:31 ?655次閱讀

    機器視覺計算機視覺的區(qū)別

    機器視覺計算機視覺的區(qū)別 機器視覺計算機視覺是兩
    的頭像 發(fā)表于 08-09 16:51 ?1757次閱讀

    計算機視覺的主要研究方向

    計算機視覺(Computer Vision, CV)作為人工智能領(lǐng)域的重要分支,致力于使計算機能夠像人眼
    的頭像 發(fā)表于 06-06 17:17 ?520次閱讀