Deep Learning through deep learning

GAN_1 0 1 0 단순 패턴 _1 본문

카테고리 없음

GAN_1 0 1 0 단순 패턴 _1

NeuroN 2023. 1. 10. 12:45

GAN 등장 배경

https://colab.research.google.com/drive/1MEAtaWbUeBw3aUut0eYi_7Hu1VlMn7nl?usp=sharing

 

Google Colaboratory Notebook

Run, share, and edit Python notebooks

colab.research.google.com

백쿼리

  • 기존의 MNIST

이미지를 입력하면 0 ~ 9 라벨링 되어 출력

  1. 기존의 MNIST 는 2차원의 이미지를 1차원 벡터로 나열한다.
  2. Input Layer 로 1차원 벡터를 입력으로 준다.
  3. Hidden Layer 를 거쳐 특징을 뽑아낸다.
  4. Output Layer 를 통해 one-hot incoding 된 0 ~ 9 까지의 label 결과를 출력한다.
  • 백쿼리 MNIST

0 ~ 9 라벨링 된 출력 결과를 입력으로 넣어 이미지를 출력

  1. 백쿼리 MNIST 는 반대로 출력되어 나온 label 결과를 입력으로 준다.
  2. Input Layer 에 label 을 입력으로 넣는다.
  3. Hidden Layer 를 거쳐 특징을 뽑아낸다.
  4. Output Layer 를 통해 1차원 벡터를 출력해내고, 이를 가지고 2차원 이미지로 변환한다.
  • 백쿼리 특징 및 한계
    • 같은 one-hot incoding 벡터인 경우, 같은 결과 이미지를 출력한다.
    • 특정 label을 나타내는 모든 훈련 데이터의 평균적인 이미지만을 출력한다.
    • 우리가 원하는 목표는 훈련 샘플같은 정확한 이미지이며, 각각 서로 다른 이미지를 출력하고 싶다!

적대적 훈련

  • 적대적 훈련의 특징
    • 기존의 신경망, 백쿼리와는 구조적으로 다른 새로운 신경망이다.
    • 이미지를 생성하는 생성기가 추가되었다.
    • 판별기는 기존의 신경망의 학습과 같다.
    • 생성기는 판별기를 속임으로써 정답과 같은 이미지를 생성해내는 것이 목표이다.
    • 생성기가 판별기를 잘 속였다면 보상을, 잘 속이지 못했다면 패널티를 주는 구조이다.
    • 생성기와 판별기는 꼭 동시에 훈련되어야 한다!

기존의 판별기에 생성기가 추가

  1. 그림의 예시에서는 고양이라는 데이터셋이 존재한다.
  2. 판별기는 고양이라는 정답 데이터셋을 훈련하여 1 또는 0 으로 고양이 인지 아닌지 판별한다.
  3. 생성기는 판별기가 알아차리지 못하도록 최대한 고양이와 비슷한 이미지를 생성해서 판별기에게 전달한다.
  4. 판별기가 정답 고양이 데이터셋과 생성기가 생성한 이미지간의 차이를 구별하지 못한다면 우리의 목표는 성공이다!
  • 적대적 훈련 과정

1단계 )

[1단계]

2단계 )

[2단계]

3단계 )

[3단계]