본문 바로가기

Generative AI

Generative AI란 무엇인가? - 차근차근 정리하는 생성형 AI A to Z (1)

Generative AI에 대한 강의도 들었고, 친구와 함께 프로젝트도 진행하고 있지만 아직도 generative AI에 대해 잘 모르는 것 같은 기분이 들었다. 그래서 내가 가지고 있는 지식도 정리하고, 비어있는 부분도 채우고자 <만들면서 배우는 생성 AI>를 읽기 시작했다. 책도 읽고 학교 강의 자료도 복습하면서 열심히 공부해보려고 한다. 앞으로 generative AI에 대해 내가 가지고 있는 모든 지식과 새로 배운 것들을 이 블로그에 적어보려고 한다. Generative AI를 처음 공부하는 사람들에게 작게나마 도움이 되기를 바란다:)


먼저 정의부터 시작하자.

 

Generative Modeling은 주어진 데이터셋을 이용하여 새로운 데이터를 생성해내도록 하는 머신 러닝의 한 분야이다. 이때 새로운 데이터는 주어진 데이터셋에 존재하지는 않지만 주어진 데이터셋과 유사하며, 마치 주어진 데이터셋에서 뽑아낸 것 처럼 보여야 한다.

 

예를 들어, 강아지 사진들이 훈련 데이터로 주어졌을 때, 생성 모델은 훈련 데이터에는 없었던 "강아지 사진"을 생성해내야 한다. 생성 모델은 이를 위해서 강아지 사진이 어떤 특징을 가지고 있는지를 학습한다. 다른 말로, 이 세상에 존재할 수 있는 수많은 이미지 중에 강아지 사진은 어디에 분포하는지를 배운다.

 

생성형 모델은 (1) 훈련 데이터에서 뽑았을 만한 그럴싸한 결과물을 생성해야 하기도 하지만 (2) 매번 새로운 이미지를 뽑아낼 수 있어야 한다. 우리는 생성형 모델이 "결정적(deterministic)"이라 매번 똑같은 결과물을 도출하기보다, "확률적(probabilistic)"이라 랜덤한 요소가 개입될 수 있어서 매번 다른 결과물을 도출할 수 있기를 원한다. 그럴 수 있어야만 모델이 강아지 사진의 분포를 이해했다고 할 수 있을 것이다.

 

 

판별 모델과 비교하여 위 내용을 좀 더 수식적으로 이해해보자.

 

판별 모델은 주어진 그림이 강아지인지 아닌지를 판별한다. 따라서, 샘플 x(강아지 사진)이 주어졌을 때 이것의 레이블이 y(강아지 or 강아지가 아닌 것)일 확률을 구한다: P(y|x)

반면에 생성형 모델은 레이블이 없다. 생성형 모델은 주어진 데이터셋과 유사한 새로운 샘플을 생성하는 데에만 관심이 있기 때문에 샘플 x 분포 그 자체에 관심을 둔다: P(x)

 

생성 모델링은 다음과 같은 과정을 통해 만들어질 수 있다.

(1) 훈련 데이터셋 X가 주어짐, X는 P_data의 분포를 따르지만 실제 함수를 알 수는 없음.

     여기서 P_data(x)는 확률밀도함수라고 생각하면 된다.

(2) P_data와 비슷한 P_model을 만들어냄. P_model이 충분히 P_data와 유사해지면, P_model에서 샘플링한 샘플은 P_data에서 뽑아낸 것처럼 보임

      P_model을 "어떻게" 만들어낼 것인가는 모델별로 다양한 방법을 취한다. 지금은 그냥 비슷한 걸 찾아내는 과정으로만 생각하자.

(3) P_model은 

  • 높은 정확도를 가져야 하며(P_data에서 뽑아낸 것 처럼 보이도록)
  • 여러 가지 새로운 샘플을 뽑아낼 수 있어야 하고(단순히 N개의 샘플을 이야기 하는 것이 아니다. 랜덤한 요소를 포함한 확률적 모델이어야 한다.)
  • 주어진 X가 갖는 특성을 고수준에서 잘 설명할 수 있어야 한다.

* 충분히 괜찮은 P_model을 학습하고 나면, 이 모델은 P_model(x_sample)가 충분히 높은 x_sample을 만들어낼 것이고 이때 x_sample이 샘플(결과 이미지), 샘플을 뽑아내는 것을 샘플링이라고 한다.

 

데이터 X가 갖는 특성을 고수준에서 설명한다는 것은 무엇일까?

 

강아지 이미지는 여러 픽셀의 RGB값으로 이루어져 있다. 이 세상에 존재할 수 있는 수많은 픽셀의 조합들로 강아지를 설명하기는 어려울 것이다. 대신 우리는 강아지를 좀 더 간결하게 표현해볼 수 있다.

  • 강아지는 머리를 가지고 있는데, 이 머리는 대체로 구의 형태를 띤다.
  • 강아지의 몸통은 대체로 원기둥의 형태를 띠는데, 몸통의 끝에 머리가 달려있다.
  • 강아지는 다리가 4개이다.

픽셀들의 조합으로 표현하는 것보다 이렇게 항목화하여 특징을 나열하는 것이 강아지를 이해하는 데에 좀 더 편리할 것이다.

이렇게 픽셀들의 그룹에 해당하는 특징을 뽑아내어 말하는 것을 고수준에서 표현한다고 이야기 한다.

 

흔히 AI에서 이야기 하는 표현(representation)이 바로 그것이다. 고차원의 표본 x(강아지 이미지)를 좀 더 잘 나타내기 위해 잠재 공간(latent space)에 투영하여 잠재 벡터 v(latent vector)로 나타낸다. 잠재 공간은 이미지를 표현한 공간으로 다리가 몇 개인가, 머리가 있나, 무슨 모양인가와 같이 특징을 잘 나타낼 수 있는 공간이라고 이해하면 된다. (실제로는 정말 다리가 몇 개인가~~ 이런 식으로 표현되지는 않지만 그냥 이미지의 정보를 좀더 콤펙트하게 담아서 특징을 나타낼 수 있는 공간이다 정도로 이해하면 좋을 것 같다)


다음 포스트에는 딥러닝에 대해서 전반적인 설명을 담아보려고 한다. 많관부..ㅎㅅㅎ


이 글은

만들면서 배우는 생성 AI, 데이비드 포스터, 한빛미디어

를 참고해서 썼습니다.