下拉選單裡給人看的文案,跟送進模型的那串字,如果是同一個字串,這種錯不會有人發現。介面照樣渲染八個選項,服務照樣回八張圖,沒有例外也沒有告警。要等到有人把八張圖並排放在一起,才看得出其中六張其實是同一個結果。
我們的產品是家長上傳一張孩子的照片,系統寫出並畫出一本以那個孩子為主角的繪本。沒有照片的時候,家長自己挑外觀,膚色是其中一個選項,介面上給了八檔,從最淺排到最深。
七月底,一組八檔並排的對照圖被攤開來看。第一個反應不在「哪一檔畫得準」,而在整條梯度的形狀:中間幾檔看起來根本分不出差別,到最後兩檔才突然變深。
於是把其他參數固定住,五歲女孩、棕髮、鮑伯頭,只改膚色跑滿八檔,量臉部亮度:
161 121 150 132 153 134 73 59
前六檔在 121 到 161 之間亂跳,第七檔一步掉了 61。更難看的是它連單調都不成立:第二檔在介面上叫瓷白,量到 121;第五檔叫蜜色,量到 153。瓷白畫出來比蜜色還暗。
去看實際送給模型的那串字,膚色描述回傳的是色卡標籤直接接上 skin。也就是模型收到的是這八個詞:ivory、porcelain、cream、golden、honey、almond、mahogany、espresso。
這八個詞當初是為了色塊底下那行說明文字挑的。挑選標準是唸起來好聽、在介面上彼此有區別、不要讓人覺得被冒犯。沒有一條標準跟「圖像模型看不看得懂」有關。
拆開來看就很清楚。ivory、porcelain、cream 在模型眼裡是同義詞,三檔擠在同一個點上。golden、honey 都只表示「暖調的淺色」,彼此也分不開。
almond 這一檔最嚴重。這個詞在英語裡幾乎不拿來形容膚色,它常見的搭配是 almond eyes,講的是眼型。第六檔等於什麼膚色資訊都沒送出去,模型只好回到它自己的預設值。而調色盤上這一檔是中棕色,畫出來卻是一個白人小孩。
八個詞裡面,只有 mahogany 和 espresso 無歧義地指向深色。那道斷崖就落在這裡,剛好是第六檔跟第七檔中間。
介面上的中文名一個字都沒動,改的是送進模型前的那一層對照表:
very pale almost white / pale with cool pink undertones / light warm beige / light golden-olive / medium tan / medium brown / deep brown / very deep dark brown
同一組參數重跑,臉部亮度變成:
144 133 117 106 77 68 72 63
單調下降,沒有斷崖。並排目檢的結果,舊的是六個一模一樣的白人小孩加兩個深色的,新的能分出八個不同的孩子。
這裡有一個判據上的細節值得寫下來:真正的判據是並排對照圖用眼睛看,上面那兩排數字只是輔助。取樣框會吃到頭髮和陰影,換一個髮色,整排數字都會跟著跑。那兩排數字只用來回答「有沒有斷崖」這一個問題,回答不了「哪一檔畫對了」。
一個詞能不能操縱圖像模型,取決於模型對它有沒有夠強的先驗。
深淺形容詞本身就排成一條梯子:very pale、pale、light、medium、deep、very deep。模型可以沿著這條梯子走,因為這些詞在訓練資料裡本來就是拿來互相比較的。八個互不相關的顏色名詞排不出梯子,它們各自是一個孤立的點,色相頂多當次要線索。
推論比這次的修法本身更有用:任何一個給使用者看的標籤,都不該直接拿去當 prompt。兩份文案的受眾不一樣,挑詞的標準也不一樣。共用一個字串看起來省了一次維護,實際上是把介面文案的審美標準,安靜地套到了模型輸入上。
還有一步不能跳過。改字串之前,要先查下游有誰在 grep 這些詞。我們有一段處理多視角參考圖的程式碼,會去比對 dark、brown、deep、espresso 這幾個字,而新的措辭裡剛好有 medium brown 和 deep brown。實際查下去,那段只吃獨立的髮色跟眼睛顏色欄位,而且它所在的路徑要有照片才會走到,有照片的時候膚色描述回傳的是空字串。這次是安全的,但這件事得查過才能說它安全。
把所有選項一次跑滿,並排看。一張一張分開看,永遠看不出其中六張是一樣的。
介面文案跟模型輸入從第一天就分成兩個欄位,不要因為現在剛好長得一樣就共用。
送出去的詞要能排成一條單調的梯子,每一階都挑模型認得的常用說法。挑的時候問一句:這個詞在英語裡真的拿來形容這樣東西嗎。almond 就是這樣被抓出來的。
最後一點,這條路徑很容易在測試裡活得好好的。八檔全部有回圖、都沒報錯、格式也對,逐檔斷言全部會過。會出事的地方不在任何一個回傳值裡面,在回傳值彼此之間的關係。
上面所有的例子都來自我們自己的產品,包括那兩排亮度數字,不是別人的案例。
任何一本讓你挑膚色的個人化童書,都可以用同一個方法檢查:把選項拉到最淺跟最深各做一次,再把兩張圖並排。如果你要找的是連膚色都能照著孩子挑的繪本禮物,我們自己驗收的時候看的也是並排的對照圖,因為單獨拿一張出來看,它永遠看起來是對的。