본문 바로가기
국비 교육/머신러닝, 딥러닝

[딥러닝] 활성화함수, 출력함수, 손실함수, 최적화함수

by 육츠 2024. 8. 1.
Contents 접기

활성화 함수

- Activation 함수
뉴런의 가중치 합을 다음 층으로 전달 시 활성화를 할지 말지 결정.
뉴런의 가중합의 값이 충분하지 않으면 활성화 함수는 다음 층에 0에 가까운 값 또는 그 이하의 값을 전달한다.
활성화 함수로는 비선형 함수를 이용하는데, 이는 심층 신경망을 통해 선형 분류 또는 풀기 어려운 문제(= 비선형 문제)를 풀기 위해서이다.

함수 종류

softmax, elu, softplus, relu, tanh, sigimoid, hard_sigmoid, exponential, linear 등

Hidden Layer 의 활성화 함수

종류 내용
시그모이드 함수 exp 연산 때문에 연산 속도가 느리다. y = 1 / ( 1 - exp(-x) 
하이퍼볼릭탄젠트 함수 출력값이 0을 기준으로 대칭하여 학습속도가 시그모이드 함수보다 빠르다. y = exp(x) - exp(-x) / exp(x) + exp(-x)
ReLU 함수 sigmoid 와 tahn 이 갖는 vanishing gradient 문제를 해결.
x 가 음수인 경우 데이터의 손실이 발생한다.
y = MAX(0,x)

 

출력함수

출력중에는 히든레이어에서 사용한 활성화 함수와는 다른 활성화 함수(출력 함수)를 사용하는데, 얻고자 하는 결과의 종류에 따라 분류된다.

함수 종류

종류 내용
Linear
(선형 함수)
Regression (회귀 문제)
sigmoid BInary-calssification (이진 분류)
softmax Multi-classification (다지분류, 확률분포 <출력의 합이 총 1>)

 

손실함수 (Cost function 비용함수)

예측값 (y_hat) 과 실제 값(y)을 비교했을때 얼마나 차이가 나는지를 정의하기 위한 함수. 
손실함수의 값을 줄이는 방향으로 학습이 진행된다.

함수 종류

종류 내용
Mean Squared Error(MSE)
: 평균제곱오차
- 실제값과 예측값의 차이를 제곱해 평균화하여 계산
- 회귀 문제를 예측하고자 할 때 사용한다.
L(w) = 1/2n∑(y_i - (wx_i + b))^2
손실함수에서 예측값과 정답(라벨)의 오차를 절대값이 아닌 제곱으로 처리하는 이유
- 오차가 큰 경우 더 큰 가중치를 주어 학습을 빠르게 하기 때문이다.
- MSE 를 볼록(곡선) 함수 (Convex Function) 로 만들어 최적의 가중치를 효과적으로 찾기 위해서 이다.
- 절대값은 미분이 불가능한 수식이기 때문이다.
Cross Entropy Error(CEE)
: 교차엔트로피오차
- 주어진 데이터와 모델의 예측값 사이의 차이를 계산
- 분류 문제를 풀고자 할때 사용한다.
L(w) = -∑_i t_i * log y_i
이진 분류의 경우 추론값과 정답값이 2개로, 하나는 참(1)이고 두번째는 거짓(0)이다.
L = -(ylog(y_hat) + (1 - y)log(1 - y_hat)) [y: 타겟값, y_hat: 추론값]

 

최적화 함수

최적화란?

- 신경망 모델의 학습과 그 결과에 따른 손실함수의 값을 최소화하는 방향으로 가중치의 값(w)을 찾는 것
- 최적의 가중치 값을 구하기 위해서는 손실함수 값을 모든 가중치에 대해 미분을 통하여 기울기를 구하여 찾는다.

 

경사하강법 Gradient Descent

- 현재 가중치 w 의 위치에서 오차가 작아지는 방향으로 조금씩 이동하면서 가중치를 수정하는 방법이다.
- 이 과정을 계속 반복하면 오차의 최소값에 근접하게 되고 그 때 가중치 파라미터 신경망이 학습한 지능이 된다.
경사 하강법의 문제

- 무작위 초기화로 인해 국소적 최소값(Local Minmal)에 빠지는 문제발생

- 기울기가 평탄한 지역을 지나는데 시간이 오래 걸려 더 이상 loss 가 업데이트 되지 않아 일찍 멈춰 전역 최소값(Global Minimal) 에 도달하지 못하는 문제 발생

 

- 훈련 자료의 양을 조절한 경사하강법

종류 내용
배치 경사하강법
Batch Gradient Descent
- 모든 학습 데이터에 대한 가중치의 평균을 구해서 업데이트한다. (즉 1번만 가중치를 갱신한다.)
- 전체 학습에 대해 가중치를 편미분한다.
- 학습 데이터가 많을 경우 많은 시간이 소요된다.
미니 배치 경사 하강법
Mini-Batch Gradient Descent
데이터를 Mini-Batch 한 만큼 사용하여 미니 배치 한 개마다 기울기를 구한 후 그것의 평균 기울기를 이용하여 모델을 업데이트 한다.
확률적 경사하강법
Stochastic Gradient Descent
- 한개의 샘플을 무작위로 선택하여 가중치를 조금씩 업데이트 (즉 학습데이터 1개마다 가중치를 갱신한다.)
- 학습속도가 매우 빠르다.
- 손실함수가 국소적 최소값에 이를 때까지 부드럽게 감소하지 않고 요동치며 평균적으로 감소한다.

경사하강법(왼) 과 확률적 경사하강법(오)

 

- 학습률을 조절한 경사 하강법

종류 내용
Momentum
관성
기존 진행방향에 대한 관성을 기억함으로서 SGD 방법의 진동폭을 완화시킨다.
(Global optima 에서도 이전의 가속도가 더해지기 때문에 지나치는 현상이 발생할 수 있다.)
AdaGrad 기존 가중치 변화의 진행 폭을 고려하여 이를 반영하여 학습률을 변화 시킨다.
(가능한 일직선으로 업데이트 된다. 하지만 실행이 느려진다는 단점이 존재한다.)
RMSProp AdaGrad 를 개선한 방식으로서 AdaGrad의 제곱값이 무한정 커지는 것을 방지하기 위해 고안됨
ADAM MomentumRMSProp의 혼합형으로 기존 진행방향과 진행폭을 모두 반영한 방식이다.