Convolutional Neural Network
David H. Hubel과 Torsten Wiesel은 시각 피질 연구를 통해 일부 뉴런은 수평선 이미지에만 반응하고 또 다른 뉴런들은 서로 다른 방향의 선에만 반응한다는 것을 발견. 상위 수준의 뉴런은 인접한 하위 수준 뉴런(서로 다른 방향의 선에 반응하던)의 출력에 기반해서 복잡한 패턴에 반응한다는 것을 관찰함. 이를 모방해서 나온 구조가 CNN
CNN 구성요소의 가장 중요한 레이어. 다음 단계 레이어의 뉴런은 FC 와 다르게 현재 레이어의 작은 사각형 영역(커널)에 위치한 뉴런들과만 연결됨. 이러한 구조가 겹겹이 쌓이며 앞에서는 작은 공간에서의 저수준 특징을, 뒤로 갈수록 넓은 범위의 고수준 특징을 학습함.

[출처: Géron, A. (2019). Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow (2nd ed.). O’Reilly Media. p448]
Convolution kernel 이라고도 불리며 동일한 파라미터(가중치 & bias)를 공유함.
Channel Height Width 와 같은 모양을 가짐. 이러한 파라미터 공유방식은 FC 사용에서 문제가 되던, 너무 많은 입력 특성과 가중치로 인한 성능 감소를 극적으로 개선시킴.
또한 이러한 파라미터 공유 방식을 통한 특성 맵 생성은 데이터의 특정 위치에서 학습된 특성이 다른 위치에서도 동작할 수 있도록 함. 대조적으로 일반적인 FC 모델로 이미지 데이터를 학습시키면 특정 위치에서 학습된 모양은 해당 위치에서만 효과적으로 동작함.
Convolution layer 처럼 뉴런을 가지고 있고 입력과 출력의 구조도 동일하지만 가중치와 bias 가 없음. 단순히 입력 값에서 최댓값을 출력으로 내보냄(max pooling 기준) => 약간의 정보 손실을 통해 학습 부하를 감소시킬 수 있음(연산, 메모리 사용 감소). pooling 커널은 기법에 따라 조금씩 다르지만 해당 공간을 대표하는 데이터를 출력으로 내보냄으로써 커널 공간 내부에 데이터의 위치가 이동하거나 노이즈가 발생하더라도 상대적으로 robust 한 성격을 가지고 있음 (local invariance). 또한 같은 이치로 과적합 완화와 일반화에 도움을 줌.
반대로 데이터의 위치정보가 중요한 문제에서는 비효율적임
| 전처리 다운샘플링 | Pooling Layer | |
|---|---|---|
| 적용 대상 | 모델 입력 전 원본 이미지 (raw image) | 모델 내부 Convolution Layer 를 거치고 나서 나온 특성맵 |
FC 와는 다르게 위치 데이터를 flat 하여 압축할 수 없어 메모리가 많이 사용됨 (왜그런지는 아직 제대로 이해하지 못함)
데이터에서 유용한 특징을 얻어내는 인코더와 복원값을 생성하는 디코더 두 부분으로 구성되어 있음.
데이터에서 특징을 얻는 한가지 방법은 가 보다 더 작은 차원을 가지도록 제한 하는 것 => 학습 데이터의 가장 중요한 특징을 포착하도록 강제
선형 회귀 + MSE + undercompolete = PCA(Principal Component Analysis) : 데이터를 저차원 평면에 가장 잘 투영하는 방법
layer 에서 output 채널수가 input보다 같거나 크면 모델은 input 을 그대로 복사하려하기때문에 이를 방지하기위해 여러 패널티를 추가
loss에서 h를 사용한 penalty 추가하는 것

학습 데이터에 노이즈를 추가하는 것

주어진 잠재벡터를 decompress 하여 이전 정보로 되돌리는 것
오토인코더의 잠재벡터는 입력 데이터 - 출력 데이터 간 상관관계를 가장 잘 나타낸 값을 저장한다면 VAE 에서는 입-출력 데이터 상관관계의 확률 분포를 평균과 표준편차 벡터로 저장함.
VAE 를 통해 출력 데이터를 생성할 때 잠재 벡터에 저장되어있는 확률 분포의 모든 가능한 값을 사용하는 것은 무한한 경우의 수로 불가능하기에 이를 대체하는 ELBO 함수를 사용하여 학습을 진행함.
ELBO 는 추가적인 학습이 필요함