GAN : Generative Adversarial Networks
생성적 적대 신경망이라는 뜻으로, 비지도 학습에 사용되는 인공지능 알고리즘.
제로섬 게임 틀 안에서 서로 경쟁하는 두 개의 신경 네트워크 시스템에 의해 구현.
: (a) → (d)로 시간이 지나면서 원본 데이터의 분포를 학습
생성자(generator)와 판별자(discriminator) 2개의 네트워크를 학습
학습이 완료된 이후에는 보통 생성자만 활용하여 데이터 생성
Generator : G
Discrimintor : D
x~Pdata(x) : 하나의 원본 이미지를 사용하는 것, 이후 D에 넣고 기댓값 계산
z~Pz(z) : 노이즈를 샘플링
G(z) : 생성자에 노이즈를 넣어서 가짜 이미지 생성
D(G(z)) :가짜 이미지를 D에 넣어 판별
1 : 진짜 이미지, 0: 가짜 이미지
D는 원본 이미지에 대해서는 1로 분류할 수 있도록 학습
→ 진짜 데이터에 대해서는 확률을 높임 (V가 높아지도록)
D에 가짜 이미지가 들어오면 D(G(z))를 낮춰서 1-D(G(z))가 Maximum이 되도록
G 입장에서 보면, G에 노이즈 이미지 z를 넣어서 가짜 이미지를 만듦
D에 넣으면 D가 속아야 G 입장에서는 성공한 것이니까 D가 1에 가까운 값을 내놓도록 해야함.
즉 목적함수가 최소가 되도록 하는 것이 목표
실제 코드에서는 매번 미니 배치마다 D를 학습하고 G를 학습하거나 / G를 학습하고 D를 학습하는 식으로 번갈아 가면서 학습 → 각각 Optimal한 값으로 잘 학습할 수 있도록
간단하게 GAN에 대해 리뷰해보았습니다.