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