從隱空間理解編碼器(Encoder)
1 前言
當(dāng)我們?cè)陂喿x關(guān)于AIGC 的文章時(shí),常常會(huì)看到Encoder和Decoder名詞。它們是AI( 即ML) 的核心模型,如果能深入理解它們的涵意和功能,就能更流暢地理解相關(guān)文章的內(nèi)容,以及圖示。例如,關(guān)于Diff usion( 擴(kuò)張模型) 的文章里??吹饺鐖D1。
(圖1 來(lái)源https://www.joaoleal.com/how-stablediffusion-dall-e-2-and-midjourney-work)
圖1 說(shuō)明諸如Stable Diff usion 里,就含有文本編碼器(text encoder)、圖像編碼器(img decoder)、以及解碼器(decoder)。這些都是AI 里的基本名詞,處處可見(jiàn)。再如,關(guān)于DeepFake( 換臉) 的文章里,也??吹竭@兩個(gè)名詞( 圖2)。
(圖2 來(lái)源:https://arxiv.org/pdf/1909.11573.pdf)
這圖里就說(shuō)明了,一般的DeepFake 模型里常含有一個(gè)圖像編碼器(Eecoder)、以及兩個(gè)圖像解碼器( 即Decoder_A 和Decoder_B)。
諸如上述圖片,其中的”Encoder”、”Decoder 名詞是處處常見(jiàn)的。所以把它弄清楚是有必要的。于是,本文就先來(lái)解說(shuō)第1 個(gè)名詞:編碼器(Encoder)。當(dāng)您深入理解編碼器了,就能輕易繼續(xù)理解第2 個(gè)名詞:解碼器(Decoder)。
2 從歐式空間出發(fā)
為了充分掌握它,就必需從歐式(Euclidean) 空間來(lái)入手。所謂空間就是大家熟悉的坐標(biāo)空間(Coordinate space)。例如,一維空間就是數(shù)線( 圖3)。
圖3
這圖里有兩個(gè)一維空間。人們隨著閱歷增多,逐漸學(xué)習(xí),就會(huì)連連看,把兩個(gè)空間對(duì)映起來(lái)( 圖4)。
圖4
人們把它記憶于腦海里??吹匠靥晾镉泻谏仪?,就會(huì)聯(lián)想的< 鴨>??吹匠靥晾镉邪咨仪荩赡芫蜁?huì)聯(lián)想的< 鵝> 或< 雞>。接下來(lái),請(qǐng)您先思考:AI 如何學(xué)會(huì)上述的連連看呢? 也就是,人們?nèi)绾萎?dāng)老師,把上述的連連看智能,傳授( 教導(dǎo)) 給AI 模型,讓它也能記憶上述的連連看關(guān)系。
其實(shí),它是依賴一個(gè)簡(jiǎn)單的數(shù)學(xué)公式:Y=X*W+B。有時(shí)候會(huì)再添加激活函數(shù),如:Z = Sigmoid(Y)。于是,拿來(lái)X = 0,放入公式計(jì)算出Y=4.6 的值( 圖5)。
圖5
AI 就依賴這些參數(shù)( 即W 和B 值) 來(lái)記憶這項(xiàng)連連看的智慧。于是,再拿來(lái)X = 255,放入公式計(jì)算出Y = 0.5 的值( 圖6)。
圖6
當(dāng)AI 計(jì)算出Y=4.6,很接近于4,就連結(jié)到< 鴨> 了,也就憑過(guò)去的學(xué)習(xí)經(jīng)驗(yàn)和智慧,拿起畫筆畫出一只黑色鴨了。同樣地,AI 計(jì)算出Y = 0.5,很接近于0,就連結(jié)到< 雞> 了,也就憑過(guò)去的學(xué)習(xí)經(jīng)驗(yàn)和智慧,拿起畫筆畫出一只白色雞了。這就是AI 繪圖創(chuàng)作的源點(diǎn)。
在上述的例子里,白色灰階值為0,只有1 個(gè)特征值(Feature),可以是使用1 維空間表示。同理,當(dāng)x = [255,100] 時(shí),它即是2 維歐式空間里的一個(gè)點(diǎn)。
依此類推,當(dāng)x = [255, 255, 255] 時(shí),它即是3 維歐式空間里的一個(gè)點(diǎn)。在AI 里,就拿歐式空間來(lái)表達(dá)宇宙中的一切事物或現(xiàn)象。例如,拿歐式空間來(lái)表達(dá)RGB色彩,就成為大家熟知的RGB 色彩空間( 圖7)。
圖7
3 范例演練
此范例里,包含4 張圖像,各章都由4 個(gè)像素(Pixel)所組成( 圖8)。
圖8
請(qǐng)您練習(xí)想想看,在AI 里如何使用歐式空間來(lái)表達(dá)這4 件事物( 即4 張圖) 呢? 答案是:每一張圖像有4*3 = 12 個(gè)值( 即12 個(gè)特征),每一個(gè)特征值各在一維度軸上。于是,上述每一張圖在12 維歐式空間里,就是一個(gè)點(diǎn)。以此類推,這是1 張512 x512 的JPG 圖像( 圖9)。
圖9 圖源自《仙劍奇?zhèn)b傳》
請(qǐng)您練習(xí)想想看,在AI 里如何使用歐式空間來(lái)表達(dá)這張圖像呢? 答案是: 每一張圖像有512*512*3 個(gè)值( 即特征),每一個(gè)特征值各在一維度軸上。于是,上述這張圖在512*512*3維歐式空間里,就是1 個(gè)點(diǎn)。
基于上述的基礎(chǔ),接下來(lái),就可來(lái)理解一個(gè)常見(jiàn)的名詞:Embedded 及Embedding 。剛才提到,在這12 維空間里,存放( 記載) 這4張圖( 只含4 個(gè)點(diǎn))。似乎有些浪費(fèi)空間,計(jì)算也常比較費(fèi)時(shí)。那么,我們能否把它降維呢?例如,利用5 維空間的4 個(gè)點(diǎn)來(lái)代表這4 張圖,會(huì)更省空間。
答案是:可以的。但是,請(qǐng)想一想:5 維空間的每一個(gè)點(diǎn)只能含有5 個(gè)值( 特征),而上述每一張圖有12 個(gè)值,該怎么辦呢?這個(gè)降維過(guò)程,就稱為:嵌入(Embedding )。即是:高維空間里的點(diǎn),對(duì)應(yīng)到低維空間里的點(diǎn)。于是,可將兩個(gè)不同的高維空間里的點(diǎn),嵌入到同一個(gè)低維( 如3 維) 空間里( 圖10)。
圖10 內(nèi)含圖片引自《仙劍奇?zhèn)b傳》
這表達(dá)了,仙劍奇?zhèn)b傳里的“趙靈兒”喜歡“圖像-B”,而“李逍遙”喜歡“圖像-A”。負(fù)責(zé)嵌入的模型叫:編碼器(Encoder)。
人們想象可觀察空間里事物,然后由Encoder 來(lái)進(jìn)行編碼,即嵌入到隱空間里,而AI 則對(duì)隱空間里的嵌入數(shù)據(jù)( 通稱為:Embedding code) 進(jìn)行操作,來(lái)組合、生成創(chuàng)新的東西( 仍在隱空間里),然后交給Decoder來(lái)還原出可觀察空間的事物( 如新圖像、或新文句等)。例如,更多創(chuàng)新組合( 圖11)。
圖11
上圖里的灰色部分就是隱空間,而Diffusion 就是在這隱空間里,進(jìn)行圖像的組合創(chuàng)新。
4 結(jié)束語(yǔ)
深刻領(lǐng)會(huì)Encoder 和Decoder 的功能,非常有助于理解AIGC 的涵意。例如,理解Encoder 在進(jìn)行嵌入到低維空間時(shí),會(huì)過(guò)濾掉一些訊息。然后Decoder 必需( 依據(jù)其所學(xué)習(xí)的智慧) 把被過(guò)濾掉的細(xì)節(jié)部分弭補(bǔ)起來(lái)。
此時(shí),像Diffusion 在隱空間里的創(chuàng)新組合,以及其Decoder 所添加弭補(bǔ)的部分,就是Diffusion 生成的內(nèi)容。
(本文來(lái)源于《電子產(chǎn)品世界》雜志2023年6月期)
評(píng)論