전이학습이란?
Transfer learning
- 일반적으로 CNN 기반 딥러닝 모델을 제대로 훈련시키려면 많은 양의 데이터가 필요하다.
- 충분히 큰 데이터 세트를 얻는 것은 쉽지가 ㅇ낳다.
- 전이 학습은 이것을 해결한다.
전이학습은 아주 큰 데이터 세트를 사용해 훈련된 모델의 가중치를 가져와 우리가 해결하려는 과제에 맞게 보정해서 사용하는 것을 말하며, 아주 큰 데이터 세트를 사용하여 훈련된 모델을 사전 훈련된 모델(네트워크)라고 한다.
즉, 결과적으로 비교적 적은 수의 데이터를 가지고도 우리가 원한는 과제를 해결할 수 있
다.
문제A --->(해결) 문제 A를 해결하면서 얻은 지식 및 경험 --->(적용과 전이학습) 문제 B
특성 추출기법은 데이터에서 의미 있는 정보를 추출하고, 원래 데이터를 더 적은 차원의 특성으로 변환하는 기법이다. 이러한 기법은 주어진 데이터의 특성을 간결하게 표형ㄴ하고, 불필요한 정보나 잡음을 제거하여 데이터를 분석하거나 다른 작업에 활용하기 용히하게 한다.

ResNet
- 데이터가 입력으로 들어왔을 때 두개의 weight layer를 거쳐 나오는 것이 아닌 이전 layer를 거쳐 나온 결과를 더한다.
- x는 현 시점에서 변할 수 없는 값이므로 F(x)를 0에 가깝게 만드는 것이 목적이다.
- F(x)가 0에 가까워질수록 입출력 모두 x와 가까워진다.
- 이때, F(x)=H(x)-x이며 H(x)-x를 0에 가깝게 하는 말과 동일한 의미이다.
- 여기서 H(x)-x를 잔차(residual)라 하며 이를 최소로 해주는 것을 말한다.


성능 최적화?
데이터를 사용한 성능 최적화
- 가능한 많은 데이터를 수집한다.
- 데이터 범위 조정 : 활성화 함수(시그모이드, 하이퍼볼릭 탄젠트 등)
알고리즘을 이용한 성능 최적화
- 유사한 용도의 알고리즘들을 선택하여 모델 훈련 후 선택한다.
알고리즘 튜닝을 위한 성능 최적화
- 하이퍼파라미터 변경 - 진단 가중치 - 학습률, 활성화 함수, 배치와 에포크, 옵티마이저 및 손실함수, 네트워크 구성
하이퍼파라미터를 이용한 성능 최적화
양상블을 이용한 성능 최적화
- 두 개 이상 모델을 섞어서 사용한느 것을 의미한다.
정규화?
- 데이터 범위를 사용자가 원하는 범위로 제한하는 것을 말한다.

- 각 특성 범위를 조정한다는 의미로 특성 스케일링(feature scaling)이라고 한다.
- 스케일 조정을 위한 기법으로 MinMaxScaler()가 있다.
성능 최적화
규제화?
- 모델의 복잡도를 줄이기 위해 제약을 두는 방법을 말한다.
- 제약은 데이터가 네트워크에 들어가기 전에 필터를 적용한 것이라고 생각하면 된다.

- 드롭아웃
- 조기 종료
표준화?
- 기존데이터를 평균은 0, 표준편차는 1인 형태의 데이터로 만드는 방법이다.
- 표준화 스칼라(standard scaler)혹은 z-스코어 정규화(z-score normalization)이라고도 한다.
- 평균을 기준으로 얼마나 떨어져 있는지 살표볼 때 사용한다.
- 보통 데이터 분포가 가우시안 분포를 따를 때 유용한 방법을 말한다.

배치 정규화?
- 데이터 분포가 안정되어 학습 속도를 높일 수 있다.
- 기울기 소멸(gradient vanishing)이나 기울기 폭발(gradient exploding)같은 문제를 해결하기 위한 방법을 말한다.
- ReLu, 초기값 튜닝, 학습률(learning rate)등을 조정한다.

드롭아웃? -> 이거 매우 중요하다!
- 과적합은 훈련 데이터 세트를 과하게 학습하는 것을 의미한다.
- 과적합시 훈련 데이터 세트에 대해서는 오류가 감소하지만, 테스트 데이터 세트에 대해서는 오류가 증가할 수 있다.
- 즉, 훈련 데이터 세트에 대해 훈련을 계속한다면 오류는 줄어들지만 테스트 데이터 세트에 대한 오류는 증가한다 ->과적합이 되었다고 말할 수 있다.


위에 사진을 보면 드롭아웃 을 안한 것이 더욱 성능이 떨어진 것을 확인 할 수가 있다.
