생성형 AI를 구현하기 위한 기본서로 '만들면서 배우는 생성 AI'라는 책을 공부하고 리뷰하도록 한다.
1. 생성 모델링이란?
생성 모델링이란 거시적으로 다음과 같이 정의할 수 있다고 한다.
"주어진 데이터 셋과 유사한 데이터를 정의하도록 모델을 훈련하는 머신러닝의 한 분야."
이게 무슨 의미인지 이해해보자.
말의 이미지가 들어있는 데이터 셋(주어진 데이터 셋)에서 모델을 훈련하면,
말 이미지와 유사한 말(과 같은) 이미지를 샘플링하여 원래의 말 이미지와는 다른 이미지를 만들어 낸다는 것이다.
가령 이미지 생성 task는 픽셀 값으로 모델이 훈련하기 때문에 훈련 데이터에서 픽셀 값의 분포 및 조합을 학습할 것이다.
이렇게 학습된 모델의 결과를 샘플링하여 새로운 데이터를 만들어내는 것이다.
그렇다면 모델이 학습한 결과가 계속 같을 수 있다는 문제가 생길 수 있다.
이를 위해 샘플링시 개별 샘플에 영향을 미칠 랜덤한 요소를 추가해줌으로써 이를 해결해준다.
즉, A 이미지는 훈련 데이터 셋에 있을 확률(말의 이미지), B 이미지(말이 아닌 이미지)는 그렇지 않을 확률을 따르는 알려지지 않은 확률분포를 가진다고 가정한다.
생성형 AI 모델은 이러한 확률 분포를 가장 가깝게 표현하도록 학습된다.
그 후 샘플링을 통해 새롭고 다른 샘플을 생성한다.
1.1 생성 모델링 vs 판별 모델링
생성 모델링과 판별 모델링은 훈련 데이터의 분포를 가장 잘 따르도록 학습된다는 점에서는 공통점이 있다.
하지만 그 방식과 목적에서 차이가 있다.
우선, 판별 모델링의 예시는 image classification이 있다.
이를 통해 고흐의 작품의 진위여부를 판단할 수 있다.
위 그림을 보면 훈련 데이터에서 image - label 한 쌍이 있으면 모델이 이를 학습하여 새로운 image가 입력되었을 때 label의 확률을 구한다.
따라서 판별 모델링에서는 label이 있어야 한다.
이미지가 모델의 input으로 들어와 Conv layer를 통과하면서 고흐가 그린 그림의 색깔, 형태, 질감을 학습한다.
학습된 표현이 fully-connected layer를 지나 label과 매칭되면서 확률을 표현하게 된다.
반면 생성 모델링은 주어진 이미지의 레이블을 예측하는 것이 아니기 때문에, 레이블이 필요가 없다.
이전에 설명한 것과 같은 흐름대로 생성 모델링이 이뤄지는 것을 확인할 수 있다.
그림에서도 알 수 있듯이 판별 모델링과 생성 모델링은 차이가 있다.
각각의 수학적 정의를 살펴보자.
결국 생성 모델링과 다르게 판별 모델링에서는 고흐의 그림처럼 생긴 그림을 모방할 수 없는 것이다.
1.2 첫번째 생성 모델
생성 모델을 이해하려면 생성 모델링이 어떠한 작동 플로우를 가지고 있는지 알 필요가 있다.
2차원의 생성 모델링을 통해 생성 모델을 이해해 보았다.
그림 1-4에 있는 점을 데이터 포인트라고 하고 이 포인트들의 집합을 X라고 한다.
이 포인트 집합 X에 대한 규칙을 pdata라고 한다.
해당 규칙으로 2차원 공간의 다른 포인트 X = x1, x2를 매핑하는 것이 이번 생성 모델링의 목표이다.
집합 X에 대하여 어떤 모델을 임의로 정할 수 있을 것이다.
가령 다음 그림 1-5와 같다.
단순하게 pdata를 통해 pmodel을 결정했다.
주황색 상자가 pmodel이 될 것이다.
주황색 상자 안의 어떠한 점을 추정하더라도 우리는 pdata로 학습된 pmodel의 분포로부터 샘플링하게 되는 것이다.
위의 과정을 프레임워크로 표현하면 다음과 같다.
우리가 정한 pmodel이 바람직한 속성을 유지하는지 파악해보자.
실제 데이터 생성 분포 pdata는 다음과 같다.
그림 1-6을 보면 pmodel은 pdata를 너무 단순하게 표현한 것으로 보인다. 데이터의 특성을 제대로 고려하지 못한 모델일 가능성이 크다.
실제로는 대륙의 좌표를 의미하지만 주황상자 pmodel은 대륙이 아닌 해양에 점이 찍힐 수도 있는 것이다. 이는 우리가 생성한 데이터가 실제 데이터를 잘 흉내내지 못한다고 볼 수 있다.
**따라서 포인트 A,B,C 중 C만이 어느정도 정확하게 pdata를 샘플링 했다고 할 수 있다.**
1.2.1 표현 학습
딥러닝은 고차원의 데이터의 특성을 학습하여 결과를 도출한다.
이는 고차원 데이터의 표현을 학습한다는 의미이다.
그렇다면 표현 학습(representative learning)은 무엇일까?
표현 학습이란 표현을 출력으로 사상(mapping, 대응)하는 방법뿐만 아니라 표현 자체까지도 인공지능 시스템이 기계 학습 알고리즘으로 배우게 하는 것이다.
이 말을 조금 쉽게 이해해보자.
딥러닝을 조금 공부해본 사람이면 DNN의 구조를 알 것이다.
classification task에서 각 feature가 input으로 들어오면 DNN에서 이를 가공하여 n-space로 표현하게 되고, 이후 linear classifier가 classification을 수행하게 된다.
가령 height, weight의 feature 값으로 인간과 고릴라를 구분하려고 한다면 이 때의 height, weight를 가공한 어떠한 space는 비교적 괜찮은 '표현'이 될 수 있다.
이를 이미지에 적용시켜보면 약간 달라진다. 자동차를 구분하는 task가 주어졌다고 하자. 이를 구분하기 위해서 픽셀 값(=h / w와 같은 의미)을 feature로 DNN에 학습하게 된다면 자동차를 잘 구분하지 못할 것이다.
이는 자동차를 잘못 '표현'되어 학습된 것을 의미한다.
이를 해결한 것이 CNN이다. CNN을 통해 이미지(자동차)가 가지는 어떠한 특징들을 특정 feature map으로 '표현'함으로써
(ex 자동차 전체의 모양, 자동차 바퀴 위치 등등) 이미지가 자동차인지 아닌지 구분할 수 있게 된다.
위의 사진을 보면 특징 검출(feature extractor)가 데이터를 task에 맞게 '표현'을 하는 역할을 한다고 보면 된다.
2. 핵심 확률 이론
앞에서 살펴 보았듯이 생성 모델링은 확률 분포의 통계적 모델링과 관련이 매우 깊다.
따라서 생성 모델을 이해하기 위해서는 기본적인 확률 이론에 대해 공부할 필요가 있다.
- 핵심 용어 5가지
1. 표본 공간: 샘플 x가 가질 수 있는 모든 값의 집합
2. 확률 밀도 함수: 데이터 포인트 x를 0~1사이의 숫자로 매핑하는 함수 , p(x)
3. parameter modeling(모수 모델링): pmodel를 찾기 위해 유한한 개수의 파라미터 Ɵ를 사용해 기술할 수 있는 밀도 함수 pƟ(x)의 한 종류
4. likelihood(가능도): 파라미터 집합 Ɵ 의 가능도(Likelihood)는 𝑳(Ɵ | x)이다. 이는 관측된 포인트 x가 주어졌을 때 Ɵ 의 타당성을 측정한다.
𝑳(Ɵ | x) = pƟ(x)
즉, 관측 포인트 x가 주어졌을 때 Ɵ 의 가능도는 포인트 x에서 Ɵ 를 파라미터로 가진 밀도함수의 값으로 정의한다.
* 0~1 사이의 숫자를 곱하는 일은 계산 비용이 많이 들어 로그 가능도 (log likelihood)를 사용하는 경우가 많다. *
5. MLE(최대 가능도 추정): Ɵ hat을 추정할 수 있는 기법이다. Ɵ hat는 관측된 데이터 X를 가장 잘 설명하는 밀도 함수 pƟ(x)의 파라미터 집합 Ɵ 이다.
References
[1] representative learning, https://89douner.tistory.com/339
[2]핵심확률이론, https://velog.io/@running_learning/%EB%AA%A8%EB%91%90%EC%9D%98-%EC%97%B0%EA%B5%AC%EC%86%8C-%EC%95%84%EC%9D%B4%ED%8E%A0-%EB%A6%AC%EC%84%9C%EC%B9%98-%EA%B3%BC%EC%A0%95-3%EC%A3%BC%EC%B0%A8-2
'Book Review > [만들면서 배우는 생성형 AI] 리뷰' 카테고리의 다른 글
6장. 노멀라이징 플로 모델(normalizing flow model) (1) | 2024.05.16 |
---|---|
5장. 자기회귀 모델 (Autoregressive model) (0) | 2024.05.16 |
4장. 생성적 적대 신경망(GAN) (0) | 2024.04.17 |
3장 - 변이형 오토인코더 (VAE) (0) | 2024.03.26 |
2장 - 딥러닝 (2) | 2024.03.18 |