[부스트코스] 딥러닝 기초 다지기 3~5

#3-1 CNN

 

■ Convolution

- 두 함수를 결합하여 새로운 함수를 생성하는 연산

- 새로운 NN 만들고 Sliding Window 하는 것

- Continuous convolution (연속적인 신호)

- Discrete convolution (이산적인 신호)

- 2D image convolution

  • 이미지 처리, CNN에서 주로 사용하는 연산
  • Blur, Emboss, Outline

 

■ RGB Image Convolution

- Depth 방향 3채널(RGB)

- Feature Map의 채널 숫자(= convolution filter의 수)

  • > Convolution Feature 의 크기 = input 채널과 output (convolution featuremap 채널)

 

■ CNN

- Fully connected layer: 마지막에 다 합쳐서 원하는 결과값 도출

- Convolution layer & Pooling layer (Feature extraction)

  • > Convolution layer: Convolution으로 feature 생성
  • > Pooling layer: 같은 크기의 다른 특징 추출 가능
    • # 높이, 너비를 줄여줌 (downsampling)
    • # 좋은 값(max값)만 남기고 줄임 (max-pooling)

- Fully connected layer (Decision making)

  • > Input Parameter * Output Parameter
  • > 최소화 하는 추세
    • # 학습시키고자 하는 모델의 파라미터 많을수록
      • 1) 학습이 어려워짐
      • 2) generalization performance 떨어짐
    • # CNN 발전 동향
      • 1) 같은 모델을 만들고 모델을 '딥'하게
      • 2) 뒷단의 Fully connected layer 줄임
      • 3) 앞단의 Convolution layer를 깊게 쌓음
    • # NN(아키텍쳐) 중요한 팁
      • 1) layer별로 Parameter 개수 파악
      • 2) 전체 Parameter 숫자 파악

- 키워드 설명

  • > Stride: Convolution Filter를 얼마나 자주, dense(sparse)하게 찍을지
  • > Padding: boundary 정보 벌어지지 않게
  • > Convolution 공식
    • # W: input size, F: filter size, P: Padding, S: Stride
    • # (W-F+2p)S + 1
  • > 파라미터 계산법
    • # @모델&레이어 파라미터 계산

  • > 1x1 Convolution
    • 1) Dimension reduction (=채널 감소)
    • 2) CL을 깊게 쌓으면서 동시에 파라미터 숫자 줄일 수 있음
    • 3) (e.g., bottleneck architecture)

#3-2 Modern CNN

But, 2018년까지 자료...(해마다 1등한 Network 위주)

⭐은 중요시하게 봐야 될 것

 

■ ILSVRC 

- ImageNet Large-Scale Visual Recognition Challenge

  • > Classification, Detection, Localization, Segmentation

 

■ 2012 AlexNet (60M)

- 두 파트로 나뉘어 train하는데 이건 당시 HW 한계 때문

- 11 * 11 filters 

  • 1) 하나의 CL이 볼 수 있는 이미지 영역은 커지지만 
  • 2) 상대적으로 많은 파라미터 필요

- 5 Convolution Layer, 3 Dense Layer (=total 8 layer)

- Key idea

  • > ReLU
  • > 2GPU
  • > Local response normalization(잘안씀)
  • > Overlapping pooling
  • > Data augmentation, Dropout


■ 2014 VGGNet (110M)

- ⭐ 3x3 CL filters(with stride 1)

  • > Receptive fiel에서 3x3 두 번과 5x5 한번은 결과 같음
  • > 근데 파라미터 수는?
    • # 3x3 두 번: 3x3x128x128+3x3x128x128 = 294,912
    • # 5x5 한 번: 5x5x128x128 = 409,600
  • > 대부분의 논문에서 CL filter은 7x7을 벗어나지 않음
  • > 결론은 작은 filter 여러 번 사용이 좋음

- 1x1 convolution for fully connected layers (영향 거의X)

- Dropout(p=0.5)

- VGG16, VGG19

 

■ 2014 GoogLeNet (4M)

- 22 Layers

- Network-in-Network (NiN): 구조 속에 비슷한 네트워크 반복

- ⭐ Inception Blocks (1 → N → 1)

  • > 각 path의 convolution 전에 1x1 conv
    • # 전체적인 네트워크 파라미터를 줄임
  • > How? 채널 방향으로 디멘션을 줄이는 효과가 있음

 

■ 2015 ResNet

- ⭐ Residual connection (=identity map, skip connection)

  • > NN이 깊어질수록 vanishing gradient 되는 문제 해결
    • # 때문에 얕은 NN에서 학습률 오히려 높음
  • > 입력을 네트워크 출력에 더하여 입출력의 사이의 residual을 학습 * residual(=잔차)
  • > 네트워크가 필요한 경우 항등 함수에 가까운 연산을 수행
    • # gradient 잘 전파되고 깊은 NN에서 성능 유지
  • > Projected Shortcut (↔ Simple Shortcut)
    • # 입력을 더해줄 때 차원을 맞추기 위해 1x1 Conv 추가

- Bottleneck architecture (≒ Inception Blocks)

  • > filtering 전에 1x1 Conv으로 입력의 채널을 줄임
  • > 그렇게 줄어든 차원에서 receptive field 키우고 종단에 1x1 Conv

 

■ DenseNet

- ⭐ 더하는게 아니라 concatenation (합침)

  • > 채널이 점점 더 커지는 문제 (2배...4배...8배..)
  • > 1x1 Conv으로 중간중간 채널 줄임

- DenseNet

  • 1) Dense Block으로 feature Map 기하급수적으로 늘린 뒤
  • 2) Transition Block으로 Conv feature size 줄임
    • # BatchNorm → 1x1 Conv → 2x2 AvgPooling

#3-3 Computer Vision Applications

 

■ Semantic Segmentation (의미론적 분할)

- 픽셀 수준에서 레이블을 예측, 객체의 경계를 정확히 파악하고 정확한 분할

- 객체 검출, 객체 추적, 자율 주행, 영상 분석 등 다양한 응용 분야에서 활용

 

■ Fully Convolutional Network

- Convolutionalization

  • > Dense layer(Fully connected layer)를 없엠
  • > Dense layer한거랑 파라미터 수는 다름없음
  • > 입력 이미지를 여러 개의 작은 패치(patch)로 나누어 처리
  • > 각 패치에서의 지역적인 정보를 보존하면서 특징 추출
  • https://kuklife.tistory.com/117
 

[Semantic Segmentation] FCN 원리

* 논문 : https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn.pdf 1. Semantic Segmentation의 목적 : https://kuklife.tistory.com/118?category=872136 2. Semantic Segmentation 알고리즘 - FCN FCN은 Fully Convolution network의 약어로 2015

kuklife.tistory.com

- 가져오는 효과

  • > 단순히 분류만 했던 NN이 semantic Segmentation
  • > rough하게 heat map 생성 가능

 

■ Deconvolution (Conv transpose)

- special dimension(입력 차원)을 키움

- Conv의 엄밀한 역은 아니지만 파라미터 숫자와 NN 입출력 측면에서 같음

 

■ Detection (픽셀이 아닌 bounding-box)

- R-CNN

  • 1) 이미지 안에서 patch(region)를 엄청나게 뽑음
  • 2) region은 cnn 돌리기 위해 똑같이 크기를 맞춤
  • 3) 선형 SVMs로 분류 (...굉장히 brute force적)
    • ※ 문제점: 2000여개의 region 전부 다 cnn 돌려야함

- SPPNet

  • 1) 이미지의 bounding-box를 뽑음
  • 2) 이미지의 Conv feature Map을 만들고 
  • 3) bounding-box 위치의 Conv feature Map에서 텐서를 뽑음
  • 4) CNN runs once

- Fast R-CNN

  • > SPPNet과 거의 동일
  • > 다른점: 각각의 region에서 fixed length feature를 뽑음
    • # from ROI pooling
  • > Output: 2개, class and bounding-box regressor

- Faster R-CNN

  • > Region Proposal Network
    • # bounding-box 뽑는 것도 NN 학습
    • # 이미지의 patch가 bounding-box로써 의미가 있을지
    • # anchor boxes에 어떤 크기의 물체들이 들어가는지 미리 예측
    • # K개의 템플릿을 만들고 변경사항 확인 및 궁극적으로 고정
    • # 9*(4+2) 채널
      • @ 9: 3size x 3ratio
      • @ 4: w,h,x,y 변환
      • @ 2: bounding-box 쓸모있는지 없는지
  • > fine grad?

 

■ YOLO

- Faster R-CNN보다 훨씬 빠름

- bounding-box를 뽑는 RPN이 없기 때문

- 이미지를 SxS grid로 나눔

  • 1) 찾는 물체의 중앙이 해당 grid에 들어가면
  • 2) grid cell이 해당 물체의 bounding-box와 의미를 같이 예측
    • > 각 cell은 B개의 bounding-box 예측
    • > box refinement (x/y/w/h)
    • > confidence (of objectioness, bounding-box 쓸모있는지 없는지)
    • > 동시에, 각 cell이 class 예측
  • 3) 2번 취합 후 텐서 표현:
    • > (SxS)x(B*5+C) size
      • # SxS: Number of cells of the grid
      • # B*5: B bounding boxes with offsets(x,y,w,h) and confidence (B개x5개 property)
      • # C: Number of classes

#4-1 Sequential Models - RNN

* FCL: Fully Connected Layer

■ Sequential Models

- 받아 들여야 하는 입력의 차원 모름

  • > FCL 사용 못함

- Naive sequece model

  • > 다음 입력 예측
  • > 고려해야 되는 정보(입력)가 점점 늘어남

- Autoregressive model 

  • > 과거의 정해진 부분만 확인

- Markov model (firts-ordet autoregressive model)

  • > 현재는 바로 전 과거에만 dependent (누적이 아니라 바로 전)
  • > 장점: joint distribution 표현이 쉬워짐

- Latent autoregressive model

  • > Hidden state가 과거의 정보를 요약
  • > 현재의 time step은 hidden state에 dependent

 

■ Recurrent Neural Network

- Markov 기반

  • > 전체 history를 알지 않아도 다음 상태를 예측

- MLP랑 비슷하지만 자기 자신으로 돌아오는 구조가 있음

  • > time step(=t)에서의 h_t는 X_t에만 의존하지 않고 이전에 얻어진 cell state에도 의존

- RNN을 시간 순으로 풀게 되면 입력이 굉장히 많은 FCL로 표현 될 수 있음

  • > time step을 픽스하고 시간 순으로 풀게 되면 각각의 파라미터를 쉐어하는 굉장히 큰 input을 가진 NN이 됨

- Short-term dependencies

  • > 과거의 정보들이 계속 요약되기에 먼 과거는 미래까지 살아남기 힘듦
  • > 그렇다고 Long-term dependences는 어려움
  • > sigmoid를 쓰면 중첩된 구조에서 0으로 squashing (Vanishing gradient 문제)
  • > ReLU에선 W가 양수면 중첩된 구조에서 n번 곱하다 발산 (Exploding gredient 문제)


■ Long Short Term Memory

- 중간 cell state가 중요

  • > time step t까지 들어온 정보 요약

- 3개의 게이트

  • > Foget gate
    • # f_t = sigmoid(W_f @ [h_(t-1),x_t] + b_f)
    • # f_t는 previous cell state에서 어떤걸 잊을지 결정
  • > Input gate
    • # i_t = sigmoid(W_i @ [h_(t-1),x_t] + b_i)
    • # C(~)_t = tanh(W_C @ [h_(t-1),x_t] + b_C)
    • # i_t는 현재 입력 중에 어떤걸 올릴지 말지 결정
    • # C(~)_t는 cell state 예비군 (올릴 정보를 결정)
    • # previous cell state와 input gate에서 올라온 candidata를 잘 섞어서 update
  • > Update cell
    • # C_t = f_t * C_(t-1) + i_t * C(~)_t
    • # f_t만큼 C_(t-1) 곱해서 버릴지 결정
    • # i_t만큼 C(~)_t 곱해서 어느 값을 올릴지 결정
    • # 두 값을 combine 한 것을 새로운 cell state로 Update (time squence를 요약하는 과정)
  • > Output gate
    • # 그대로 내보내도 되지만..한번 더!
    • # o_t = sigmoid(W_o @ [h_(t-1),x_t] + b_o)
    • # h_t = o_t * tanh(C_t)

 

■ Gated Recurrent Unit

- 2개의 게이트

  • > reset gate
  • > update gate

- cell state가 없음 (hidden state = output)

- LSTM 보다 많이 씀

  • > 적은 파라미터로 같은 output → generalization performance 올라감
  • > 근데 요즘은 그래도 Transformer를 많이 씀

#4-2 Sequential Models - Transformer


■ Sequential Models의 어려움 (RNN의 한계)

- 중간에 input 문제가 생기게 되면 모델링 어려움

  • > Original sequence
  • > Trimmed sequence: 길이가 안맞음
  • > Omitted sequence: 중간 단어가 빠짐
  • > Permuted sequence: 밀리거나 하는 문제

 

■ Sequence-2-Sequence with RNN

- 본격적인 sequence output 내기 전에 context vector 생성

- 이 때 생성된 context vector는 이후 sequence에 계속 영향을 줌 (hidden state로)

- 고정적이고 종합적인(?) attention 구조

 

■ Transformer

- 재귀적인 구조가 없고 attention 구조 활용

  • > sequence 마다 context vector 생성한다고 보면 됨
  • > attention 구조가 낀 transformer block 존재, 반복 시 The Transformer

- Sequential data를 처리하고 인코딩하기에 NLT 외에 다른 분야도 활용됨

- 입력과 출력은 도메인이 다를 수도 있고 개수가 다를 수도 있음 (하지만 모델은 하나)

  • 1) n개의 단어가 encoder에서 어떻게 처리되는지
  • 2) encoder와 decoder 사이에 어떤 정보가 오가는지
  • 3) decoder가 어떻게 generation 하는지

#################  encoding  ########################

- Self-attention

  • 1) 벡터 → 벡터 과정에서 단어 서로끼리 dependencies를 가지게 함
    • > Embedding 벡터 생성
  • 2) Embedding 벡터 하나마다 3개의 벡터를 가짐
    • > Query, Key, Value
  • 3) Score 벡터(스칼라값)를 만듦
    • > encoding 하고자 하는 단어의 query와 다른 모든 단어의 key를 내적
      • # 이 두 벡터가 잘 align 돼있는지, 얼마나 관계도가 되는지
      • # interaction을 확인
  • 4) Score 스칼라를 nomalrize, Softmax
    • > attention weights를 구함
  • 5) 최종적으로 사용할 값은 각 Embedding 벡터의 values와 weighted sum
  • 6) 하나의 단어에 대한 encoding 완료
    • ※ 주의할 점:
    • > query와 key 벡터의 차원은 항상 같아야함 (내적하기 때문)
    • > value는 달라도 됨 (weighted sum만 하면 되니까)
    • > encoding 된 벡터는 Value 벡터의 차원과 같음

- 수식: softmax( (Q @ K.T)/sqrt(d_k) ) * V = Z

- 한계  n개의 sequence가 주어질 때)

  • > RNN은 n번 돌리면 됨 (시간문제)
  • > Tranformer는 n개의 단어 한번에 처리해야함 O(n^2) 비례
    • # length가 길어짐에 따라 처리할 수 있는 한계 존재
    • # 하지만 훨씬 더 flexible하고 많은 걸 표현 가능

- Multi-headed self-attention: 여러가지 attention 생성

- embedding 차원과 encoding 차원이 같아야 함

  • > additional(learnable) linear map으로 차원을 줄임

- positional encoding

  • > 입력에 더해줌
  • > sequential 정보가 Embedding에는 없기 때문

#################  decoding  ########################

- encoding 이후 순서

  • 1) encoding 벡터 Z에 layerNorm 취함
  • 2) feed forward (반복)
  • 3) 출력은 autoregressive manner로 생성
  • ※ 각각의 z 벡터에 대해 독립적으로 동일한 NN 동작 반복

- 학습 시, 입출력 정답을 알고 있기 때문에 (미래의 정보 활용하지 않게끔)

  • > 마스킹: 이전 단어들만 dependent, 뒤의 단어들은 dependent 하지 않게함

- Encoder-Decoder Attention

  • 1) Decoder 들어가기 이전에 generation된 단어들만으로 query를 만들고 
  • 2) key, value는 input encoded 벡터에서 활용

- 단어들의 분포를 만들어서 그 중의 단어 하나 샘플링해서 동작

 

■ Vision Transformer

- 방법

  • 1) 단어들의 sequence가 아닌 이미지를 특정 영역으로 나누고 
  • 2) 각각의 patch를 linear layer에 통과시켜 마치 하나의 입력처럼 넣어줌
  • 3) patch+position Embedding

 

■ DALL-E

- 문장 to 이미지

- transformer의 decoder만 활용


#5-1 Generative model

 

■ Genrative Model

- 그럴 듯한 이미지를 만드는 것?

  • > 더 포괄적인 개념
  • > probability distribution 「p(x)」 (x는 입력)

- Generation

  • > sampling: training data에 있지 않은 이미지 생성
  • > inplicit model: only generation

- Density estimation

  • > anomaly detection: 확률, 판단과 함께 이상행동 감지 (분류?)
  • > explicit model: 입력이 주어졌을 때 이에 대한 확률값을 얻어낼 수 있는 모델

- Unsupervised representation learning

  • > feature learning: 특징 추출

 

■ Basic Discrete Distributions

- p(x)를 만들기 위해 확률에 대한 기본적인 지식 필요

  • > Bernoulli distribution
    • # (biased) coin flip
    • # 확률 분포를 표현하는 숫자 하나가 중요
      • @ 앞이 나올 확률 = P , 뒤가 나올 확률 = 1-P
  • > Categorical distribution
    • # (biased) m-sided dice
    • # 주사위에서 n면이 나올 확률
      • @ 5 파라미터 필요, 나머지 하나는 1에서 5 파라미터의 합 뺌
  • > 예시
    • # RGB: 필요한 파라미터 숫자 = 256 * 256 * 256 - 1
    • # binary image(e.g. mnist): 필요한 파라미터 숫자 = 2^n -1
      • @ 하지만 기계 학습에서 파라미터는 많을수록 학습이 어려움
  • > 쉽게 할 수 있는 방법
    • # n개의 픽셀이 모두 independent라고 가정
      • 1) possible state는 똑같음
      • 2) 이 distribution을 표현하기 위한 parameters = n
        • @ 전부 독립적이기에 더하기만 하면 되기 때문

- Conditional Independence

  • > 기존 문제점
    • # fully dependent는 parameters 너무 많음
    • # 그냥 Independent는 parameters는 줄지만 표현하는 이미지가 적어짐
  • > Chain rule
    • # n개의 joint dist. → n개의 conditional dist.
    • # 의존/비의존에 관계없이 성립
  • > Bayes' rule
    • # 예: p(x|y)
  • > Conditional independence
    • # if x⊥y|z, then p(x|y,z)=p(x|z)
    • # z가 주어졌을 때 x,y가 independent함
    • # x라는 random variable을 표현할 때 z가 주어지면 y는 상관없다는 뜻
    • # 임의의 conditional dist.에서 뒷단의 condition은 날려버림
  • > parameters의 변화
    • 1) Chain rule (joint dist. 쪼개고)
      • # 관계없다(=바뀐게 없다) 즉, parameters = 2^n-1
    • 2) Makov assumption (이것 적용)
      • # i번째는 i-1에만 dependent, 그외 independent
      • # chain rule로 얻어지는 conditional dist.곱이 사라짐(이뻐짐)
      • # parmeters = 2n-1
      • # 그래도 fully indepent 모델(n)보다 많음, 
      • # conditional independence assumption으로 파라미터를 어떻게 줄이는지가 중요 → Auto-regressive models


■ Auto-regressive models

- 특징

  • > 이전 정보들에 dependent: Makov에 한정된게 아님
  • > Ordering: 이미지 도메인에 Ar 모델 활용할 때 순서를 매김
    • # 1차원적으로, 혹은 n차원적으로 순서를 매길 수 있음
    • # 그에 따라 방법론도 달라지고 성능도 달라질 수 있음
  • > 어떤식으로 conditional dependency를 주는지에 따라 전체 모델 구조가 달라짐
    • # 이전 몇 개 고르는지 정할 수 있음
    • # Auto-regressive (n) model: 이전 n개 고른 Ar 모델

 

■ NADE

- Neural Auto-regressive Density Estimator

  • > i번째 픽셀을 1 ~ i-1번째까지 dependent
    • 1) 첫번째 픽셀을 어느 것에도 dependent하지 않게 만듦
    • 2) 두번째 픽셀은 첫번째에만 dependent
  • > dependent 하다는 건?
    • 1) 첫번째 픽셀값을 입력으로 받음
    • 2) single-scala 출력
    • 3) sigmoid 통과하여 0의 수를 바꿈(?강의해석 불가)
    • 4) (중략) 5번째 픽셀을 만들 때 이전 픽셀을 다 받아서 NN→sigmoid→확률
  • > NN할 때 입력의 크기가 달라짐
    • # weight가 계속 커짐(i-1개 필요)

- Explicit model 이다.

  • > 단순 generation뿐만 아니라 binary vector가 주어지면 확률 계산 가능
  • > n개의 binary pixels 주어졌을 때
    • 1) joint dist.를 chain rule을 통해 쪼갬
    • 2) 첫번째 픽셀에 대한 확률분포를 앎(이후로 연속적으로 알게 됨)
    • 3) 각각을 independent하게 집어넣고 계산
    • 4) 확률값 생성!
  • ※ 논문 제목에 Density Estimator 들어가면 explicit model을 말할 때가 많음
  • > 출력값이 continuous 일 때
    • # 마지막 layer에 가우시안 모델 활용하여 continuous dist. 만듦

 

■ Pixel RNN

- n*n 모델이 있을 때, RGB 픽셀 고려

- Ar model과 다른점

  • > RNN을 통해서 generation
  • > ordering을 다르게 (Pixel RNN based)
    • 1) Row LSTM: i번째 픽셀을 만들 때 위쪽 정보 활용
    • 2) Diagonal BiLSTM
      • # Bi-direction LSTM 활용하되 이전 정보 다 활용하여 픽셀값 예측

#5-2 Generative model2_Latent Variable Models

 

■ D. Kingma 논문 강추강추 (Adam도 만듦)

 

■ Variational Auto-encoder

- generative model 아님

  • 1) 아래와 같은 과정을 통한 결과 도출이 generation result이므로
  • 2) generative model이라 할 수 있지만
  • 3) auto-encoder에 의해 엄밀히 말하면 아님

- Variational inference (VI)

  • > Posterior distribution을 찾는 데 목적이 있음
    • # observation이 좋아졌을 때 관심있는 random variable 확률분포
  • > Variational distribution
    • # Posterior가 불가능할 때, 최적화 시킬 수 있도록 근사
    • # Variational inference: Posterior를 제일 잘 근사할 수 있는 과정
  • > KL divergece를 활용하여 variational dist.와 posterior를 줄임

- posterior dist.도 모르는데 어떻게 근사??

  • > ★key) ELBO (Evidence Lower Bound)를 Maximize함으로써 얻음
    • # Reconstruction Term
      • 1) encoder를 통해 입력 x를 latent space로 보냄
      • 2) 다시 decoder로 돌아오는 reconstruction loss를 줄임
    • # Prior Fitting Term (KL divergence 활용)
      • 1) dex한 이미지들을 latent space에 올림
      • 2) latent space에서 이루는 점들의 분포와 
      • 3) 내가 가정하는 prior dist.가 동시에 만족하는 것
      • 4) 이것을 잘 설명&구현한 것이 Variational Auto-encoder

- Key limitation

  • > intractable model
    • # 얼마나 likli한지, cross한지 알기 어려움
  • > prior fitting term
    • # KL divergence 자체에 적분이 있기에 미분 계산X, 그래서 가우시안 사용
      • @ isotropic Gaussian: 모든 output dim.이 independent
    • # 가우시안에 한정된게 단점이기도 함

 

■ Adversarial Auto-encoder

- 가우시안에 한정되지 않음

- gan을 활용하여 latent dist. 사이에 분포를 맞춤

  • > VA의 prior fitting term를 gan으로 바꾼거에 불과함
  • > 그래서 latent dist.를 sampling만 가능한 어떤 분포만 있어도 맞출 수 있음
  • > unform, ~, 가우시안 등등 다양하고 복잡한 분포 활용 가능

 

■ GAN (Generative Adversarial Network)

- 학습에 결과로 나오는 generator를 학습하는 discriminate가 점점 더 좋아짐

  • > 서로를 통해 점점 더 나은 결과를 도출
  • > inplicit model임

- 작동방식

  • 1) z라는 latent dist.에서 출발
  • 2) G를 통해 Fake 출력
  • 3) generate discriminator는 True/Fake 구분하는 labeling 학습
  • 4) generator는 discriminator 입장에서 True가 나오도록 다시 generate update
    5) discriminator는 이렇게 해서 결과로 나온 이미지 생성
  • 6) real 이미지와 discriminate 되도록 discriminator 학습 시킴 (반복)

- GAN Objective

  • > generator와 discriminator 사이의 minimax 게임 (경쟁하는)
    • 1) discriminator를 항상 최적화 시키는 D는
      • #  D*_G(X)=P_data(x)/P_data(x)+P_G(x)
    • 2) generator에 넣으면 Jenson-Shannon Divergence (JSD)가 됨
      • # GAN Objective가 많은 경우 == JSD를 최저화 하는 것
      • # discriminator가 optimal이라고 가정할 때 나오는 수식임
      • # 즉, 실제로는 optimal discriminator에 보장 힘듦

 

■ 그외 논문

- DCGAN

  • > 처음의 GAN은 MLP 사용
  • > DCGAN은 이미지 도메인 사용
    • # 이미지를 만들 때는 MLP보다 deconv.받고 generate하는게 성능 좋음
  • > Leaky-ReLU

 

- Info-GAN

  • > 학습할 때 단순히 z를 통해서 generate하지 않고 c라는 클래스를 랜덤하게 집어넣음
    • # GAN이 특정 모드에 집중하게 만듦: one-hot 혹은 condition 벡터에 집중하게 함
    • # multimodal distribution을 c라는 벡터를 통해서 잡아주는 역할

 

- Text2Image

  • > 입력이 문장이고 이를 이용하여 conditional GAN을 만들어서 이미지 생성

 

- Puzzle-GAN

  • > 강사님 저자로 돼있음

 

- CycleGAN

  • > GAN을 사용하며 이미지 사이의 도메인을 바꿀 수 있음
  • > ✨Cycle-consistency loss
    • # 장점: 일반적으로 말을 얼룩말로 바꿀 때 똑같은 이미지가 필요한데 특정할 필요없이 알아서 임의의 말 이미지 주어지면 얼룩말로 바꿔줌

 

- Star-GAN

  • > 국내 논문
  • > 이미지 도메인을 바꾸는게 아니라 컨트롤 할 수 있게 함

 

- Progressive-GAN

  • > 고차원 이미지 만들 수 있는 방법론

 

'AI 배우기 > 딥러닝' 카테고리의 다른 글

[부스트코스] 딥러닝 기초 다지기 1~2  (0) 2023.09.06