활성화 함수: 입력 신호의 총합을 출력 신호로 변환하는 함수를 일반적으로 활성화 함수(activation function)라 한다.
"활성화"라는 이름이 말해주듯 활섬화 함수는 입력 신호의 총합이 활성화를 일으키는지 정하는 역할을 한다.
신경망은 분류와 회귀 모두 이용할 수 있다. 다만 둘 중 어떤 문제냐에 따라 출력층에서 사용하는 활성화 함수가 달라진다. 일반적으로 회귀에는 항등 함수를, 분류에는 소프트맥스 함수를 사용한다.
# 분류: 데이터가 어느 클래스에 속하냐는 문제
# 회귀: 입력 데이터에서 (연속적인) 수치를 예측하는 문제
이 때, 소프트 맥수는 다음과 같다.
지수 함수를 사용하면 그 값이 매우 커져서 오버플로우가 발생할 수 있다.
이 때, 분모와 분자에 C를 곱하고 이 안에 집어넣어도 식이 변하지 않는다.
즉, 소프트맥스의 지수 함수를 계산할 때 어떤 정수를 더해도(혹은 빼도) 결과는 바뀌지 않는다.
이 C는 뭘 넣어도 성립한다. 보통은 이 C에 입력 신호 중 최댓값을 넣는다.
소프트맥스 함수의 출력을 "확률"로 해석할 수 있다. 즉, 소프트맥수 함수를 이용함으로써 문제를 확률적(통계적)으로 대응할 수 있게 되는 것이다.
전처리(preprocessing)을 통해 식별 능력을 개선하고 학습 속도를 높이는 등의 사례가 많이 제시되고 있다.
배치 처리는 컴퓨터로 계산할 때 큰 이점을 준다.
1. 이미지 1장당 처리 시간을 대폭 줄여준다. 왜냐하면 수치 계산 라이브러리 대부분이 큰 배열을 효율적으로 처리할 수 있도록 고도로 최적화 되어 있기 때문이다.
2. 데이터 전송이 병목으로 작용하는 경우, 배치 처리를 함으로써 버스에 준느 부하를 줄인다.
학습: 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다.
하나의 지표를 기준으로 최적의 매개변수 값을 탐색한다. 이 때 하나의 지표는 손실 함수(loss function)이다.
이 손실 함수는 임의의 함수를 사용할 수도 있지만 일반적으로는 오차제곱합과 교차 엔트로피 오차를 사용한다.
1. 오차제곱합
오차제곱합은 각 원소의 출력(추정 값)과 정답 레이블(참 값)의 차(yk - tk)를 제곱한 후, 그 총합을 구한다.
2. 교차 엔트로피 오차
y_k는 신경망의 출력, t_k는 정답 레이블이다.
출력이 커질수록 0에 다가가다가, 그 출력이 1일 때 0이 된다. 반대로 정답일 때의 출력이 작아질수록 그 오차는 커진다.
만약 배치 학습을 통해 손실 함수를 구하고자 한다면,
데이터 하나에 대한 손실 함수를 단순히 n개의 데이터로 확장하여 손실 함수를 구한다.
다만, 마지막에 N으로 나누어 정규화하고 있다. N으로 나눔으로써 "평균 손실 함수"를 구하는 것이다.
데이터가 많을 경우 모든 데이터를 대상으로 손실 함수의 합을 구하려면 많은 시간을 필요로 한다.
따라서 랜덤으로 데이터 일부를 추려 전체의 "근사치"로 이용할 수 있다. 이 일부를 미니배치(mini-batch)라고 한다.
미니배치를 이용해 학습하는 방법을 미니배치 학습이라 한다.
정확도를 지표로 하면 매개변수의 미분이 대부분의 장소에서 0이 된다.
반면 손실 함수를 지표로 사용하면 매개변수의 값이 조금 변하면 그에 반응하여 손실 함수의 값도 연속적으로 변화한다.
이 때, 시그모이드 함수는 계단함수와 다르게 출력 값이 연속적으로 변하고 곡선의 기울기도 변한다. 즉, 시그모이드 함수의 미분은 어느 장소라도 0이 되지는 않는다.
손실 함수에서의 미분은 함수의 "가장 낮은 장소(최솟값)"을 가리킨다. 또한 "가장 늦은 곳"에서 멀어질수록 화살표의 크기가 커짐을 알 수 있다.
정확히 말하면 기울기가 가리키는 쪽은 각 장소에서 함수의 출력 값을 크게 줄이는 방향이다.
경사법(gradient method)은 현 위치에서 기울어진 방향으로 일정 거리만큼 이동한다. 그런 다음 이동한 곳에서도 마찬가지로 기울기를 구하고, 또 그 기울어진 방향으로 나아가기를 반복한다. 이렇게 해서 함수의 값을 점차 줄이는 것이 경사법이다.
이 때 학습률(learning rate)이 너무 크면 큰 값으로 발산해버리고, 너무 작으면 거의 갱신되지 않은 채 끝나버린다. 이를 잘 조절하는 것이 필요하다. 이 때 학습률와 같은 매개변수를 하이퍼파라미터(hyper parameter)라고 한다.
'컴퓨터 > 딥러닝 공부' 카테고리의 다른 글
tensorflow.python.framework.errors_impl.InternalError: Blas GEMM launch failed 해결 방법 (0) | 2021.07.02 |
---|