AI 怎麼產生圖片?和產生文字有什麼不同?
你輸入「黑色圓環」,AI 就能產生一張圖。你沒有交給它圓環的照片,它怎麼知道要畫成什麼樣子?
先把這件事分成兩段:模型 (Model) 先用現有圖片練習,之後才用學到的能力產生新圖片。先練習的過程叫訓練 (Training)。我們一路用「黑色圓環」來看。
先看一個點:「把圖片變亂」是什麼意思?
圖片由很多小點組成,每個小點叫像素 (Pixel)。先用黑白圖片來看:每個位置有一個亮度數字,0 是黑色,255 是白色,中間的數字是深淺不同的灰色。
先用亮度加減的例子看清楚變動:假設一個位置的亮度是 100。程式隨機選到 +30,就把這個位置改成 130:它變亮了一點。另一個位置原本是 180,這次選到 −40,就變成 140:它變暗了一點。
這些隨機選出的變動數字,就是這裡說的雜訊 (Noise)。 它們不是圖片上另一層可以撕掉的東西,而是混進圖片數字裡的變動;畫面上看見的是變動後的明暗。
對很多位置都這樣改,原本整齊的深色輪廓就會被打亂。改動小,還看得出圓環;改動大,原本的輪廓越難辨認,看起來就像散亂的亮點和暗點。
先拿一張清楚的圓環圖,製作練習題
程式保留原圖,再製作一張明暗被改動過的圓環圖。因為變動數字是程式自己選的,它知道每個位置改了多少。
接著,把加過雜訊的圖交給模型,讓它猜:各位置加入的雜訊是多少? 模型還會收到這次的雜訊程度,但不會拿到原圖或正確雜訊作為答案。
把剛才的 100 → 130 放進這道練習題,就能分清誰知道什麼:
| 模型看到 | 程式保留 |
|---|---|
| 改過的圖片;這個位置現在是 130 | 原圖,以及自己選出的變動 +30 |
模型要猜的是「這個位置混入了多少變動」。假設它猜 +20,程式就能拿真正的 +30 比較:這次猜少了 10。
程式用這些猜測的差距,調整模型裡控制計算的數字。這些數字叫參數 (Parameter)。之後遇到練習題時,模型的計算結果就會受到調整的影響。
注意,只看到 130,無法知道原本一定是 100:也可能原本是 120,只改了 +10。模型需要參考整張圖片的線索,並從很多次練習學習怎麼估計;不保證每次都能猜中程式抽出的數字。
只練一張圓環,就會畫圖了嗎?
不會。上面的圓環只是一題。實際訓練會換很多圖片,也換很多雜訊程度:有的圖只變亂一點,有的幾乎看不出原本內容。
拿圓環來看,一圈深色輪廓、較亮的中央與外圍,彼此有關係。模型透過很多圖片的練習,學到這類圖片規律,估計雜訊時便能利用其他位置提供的線索。雜訊很重時,它也無法確定唯一的原圖;它要根據學到的規律做估計。
所以「學會估計雜訊」在這裡的意思是:看一張明暗被打亂的圖片,估計各位置混入的變動數字。程式再利用這份估計,決定怎麼調整圖片。
那「黑色圓環」這幾個字怎麼起作用?
要讓模型按照描述產生圖片,訓練時也會一起提供圖片的文字描述。例如:
| 練習材料 | 一起提供的描述 |
|---|---|
| 加過雜訊的圓環圖 | 黑色圓環 |
| 加過雜訊的十字圖 | 黑色十字 |
描述先轉成模型能計算的數字,再和加過雜訊的圖一起送進模型。模型經過很多這類練習,學到文字和圖片特徵的關係;描述不同,估計雜訊時參考的資訊也不同。
描述讓模型知道這次要往哪種圖案調整。這個關係是從資料中學來的,不是程式事先寫死「看到圓環,就畫一個圓」,也不是把「圓環」兩字直接變成圖片。
現在才開始:沒有原圖,怎麼產生一張新圖?
訓練完成後,這次只提供「黑色圓環」的描述。程式先替每個位置製作隨機數值,排成一張明暗雜亂的圖。這次沒有拿原圖來改,也沒有記著每個位置應該恢復成多少。
接下來反覆做這三件事:
- 模型看目前的畫面和「黑色圓環」的描述,估計各位置混入的變動。
- 程式根據這份估計和本步的更新規則,調整各位置的數值,畫面就會改變。
- 把改過的畫面再交給模型,繼續估計和調整。
訓練時有原圖,可以製作題目和答案;生成時沒有指定原圖,要靠學到的規律產生新圖。
前面練習了很多圓環圖片及其描述,模型的估計便能反映這類圖片的規律:哪些位置適合形成深色輪廓、哪些位置較亮。程式反覆利用估計更新畫面,逐漸形成符合描述的圖案;不是每一步都已經知道最後要畫哪一張圓環。
這種先練習處理被雜訊打亂的圖片,再從隨機起點逐步產生圖片的做法,是擴散模型 (Diffusion Model) 的代表性流程。
所以它不是找出「亂點背後藏著的那張圓環」。同一份亂點並沒有唯一正確成品;換起點或描述,可能產生不同圖片,也可能畫得不符合期待。
這次使用的是已經練習過的模型。程式反覆改的是正在產生的圖片;通常不會因為這次生成一張圖,就重新調整模型本身。
和產生文字相比,差別在哪裡?
常見的文字生成做法,是根據已經有的內容,選一個新片段接到後面。用方便閱讀的分段來看,就是「黑色」→「黑色圓」→「黑色圓環」。
| 常見文字接續 | 這章的圖片生成做法 |
|---|---|
| 保留前文,再加一個片段 | 在原有畫面上調整許多位置 |
| 文字逐步變長 | 畫面大小不因每一步而增加 |
兩者都反覆使用模型,但改的東西不同。圖片並不是每一步往尾端多接一排點,也不是從左上角開始,一格一格向右畫。
選「黑色圓環」,依序看起點、第一步、第二步和最後。圖片的大小有增加嗎?再切換「接續文字」,看看文字是不是接到後面。
到這裡,先抓住兩件事:模型先拿現有圖片練習;生成時再用學到的規律,從新的亂點開始調整。 文字的常見做法則是把新片段接到後面。
接著可以讀〈AI 是怎麼回答我的問題的?〉,把文字接續接回一次對話。
這是所有圖片生成的方法嗎?
本章用直接看得見的明暗變化說明一種常見流程。實際系統可能先把圖片轉成另一份數字資料,在那份資料上反覆調整,最後才轉回可見圖片;更新規則也不只是把猜到的數字直接減掉。
圖片生成還有其他做法,例如像文字接續一樣,逐步選下一個圖片片段。因此不能把「文字」和「圖片」當成兩種固定不變的生成方法。
想回顧「為什麼程式能製作答案」,可以讀〈沒有人逐筆給答案,AI 也能學嗎?〉。
參考:Hugging Face 擴散模型的訓練與生成、圖片與文字描述的訓練流程、文字生成圖片與條件、DDPM 論文、另一種圖片生成方法的論文。2026-10-05 查核;本章介紹代表性流程,不指定所有產品的架構或訓練配方。