從隱空間領(lǐng)會(huì)解碼器
0 引言
在上1 期里,您已經(jīng)領(lǐng)會(huì)( 理解)Encoder 的涵意和功能了。在本期里,就繼續(xù)來領(lǐng)會(huì)Decoder 的涵意和功能。由于這兩者是息息相關(guān)的。例如在Diffusion 模型里,就含有文本編碼器(text encoder)、圖像編碼器(image decoder)、以及解碼器(decoder) 等。
于是,當(dāng)您已經(jīng)深入理解編碼器了,就能輕易繼續(xù)理解另一名詞:解碼器(Decoder)。茲回憶上1 期的說明:Encoder 負(fù)責(zé)從有招的世界,萃取( 過濾)& 沉淀于無招世界( 即AI 的潛藏空間),然后由Decoder 來生成千變?nèi)f化的新招式。例如,上1 期所舉的< 換臉> 范例( 圖1)。
圖1
圖片來源:https://arxiv.org/pdf/1909.11573.pdf
您已經(jīng)理解Encoder了。接下來,我們就來詳細(xì)說明Decoder是如何< 生成>( 無中生有) 呢?
1 Decoder如何生成?
Decoder 的無中生有技能是它經(jīng)由機(jī)器學(xué)習(xí)(Machine Learning) 過程,而獲得的知識(shí)和智能;基于這學(xué)來的智慧來進(jìn)行< 生成>。我們先從簡(jiǎn)單的例子出發(fā)。例如,讓它( 即Decoder) 學(xué)習(xí):< 輸入1 個(gè)數(shù)值--1,而輸出3 個(gè)數(shù)值( 紅色RGB 的數(shù)值) -- [255, 0, 0]。茲以圖2 表示。
圖2
然后繼續(xù)讓學(xué)習(xí)更多。例如學(xué)習(xí):< 輸入一個(gè)數(shù)值--100,而輸出3 個(gè)數(shù)值( 綠色RGB的數(shù)值) -- [0, 255, 0]。并且學(xué)習(xí):< 輸入1 個(gè)數(shù)值-- 200,而輸出3 個(gè)數(shù)值( 藍(lán)色RGB的數(shù)值) -- [0, 0, 255]。共學(xué)習(xí)了3項(xiàng)智能(圖3)。
圖3
俗語說:學(xué)而時(shí)習(xí)之。讓它重復(fù)學(xué)習(xí)更多回合,它就掌握上述的3 項(xiàng)生成< 規(guī)律> 了。之后,只要我們輸入[1]給這Decoder,它就會(huì)生成很接近于[255, 0, 0]的值,但不一定是[255, 0, 0]。同樣地,只要輸入[100]給這Decoder,它就會(huì)生成很接近于[0, 255, 0] 的值,但只是近似而已。
請(qǐng)您想一想:此時(shí)如果您輸入一個(gè)值[95] 給這Decoder,那么它會(huì)輸出什么值呢? 這只是一個(gè)起點(diǎn),逐漸地?cái)U(kuò)大Decoder 的能力,就能做出形形色色的圖像生成了。例如,從上述范例的輸出都是1 個(gè)點(diǎn)的顏色RGB 值。我們可以擴(kuò)大輸出( 生成),例如輸出4 個(gè)彩色點(diǎn)的RGB 值。每一個(gè)點(diǎn)都有RGB 3 個(gè)值,而4 個(gè)點(diǎn)共有12 個(gè)值。也就是輸出1 個(gè)向量,其含有12 個(gè)值(圖4)。
圖4
繼續(xù)讓它學(xué)習(xí)更多種配對(duì)(圖5)。
圖5
接下來, 還可以擴(kuò)大輸出( 生成), 例如輸出128x128 彩色點(diǎn)的RGB 值。每一個(gè)點(diǎn)都有RGB3 個(gè)值,共有128x128x3 個(gè)值。也就是輸出1張JPG圖像( 圖6)。
圖6
然后請(qǐng)?jiān)囅耄捍藭r(shí)如果您輸入一個(gè)向量值[0.1, 0.1,0.9] 給這Decoder,那么它會(huì)生成什么圖像呢?
2 Decoder的生成智慧從哪里來?
以上說明了Decoder 經(jīng)由數(shù)千或數(shù)萬回合的重復(fù)學(xué)習(xí),而學(xué)習(xí)其對(duì)應(yīng)規(guī)律,而擁有生成的技能。而人們透過輸入值來引導(dǎo)它生成不同色彩、形狀的圖像。在上述的說明中,請(qǐng)您勿必留意:人們輸入值〔0, 1, 0〕等只是用來引導(dǎo)Decoder 去微調(diào)其所學(xué)的知識(shí),來繪出作品。就如同學(xué)生問老師時(shí),從古典的角度而觀之,是老師在幫學(xué)生解析問題。其實(shí)也是:學(xué)生在引導(dǎo)老師去表達(dá)其深厚的學(xué)問。
所以,Decoder 不是去解析人們的輸入數(shù)據(jù),而是Decoder 參考人們的輸入( 指引),來微調(diào)Decoder 的所學(xué),而進(jìn)行生成作品。亦即,AI 不是傳統(tǒng)IT 系統(tǒng)依循人們所寫的程序邏輯去創(chuàng)作,而是依其自己所學(xué)習(xí)的規(guī)律去進(jìn)行生成。例如,AI 重復(fù)觀察Picasso 數(shù)百?gòu)埉嬜髦?,學(xué)會(huì)了Picasso 的顏色風(fēng)格( 規(guī)律),AI 就會(huì)依循其所學(xué)的規(guī)律來渲染張大千的畫作。
再舉例說明之,例如有一位媽媽經(jīng)過許多年學(xué)會(huì)做早餐便當(dāng)。今天一早,她的小孩告訴她說:今天便當(dāng)加個(gè)苛包蛋。她就依其小孩指引開始準(zhǔn)備便當(dāng)。她在準(zhǔn)備便當(dāng)?shù)倪^程中,又聽到其小孩說:蛋不要太咸。于是她就微調(diào),而做出了一個(gè):不咸荷包蛋的早餐便當(dāng)。
小孩在兩個(gè)時(shí)間點(diǎn)提供指引:1 個(gè)是創(chuàng)作前,1 個(gè)是創(chuàng)作中。媽媽也可要求小孩提供更多指引,例如媽媽說:請(qǐng)您給我看看其他同學(xué)的便當(dāng)內(nèi)容照片。于是她就依循其他同學(xué)便當(dāng)特色來微調(diào)腦海中便當(dāng)?shù)木跋?,而做? 個(gè)更符合小孩口味的便當(dāng)。這里也要很留意:她就依循其他同學(xué)〈便當(dāng)特色〉來微調(diào)腦海中便當(dāng)?shù)木跋?。只是提取特色而已,而不解析其?xì)節(jié)。
3 Decoder內(nèi)部的NN模型
剛才的范例說明了:人們輸入值〔0, 1〕等只是用來引導(dǎo)Decoder 去微調(diào)其所學(xué)的知識(shí),來繪出作品?,F(xiàn)在繼續(xù)來看看Decoder 的內(nèi)部結(jié)構(gòu)。無論是Encoder 或Decoder,其內(nèi)部都是一個(gè)簡(jiǎn)單的計(jì)算公式: Y = X *W + B。茲以圖表示之( 圖7)。
圖7
看看Decoder內(nèi)部的神經(jīng)網(wǎng)絡(luò)(NN:Neural Netwoks)架構(gòu)( 圖8)。
圖8
這結(jié)構(gòu)里含有w[ ] 數(shù)組,和b[ ] 向量,也就是AI模型的參數(shù)。以圖9 表示之。
圖9
其中的計(jì)算關(guān)系是:
● 當(dāng)我們輸入X=[1,0],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[255, 0,0];
● 當(dāng)我們輸入X=[1,1],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[0, 0, 255];
● 當(dāng)我們輸入X=[0,1],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[0, 255, 0]。
請(qǐng)您試想,上圖里的w[ ] 和b[ ] 為何,才能同時(shí)滿足上述的3 項(xiàng)計(jì)算呢? 其答案并不是唯一的。亦即,可能有好幾組 W&B 可以滿足上述的要求。例如,可以透過機(jī)器學(xué)習(xí),來找到一組< 同時(shí)> 滿足上述3 項(xiàng)的計(jì)算( 圖10)。
圖10
當(dāng)我們輸入X=[1,0],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[255, 0,0]。
其計(jì)算過程為:
● y0 = x0 * w00 + x1 * w10 + b0 = 1*0 + 0*-255 +255 = 255;
● y1 = x0 * w01 + x1 * w11 + b1 = 1*-255 + 0*0 +255 = 0;
● y2 = x0 * w02 + x1 * w12 + b2 = 1*255 + 0*255 -255 = 0 。
于是就輸出了:[255, 0, 0]。同理, 當(dāng)我們輸入X=[1,1],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[0, 0,255]。而且,當(dāng)我們輸入X=[1,1],經(jīng)由Y = X*W+B 的計(jì)算,就輸出Y=[0, 0, 255]。以圖11 表示之。
圖11
于是,這是完美的一組W&B,能同時(shí)滿足上述的3項(xiàng)對(duì)應(yīng)規(guī)律。所謂< 機(jī)器學(xué)習(xí)>,或< 訓(xùn)練模型> 就是AI 在找尋一組完美的W&B。
4 結(jié)束語
為了簡(jiǎn)單易懂起見,上述的Decoder 都是單層NN架構(gòu)而已。然而一般的Decoder 都是深度NN 架構(gòu)( 即含有多個(gè)隱藏層)。還有,像Stable Diffusion 在Encoder與Decoder 之間,又添加了更多隱藏層的計(jì)算,強(qiáng)化隱空間的創(chuàng)新組合能力,來生成更豐富的內(nèi)容。
(本文來源于《電子產(chǎn)品世界》雜志2023年7月期)
評(píng)論