신경망 기초
신경망은 어떻게 특징 추출과 분류를 함께 배우는가?
신경망은 특징 추출과 분류를 함께 배우는 모델이다. 은닉층(hidden layer)이 중간 표현을 스스로 배우므로, 고전 ML에서 사람이 설계하던 특징을 데이터에서 얻는다.
뉴런과 층
신경망(neural network)은 뇌의 뉴런 연결 방식에서 착안한 함수 근사기이다. 가장 기본 단위인 인공 뉴런(artificial neuron)은 여러 입력의 가중합(weighted sum)을 구하고, 이것을 비선형 활성화 함수에 통과시켜 출력을 만든다.
뉴런을 여러 개 모으면 층(layer)이 되고, 층을 쌓으면 신경망이 된다. 기본 구조는 입력층 → 은닉층 → 출력층이다. 은닉층이 둘 이상이면 딥러닝이라 부르고, 층이 깊을수록 더 복잡한 무늬를 배울 수 있다. 아래 그림은 은닉층이 하나인 가장 작은 예이다.
그림은 3-4-2 신경망에 샘플 하나를 넣고 학습을 한 바퀴 돌린다. ▶를 누를 때마다 계산이 하나씩 진행된다. 앞 단계에서는 입력의 수가 층을 지나 앞으로 흐르며 뉴런 의 가중합과 활성화를 하나씩 계산하고, 손실이 나온 뒤에는 기울기가 출력에서 입력 쪽으로 되돌아오며 선의 굵기가 그 가중치의 가 된다. 마지막 단계에서 가중치를 갱신하고 같은 샘플을 다시 넣는다.
입력은 탐지 하나의 피크 SNR, Doppler 대역폭, RCS 변동을 z-score로 바꾼 가상의 값이고, 라벨은 표적이다. 뉴런 옆의 수는 그 뉴런의 출력이고, 계산 줄은 그림 아래에 있다.
은닉층의 활성화 함수는 ReLU, 출력층은 softmax이고 손실은 cross-entropy 이다. 처음 가중치로는 표적일 확률이 0.4073이라 손실이 0.898이다. 는 가중합이 −0.62라서 ReLU가 0을 내고, 역전파에서도 로 들어오는 가중치의 기울기가 모두 0이다. 학습률 로 한 번 갱신한 뒤 같은 샘플을 넣으면 표적일 확률이 0.7331, 손실이 0.310이 된다. 이 갱신으로 의 가중합도 −0.63이 되어, 다음 바퀴에서는 도 0을 낸다. 지도학습은 이 한 바퀴를 많은 샘플에 되풀이한다.
활성화 함수
활성화 함수가 없으면 층을 아무리 많이 쌓아도 선형 변환 하나와 같다(). 비선형 활성화 함수가 있어야 깊이가 뜻을 갖는다.
그림은 입력 하나를 은닉 뉴런 셋과 출력 뉴런 하나에 통과시킨다. ▶를 누를 때마다 가중합 , 활성화 , 가중치를 곱한 , 그 합 가 차례로 그려지고, 버튼으로 활성화 함수를 없애거나 ReLU로 바꾼다.
위 그래프는 은닉 뉴런 셋의 값이고 아래 그래프는 출력 y(x)이다. 세로 점선은 x = 1.5인 샘플이다.
활성화가 없으면 출력은 인 직선 하나이다. 직선을 가중치로 곱해 더해도 직선이므로, 층을 몇 개 쌓아도 같다. ReLU를 쓰면 각 뉴런이 인 에서 꺾이고, 출력도 그 세 곳에서 기울기가 바뀐다. 은닉층에서는 ReLU를 기본으로 고르고, 출력층에서는 일에 따라 sigmoid(이진 분류), softmax(다중 분류), linear(회귀)를 고른다.
역전파의 직관
역전파(backpropagation)는 손실의 기울기를 출력에서 입력 쪽으로 거꾸로 전하면서, 연쇄 법칙(chain rule)으로 각 파라미터가 최종 손실에 얼마나 기여했는지 계산하는 방법이다.
시험 성적에 빗대어 보자. 기말 성적이 나쁘게 나오면 "어떤 과목이 발목을 잡았나?" → "그 과목의 어느 단원이 문제였나?" → "그 단원의 어떤 개념을 몰랐나?"의 순서로 거꾸로 따라간다. 역전파도 이렇게 거꾸로 따라가며, 각 단계에서 그 부분이 최종 결과에 준 영향을 연쇄 법칙으로 계산한다.
역전파에서 가장 큰 문제는 기울기 소실(vanishing gradient)이다. sigmoid처럼 기울기가 작은 함수를 여러 층 쌓으면, 연쇄 법칙의 곱에서 기울기가 지수적으로 작아져 앞쪽 층의 학습이 거의 멈춘다. ResNet의 skip connection이 이 문제를 푼다(CNN 구조 절).
학습의 실전 개념
모델의 성능을 공정하게 평가하려면 학습에 쓰지 않은 데이터로 평가해야 한다. 그래서 데이터를 세 부분으로 나눈다.
- 학습(train) 세트: 모델 파라미터 를 갱신하는 데 쓴다. 전체의 70~80 %이다.
- 검증(validation) 세트: 학습하는 동안 하이퍼파라미터를 고르고 early stopping의 기준으로 쓴다. 10~15 %이다.
- 테스트 세트(test set): 최종 성능을 보고할 때만 쓴다. 한 번만 써야 편향 없는 평가가 된다. 10~15 %이다.
학습을 진행하는 단위와 크기도 정해야 한다.
- 에폭(epoch): 학습 데이터 전체를 한 번 다 도는 단위이다.
- 미니배치(mini-batch): 한 번에 처리하는 샘플 수(32, 64, 128 등)이다. 전체 데이터를 쓰는 배치 SGD와 샘플 하나를 쓰는 순수 SGD의 절충이다. 배치가 크면 안정적이지만 느리고, 작으면 잡음이 많지만 빠르다.
- 학습률(learning rate) : 가중치를 한 번에 얼마나 바꾸는지이다(). 너무 크면 발산하고, 너무 작으면 수렴이 느리다. Adam optimizer의 기본값 η = 10−3이 좋은 출발점이다.
학습률이 너무 클 때 손실 곡선이 어떻게 보이는지는 24장의 학습 곡선 그림에서 본다.
강의 노트