GAN(Generative Adversarial Networks)

  • Generator와 Discriminator가 서로 대립적(Adversarial)으로 학습해가며 점차 성능 개선
    • Generator는 데이터 생성
      • Discriminator을 최대한 속이려고 노력
    • Discriminator는 만들어진 데이터 평가
      • 진짜와 가짜 데이터를 구분하려고 노력
  • Minimax Problem
    • Generator은 Minimize를 위해 노력하고 Discriminator은 maximize하려고 노력
      • Discriminator은 D(X)=1,D(G(z))=0D(X)=1, D(G(z))=0일 때 최대(진짜 데이터를 1, 가짜 데이터를 0으로 예측)
      • Generator은 D(G(z))=1D(G(z))=1일 때 최소(가짜 데이터를 1로 속임)
    • 각각 자신의 역할을 수행함으로써 진짜 분포와 가짜 분포가 같아진다.
      minmaxV(D,G)=ExPdata(X)[logD(X)]+EzPz(Z)[log(1D(G(z)))]minmaxV(D,G) = E_{x \sim P_{data}(X)}[\log D(X)] + E_{z \sim P_{z(Z)}} [\log (1-D(G(z)))]
  • 학습 과정
      1. Discriminator의 input으로 가짜/진짜 데이터 입력
      1. Generator에 Input Noise를 넣어 가짜 데이터를 만들고 진짜 데이터를 각각 Discriminator에 입력
      1. 가짜는 0, 진짜는 1로 예측
  • Weight Freezing
    • D의 오차로부터 G까지 Back Propagation을 진행할 때, D의 오차만 전파하고 가중치를 업데이트하지 않는다.
    • D와 G가 번갈아 가며 학습
    • 위 과정 무수히 반복 시, 구분할 확률이 0.5에 수렴
  • 단점
    • Mode Collapse: 특정 데이터를 만들더니 Discriminator가 속는 점을 이용해 그 데이터만 만들려는 특징
  • Domain Adaptation, Style Transfer 등 다양한 분야로 발전

다양한 GAN 모델

  1. BigGAN: 고품질 이미지를 생성하는 모델(현재 더욱 성능이 좋은 모델 등장)
  2. CycleGAN: Input과 Output의 서로 간의 다양한 도메인을 바꿔주는 모델 (Style Transfer- 가장 많이 쓰임)
  3. Deep Photo Style Transfer: 왼쪽 그림 Contents에 중간 그림의 Style을 입히는 모델, Cycle GAN 기반 모델
  4. Style Transfer for Anime Sktches: 연필이나 펜으로 그린 그림에 자동 채색
  5. StarGAN: Input 이미지에 대해 참조 이미지의 피부 표정 등을 Transfer
  6. CAN: 예술품을 생성해내는 GAN 모델
  7. SRGAN: 저해상도 이미지를 고해상도 이미지로 복원
  8. Globally and Locally Consistent Image Completion: 랜덤하게 사진 속을 지웠을 때 이를 채워주는 GAN 모델

강화학습(Reinforcement Learning)

  • 현재 상태(State)에서 어떤 행동(Action)을 취해야 먼 미래에 보상(Reward)를 최대로 받을지 학습
  • 수 많은 시뮬레이션 필요
    • 주로 게임 환경에서 개발
  • Q-Learning과 SARSA 알고리즘이 기초가 되는 알고리즘
    • 딥러닝과 결합하면서 심층 강화학습(Deep Reinforcement Learning) 개발
  • Start 지점에서 Goal로 최단거리로 이동하는 것이 목표
    • 일단 움직여보게 한다!
    • 현재의 위치를 state, 취하는 행동을 action
    • 각 action이 좋은 action인지 아닌지 판단하는 근거를 Reward(보상)
    • Reward로 Q-value 설정
      • 가장 높은 Q-value 갖는 Action을 취함
  • Optimal한 action을 구하는 것이 아니라 최악의 action 제외한 나머지 action 선택
  • 지금보다는 먼 미래에 목표를 달성할 수 있는 action을 선택
    • 먼 미래에 좋다는 feedback을 주기 위해 할인율(Discount Factor) 도입
    • 현재 reward + 다음 state에서 받을 수 있는 reward의 합
    • rr: reward, γ\gamma: 할인율
      Vπ=i=0γirt+iπ=argmaxπVπV^{\pi} = \prod_{i=0}^{\infty} \gamma^i r_{t+i}\\ \pi^* = \arg \max_{\pi} V^{\pi}
  • 처음에는 무작위로 action 취하지만, 무수히 반복 학습 시 Optimum Policy 얻을 수 있음
  • 수많은 경우의 수가 존재하므로 Q-Learning과 Deep Learning 접목해 Deep Q-Learning 개발
    • 알파고도 이의 일종

Domain Adaptation

  • 특정 도메인 내의 데이터가 부족할 때, 비슷한 도메인 정보를 이용해 문제 해결
  • 전이 학습이 일반적으로 사용되지만, 이것도 최소한의 라벨링된 데이터가 필요
    • 사람이 직접 하기엔 비용이 많이 들기 때문에, 비슷한 도메인에 접근해 데이터 활용
  • 우리가 풀어야 할 도메인을 Target Domain, 이용할 수 있는 도메인은 Source Domain
  • 대규모 Source Data로 학습한 모델로 Target Data 데이터 결과를 예측하는 리스크를 최소화하는 방향으로 학습
  • 구조
      1. Input에 대한 특징 추출
      1. Source Domain의 Data를 이용해 학습
      1. Target Domain의 Data를 이용해 학습
    • 2의 Loss는 Gradient를 정상적으로 전달하고, 3의 Gradient는 음수 값으로 전달
    • Source Domain, Target Domain 데이터를 구분할 수 없도록 1번 레이어 학습
  • H-Divergence, VC-Dimension 개념 사용

Continual Learning

  • 이미 학습된 모델에 재학습을 하지 않고 새로운 클래스를 분류할 수 있도록 추가하도록 학습
    • 매우 큰 모델의 경우에는 재학습이 비효율적이기 때문
  • Catastrophic Forgetting
    • 이미 학습된 모델에 새로운 클래스에 대한 데이터와 라벨을 추가로 학습한다면 이전의 학습 능력 소멸
    • 이를 최소화하는 학습방식이 Continual Learning
  • 학습 순서
    • Selective Retraining: 동일한 모델 구조에 대해 (t-1) 시점까지 Task1에 대해 학습한 모델의 파라미터와 t시점에 Task2에 대해 학습한 모델의 파라미터 간 관계가 높은 파라미터를 따로 추출해 다시 학습
      • Task1과 Task2를 공통으로 잘할 수 있는 파라미터를 따로 추출해 해당 파라미터 값 새로 학습
    • Dynamic Network Expansion: 파라미터 값이 비교적 작은 노드 제거하고 모델의 크기 늘리는 방향 도입
      • Selective Retraining이 원활하게 진행되지 않는 경우(Loss가 Threshold보다 낮아지지 않을 때) 원활하게 만드는 과정
    • Network Split/Duplication: 기존 노드 값을 복사해 모델 구조에 변화
      • 위 과정에서 기존 노드 값이 크게 변했을 때 Catastrophic Forgetting 현상이 발생해 노드의 원래 역할을 수행하지 못할 수 있기 때문
  • 새로운 환경에서 학습을 이어가며 궁극적인 AI 모델 구현에 큰 도움이 될 것

Object Detection

  • 이미지, 비디오 내에서 특정 객체를 탐지하는 연구 분야
  • Classification + 위치 정보 예측
    • 위치 정보: 특정 지점을 표현하는 (x,y)와 그 지점으로부터 가로, 세로 길이를 의미하는 (w, h) 예측
      • (x, y, w ,h): Boundary Box
  • Regional Proposal 후, Classification을 하는 2 Stage 방식과 동시에 처리하는 1 Stage 방식 존재
    • 1 Stage 방식이 2 Stage 방식보다 더 빠르지만, 정확도는 떨어짐
    • 실무에서는 속도가 매우 중요하기 때문에 1 Stage 방식 선호
  • CNN 기반 모델 사용
    • 여기서 이용되는 기본 CNN 모델을 Backbone 모델이라고 함
  • 1 Stage 방식은 YOLO 계열의 알고리즘, 2 Stage 방식에서는 RCNN 계열 알고리즘이 연구
    • You only look once
    • Regional Convolutional Neural Network

Segmentation

  • 이미지 및 비디오 내에 있는 모든 픽셀에 대해 특정 클래스로 예측
    • Object Detection의 사각형으로 예측해 해당 물체가 아닌 다른 영역이 존재하는 단점 보완
    • 픽셀(이미지, 비디오의 최소 표현 단위) 수준으로 접근해 각 픽셀별로 특정 클래스 예측
  • target이 아닌 부분은 검은색으로 표현해 클래스 및 위치 정보를 더욱 정확히 예측
  • 여러 물체가 바로 옆에 존재할 경우 하나의 물체로 인식
    • 사람 5명이 붙어있다면, 머리가 5개이고 다리가 7개인 사람 1명으로 예측
    • 각 물체별로 해당하는 픽셀 값을 구분하고, 구분된 값에 대해 클래스를 예측하는 Instance Segmentation 등장

Meta Learning

  • 학습하는 방법을 학습하는 것
  • 딥러닝은 라벨링된 대규모 데이터가 존재하면 모든 함수를 근사화로 표현
    • 하지만 특정 클래스로 구분하지 어려운 noise일 수도 있고 label 정보가 존재하지 않을 수 도 있다.
    • 적은 라벨 정보를 바탕으로 이뤄진 데이터 수를 학습해 문제 해결하는 준지도학습(Semi-Supervised Learning) 발전
  • 최소한의 업데이트로 최소의 Loss 값을 가질 수 있도록 하는 것을 목표로 설정
    • 학습이 빠르게 되는 초기 파라미터 분포를 찾는 것
    • 이외에도 여러 방법론 존재

AutoML

  • 기존에는 사람이 하이퍼파라미터를 설정하여 학습을 진행했지만, 컴퓨터가 스스로 설계하도록 하는 연구
  • Auto Augmentation, Neural Architecture Search 등
    • Auto Augmentation: Data Augmentation 자동으로 설계해 학습 효율을 최대로 끌어올림
        1. Strategt S를 샘플링(Operation Type, Probability, Magnitude로 구성)
        1. 자식 네트워크 학습 후 Validation Set에 대한 정확도를 reward로 설정
        1. reward를 RNN Controller에게 알려줌
        1. 보상을 최대화하는 방식으로 강화학습
      • 성능 지표는 Accuracy로 지정
    • Neural Architecture Search: 딥러닝 모델 구조를 자동으로 설계
        1. RNN Controller의 output 값을 다음 시점의 input으로 이용
        1. 각 레이어 별로 Filter Height, Filter Width, Stride Height, Stride Width, Number of Filters를 출력해 자식 네트워크의 세부 내용 조정
        1. 이로 얻은 validation set의 정확도를 보상으로 RNN Controller 업데이트
  • 사람의 개입 없이 좋은 성능의 모델을 얻을 수 있다.
  • 어마어마한 컴퓨팅 자원 소모

참고
파이썬 딥러닝 파이토치 (이경택, 방성수, 안상준)

profile
데이터사이언스를 공부하는 권유진입니다.

0개의 댓글