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