인공지능/공부

생성형 인공지능 GAN 개념 - autoencoder의 업그레이드 버전

이게될까 2023. 12. 15. 14:21
728x90
728x90

GAN = Generative Adversarial Networks

GAN은 이미 실습을 한번 했었다. 아래 포스팅을 통해 한번 확인할 수 있다.

2023.12.07 - [인공지능/공부] - TensorFlow - 생성형 인공지능 GAN

 

TensorFlow - 생성형 인공지능 GAN

여기에 작성하진 않았지만 인코딩 엔코딩으로 모델을 생성하는 것에서 발전된 모델이다. 생성하는 모델이 있고, 그 것을 판단하는 모델이 있다. 생성한 모델에서 나온 것은 판단하는 모델에서

yoonschallenge.tistory.com

여기선 descriminative model(판단 모델) 과 generative model(생성 모델) 두개를 사용한다.

생성 데이터와 실제 데이터의 분포는 같아야 한다. 즉 쉽게 말하면 실제 데이터에서 금발인 사람이 30프로 백발이 20프로 흑발이 50프로라면 생성형 데이터에서도 이와 같은 분포를 따라야 한다는 것이다.

실제 데이터와 생성 데이터의 분포가 같아야 한다.
생성 nn이 분포를 바꿔주는 모습이다.

network를 통해 output의 분포가 바뀌는 모습이다. 즉 mapping되는 모습이다.

위와 같은 원리로 생성형 인공지능이 만들어 지고 뒤에는 판별 인공지능의 특성이 나온다.

게임 이론

판별자는 1(진짜 데이터), 0(생성형 데이터)로 구분하려고 학습한다. 그리고 데이터는 진짜 데이터와 생성형 데이터를 섞어서 보내준다. 생성형 인공지능은 1(진짜 데이터)로 판별하도록 계속 학습한다.

튜링 테스트
생성자와 판별자의 기본 모습
판별하는 모습

위와 같이 생성형 데이터와 진짜 데이터를 판별한다. 학습 초기에는 판별자는 확실하게 구분하지만 학습을 진행할 수록 점점 가짜데이터에 속게 된다.

생성자의 관점

생성자는 판별자가 1로 판별하도록 계속 학습한다.

학습하기 위한 loss 계산법

우린 계속 경사 하강법을 통한 학습을 하기 때문에 loss 계산은 필수이다. 위와 같이 loss를 계산하게 된다.

classfication 문제에서의 loss 계산법

classfication의 loss 계산법이랑 굉장히 유사하다.

log 그래프는 0~1에서의 기울기가 커서 학습이 잘 된다.

GAN에서는 loss계산이 복잡하기 때문에 단지 fit 만으로는 학습이 불가능하다( tf2에서의 경우 나중에 발전되면 어떻게 될지 모르겠다)

코드는 실습을 확인해 보면 된다.

728x90

conditional GAN

이전 GAN에선 내가 무슨 데이터를 만들지 알려주지 않는다. 여기선 내가 무엇을 만들지 one hot을 통해 알려준다.

기본적인 구조이다.
기존 GAN
conditional GAN

실습 코드가 이것이다.

위에 올렸떤 실습 페이지 다시

2023.12.07 - [인공지능/공부] - TensorFlow - 생성형 인공지능 GAN

 

TensorFlow - 생성형 인공지능 GAN

여기에 작성하진 않았지만 인코딩 엔코딩으로 모델을 생성하는 것에서 발전된 모델이다. 생성하는 모델이 있고, 그 것을 판단하는 모델이 있다. 생성한 모델에서 나온 것은 판단하는 모델에서

yoonschallenge.tistory.com

2023.12.15 - [인공지능/공부] - 시계열 데이터(주가, imu data) 예측 인공지능 - RNN, LSTM

728x90