테마 선택

📚 지식 노트

AI·하드웨어·주변기기·게임·컴퓨터 시스템·이론 컴퓨터 과학·수학·개발과 운영·보안·응용 분야에 대해 알아 두면 좋은 내용을 정리한 노트다. 위에서 분야를 고르고 아래에서 노트를 고른다.

생성 모델

그림·소리·영상을 만들어 내는 모델은 모두 '데이터가 어떻게 퍼져 있는지'를 배워 거기서 새 표본을 뽑는다. VAE와 GAN에서 확산 모델, 잠재 확산과 텍스트-이미지, 비디오와 음성, 그리고 평가와 출처 표시까지 정리한다.

목차 (12)
  1. 생성 모델이란
  2. 오토인코더와 VAE
  3. GAN: 위조범과 감정사
  4. 확산 모델
  5. 잠재 확산과 텍스트-이미지
  6. 편집과 제어: 그림 바꾸기, 인페인팅, ControlNet
  7. 비디오 생성
  8. 음성과 음악
  9. 평가: 얼마나 잘 만들었나
  10. 출처 표시와 워터마크
  11. 흔한 오해
  12. 핵심 논문

확산 모델이 노이즈를 걷어 그림을 만든다는 첫 설명과 시드의 뜻은 AI 기초 노트에, 이 노트가 여러 번 기대는 신경망·어텐션·트랜스포머는 딥러닝 노트에 있다. 글을 만드는 LLM도 생성 모델이지만 따로 LLM 노트에서 다룬다.

생성 모델이란

분류 모델은 "이 사진은 고양이인가"처럼 입력에 맞는 답 하나를 낸다. 생성 모델은 데이터 자체의 분포 p(x)를 배운다. 고양이 사진이 어떤 모양으로 흩어져 있는지를 익혀, 그 분포에서 아직 없던 표본을 뽑는 것이 생성이다. 조건이 붙으면 p(x | 글 설명)처럼 "이 설명에 맞는 그림들의 분포"에서 뽑는다.

생성 모델이 배우는 분포: 학습 데이터가 두 봉우리로 모여 있고, 모델은 그 밀도를 배워 새 표본을 봉우리 근처에서 뽑는다. 평균 -0.20는 두 봉우리 사이로, 데이터가 드문 곳이다평균만 맞히면 여기배운 분포 p(x)눈금: 학습 데이터 40개새로 뽑은 표본 5개데이터 값 x
생성 모델은 평균이 아니라 분포를 배운다. 데이터가 두 무리로 나뉘어 있으면 평균은 아무 데이터도 없는 사이에 떨어진다. 그래서 '가장 그럴듯한 하나'를 맞히는 회귀 모델은 흐릿한 그림을 내기 쉽다.

그림 한 장은 수십만 차원의 점이라 분포를 그대로 적어 둘 수 없다. 그래서 다루기 쉬운 단순한 분포(보통 표준 정규 분포)에서 노이즈를 뽑고, 신경망이 그것을 데이터처럼 보이는 점으로 바꾸게 한다. 아래의 방법들은 이 변환을 어떻게 학습시키느냐가 다르다.

오토인코더와 VAE

오토인코더는 입력을 작은 벡터(잠재 표현 z)로 줄이는 인코더와 다시 펼치는 디코더를 이어, 출력이 입력과 같아지도록 학습한다. 가운데가 좁아 중요한 특징만 남는다. 하지만 보통의 오토인코더는 잠재 공간에 학습 데이터가 놓인 곳 말고는 빈틈투성이라, 아무 z나 뽑아 디코딩하면 의미 없는 그림이 나온다.

VAE(변분 오토인코더)(Kingma, Welling, 2013)는 인코더가 점 하나 대신 분포(평균 μ와 표준편차 σ)를 내게 한다. 손실은 복원 오차에 "이 분포가 표준 정규 분포에서 너무 멀지 않게"라는 KL 항을 더한 것이다. KL 항이 잠재 공간을 원점 근처로 고르게 모아 주므로, 생성할 때는 표준 정규 분포에서 z를 뽑아 디코더에 넣기만 하면 된다. 뽑기는 미분할 수 없어서 z = μ + σ·ε로 바꿔 쓰는 재매개변수화가 이 논문의 핵심 장치다. 무작위는 ε에만 남고 μ와 σ로는 기울기가 흐른다.

VAE: 인코더가 μ와 σ를 내고 z = μ + σ·ε로 잠재 벡터를 뽑아 디코더가 복원한다. 예: μ (0.40, -1.10), σ (0.30, 0.20), ε (1.20, -0.50)이면 z는 (0.76, -1.20)다. 아래는 2차원 잠재 공간에서 두 무리 사이를 다섯 점으로 잇는 그림이다입력 x인코더μ, σz = μ + σ·ε디코더복원 x̂ε ~ N(0, 1)만 무작위예: μ (0.40, -1.10), σ (0.30, 0.20), ε (1.20, -0.50) → z (0.76, -1.20)숫자 3 무리숫자 8 무리둘을 잇는 보간 점잠재 공간KL 항이 잠재 분포를 N(0, I) 쪽으로당겨 빈틈 없이 채운다.그래서 두 무리를 잇는 중간 점(굵은 점)도 3에서 8로 서서히바뀌는 그럴듯한 그림이 된다.
VAE의 흐름과 잠재 공간. 잠재 공간이 매끄러워 두 점 사이를 이으면 결과도 서서히 바뀐다. 예시 숫자는 재매개변수화 식으로 계산한 값이다.

VAE 혼자서 만든 그림은 흐릿한 편이다. 픽셀마다 평균에 가까운 값을 내는 복원 손실 탓이다. 대신 "그림을 작고 의미 있는 잠재 공간으로 줄였다 되살리는" 능력이 쓸모가 커서, 지금은 아래 잠재 확산 모델의 앞뒤 단(압축과 복원)으로 주로 쓰인다.

GAN: 위조범과 감정사

GAN(생성적 적대 신경망)(Goodfellow 외, 2014)은 두 신경망을 겨루게 한다. 생성자 G는 노이즈로 가짜를 만들고, 판별자 D는 진짜와 가짜를 가린다. D는 잘 가리도록, G는 D가 속도록 번갈아 학습한다. 분포를 식으로 쓰지 않고 "구별할 수 없게 만들기"라는 목표만으로 배우는 셈이다.

GAN: 노이즈 z가 생성자 G를 거쳐 가짜 이미지가 되고, 판별자 D가 진짜 이미지와 가짜를 받아 진짜일 확률을 낸다. D는 맞히도록, G는 D를 속이도록 번갈아 학습한다노이즈 z무작위생성자 G위조범가짜 이미지진짜 이미지판별자 D감정사진짜일확률진짜는 1, 가짜는 0이라 하도록G의 학습 신호: D가 가짜를 1이라 하게둘을 번갈아 학습한다. 균형이 무너지면 학습이 흔들리고, G가 D를 속이는 몇 가지 모양만되풀이해 내는 모드 붕괴가 생긴다. 대신 한 번의 계산으로 생성해 빠르다.
GAN의 구조. G는 진짜 데이터를 직접 보지 않고 D의 판정을 거쳐서만 배운다.

GAN은 한 번의 계산으로 선명한 그림을 내고 빠르다. 얼굴 사진처럼 범위가 좁은 데이터에서는 2010년대 후반에 사진과 구별하기 어려운 수준에 이르렀다. 대신 두 신경망의 균형이 깨지면 학습이 흔들리고, G가 몇 가지 모양만 되풀이하는 모드 붕괴가 생기기 쉽다. 다양한 글 설명을 받는 대규모 텍스트-이미지 생성에서는 학습이 안정적이고 다양성이 좋은 확산 모델에 자리를 내줬다. 다만 판별자를 덧붙인 적대적 손실은 지금도 코덱·VAE 디코더나 확산 모델을 몇 단계로 줄이는 증류에 쓰인다.

확산 모델

확산 모델은 생성을 잘게 나눈다. 정방향은 데이터에 가우스 노이즈를 조금씩 섞어 T단계(보통 1000) 뒤에는 순수한 노이즈가 되게 하는 고정된 과정이다. 학습할 것이 없다. 신경망이 배우는 것은 역방향, 즉 노이즈 낀 상태 x_t와 시각 t를 보고 섞인 노이즈를 맞히는 일이다. DDPM(Ho 외, 2020)은 이 "노이즈 맞히기"의 평균 제곱 오차라는 단순한 손실로 GAN에 견줄 품질을 냈다.

학습이 간단한 이유가 하나 더 있다. 가우스 노이즈를 여러 번 섞은 결과도 가우스라서, t단계까지 섞은 상태를 한 번에 만들 수 있다. x_t = √ᾱ_t · x₀ + √(1−ᾱ_t) · ε이다. ᾱ_t는 t까지 원본이 살아남은 비율이다. 학습은 데이터 하나와 무작위 t, ε을 골라 x_t를 만들고, 신경망이 ε을 맞히게 하는 것의 반복이다.

확산 단계 그림: 1차원 신호가 t = 0에서 1000까지 노이즈에 묻혔다가, 역방향으로 1000에서 0까지 노이즈를 걷어 내며 다시 신호가 된다정방향: 노이즈 섞기 · t = 0원본 100% · 노이즈 0%정방향: 노이즈 섞기 · t = 100원본 95% · 노이즈 32%정방향: 노이즈 섞기 · t = 250원본 72% · 노이즈 69%정방향: 노이즈 섞기 · t = 500원본 28% · 노이즈 96%정방향: 노이즈 섞기 · t = 750원본 6% · 노이즈 100%정방향: 노이즈 섞기 · t = 1000원본 1% · 노이즈 100%역방향: 노이즈 걷기 · t = 1000원본 1% · 노이즈 100%역방향: 노이즈 걷기 · t = 750원본 6% · 노이즈 100%역방향: 노이즈 걷기 · t = 500원본 28% · 노이즈 96%역방향: 노이즈 걷기 · t = 250원본 72% · 노이즈 69%역방향: 노이즈 걷기 · t = 100원본 95% · 노이즈 32%역방향: 노이즈 걷기 · t = 0원본 100% · 노이즈 0%01002505007501000t
1 / 12

정방향 시작: 깨끗한 신호 x₀. 학습 때는 이 신호에 시각 t만큼의 노이즈를 한 번에 섞어 만든다.

확산 모델의 정방향(노이즈 섞기)과 역방향(노이즈 걷기). 역방향의 점선은 모델이 각 단계에서 추정한 깨끗한 신호로, 여기서는 노이즈가 클수록 큰 윤곽만 맞힌다고 가정해 그렸다.

ᾱ_t를 시각에 따라 어떻게 줄일지가 노이즈 일정이다. DDPM의 선형 일정은 β(단계마다 섞는 노이즈의 양)를 0.0001에서 0.02로 고르게 늘리는데, 그러면 중반에 이미 원본이 거의 사라져 뒤쪽 단계 대부분이 쓸모없는 노이즈 구간이 된다. Improved DDPM(2021)은 ᾱ_t가 코사인 모양으로 천천히 줄어드는 일정을 제안해, 같은 단계 수로 더 고르게 정보를 지운다.

노이즈 일정 비교: t = 500에서 원본 비율 ᾱ는 선형 일정 0.079, 코사인 일정 0.494다. 선형 일정은 중반에 이미 원본이 거의 사라진다10ᾱ_t선형 0.079코사인 0.494선형 β (DDPM)코사인 (Improved DDPM)02505007501000시각 t (T = 1000)
원본이 남은 비율 ᾱ_t. 두 일정 모두 T = 1000에서 계산했다. 선형 일정은 t = 500에 원본이 8%만 남지만 코사인 일정은 절반쯤 남는다.

처음 DDPM은 생성에도 1000단계를 그대로 밟아야 해서 느렸다. DDIM(2020)은 같은 학습 모델로 단계를 건너뛰는 결정적 샘플링을 보여 수십 단계로 줄였다. Song 외(2020)는 확산을 연속 시간의 확률 미분 방정식으로 다시 써, 노이즈 맞히기가 곧 데이터 분포의 기울기(score)를 배우는 일임을 보이고 점수 기반 모델과 확산 모델을 한 틀로 묶었다. 이 관점 덕에 미분 방정식 풀이법을 가져와 단계를 더 줄이는 연구가 이어졌다.

잠재 확산과 텍스트-이미지

512×512 컬러 그림은 값이 78만 개가 넘는다. 이 위에서 확산을 수십 번 돌리면 비싸다. 잠재 확산(Rombach 외, 2021)은 먼저 VAE류 오토인코더로 그림을 작은 잠재 공간으로 줄이고, 확산은 거기서만 한다. 사람이 거의 못 느끼는 세밀한 픽셀 정보는 오토인코더가 맡고, 확산 모델은 구도와 의미에 계산을 쓴다. Stable Diffusion이 이 구조다.

잠재 확산: 프롬프트를 텍스트 인코더가 조건으로 바꾸고, 디노이저가 64×64×4 잠재 공간에서 노이즈를 여러 단계 걷은 뒤, VAE 디코더가 512×512 이미지로 바꾼다. 다루는 값의 수가 48분의 1로 준다프롬프트노을 속 등대텍스트 인코더CLIP 등 → 조건 c교차 어텐션으로 주입노이즈64×64×4디노이저U-Net 또는 DiT잠재64×64×4VAE디코더이미지512×512×3N단계 반복픽셀 786,432개 대신 잠재 16,384개를 다룬다 → 1/48마지막에 한 번만 디코딩
잠재 확산의 흐름. 노이즈 걷기는 작은 잠재 공간에서 여러 번 하고, 픽셀로 키우는 디코딩은 마지막에 한 번만 한다.

글 설명은 텍스트 인코더가 벡터 열로 바꿔 디노이저에 넣는다. 디노이저 안의 교차 어텐션이 그림의 각 위치가 글의 어느 낱말을 참고할지 고른다. 텍스트 인코더로 널리 쓰인 것이 CLIP(2021)이다. 인터넷에서 모은 이미지-글 쌍 4억 개로, 짝이 맞는 이미지와 글의 벡터는 가깝게, 안 맞는 쌍은 멀게 학습해 글과 그림을 한 공간에 놓았다. 이후 모델들은 T5 같은 큰 언어 모델 인코더를 함께 쓰기도 한다.

조건을 넣어도 모델은 설명을 느슨하게 따르기 쉽다. 분류기 없는 안내(classifier-free guidance, CFG)(Ho, Salimans, 2022)는 학습 때 일정 비율로 조건을 비워, 한 모델이 조건 있는 예측과 없는 예측을 모두 내게 한다. 생성할 때는 두 예측의 차이, 즉 "설명이 바꾸는 방향"을 w배로 늘린다. 생성 도구의 guidance scale 값이 이 w다.

분류기 없는 안내: 조건 없는 예측 (1.00, 0.30)과 조건 있는 예측 (1.20, 0.60)의 차이를 w = 3이면 (1.60, 1.20), w = 7.5이면 (2.50, 2.55)로 늘린다조건 없음 (w = 0)조건 있음 (w = 1)w = 3w = 7.5ε = ε(∅) + w · (ε(c) − ε(∅))· 한 모델이 조건을 가끔 비운 채학습해 두 예측을 다 낸다· w > 1이면 프롬프트를 더 따른다· 대신 다양성이 줄고, 너무 크면색이 과포화되고 부자연스러워진다· 단계마다 모델을 두 번 돌린다
CFG를 2차원 벡터로 그린 예. w가 클수록 설명 쪽으로 더 밀지만, 지나치면 학습 데이터에 없던 영역으로 나가 색이 타고 질감이 어색해진다. 값은 장난감 벡터로 계산했다.

디노이저의 뼈대도 바뀌었다. 초기 모델은 합성곱 U-Net을 썼지만, DiT(2022)는 잠재를 패치로 잘라 토큰처럼 트랜스포머에 넣고, 계산량을 늘릴수록 품질(FID)이 꾸준히 좋아진다는 것을 보였다. 학습 목표에서도 노이즈 대신 노이즈에서 데이터로 가는 속도를 배우는 흐름 정합(flow matching)이 널리 퍼졌다. Stable Diffusion 3 논문(2024)은 노이즈와 데이터를 직선으로 잇는 정류 흐름(rectified flow)과 트랜스포머를 합쳐 크기를 키웠다. 이름은 달라도 "노이즈에서 출발해 학습한 방향을 따라 여러 걸음 걷는다"는 틀은 같다.

편집과 제어: 그림 바꾸기, 인페인팅, ControlNet

실제로 생성 도구를 쓰는 일의 상당수는 새로 그리기보다 있는 그림을 고치는 일이다. 확산 모델은 "노이즈 낀 그림에서 노이즈 걷기"를 배운 모델이라, 시작점을 순수한 노이즈 대신 내 그림으로 바꾸기만 해도 편집이 된다.

  • 그림에서 그림으로(image-to-image): SDEdit(2021)은 입력 그림에 노이즈를 어느 정도 섞은 뒤 그 단계부터 걷어 낸다. 대충 그린 낙서도 그럴듯한 그림이 된다. 섞는 노이즈가 많을수록 결과가 사실적이지만 원래 그림에서 멀어지고, 적을수록 원본을 따르지만 덜 다듬어진다. 도구의 strength·denoise 값이 이 양이다. 따로 학습할 필요가 없다.
  • 인페인팅: 가린(마스크) 부분만 노이즈에서 다시 만들고 나머지는 원본을 유지해, 물체를 지우거나 바꾸고 그림 바깥을 이어 그린다(아웃페인팅).
  • ControlNet: 글만으로는 자세·구도를 정확히 정하기 어렵다. ControlNet(2023)은 학습된 확산 모델을 얼려 두고, 인코더 부분을 복사한 학습용 사본에 경계선·깊이 지도·분할 지도·사람 자세 같은 조건을 넣는다. 둘을 0으로 초기화한 합성곱(zero convolution)으로 이어, 학습 초기에 원래 모델이 망가지지 않게 했다.
  • 스타일·인물 맞추기: 특정 화풍이나 대상을 몇십 장으로 가르칠 때는 LoRA를 디노이저에 붙여 학습하는 방법이 흔하다. 몇 MB짜리 파일로 바꿔 끼울 수 있다.

같은 기술은 실존 인물의 가짜 사진·영상(딥페이크)에도 바로 쓰인다. 표시 의무 같은 규제는 AI 안전과 정책 노트에, 출처를 밝히는 기술은 아래 출처 표시 절에 있다.

비디오 생성

비디오는 프레임마다 그림을 따로 만들면 안 된다. 각 프레임이 그럴듯해도 사람 얼굴·옷·배경이 프레임마다 조금씩 달라져 깜빡인다. 이것이 시간 일관성 문제다. 그래서 비디오 확산 모델은 여러 프레임을 한 덩어리로 놓고 함께 노이즈를 걷는다. Video Diffusion Models(Ho 외, 2022)는 공간 어텐션과 시간 어텐션을 나눠 둔 3차원 U-Net으로 프레임들을 한꺼번에 생성하고, 이미지와 비디오를 함께 학습하면 품질이 좋아진다는 것을 보였다. Stable Video Diffusion(2023)은 이미지용 잠재 확산 모델에 시간 층을 더해 키우고, 데이터를 어떻게 거르고 단계적으로 학습시키는지가 품질을 크게 가른다는 것을 정리했다.

요즘 모델들은 대체로 비디오를 시간 방향으로도 압축한 잠재 공간에 넣고, 시공간 패치를 토큰 삼아 트랜스포머로 처리한다. 문제는 토큰 수다. 전체 어텐션은 토큰 수의 제곱으로 비싸지므로, 해상도와 길이가 조금만 늘어도 계산이 폭발한다. 긴 영상을 짧은 구간으로 나눠 이어 붙이거나, 앞 구간의 끝을 조건으로 다음 구간을 만드는 방법이 쓰이는 이유다.

비디오 토큰 수: 이미지 512×512 1,024개, 영상 720×480 · 49프레임 17,550개, 영상 1280×720 · 121프레임 111,600개, 영상 1280×720 · 241프레임 219,600개. 어텐션 비용은 토큰 수의 제곱에 비례해 마지막 경우 이미지 한 장의 약 45,990배다토큰 수 (로그 눈금)어텐션 n²이미지 512×5121,024×1영상 720×480 · 49프레임17,550×294영상 1280×720 · 121프레임111,600×11,878영상 1280×720 · 241프레임219,600×45,990가정: 공간 8배·시간 4배로 압축한 잠재를 2×2 패치로 자른다. 실제 모델마다 배율은 다르다.
같은 압축·패치 설정을 가정했을 때 토큰 수와 전체 어텐션 비용(이미지 한 장 대비). 10초 720p 영상 하나가 이미지 한 장의 수만 배다.

비디오 모델이 물리를 이해한다고 말하기는 이르다. 물체가 갑자기 생기거나 사라지고, 부딪힌 공이 이상하게 튀는 일이 흔하다. 결과가 그럴듯해 보이는 것과 세계의 규칙을 지키는 것은 다른 문제다.

음성과 음악

소리는 1초에 수만 개의 표본이라 길이가 길다. WaveNet(2016)은 이 표본을 하나씩, 앞의 표본들을 보고 다음 표본의 확률 분포를 내는 자기회귀 방식으로 만들었다. 듬성듬성 건너뛰며 보는 팽창 합성곱(dilated convolution)으로 긴 과거를 봤고, 당시 음성 합성(TTS)보다 훨씬 자연스러운 소리를 냈다. 다만 표본 하나마다 신경망을 돌려야 해 원래 형태로는 매우 느렸다.

전환점은 신경 오디오 코덱이다. SoundStream(2021)과 EnCodec(2022)은 인코더로 소리를 초당 수십 프레임으로 줄이고, 각 프레임을 잔차 벡터 양자화(RVQ)로 코드북 번호 여러 개로 바꾼다. 첫 코드북이 큰 줄기를 잡고, 다음 코드북은 앞에서 남은 오차를 잡는 식이다. 코드북 수를 바꾸면 같은 모델로 비트레이트를 고를 수 있다. 판별자를 함께 써서(적대적 손실) 낮은 비트레이트에서도 소리가 자연스럽다.

신경 오디오 코덱: 24kHz 소리를 초당 75프레임, 프레임마다 코드북 8개의 번호로 바꾼다. 초당 토큰 600개, 6kbps로 16비트 PCM 384kbps의 64분의 1이다파형 24kHz인코더맨 윗줄(1번 코드북): 큰 줄기아랫줄일수록 남은 오차를 다듬는다디코더복원한 소리초당 75프레임 × 코드북 8개 × log₂(1024) = 6,000 bps = 6 kbps16비트 PCM은 384 kbps → 약 1/64. 초당 토큰 600개를 언어 모델이 이어 쓴다.값은 EnCodec 24kHz 모델의 6kbps 설정과 같은 구성이다.
신경 코덱이 소리를 토큰으로 바꾸는 모습. 소리가 이산 토큰이 되면 글을 이어 쓰던 언어 모델 기법을 그대로 쓸 수 있다.

소리가 토큰이 되자 생성은 언어 모델의 일이 되었다. AudioLM(2022)은 내용과 구조를 담은 의미 토큰을 먼저 이어 쓰고, 그 위에 코덱 토큰을 채우는 계층 구조로 몇 초짜리 말소리·피아노 연주를 자연스럽게 이어 갔다. VALL-E(2023)는 TTS를 "글(음소)과 3초짜리 목소리 견본을 조건으로 코덱 토큰을 이어 쓰는 문제"로 바꿔, 처음 듣는 목소리도 흉내 내는 제로샷 음성 합성을 보였다. 같은 이유로 목소리 복제 사기에 대한 우려도 커졌다. 음악 생성 역시 코덱 토큰 위의 언어 모델이나 오디오 잠재 공간의 확산 모델로 만든다.

평가: 얼마나 잘 만들었나

생성 결과에는 정답이 없어 평가가 어렵다. 가장 널리 쓰인 자동 지표가 FID(Fréchet Inception Distance)다(Heusel 외, 2017). 진짜 그림들과 생성 그림들을 이미지 분류망(Inception v3)에 넣어 2048차원 특징을 뽑고, 두 특징 무리를 각각 다변량 정규 분포로 보고 그 사이의 프레셰 거리를 잰다. 낮을수록 좋다. 평균이 다르면(품질 차이) 점수가 나빠지고, 퍼짐이 다르면(다양성 차이)도 나빠진다.

FID의 원리를 1차원으로: 진짜 분포 N(0, 1)에 대해 비슷한 분포 N(0.1, 1.05)의 거리는 0.012, 다양성 부족 N(0, 0.4)의 거리는 0.360이다비슷한 분포거리 0.012생성 N(0.1, 1.05)다양성 부족거리 0.360생성 N(0, 0.4)진짜 N(0, 1)생성 표본 · 거리 = (μ₁−μ₂)² + (σ₁−σ₂)²
FID의 원리를 1차원으로 줄인 예. 평균이 진짜와 같아도 생성 결과가 한쪽에 몰려 다양성이 부족하면 거리가 커진다. 실제 FID는 같은 계산을 2048차원 평균 벡터와 공분산 행렬로 한다.
  • FID의 한계: 표본 수에 따라 값이 달라져(보통 5만 장으로 잰다) 조건이 같은 값끼리만 비교한다. ImageNet으로 학습한 분류망의 눈이라 사람이 느끼는 품질과 어긋날 때가 있고, 글 설명을 잘 따랐는지는 보지 않는다.
  • 글과의 일치: CLIP 점수(생성 그림과 프롬프트의 CLIP 벡터 유사도)나, 질문 목록을 만들어 그림이 각 항목을 지켰는지 시각 언어 모델로 확인하는 방법을 쓴다.
  • 사람 선호: 결국 기준은 사람이다. 두 결과를 나란히 보여 주고 고르게 한 뒤 Elo식 점수로 순위를 매기는 비교 평가가 흔하다.
  • 음성: 자연스러움은 청취자 점수(MOS), 내용 정확도는 음성 인식으로 받아쓴 글의 오류율(WER), 목소리 닮음은 화자 임베딩의 유사도로 잰다.

출처 표시와 워터마크

생성물이 사진·녹음과 구별되지 않게 되면서 "이것이 어디서 왔나"를 알리는 기술이 두 갈래로 자랐다.

  • C2PA(콘텐츠 자격 증명): C2PA는 콘텐츠의 출처와 편집 이력을 파일에 붙이는 공개 기술 표준이다. 만든 기기·도구, 거친 편집, 생성 AI 사용 여부를 담은 매니페스트에 전자 서명을 해 둔다. 서명 뒤에 내용이 바뀌면 검증에서 드러난다. 하지만 메타데이터라서 스크린숏을 찍거나 정보를 지우는 플랫폼을 거치면 사라진다. 자격 증명이 있으면 믿을 근거가 생기는 것이지, 없다고 가짜라는 뜻은 아니다.
  • 워터마크: 콘텐츠 자체에 사람 눈·귀에 띄지 않는 신호를 섞는다. Google의 SynthID는 자사 모델이 만든 이미지·영상·소리·글에 워터마크를 넣고, 자르기·필터·압축 같은 흔한 변형에 견디도록 설계했다고 밝힌다. 글에는 토큰을 고를 때 확률을 살짝 조정하는 방식으로 넣는데, Nature에 실린 SynthID-Text 논문은 품질 저하 없이 탐지할 수 있음을 보이면서도 글이 짧거나 답이 거의 정해진 경우, 크게 고쳐 쓰거나 번역하면 탐지가 약해진다고 적었다.
출처 표시 두 방식: C2PA는 콘텐츠에 서명된 이력 매니페스트를 붙여 출처와 편집을 확인하지만 메타데이터를 지우면 사라진다. 워터마크는 콘텐츠 안에 신호를 섞어 편집에 어느 정도 견디지만 넣은 쪽의 탐지기로만 확인할 수 있다C2PA 콘텐츠 자격 증명콘텐츠 (픽셀·소리)매니페스트: 도구·편집 이력전자 서명강점· 누가 무엇으로 만들고 고쳤는지· 서명 뒤 바뀌면 검증에 실패한계· 메타데이터를 지우면 함께 사라짐워터마크 (예: SynthID)콘텐츠 + 눈에 안 띄는 신호(픽셀·소리·토큰 선택에 섞임)강점· 자르기·압축에 어느 정도 견딤· 파일 정보를 지워도 남음한계· 넣은 쪽의 탐지기로만 확인· 없다고 사람이 만든 건 아님
두 방식은 서로를 보완한다. C2PA는 출처를 자세히 밝히지만 쉽게 떨어지고, 워터마크는 잘 안 떨어지지만 '어느 회사 모델이 만들었나' 정도만 알려 준다.

둘 다 협조하는 쪽에만 통한다. 워터마크를 넣지 않는 공개 모델로 만든 결과에는 아무 표시가 없고, 사후에 "AI가 만들었는지"를 맞히는 분류기는 오탐이 잦아 단독 판정 근거로 쓰기 어렵다. 결국 출처가 확인된 콘텐츠를 믿을 근거로 삼는 쪽으로 무게가 옮겨 가고 있다.

흔한 오해

  • "생성 모델은 학습한 그림을 오려 붙여 만든다" — 대부분의 결과는 조각을 붙인 것이 아니라 배운 분포에서 새로 뽑은 표본이다. 그렇다고 "절대 그대로 베끼지 않는다"도 틀리다. Carlini 외(2023)는 생성하고 거르는 방법으로 최신 확산 모델에서 학습 그림을 천 장 넘게 거의 그대로 뽑아냈다. 실존 인물 사진부터 회사 로고까지 있었고, 확산 모델이 GAN보다 학습 데이터를 더 많이 외운다고 보고했다. 개인정보 쪽 이야기는 AI 안전 노트의 프라이버시 절에 있다.
  • "시드가 같으면 어디서나 같은 그림이 나온다" — 같은 모델 파일·샘플러·단계 수·크기·guidance 값을 모두 맞췄을 때 이야기다. 하나만 달라도 그림이 바뀐다.
  • "guidance를 높일수록 프롬프트를 더 잘 따른 좋은 그림이 된다" — 어느 선을 넘으면 색이 타고 질감이 어색해진다(위 CFG 그림).
  • "FID가 낮으면 사람이 보기에도 낫다" — 대체로 그렇지만 어긋날 때가 있고, 글 설명을 따랐는지는 재지 않는다(평가 절).

핵심 논문

요약은 직접 정리한 것이다. 트랜스포머와 어텐션은 딥러닝 노트, 그 밖의 대표 논문은 논문 노트에 있다.

논문연도한 줄 요지
Auto-Encoding Variational Bayes (VAE)2013인코더가 잠재 분포를 내고 재매개변수화로 뽑게 해, 잠재 변수 모델을 보통의 역전파로 학습할 수 있게 했다.
Generative Adversarial Networks2014생성자와 판별자의 겨루기만으로 분포를 배운다. 밀도를 식으로 쓰지 않는 생성 모델의 길을 열었다.
WaveNet2016소리 표본을 하나씩 이어 쓰는 자기회귀 모델로, 기존 음성 합성보다 훨씬 자연스러운 소리를 냈다.
Two Time-Scale Update Rule (FID 제안)2017GAN 학습의 수렴을 다루면서, 진짜와 생성 이미지의 특징 분포 거리로 품질을 재는 FID를 함께 제안했다.
Denoising Diffusion Probabilistic Models2020섞인 노이즈를 맞히는 단순한 손실로 확산 모델을 학습해 GAN에 견줄 이미지 품질을 처음 보였다.
Score-Based Modeling through SDEs2020확산을 연속 시간 확률 미분 방정식으로 보고, 노이즈 맞히기와 분포 기울기(score) 학습이 같은 일임을 한 틀로 정리했다.
CLIP2021이미지-글 쌍 4억 개를 대조 학습해 글과 그림을 한 벡터 공간에 놓았다. 텍스트-이미지 생성의 조건과 평가에 두루 쓰인다.
SoundStream2021잔차 벡터 양자화를 쓰는 신경 오디오 코덱. 소리를 이산 토큰으로 바꿔 언어 모델식 오디오 생성의 바탕이 됐다.
Latent Diffusion Models2021오토인코더의 잠재 공간에서 확산하고 교차 어텐션으로 조건을 넣어, 고해상도 생성을 훨씬 싸게 만들었다(Stable Diffusion의 바탕).
Classifier-Free Diffusion Guidance2022조건 있는 예측과 없는 예측의 차이를 키워, 별도 분류기 없이 조건을 따르는 정도와 다양성을 맞바꾼다.
AudioLM2022의미 토큰과 코덱 토큰을 차례로 이어 쓰는 계층적 언어 모델로, 말소리와 피아노 연주를 일관되게 이어 갔다.
Video Diffusion Models2022시공간을 함께 다루는 3차원 U-Net으로 프레임을 한꺼번에 생성해 시간 일관성을 얻고, 이미지와 함께 학습하는 효과를 보였다.
Scalable Diffusion Models with Transformers (DiT)2022U-Net 대신 잠재 패치를 받는 트랜스포머를 디노이저로 써, 계산을 늘릴수록 품질이 오르는 확장성을 보였다.
VALL-E2023음성 합성을 코덱 토큰 위의 조건부 언어 모델 문제로 바꿔, 3초 견본만으로 처음 듣는 목소리를 흉내 냈다.
더 읽을거리