[핸즈온 머신러닝 2판] 17장 정리

juyeon·2022년 11월 14일
0

핸즈온 머신러닝 2판

목록 보기
14/14
post-custom-banner

참고자료

https://excelsior-cjh.tistory.com/187
https://nlp.jbnu.ac.kr/AI2019/slides/ch05-5.pdf

17. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습

  • 오토인코더
    : 비지도 학습. 잠재 표현(latent representation) 또는 코딩이라 부르는 입력 데이터의 밀집 표현을 학습할 수 있는 인공 신경망

  • 활용
    : 차원 축소
    : 비지도 사전훈련
    : 생성 모델(generative model)

  • GAN
    : 강력한 생성 모델

1. 효율적인 데이터 표현: 오토인코더

  • 인코더(인지 네트워크), 디코더(생성 네트워크)
  • 출력(재구성)
  • 과소완전

2. 과소완전 선형 오토인코더로 PCA 수행하기

  • 오토인코더에서 선형 활성화 함수 & 비용함수: MSE -> = 주성분 분석(PCA)와 같음

과소완전 오토인코더

1) 적층(stacked) 오토인코더(심층(deep) 오토인코더)

: 은닉층 여러개

  • 오토인코더가 너무 강력해지면 과대적합이 일어나고 일반화 가능성이 떨어진다.
  • 샌드위치 구조(대칭)
  • 샘플과 특성이 많은 대용량 데이터셋을 다룰 수 있음

비지도 사전훈련

  • 많은 경우, 레이블이 된 데이터는 적을 수 밖에 없다.
  • 모든 데이터를 사용하여 오토인코더 훈련 -> 은닉층의 파라미터를 복사(하위층 재사용) 하여 레이블된 데이터에서 분류기 훈련

stacked 오토인코더 훈련 기술

1 가중치 묶기

  • 오토인코더가 완벽하게 대칭일 경우: 인코더와 디코더 각각의 가중치를 묶는다
    : 훈련 속도 증가, 과대적합 감소

2 한 번에 오토인코더 한 개씩 훈련하기

  • greedy layerwise training
  1. 첫번째 오토인코더 훈련: 입력을 재구성하도록 학습하고, 전체 훈련세트를 인코딩하여 압축된 새 훈련 세트를 만듦
  2. 새 훈련 세트에서 두 번째 오토인코더 훈련
  3. 모든 오토인코더를 사용해 전체 네트워크를 만듦(즉, 각 오토인코더의 은직층을 먼저 쌓고, 그 다음 출력층을 반대로 쌓음)

2) 합성곱 오토인코더

  • 이미지에서 CNN을 썼듯이 오토인코더도 마찬가지. => 합성곱 오토인코더 사용
  • 인코더: CNN. 차원을 줄이고 깊이(feature map의 개수 늘리기) -> 디코더: 차원과 깊이를 원래대로

3) 순환 오토인코더

  • 시퀀스 데이터.
  • 인코더: sequence-to-vector RNN(입력 -> 마지막만 출력) -> 디코더: vector-to-sequence(첫번째만 입력 -> 출력)

3. 과대완전 오토인코더

1) 잡음 제거 오토인코더

: 일부러 입력 데이터에 잡음을 주고, 이를 제거하여 원본을 복원하도록 훈련

  • 잡음: 가우시안 잡음 or dropout 층
  • 활용: 데이터 시각화, 비지도 사전훈련, 이미지에서 잡음 제거

2) 희소 오토인코더

: 일부러 활성화되는 뉴런 수에 제한을 둠 -> 중요한 특성만 추출됨

  • 훈련 반복마다 실제 희소 정도를 측정하여, 타깃의 희소 정도와 다르면 모델에 벌칙을 부과. => 희소 소실(sparsity loss)

4. 변이형 오토인코더 ⭐

: 지금까지의 오토인코더와는 다르다!

  • 확률적 오토인코더
  • 생성 오토인코더
  • 과정: ??
    : 인코더가 주어진 입력에 대한 코딩을 바로 만드는 대신, 평균 코딩과 표준편차를 만듦
  • 비용함수: 재구성 손실(입력 재생산), 잠재 손실(가우시안 분포에서 샘플링 된 값과 같도록)
  • 시맨틱 보간: 이미지 보간

9. 생성적 적대 신경망

: 신경망을 서로 겨루게 하고 경쟁을 통해 신경망을 향상시킴

  • 생성자
    : = 변이형 오토인코더의 디코더 기능
    : 즉 랜덤한 분포를 입력으로 받아서 데이터(이미지 등) 출력
    : 가짜 이미지를 만들어내기도 함

  • 판별자
    : 입력 받은 이미지가 가짜인지 진짜인지 구분. 즉 이진 분류기

  • 과정
    : 1. 판별자 훈련: 생성자가 가짜이미지를 만들면 이를 진짜 이미지와 합쳐서 판별자가 훈련
    : 2. 생성자 훈련: 생성자가 가짜이미지를 만들고, 판별자가 판별. 이때 진짜 이미지를 추가하지 않은채로 레이블을 1(진짜)로 세팅. 이러면 생성자가 '진짜네?'라고 판단하게 됨. 즉 이러면 진짜 같은 가짜 이미지를 만드는 방법을 훈련하게 됨
  • 내시 균형: 어짜피 쟤네도 수정 안해? 나도 수정 안해!
  • 모드 붕괴: 생성자의 출력의 다양성이 줄어듦. 즉 어떤 클래스에서 그럴듯한 가짜를 만들다가.. 다른 클래스 만드는걸 잊어버리고..
    -> 경험 재생, 미니배치 판별

심층 합성곱 GAN(DCGAN)

ProGAN

StyleGAN

궁금증

  1. 678쪽. 오토인코더가 너무 강력해지면 과대적합이 일어나고 일반화 가능성이 떨어지는 이유는 무엇일까요? 차원축소가 잘 될수록 좋은거 아닌가요?
    1-2. 681쪽 '네트워크가 너무 강력하면 데이터에서 어떤 유익한 패턴을 학습하지 못하고 완벽한 재구성 이미지를 만들것입니다'에서 '완벽한' 이미지란 무엇일까요?
  • 가짜패턴 학습. 과대적합일수도 있고?
  1. 694쪽. 변이형 오토인코더가 평균과 표준편차를 만들면 코딩이 랜덤하게 선택된다는게 어떤 뜻일까요? 즉 오토인코더가 특정 평균과 표준편차를 만들었다면, 그 값들은 가우시안 분포에서 랜덤하게 샘플링된 값으로 취급한다는걸까요? 그리고 이때의 이점은 무엇을까요? 이렇게 하면 입력 데이터에 변형을 초래하는게 아닌가요?
    2-2. 변이형 오토인코더의 작동원리 자체가 넘나 어렵..

  2. 희소 오토인코더

  • 활성화 뉴런수 제한은 경험적?
profile
내 인생의 주연
post-custom-banner

0개의 댓글