Machine Learning & Deep Learning/핸즈온

ch17. 오토인코더와 GAN ~ 17.1 효율적인 데이터 표현

유방울 2023. 11. 28. 19:58

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

낮은 차원으로 차원 축소, 시각화에 유용하게 사용

강력한 특성 추출처럼 작동

일부는 훈련 데이터와 매우 비슷한 새로운 데이터 생성 가능

이를 생성 모델!

생성적 적대 신경망 GAN

 

오토인코더 VS GAN 

공통점 : 비지도 학습, 밀집 표현 학습하고 생성 모델로 사용함

 

오토인코더

- 단순 입출력으로 복사하는 법 배움

- 간단해보이지만 네트워크 제약으로 이 작업을 어렵게 만듦

- EX) 잠재 표현의 크기 제한 or 입력에 잡음 추가, 입력에 잡음 추가하고 원본 입력을 복원하도록 네트워크 훈련

- 즉, 코딩은 일정 제약 조건하에서 항등함수 identity function을 학습하려는 오토인코더의 노력으로 생겨난 부산물

 

GAN

- 2개의 신경망

- 생성자 generator : 훈련 데이터와 비슷하게 보이는 데이터 생성, 위조지폐 만드는 범인

- 판별자 : discriminator : 가짜와 진짜 데이터 구별, 가짜와 진짜 지폐를 구별하는 경찰관

- 생성자와 판별자가 서로 경쟁 즉, 적대적 훈련 adversarial training

 

 

17.1 효율적인 데이터 표현

다음과 같은 숫자 시퀀스를 쉽게 기억할 수 있는 방법?

첫 번째 : 시퀀스가 짧아서 쉬워 보임

두 번째 : 50 ~14 까지 작수 나열했다는 것을 앎

이런 패턴을 알면 두 번째가 외우기 더 쉬움

패턴, 시작 숫자, 종료 숫자만 외우면 됨

긴 시퀀스는 기억하기 어렵기 때문에 패턴을 찾는것이 유용함!!

 

1970년대 초 윌리엄 체이스, 허버트 사이먼

기억, 지각 패턴 매칭사이의 관계 연구

: 숙련된 체스플레이어가 체스판을 5초만 보고 전체의 말의 위치를 외울 수 있다는 것을 알아냄

: 체스 말이 무작위 x, 현실적인 위치에 있을 경우에 그러함

: 경험으로 체스 패턴을 쉽게 봄

: 패턴 찾으면 효율적으로 정보 저장!!

 

체스 플레이어처럼 오토인코더가 입력 받아 -> 효율적인 내부 표현으로 바꾸고 -> 입력과 가까운 어떤 것을 출력함

인코더 : 입력을 내부 표현으로 바꿈

디코더 : 내부 표현을 출력으로 바꿈

출력층의 뉴런 수가 입력 개수와 동일함

이를 제외하고 다층 퍼센트론 구조와 동일함

이 예는

뉴런 2개로 구성된 하나의 은닉층이 있음

뉴런 3개 출력층

오토인코더가 입력을 재구성하기 때문에 출력을 종종 재구성  reconstruction

비용 함수는 재구성이 입력과 다를 때 모델에 벌점을 부과하는 재구성 손실 reconstruction loss

 

내부 표현(2차원)이 입력 데이터(3차원)보다 저차원 -> 과소완전 undercomplete

과소완전 오토인코더는 입력을 코딩으로 간단히 복사 x

입력과 똑같은 것을 출력하기 위한 다른 방법 찾아야 함