티스토리 뷰
적대적 생성 신경망(GAN)은 기존 Computer Vision 분야에서 이미지를 분류, Segmentation 하는 것에서 발전하여 진짜 같은 가짜 이미지를 생성하는데 활용되는 기술입니다. GAN의 궁극적인 목표는 진짜와 가짜를 분류하는 역할을 하는 판별자와 가짜를 생성하는 생성자가 서로 적대적으로 학습하면서 판별자가 더 이상 진짜와 가짜를 분류하지 못하도록 생성자의 학습 성능을 높이는 것입니다.
GAN은 생성자와 판별자 2개의 Neural network로 구성되어 있습니다. 학습 과정은 판별자를 먼저 학습시킨 후 생성자를 학습시키고 다시 판별자를 학습시키는 번갈아 가는 과정을 반복합니다. 생성자 G(Generator)의 역할은 모조 이미지를 생성하는 것입니다. 랜덤 벡터(노이즈) 값을 입력으로 받은 생성자는 판별자의 피드백을 받아 더 정교한 모조 이미지를 생성하게 됩니다. 판별자 D(Discriminator)는 생성자가 생성한 모조 이미지와 실제 이미지를 분류하는 역할을 합니다.
GAN의 목표는 생성자가 정교한 모조 이미지를 생성하여 판별자가 분류를 하지 못하게 만드는 것입니다. 이를 위해서, 판별자를 학습시킬 때는 생성자를 고정시킨 채 실제 이미지는 높은 확률을 반환하는 방향으로, 모조 이미지는 낮은 확률을 반환하는 방향으로 가중치를 업데이트합니다.
판별자는 값이 1에 가까우면 실제 이미지로, 0에 가까우면 모조 이미지로 판별하는 역할을 합니다. 모조 이미지를 입력받았을 때 판별자가 1을 산출하도록 하기 위해서는 생성자와 판별자는 각기 다른 식을 최댓값, 최솟값으로 만드는 파라미터를 업데이트를 해야 합니다.
GAN은 위 두 식의 파라미터를 번갈아 가며 업데이트해야 합니다. 판별자 입장에서는 D(x) 값이 1이 되어야 실제 이미지를 진짜라고 분류하며 1-D(G(z)) 값도 1이 되어야 모조 이미지를 가짜라고 분류하는 최상의 결과가 되기 때문에 위 식을 최댓값으로 만들어야 합니다. 반대로 생성자 입장에서는 D(G(z)) 값이 1이 되어야 판별자가 모조 이미지를 1로 출력하는 최상의 결과가 되기 때문에 위 식을 최솟값으로 만들어야 합니다.
기본 GAN 모델은 생성자와 판별자가 서로 대결하면서 학습하는 구조이기 때문에 한쪽으로 치우친 훈련이 발생하면 정상적인 분류가 불가능합니다. 이를 해결하기 위해 랜덤 벡터 값과 조건을 추가하는 DCGAN이나 GAN의 출력에 새로운 객체를 추가하거나 문자열 태그를 추가하는 조건을 두는 cGAN으로 발전하였습니다.
'딥러닝' 카테고리의 다른 글
Seq2Seq (0) | 2025.04.16 |
---|---|
오차역전파법(Backpropagation) (2) | 2024.07.16 |
RNN (Recurrent Neural Network) (0) | 2024.07.08 |
[3] LSTM(Long Short-Term Memory) (0) | 2024.06.27 |
[2] 합성곱 신경망 (CNN) PART2 (0) | 2024.06.24 |
- python #프로그래머스 #리스트 #인덱싱
- 딥러닝 #오차역전파 #연쇄법칙 #계산그래프 #최적화
- randomforest #bagging #머신러닝 #하이퍼파라미터 튜닝
- #물고기 종류별 대어 찾기 #즐겨찾기가 가장 많은 식당 정보 출력하기 #mysql #programmers
- 머신러닝 #project #classification #dacon
- 잘라서 배열로 저장하기 #2차원으로 만들기
- ridge #lasso #정규화모델 #머신러닝
- rnn #딥러닝 #시계열 데이터 #장기의존성 문제
- #seq2seq #encoder #decoder #teacher forcing
- 파이썬 #시각화 #matplotlib
- gan #생성자 #판별자 #적대적 신경 신경망 #딥러닝 #computer vision
- 로지스틱 회귀 #오즈비 #최대우도추정법 #머신러닝
- #tf idf
- pca #주성분분석 #특이값분해 #고유값분해 #공분산행렬 #차원의 저주
- python #프로그래머스 #겹치는선분의길이
- 머신러닝 #xgboost #
- subquery #sql 코딩테스트
- 머신러닝 #lightgbm #goss #ebf
- html #javascript #구구단 출력
- 자연어 처리 #정제 #정규표현식 #어간 추출 #표제어 추출
- nlp #토큰화 #nltk #konply
- #opencv #이미지 읽기 #이미지 제작 #관심영역 지정 #스레시홀딩
- #자연어 처리 #정수 인코딩 #빈도 수 기반
- #opencv #이미지 연산 #합성
- python #deque #프로그래머스 #공 던지기 #문자열 계산하기 #코딩테스트
- seaborn #데이터시각화 #타이타닉
- #attention #deeplearning
- #python #프로그래머스 #외계어사전 #itertools #순열과조합
- 프로젝트 #머신러닝 #regression #eda #preprocessing #modeling
- 파이썬 #코딩테스트 #프로그래머스 #스택 #큐