1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

2022. 6. 4. 23:09TIL💡/AI

Supervised Learning(지도 학습)

- Lableled data. Direct feedback

- 문제와 정답을 모두 알려주고 학습 시키는 방법

- 주로 예측, 분류에 사용

- 주로 Discriminatvie Model

 

분류(Classification)는 찾아내고 싶은 답의 종류가 문자이다. 

분류는 미리 배운 레이블(Label)을 바탕으로 주어진 데이터가 어느 그룹에 속하는지 찾아내는 방법이다.

컴퓨터는 각각의 데이터의 특징(Feature)을 파악하여 판가름한다.

분류 문제의 정확도가 높아지려면, 학습된 데이터를 잘 분류할 수 있는 함수를 찾는 것이 중요하다.

학습 데이터의 특징을 명확히 구분할 수 있는 함수일수록 새로운 데이터를 잘 구분할 가능성이 높다.

 

회귀(Regression)는 찾아내고 싶은 답의 종류가 숫자이다.

회귀는 통계와 관련이 깊다. 1, 2, 3등급과 같이 정해진 몇 개의 레이블 안에서 대답을 정하는 게 아니라, 1.5, 4.2553, 2.6처럼 실수 범위 내에서 다양한 값을 답으로 출력할 수 있는 경우이다. 다양한 값들 중에서 데이터들의 경향성을 대표하는 패턴을 찾아내고, 해당 패턴으로 예상도 가능하다. 이 때 컴퓨터의 예측값과 실제값의 차이를 오차라고 한다.

데이터를 많이 학습할수록, 더 다양한 데이터를 고려할수록 오차는 줄어든다.

따라서 회귀 문제에서는 오차를 줄이는 것이 중요한 과제이다.

기계는 각 레이블에 속하는 학습 데이터(Training Data)의 특징(Feature)을 파악한다. 그리고 새로운 데이터(Test Data)가 어느 레이블에 속하는지를 판단한다. 테스트 데이터가 어느 레이블에 속하는지 잘 구분할수록 기계의 정확도가 높다.

하지만 지도학습은 분명한 약점이 있다. 원래 가지고 있던 레이블에 속하지 않는 데이터나 새로운 속성을 가진 데이터가 있을 때 어느 레이블에 들어가야 할지를 판단하지 못하는 경우가 발생한다. 예를 들어 치킨을 좋아하는 줄 알았는데, '매운' 치킨은 싫어하는 경우가 발생 가능하다. 

Unsupervised Learning(비지도 학습)

- No labeled data. No feedback "find hidden structure"

- 답을 알려주지 않고 인공지능을 학습

- 연관 규칙, 군집

- 주로 Generative Model(앞선 Supervised Learning보다는 어려움)

 

비지도 학습에서는 정해진 레이블(답)이 필요 없다. 스스로 그 답을 찾아나간다.

각 데이터에서 파악한 특징(Feature)을 바탕으로 기계가 각 데이터를 군집화(Clustering)한 것이다.

물론 군집화한 데이터의 양이 적을 때에는 새로운 데이터가 나타났을 때 정확히 파악할 확률이 떨어질 수 있다.

비지도학습에 사용된 데이터의 양이 많아 빅데이터가 될수록 군집화의 성향이 분명해지고 그 특징을 바탕으로 어떤 그룹에 속한 데이터인지 파악할 확률은 점점 높아지게 된다. 군집화는 군집들 사이의 거리는 멀수록, 한 군집 내에 속한 데이터들 간의 거리는 가까울수록 잘 나누어진 군집이라고 볼 수 있다.

 

이러한 기술을 활용해 대표적으로 추천시스템을 만들 수 있다.

추천 시스템은 어떻게 내 취향을 알아서 이렇게 잘 추천해줄까?

 

바로 협업 필터링(Collaborative Filtering, CF)이라는 방법을 사용한다.

협업 필터링은 많은 사용자들로부터 얻은 기호 정보에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법이다. 대표적으로 사용자 기반 추천과 아이템 기반 추천 두 가지로 나눌 수 있다.

 

1. 사용자 기반 추천

출처: 픽사베이

사용자 기반 추천은 나와 비슷한 성향을 가진 사람이 고른 상품을 추천해준다.

 

2. 아이템 기반 추천

출처: 픽사베이

아이템을 중심으로 비슷한 아이템들을 산 사람은 같은 취향을 가질거란 생각 아래에서 아이템을 중심으로 선택하는 것을 이야기한다.

Reinforcement Learning(강화 학습)

- No labeled data. Delayed feedback. Reward signal

- 보상이 높은 방향으로 인공지능이 학습하는 방법

 


Probability Density Function

이미지 벡터마다의 분포 정도 표현

The goal of the generative model is to find a $p_{model}(x)$ that approximates $p_{data}(x)$ well.

 

$p_{model}(x)$ : Distribution of images generated by the model

$p_{data}(x)$ : Distribution of actual images

 


Generative Adversarial Networks(GAN)

두 가지 모델이 존재

- Discriminative Model

- Generative Model

 

 

Objective Function of GAN

Discriminative

- Train D to classify real images as real

- Train D to classify fake images as fake

 

Generative

- Train G to deceive D

- 가짜 이미지를 받았을 때 최대한 1에 가까운 값을 내놓도록

 

Implementation in Pytorch

Pytorch 구현 코드

https://github.com/yunjey/pytorch-tutorial

 

GitHub - yunjey/pytorch-tutorial: PyTorch Tutorial for Deep Learning Researchers

PyTorch Tutorial for Deep Learning Researchers. Contribute to yunjey/pytorch-tutorial development by creating an account on GitHub.

github.com


Variants of GAN

Deep Convolutional GAN(DCGAN)

No pooling layer(Instead strided convolution)

Latent vector arithmetic 가능

man with glasses - man without glasses + woman without glasses = woman with glasses

 

Least Squares GAN(LSGAN)

- Replace cross entropy loss to least squares loss

- D(G(z)) gets closer to 1 (same as original)

 

Semi-Supervised GAN

- MNIST 10 classes + fake 1 class

- one-hot vector를 이용해 원하는 특징 적용 가능

 

 

참고 자료

https://www.slideshare.net/NaverEngineering/1-gangenerative-adversarial-network

 

1시간만에 GAN(Generative Adversarial Network) 완전 정복하기

발표자: 최윤제(고려대 석사과정) 최윤제 (Yunjey Choi)는 고려대학교에서 컴퓨터공학을 전공하였으며, 현재는 석사과정으로 Machine Learning을 공부하고 있는 학생이다. 코딩을 좋아하며 이해한 것을

www.slideshare.net

http://ai4school.org/?page_id=3646 

 

Ⅳ.자료와 학습(초급) – 2. 지도학습 – AI4School

 분류(Classification)는 미리 배운 레이블(Label)을 바탕으로, 주어진 데이터가 어느 그룹에 속하는지 찾는 방법입니다. 앞서 우리가 다루었던 개와 고양이에 관한 예시는 분류의 대표적 사례라고 볼

ai4school.org

 

 

'TIL💡 > AI' 카테고리의 다른 글

AI RUSH 2022 참가 🏃‍♀️  (0) 2022.06.18
5장. 오차역전파법(Backpropagation)  (0) 2022.06.16
4장. 신경망 학습  (0) 2022.06.12
3장. 활성화 함수(Step Function)  (0) 2022.06.08
딥러닝 추천 강의 기록  (0) 2022.06.05