先以一張圖說明下
“如果我不能創(chuàng)造辫秧,那我并沒有理解”----------理查德費(fèi)曼
我們也許能讓機(jī)器區(qū)分一只貓和一只狗盲赊,但是我們未來也許會(huì)希望讓機(jī)器自己畫一只貓
Generatvie Models主要有3種磕谅,提出的時(shí)間都離現(xiàn)在不超過十年,我們先講解PixelRNN
PixelRNN我們先舉個(gè)例子砌滞,比如我們創(chuàng)建一張圖片歇父,我們每次生成一個(gè)像素函筋,以3*3為例沙合,我們可以先通過神經(jīng)網(wǎng)絡(luò)輸入橙色得到深藍(lán)色,然后輸入橙色深藍(lán)色得到淺藍(lán)色跌帐,如此下去首懈,有人就會(huì)說輸入維度不固定,怎么實(shí)現(xiàn)的呢谨敛,其實(shí)這就是RNN的效果究履,我們可以理解成NN但是預(yù)留出其他維度空著
如我們機(jī)器學(xué)習(xí)了很多種狗的圖片,然后有一張狗遮住了一半脸狸,讓機(jī)器去預(yù)測(cè)另一半最仑,可能就有下圖中的幾種(PixelRNN是幾種方法里清晰度較高的)
我們?cè)谡Z音上也有其應(yīng)用藐俺,比如我們訓(xùn)練出他可能說的下一個(gè)單詞,就會(huì)形成一段話泥彤;影像上也有訓(xùn)練機(jī)器看很多視頻欲芹,給其一定輸入,讓其生成一段視頻
我們用于手寫數(shù)字的話可能效果不一定太好吟吝,比如我們按下圖的網(wǎng)址菱父,得到寶可夢(mèng)的圖源,每張是40*40剑逃,老師推薦處理成20*20的中間部分浙宜,然后根據(jù)圖片生成寶可夢(mèng)
由于RGB我們訓(xùn)練出的模型r,g,b給的權(quán)重常常比較接近,導(dǎo)致顏色都是近乎灰色的蛹磺,而實(shí)際顏色往往是R,G,B一維大其他兩維小粟瞬,我們就考慮將每一種顏色進(jìn)行one-hot編碼,但是255**3種可能數(shù)量太大称开,于是老師采用了聚類是顏色比較接近的化為一個(gè)顏色亩钟,最終得到167種顏色
素材可以在如下圖網(wǎng)址找到,我們訓(xùn)練后將顏色對(duì)應(yīng)到一定的維度序號(hào)鳖轰,如維度0就是255,255,255白色
我們于是訓(xùn)練好模型后清酥,之前故意留了幾個(gè)模型沒有訓(xùn)練過,然后分別蓋住50%蕴侣,75%得到如下圖結(jié)果焰轻,雖然和實(shí)際圖不一樣,但是機(jī)器學(xué)習(xí)已經(jīng)很強(qiáng)大了昆雀,會(huì)一定的配色辱志,還能自己添加上一定想象∧欤總的來說來評(píng)估機(jī)器生成模型的好壞是很難的
我們之前都是留一部分原圖揩懒,如果我們什么都不給的話會(huì)怎么樣呢,我們?nèi)绻及凑漳P偷膸茁式o挽封,那我們畫多少張圖都是一樣的已球,因此我們引入了隨機(jī),讓其可能選擇概率低的辅愿,就有了如下的幾個(gè)自創(chuàng)圖
我們之前知道auto-encoder智亮,我們會(huì)將一幅圖片生成code,再經(jīng)過解碼生成圖片使其盡可能相似,然后我們就可以用解碼器輸入一個(gè)隨機(jī)的code,看看生成的圖片
然而auto-encoder生成的圖片效果往往都很不好点待,我們就有了VAE阔蛉,他是在中間新加了一層結(jié)構(gòu),如你的code分布是3維的話癞埠,我們就用編碼器輸出2個(gè)3維向量状原,然后和一組正態(tài)分布的3維向量計(jì)算求得c向量聋呢,c就是我們要的code,其中c的表達(dá)式如圖遭笋,我們于是要最小化重構(gòu)誤差坝冕,還要最小化右下的式子
我們比如說生成寶可夢(mèng),code是10維瓦呼,如果隨機(jī)來說喂窟,那生成的圖片可能無法理解,但是我們可以嘗試固定8維央串,其他2維在其二維空間分布取一些點(diǎn)磨澡,看生成的圖片,就可以發(fā)現(xiàn)每個(gè)維度上參數(shù)的關(guān)系质和,就像拉桿一樣稳摄,就可以生成我們想要的寶可夢(mèng)
下面2張圖分別是選取不同的2維調(diào)整的結(jié)果,還是能看出一定的規(guī)律的
我們還可以用于寫句子(課上說是寫詩饲宿,但是我沒看出來任何詩的樣子)厦酬,他是訓(xùn)練好模型后,我們將2句話投影到code空間上瘫想,然后將2個(gè)點(diǎn)等距分割仗阅,就會(huì)生成一些新的句子