이번 글에서는 오토인코더와 GAN에 대해 알아보도록 하겠습니다.
먼저 오토인코더에 대해 알아보도록 하겠습니다.
오토인코더는 비지도학습에 쓰이는 인공신경망입니다. 레이블이 없는 데이터의 잠재표현을 학습하는 인공 신경망이지요.
다음은 오토인코더의 구조입니다.
Encoder와 Decoder로 구성되어있고, 대부분 가운데 은닉층을 기준으로 대칭입니다.
x가 입력되면, x가 출력되어야 하는 구조입니다. 잘 학습된 모델에서는 가운데 은닉층의 값이 입력의 특성추출 결과가 될 것입니다. 위의 그림에서는 10차원 데이터를 3차원으로 차원축소한 결과가 되겠네요.
오토인코더의 또 다른 특징으로는 새로운 데이터를 생성할 수 있다는 점입니다.
학습할 때 사용된 x들의 평균 코딩(가운데 은닉층의 값)과 표준편차 코딩을 구하여 가우시안 분포를 구해냅니다.
이 분포안에서 랜덤하게 샘플링한 코딩값을 Decoder의 입력으로 넣으면 새로운 데이터가 생성이 되는 것입니다.
(하지만 이는 그렇게 실제같지는 않습니다.)
GAN은 전문적으로 생성작업을 위해 세상에 발표되었습니다.
GAN은 생성적 적대 신경망이라고 부릅니다. 새로운 데이터를 출력하는 생성자(Generator)와 진짜와 가짜를 구별하는 판별자(Discriminator)가 존재합니다.
생성자는 잡음이 입력되면 판별자가 진짜라고 판단할 수 있도록, 출력을 하게 됩니다.
그리고 판별자는 생성자가 생성한 이미지를 Fake, 실제 이미지를 Real이라고 판단하게 됩니다.
위의 목적함수를 Generator는 minimize하도록 학습하고, Discriminator는 maximum하도록 학습합니다.
하지만 GAN의 학습은 아주 어렵기로 악명 높습니다.
바로 모드 붕괴 현상 때문인데요. 생성자가 다른 클래스보다 잘 생성하는(판별자가 잘 속는) 클래스의 데이터를 생성할 수도 있기 때문입니다. 이렇게 생성자의 output의 다양성이 없을 때 생기는 현상입니다.
이를 해결하기 위해 다양성이 부족한 배치를 거부하는 미니배치 판별 등 여러가지 네트워크 구조가 제안되고 있습니다.
그리고 이 문제점을 가장 효과적으로 해결한 DCGAN이 존재합니다.
현재 GAN은 딥러닝 분야에서 가장 각광받고 있는 아이디어 중 하나이며, 이를 페이스북 인공지능 연구팀의 리더이자 딥러닝의 아버지인 얀 르쿤 교수는 "GAN은 최근 10년간 머신러닝 분야에서 가장 혁신적인 아이디어"라고 표현했습니다.
이를 시작으로 StyleGAN, CycleGAN 등 GAN을 이용한 훌륭한 구조들이 많이 제안되고 있습니다.
'인공지능 > 이론' 카테고리의 다른 글
(22) PGGAN (Progressive Growing of GAN) (0) | 2022.02.28 |
---|---|
(20) 어텐션과 트랜스포머 (0) | 2022.01.06 |
(19) RNN 구조 (0) | 2022.01.02 |
(18) 컴퓨터 비전 (0) | 2021.11.12 |
(17) 심층 신경망 (0) | 2021.10.26 |