Machine Learning/유튜브, 책, 아티클 정리

만들면서 배우는 생성 AI 정리 1장

W_log 2023. 9. 28. 16:09

computer vision 쪽을 더 공부하기 위해서, 이전 기법부터 지금까지의 흐름이 잘 정리된 책을 찾고 있었는데 마침 새로 나왔길래 읽으면서 정리해보려고 한다. 각 장의 내용 중 굳이 정리할 필요가 없는 내용은 건너뛸 예정이라 목차의 번호가 띄엄띄엄 있을 수 있다.

 

 

Chapter 1.  생성 모델링

1.1  생성 모델링이란?

생성모델링이란, 주어진 데이터셋과 유사한 새로운 데이터를 생성하도록 모델을 훈련하는 머신러닝의 한 분야입니다.

 

도식화해보면, 1) 우리가 만들려는 이미지와 유사한 샘플들을 훈련데이터로 모아서, 2) 생성모델이 훈련데이터가 가진 픽셀 간의 복잡한 관계를 정의하는 규칙을 학습하고 3) 새롭고 사실적인 이미지를 만들기 위해 생성모델에 랜덤한 잡음을 더해서 만들어진 것이 최종적인 output이라고 볼 수 있습니다.

 

생성모델은 매번 동일한 값을 출력하는 것이 아니라 다양한 출력결과를 만들어내면서도 훈련 데이터의 특징을 닮아야하기 때문에 확률적이어야 합니다. 생성모델은 훈련데이터셋에 있지만 다른 이미지에는 없을 것 같은 특징을 설명하는 "알려지지 않은 확률분포"를 찾는 행위라고 볼 수 있습니다.

 

1.1.1 생성 모델링과 판별 모델링

판별 모델링은 주어진 데이터가 label이 맞는지 추정하기에 식으로 표현해보면 p(y|x)로 볼 수 있지만, 생성모델링은 샘플 x가 나올 확률을 추정하므로 p(x)라고 볼 수 있다.

*개인 의견) 물론, 이건 최근에 스테이블 디퓨전같이 텍스트로 이미지를 만드는 경우에는 p(y|x) 모델이라고 볼 수 있어서 우선은 훈련데이터와 유사한 확률분포를 찾는 것이 생성 모델링이라면, 판별 모델링은 훈련데이터로부터 라벨을 뽑아내는 로직을 배우는 거라고 이해하는 것이 더 명확한 것 같다.

 

1.1.3 생성 모델링과 AI

데이터를 분류하는 레이블의 관계를 파악하는 것이 아니라 데이터 분포를 완전히 이해하는 모델을 훈련하는 생성모델은 좀 더 고차원적인 지능을 만드는데 있어서 유의미하다.

(데이터, 라벨)이 만드는 차원보다 학습 데이터 자체를 이해하는 차원이 더 높기 때문에 어려운 문제일 수 있다. 실제 현대 신경과학 이론에 따르면 인간의 현실 인지 능력은 감각 정보로부터 경험한 것을 예측하는 판별 모델이라기보다는 미래와 정확히 맞는 주위 환경을 시뮬레이션하기 위해 훈련된 생성모델에 가깝다는 말처럼 인공 일반 지능을 이해하는데 핵심적인 도구가 될 수 있다.

 

1.2 첫 번째 생성모델

1.2.2 생성 모델링 프레임워크

  • 샘플 데이터셋 X를 가지고 있습니다.
  • 샘플 데이터셋 X는 샘플이 알려지지 않은 어떤 P(data) 분포로 생성되었다고 가정합니다.
  • P(data)를 흉내내는 생성 모델 P(model)을 만들 수 있다면 우리는 P(model)에서 샘플 데이터와 유사한 이미지를 만들 수 있습니다.
  • P(model)이 가져야하는 속성은 다음과 같습니다.
    • 정확도 : 생성된 샘플의 P(model). 즉, 확률값이  높으면 P(data)에서 뽑은 것처럼 보여야 한다.
    • 생성 : P(model)에서 새로운 샘플을 쉽게 만들 수 있어야 한다.
    • 표현 : 샘플 데이터셋 X가 가진 특징들을 P(model)로 이해할 수 있어야 한다.(드러나야한다.)

1.2.3. 표현 학습(Representation Learning)

우리가 네모라는 도형을 상상하는데 있어서는 고차원의 이미지를 보고도 파악할 수 있지만, (가로, 세로) 이 두가지 차원만 알면 인간은 그 네모를 떠올릴 수 있다. 책에서는 이를 2차원 잠재 공간의 한 포인트로 변환할 수 있다고 얘기하는데 정리해보면 고차원의 픽셀 데이터라도 사실 그 의미를 파악하는데에는 위의 예시처럼 약간의 낮은 차원에서도 그 이미지의 특성을 파악할 수 있다는 것이다.

 

수학적으로 표현해보면 우리는 고차원의 좌표를 저차원의 좌표와 매핑할 수 있다는 것을 의미하며, 연산(복잡도)과 생성모델(고차원 픽셀을 하나하나 수정하는 것이 아니라 저차원의 좌표에 변화를 주는 작업) 관점에서 이는 효율적이라고 볼 수 있다.

 

인간처럼 기계가 깨닫는 것은 쉽지 않기에, 우리는 딥러닝을 활용해 무수히 많은 Case(data, label)를 보여주어 기계가 알아서 이런 복잡한 관계를 찾도록 훈렬시킬 수 있게 되었다.

 

 

1.3  핵심 확률 이론

  • 표본 공간 : 샘플 x가 가질 수 있는 모든 값의 집합이다.
  • 확률 밀도 함수 : 포인트 x를 0과 1사이의 숫자로 매핑하는 함수 p(x)로 표본 공간에 있는 모든 포인트에 대해 밀도함수를 적분했을 때 1이 되어야 한다. 
    • 관측 데이터셋의 밀도함수 p_data(x)는 하나지만, 이를 추정하는데 사용하는 p_model(x)는 무수히 많다.(다만 정확하지 않을 뿐)
      • 이전 DDPM 논문 정리에서처럼 이러한 분포를 직접 추정할지, 근사할지, 추정없이 할지에 따라서 Explicit, implicit density model이라고 분류한다.
  • 모수 모델링 : 안정적인 p_model(x)를 찾는데 사용할 수 있는 기법으로 유한한 개수의 파라미터 theta를 사용해 설명할 수 있는 밀도함수 p_theta(x)의 한종류이다. 
    • 모수 모델과 비모수 모델의 차이점은 이 링크에서 가볍게 참고해볼 수 있다.
    • 내가 이해한 바로는 우리가 정규분포 그래프를 그리기 위해서는 평균과 분산을 알아야한다. 특정 분포의 그래프가 어떤 모수에 의해서 결정된다면 우리는 분포를 특정 모수로 표현할 수 있고 이걸 모수 모델링이라고 한다.
  • 가능도 : 위에서 정의한 모수들의 가능도 L(모수 = k | x)는 데이터가 주어졌을 때 모수가 k일 가능성을 측정하는 함수이다. 2번 식의 경우 전체 데이터셋 X에 대해서는 각 가능도를 곱하는 형태로 표현할 수 있다.(구현 단에서는 0과 1사이의 숫자를 곱하는 일은 계산 비용이 많이 들기 때문에 로그 가능도를 대신 사용하는 경우가 많다.
    • 가능도의 직관적인 설명 : 우리가 흔히 확률이라고 하면 고정된 분포에서 어떤 값 y가 일어날 가능성을 의미한다. 반면에 가능도는 우리는 어떤 값 y가 일어난 것은 확인했고, A분포에서 y가 일어날 확률이 30%라면 이를 L(A | y) = 30%라고 하고 이것이 가능도라고 부른다.
      • *이 부분이 조금 헷갈려서 이 블로그 글을 보며 조금 더 개념을 정리할 수 있었다.

 

  • 최대 가능도 추정(Maximum Likelihood Estimation)
    • 앞서, 우리는 P_data(X)와 유사한 P_model(X)를 찾는 것이 목표였다. 하지만 우리는 직접적으로 P_data(X)의 분포를 알 수 없기 때문에 모든 학습데이터 X에 대해 가능도가 가장 잘 나오는 분포를 찾으면 똑같은 분포는 아니더라도 학습데이터를 가장 잘 설명할 수 있는 분포를 찾을 수 있다.
    • 보통은 분포는 고정해놓고 parameter들이 바뀌기 때문에 보통 최대 가능도 추정은 최대가능도가 나오는 theta를 찾는 식으로 접근한다.
    • 하지만 일반적으로 이를 구하는 것은 어렵기 때문에 각 모델별로 다양한 접근법을 사용한다.
      • 명시적으로 밀도 함수를 선정하되, 계산하기 쉬운 식으로 모델을 제약한다.
      • 다루기 쉬운 밀도함수의 근사치를 명시적으로 모델링한다.
      • 데이터를 직접 생성하는 확률적 과정을 통해 밀도 함수를 암묵적으로 모델링하는 방식
      • *위 3가지가 각각 tractable density, approximate density, implicit 방식을 말하는 것으로 보인다.

출처 : StatQuest: Maximum Likelihood 최대 우도 추정, 매우 깔끔하게 설명되었습니다!!!(https://youtu.be/XepXtl9YKwc)

이 그림이 최대가능도 추정을 직관적으로 가장 잘 설명해주는데, 그림을 해석하는 법을 잠깐 설명해보겠다.

  • 빨간색 원이 실제 관측된 x이다. 그리고 빨간선으로 이루어진 그래프가 각각의 모델 p_theta(x)이다. 
  • 맨 왼쪽 그래프만 하나의 예시로 보면 우측의 빨간색 원들은 발생할 가능도는 매우 낮다.(정규분포라고 가정해보면 우측 꼬리) 결국 그 값들을 다 곱한 값인 p_theta1(X)는 위의 검은 원처럼 다른 분포대비 낮은 것처럼 보인다.
  • 이런 식으로 반복해서 비교해보면 결국 중간의 분포가 가능도가 가장 높게 되고 이 분포의 모수가 우리가 찾는 theta가 된다. 
  • 물론 연구자가 어떤 분포를 추가해서 더 큰 가능도를 만들 수도 있지만 세상의 모든 분포를 비교할 수 없기 때문에 일종의 최적화 기법이라고 볼 수 있다.(주어진 자원 한에서 답을 찾는 방식이라는 점에서)

 

1.4  생성모델 분류

  • Implicit Density Model은 확률 밀도를 추정하는 것이 아니라 데이터를 직접 생성하는 확률적 과정을 만드는 데에만 집중한다. 
  • Explicit Density Model은 직접적으로 p_model(x)를 추정하는 방식으로 추정의 대상이 근사치이냐 아니냐에 따라 Approximate와 Tractable로 나눠볼 수 있다.