Auto-Encoder
- 입력과 출력이 동일한인공 신경망 구조
- 입력변수의 수와 출력 변수의 수가 같음
- input layer의 input 노드의 수 = output layer의 output 노드의 수
- Auto -Encoder에서의 손실함수
$$
l(f(x)) = \frac{1}{2} \int_k ( \widehat{x}{k} - x{k} ) ^{2}
$$
$$
단, \, 여기서 \, k는 \, 입력 \, 변수의 \,차원\, 수 \, \\ \widehat{x}{k}는 \, Auto-Encoer에 \, 의해\,복원된 \, k번째 \,입력노드의 \, 추정값\\ x{k}는 \, k번째 \, 원본 \, 입력값
$$
⇒ input을 그대로 복제하는 Auto-Encoder가 데이터를 잘 학습하면 손실함수가 작을 것임

- 정상 데이터들에 대한 학습이 충분히 되어 있을 경우
- 정상 데이터는 충분히 학습이 잘 되어 있을 것이기 때문에 새로운 정상 범주의 데이터가 들어올 때 자기 자신을 잘 복제할 것임, 이상치 데이터는 학습 기회가 적어서 이전에 학습이 잘 안되어 있을 것임. 따라서 이상치 데이터가 들어오면 상대적으로 복제를 잘 못할 것임을 가정하는 모형
- Auto Encoder에서는 이상치 스코어로 손실함수를 사용함
- Auto Encoder는 반드시 입력 변수의 수보다 은닉 노드의 수가 더 적은 은닉층이 있어야 함
- 해당 층에서 정보의 축약이 이루어짐

⇒ 1번 layer와 3번 layer는 원래 내가 가지고 있는 벡터의 차원 수 보다 더 많은 히든 노드를 가지고 있음
⇒ 2번 layer에서는 input의 벡터의 차원수보다 더 작은 수의 히든 노드를 가지고 있음. 이러한 layer를 bottleneck layer라고 함. Auto- Encoder는 bottleneck layer가 있어야 함. 그래야 정보가 축약이 됨.(필요없는 것들은 걸러내고 중요한 정보들만 bottleneck layer에서 보존됨. 이후 다시 차원을 증가 시켰을 떄 자기 자신이 거의 비슷하게 복원될 수 있음 )
- 입력 데이터의 갯수보다 히든 노드의 갯수들이 모든 hidden layer에서 더 많으면 input data를 100% 복원 가능함. 이상치 탐지에서는 효과적이지 않은 Auto-Encoder가 됨
Auto-Encoder의 예시

- 숫자 2를 학습시키는 오토 인코더 ⇒ 5를 입력으로 제공한다면 5가 산출되지 않을 가능성이 높음 ⇒ 원래 학습했던 숫자인 2가 들어오면 Loss가 작지만 학습하지 않았던 5가 들어오면 Loss가 커짐⇒ 이 입력은 이상치로 판별하자