신경망 훈련에는 다음 요소들이 관련되어 있다.
연속된 층으로 구성된 네트워크가 입력 데이터를 예측으로 매핑한다.
손실 함수는 예측과 타깃을 비교하여 네트워크의 예측이 기댓값에 얼마나 잘 맞는지를 측정하는 손실 값을 만든다.
옵티마이저는 손실 값을 사용하여 네트워크 가중치를 업데이트한다.
신경망의 핵심적인 데이터 구조는 층이다.
층은 하나 이상의 텐서를 입력으로 받아 하나 이상의 텐서를 출력하는 데이터 처리 모듈이다.
어떤 종류의 층은 상태가 없지만 대부분의 경우 가중치라는 층의 상태를 가진다. 가중치는 확률적 경사 하강법에 의해 학습되는 하나 이상의 텐서이며 여기에 네트워크가 학습한 지식이 담겨 있다.
층마다 적절한 텐서 포맷과 데이터 처리 방식이 다르다.
예를 들어 (samples, features) 크기의 2D 텐서가 저장된 간단한 벡터 데이터는 Fully Connected layer 나 Dense Layer 이라고도 불리는 Densely Connected Layer 에 의해 처리되는 경우가 많다.
(samples, timesteps,features) 크기의 3D 텐서로 저장된 시퀀스 데이터는 보통 LSTM 같은 recurrent layer 에 의해 처리된다.
4D 텐서로 저장되어 있는 이미지 데이터는 일반적으로 2D convolution later 에 의해 처리된다.
앞으로 공부하다 보면 아주 다양한 네트워크 구조를 보게 될 것이다. 자주 등장하는 것들은 다음과 같다.
네트워크 구조는 가설 공간을 정의한다. 1장에서 머신 러닝을
'가능성 있는 공간을 사전에 정의하고 피드백 신호의 도움을 받아 입력 데이터에 대한 유용한 변환을 찾는 것' 으로 정의했다.
네트워크 구조를 선택함으로써 가능성 있는 공간을 입력 데이터에서 출력 데이터로 매핑하는 일련의 특정 텐서 연산으로 제한하게 된다.
우리가 찾아야 할 것은 이런 텐서 연산에 포함된 가중치 텐서의 좋은 값이다.
네트워크 구조를 정의하고 나면 두 가지를 더 선택해야 한다.
여러 개의 출력을 내는 신경망은 여러 개의 손실 함수를 가질 수 있다. (출력당 하나씩) 하지만 경사 하강법 과정은 하나의 스칼라 손실 값을 기준으로 한다. 따라서 손실이 여러 개인 네트워크에서는 모든 손실이 (평균을 내서) 하나의 스칼라 양으로 합쳐진다.
분류, 회귀와 시퀀스 예측 같은 일반적인 문제에서는 올바른 손실 함수를 선택하는 간단한 지침이 있다. 예를 들어 2개의 클래스가 있는 분류 문제에는 이진 크로스엔트로피, 여러 개의 클래스가 있는 분류 문제에는 범주형 크로스엔트로피, 회귀 문제에는 평균 제곱 오차, 시퀀스 학습 분제에는 CTC (Connection Temporal Classification) 등을 사용한다.
회귀와 로지스틱 회귀 알고리즘을 혼동하면 안 된다. 로지스틱 회귀는 회귀 알고리즘이 아니라 분류 알고리즘이다.
로지스틱 회귀는 회귀를 사용하여 데이터가 어떤 범주에 속할 확률을 0 에서 1 사이의 값으로 예측하고 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류해주는 지도 학습 알고리즘이다.
스팸 메일 분류기 같은 예시를 생각하면 쉽다. 어떤 메일을 받았을 떄 그것이 스팸일 확률이 0.5 이상이면 스팸으로 분류하고, 확률이 0.5보다 작은 경우 일반 메일로 분류하는 것이다. 이렇게 데이터가 2개의 범주 중 하나에 속하도록 결정하는 것을 2진 분류라고 한다.
로지스틱 회귀에서는 확률을 0 에서 1 사이로 커브 모양으로 나타내야 하는데, 이를 담당하는 것이 바로 sigmoid 함수이다.
1. 문제 정의와 데이터셋 수집
2. 성공 지표 선택
어떤 것을 제어하려면 관측할 수 있어야 한다. 성공하기 위해서는 성공은 무엇인가를 정의해야 한다.
성공의 지표가 모델이 최적화할 손실 함수를 선택하는 기준이 된다.
클래스 분포가 균일한 분류 문제에서는 정확도와 ROC AUC 가 일반적인 지표이다.
클래스 분포가 균일하지 않은 문제에서는 정밀도와 재현율을 사용할 수 있다.
랭킹 문제나 다중 레이블 문제에는 평균 정밀도를 사용할 수 있다.
성공을 측정하기 위해 자신만의 지표를 정의하는 것은 일반적이지 않다. 머신 러닝의 다양한 성공 지표가 여러가지 종류의 문제에 어떻게 관련되어 있는지 알고 싶다면 캐글의 데이터 과학 경연 대회를 살펴보는 것이 도움이 된다.
3. 평가 방법 선택.
목표를 정했다면 현재의 진척 상황을 평가할 방법을 정해야 한다. 잘 알려진 세 가지의 평가 방식은 다음과 같다.
4. 데이터 준비
머신 러닝 모델이 심층 신경망일 때:
5. 기본보다 나은 모델 훈련하기
이 단계의 목표는 statistical power 을 달성하는 것이다.
즉 아주 단순한 모델보다 나은 수준의 작은 모델을 개발한다.
일이 잘 진행된다고 가정하면 첫 번째 모델을 만들기 위해 세 가지 중요한 선택을 해야 한다.
6. 과대적합 모델 구축
과소적합과 과대적합 사이, 즉 과소 용량과 과대 용량의 경계에 적절히 위치한 모델이 이상적이다. 이 경계가 어디에 위치하는지 찾기 위해서는 먼저 지나쳐 보아야 한다.
7. 모델 규제와 하이퍼파라미터 튜닝
반복적으로 모델을 수정하고 훈련하고 검증 데이터에서 평가한다. (이때 테스트 데이터를 사용하지 않는다.) 그리고 다시 수정하고 가능한 좋은 모델을 얻을 때 까지 반복한다. 적용해 볼 것들은 다음과 같다.