新聞中心

        EEPW首頁 > 智能計算 > 設(shè)計應(yīng)用 > 從隱空間理解編碼器(Encoder)

        從隱空間理解編碼器(Encoder)

        作者:高煥堂 時間:2023-06-22 來源:電子產(chǎn)品世界 收藏


        本文引用地址:http://www.104case.com/article/202306/447898.htm

        1 前言

        當(dāng)我們在閱讀關(guān)于AIGC 的文章時,常常會看到Encoder和Decoder名詞。它們是AI( 即ML) 的核心模型,如果能深入理解它們的涵意和功能,就能更流暢地理解相關(guān)文章的內(nèi)容,以及圖示。例如,關(guān)于Diff usion( 擴(kuò)張模型) 的文章里常看到如圖1。

        1687448711624451.png

        (圖1 來源https://www.joaoleal.com/how-stablediffusion-dall-e-2-and-midjourney-work)

        圖1 說明諸如Stable Diff usion 里,就含有文本(text encoder)、圖像(img decoder)、以及解碼器(decoder)。這些都是AI 里的基本名詞,處處可見。再如,關(guān)于DeepFake( 換臉) 的文章里,也常看到這兩個名詞( 圖2)。

        1687495490596687.png

        (圖2 來源:https://arxiv.org/pdf/1909.11573.pdf)

        這圖里就說明了,一般的DeepFake 模型里常含有一個圖像(Eecoder)、以及兩個圖像解碼器( 即Decoder_A 和Decoder_B)。

        諸如上述圖片,其中的”Encoder”、”Decoder 名詞是處處常見的。所以把它弄清楚是有必要的。于是,本文就先來解說第1 個名詞:編碼器(Encoder)。當(dāng)您深入理解編碼器了,就能輕易繼續(xù)理解第2 個名詞:解碼器(Decoder)。

        2 從歐式空間出發(fā)

        為了充分掌握它,就必需從歐式(Euclidean) 空間來入手。所謂空間就是大家熟悉的坐標(biāo)空間(Coordinate space)。例如,一維空間就是數(shù)線( 圖3)。

        1687495562196625.png

        圖3

        這圖里有兩個一維空間。人們隨著閱歷增多,逐漸學(xué)習(xí),就會連連看,把兩個空間對映起來( 圖4)。

        1687495631448652.png

        圖4

        人們把它記憶于腦海里。看到池塘里有黑色家禽,就會聯(lián)想的< 鴨>。看到池塘里有白色家禽,可能就會聯(lián)想的< 鵝> 或< 雞>。接下來,請您先思考:AI 如何學(xué)會上述的連連看呢? 也就是,人們?nèi)绾萎?dāng)老師,把上述的連連看智能,傳授( 教導(dǎo)) 給AI 模型,讓它也能記憶上述的連連看關(guān)系。

        其實(shí),它是依賴一個簡單的數(shù)學(xué)公式:Y=X*W+B。有時候會再添加激活函數(shù),如:Z = Sigmoid(Y)。于是,拿來X = 0,放入公式計算出Y=4.6 的值( 圖5)。

        1687495711637175.png

        圖5

        AI 就依賴這些參數(shù)( 即WB 值) 來記憶這項(xiàng)連連看的智慧。于是,再拿來X = 255,放入公式計算出Y = 0.5 的值( 圖6)。

        1687495756625069.png

        圖6

        當(dāng)AI 計算出Y=4.6,很接近于4,就連結(jié)到< 鴨> 了,也就憑過去的學(xué)習(xí)經(jīng)驗(yàn)和智慧,拿起畫筆畫出一只黑色鴨了。同樣地,AI 計算出Y = 0.5,很接近于0,就連結(jié)到< 雞> 了,也就憑過去的學(xué)習(xí)經(jīng)驗(yàn)和智慧,拿起畫筆畫出一只白色雞了。這就是AI 繪圖創(chuàng)作的源點(diǎn)。

        在上述的例子里,白色灰階值為0,只有1 個特征值(Feature),可以是使用1 維空間表示。同理,當(dāng)x = [255,100] 時,它即是2 維歐式空間里的一個點(diǎn)。

        依此類推,當(dāng)x = [255, 255, 255] 時,它即是3 維歐式空間里的一個點(diǎn)。在AI 里,就拿歐式空間來表達(dá)宇宙中的一切事物或現(xiàn)象。例如,拿歐式空間來表達(dá)RGB色彩,就成為大家熟知的RGB 色彩空間( 圖7)。

        1687495832444797.png

        圖7

        3 范例演練

        此范例里,包含4 張圖像,各章都由4 個像素(Pixel)所組成( 圖8)。

        1687495880751830.png

        圖8

        請您練習(xí)想想看,在AI 里如何使用歐式空間來表達(dá)這4 件事物( 即4 張圖) 呢? 答案是:每一張圖像有4*3 = 12 個值( 即12 個特征),每一個特征值各在一維度軸上。于是,上述每一張圖在12 維歐式空間里,就是一個點(diǎn)。以此類推,這是1 張512 x512 的JPG 圖像( 圖9)。

        image.png

        圖9 圖源自《仙劍奇?zhèn)b傳》

        請您練習(xí)想想看,在AI 里如何使用歐式空間來表達(dá)這張圖像呢? 答案是: 每一張圖像有512*512*3 個值( 即特征),每一個特征值各在一維度軸上。于是,上述這張圖在512*512*3維歐式空間里,就是1 個點(diǎn)。

        基于上述的基礎(chǔ),接下來,就可來理解一個常見的名詞:Embedded 及Embedding 。剛才提到,在這12 維空間里,存放( 記載) 這4張圖( 只含4 個點(diǎn))。似乎有些浪費(fèi)空間,計算也常比較費(fèi)時。那么,我們能否把它降維呢?例如,利用5 維空間的4 個點(diǎn)來代表這4 張圖,會更省空間。

        答案是:可以的。但是,請想一想:5 維空間的每一個點(diǎn)只能含有5 個值( 特征),而上述每一張圖有12 個值,該怎么辦呢?這個降維過程,就稱為:嵌入(Embedding )。即是:高維空間里的點(diǎn),對應(yīng)到低維空間里的點(diǎn)。于是,可將兩個不同的高維空間里的點(diǎn),嵌入到同一個低維( 如3 維) 空間里( 圖10)。

        1687496007592060.png

        圖10 內(nèi)含圖片引自《仙劍奇?zhèn)b傳》

        這表達(dá)了,仙劍奇?zhèn)b傳里的“趙靈兒”喜歡“圖像-B”,而“李逍遙”喜歡“圖像-A”。負(fù)責(zé)嵌入的模型叫:編碼器(Encoder)。

        人們想象可觀察空間里事物,然后由Encoder 來進(jìn)行編碼,即嵌入到里,而AI 則對里的嵌入數(shù)據(jù)( 通稱為:Embedding code) 進(jìn)行操作,來組合、生成創(chuàng)新的東西( 仍在里),然后交給Decoder來還原出可觀察空間的事物( 如新圖像、或新文句等)。例如,更多創(chuàng)新組合( 圖11)。

        1687496059357532.png

        圖11

        上圖里的灰色部分就是隱空間,而Diffusion 就是在這隱空間里,進(jìn)行圖像的組合創(chuàng)新。

        4 結(jié)束語

        深刻領(lǐng)會Encoder 和Decoder 的功能,非常有助于理解AIGC 的涵意。例如,理解Encoder 在進(jìn)行嵌入到低維空間時,會過濾掉一些訊息。然后Decoder 必需( 依據(jù)其所學(xué)習(xí)的智慧) 把被過濾掉的細(xì)節(jié)部分弭補(bǔ)起來。

        此時,像Diffusion 在隱空間里的創(chuàng)新組合,以及其Decoder 所添加弭補(bǔ)的部分,就是Diffusion 生成的內(nèi)容。

        (本文來源于《電子產(chǎn)品世界》雜志2023年6月期)



        關(guān)鍵詞: 202306 隱空間 編碼器

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 项城市| 金湖县| 昌宁县| 长海县| 鱼台县| 宁国市| 阳朔县| 荣昌县| 亚东县| 洛扎县| 宝兴县| 承德市| 探索| 夹江县| 呼图壁县| 新和县| 宜宾县| 独山县| 宁津县| 鄂州市| 高要市| 凌海市| 尖扎县| 江门市| 溧水县| 乡城县| 崇明县| 琼海市| 邢台县| 庆云县| 从江县| 长治市| 泗水县| 红河县| 阿城市| 河西区| 黎川县| 枝江市| 治县。| 信阳市| 忻城县|