인공지능은 대체로 linear를 이용해 가중치를 표현한다. 이는 선형적이어서 아무리 여러 가중치를 쌓아도 완전하게 표현하지 못하는 데이터가 존재한다.
이를 해결하기 위해 활성화 함수라는 것이 등장했다.
1. 개념
활성화 함수는 하나의 층(노드1)에서 나오는 가중치를 다음 층(노드2)로 보낼 때 각 가중치에 적용하는 함수이다.
신경망은 기본적으로 선형 변환( $y=Wx+b)$를 통해 데이터를 처리하는데, 이는 아무리 많은 층을 쌓아도 선형 함수의 조합은 결국 하나의 선형 함수(연립방정식)가 되므로, 복잡한 비선형 문제를 해결 할 수 없다.
활성화 함수는 선형 변환 결과에 비선형성을 적용시켜, 신경망이 복잡하고 비선형적인 패턴까지 학습, 표현할 수 있도록 한다.
이는 대개 0~1의 값을 띄며, 입력 신호의 총합이 특정 임계치를 넘을 때만 뉴런을 활성화 해 다음 층으로 신호를 전달하는 역할을 한다. (퍼셉트론의 계산 함수와 같이)
2. 어떻게 작용하는가
$Output = f(W \cdot X + b)$
- 선형 변환 ( $y = W \cdot X +b)$: 이전 층의 출력(벡터 X)에 가중치(W)를 곱하고 편향(b)를 더하는 선형 계산
- 활성화 함수 적용( $f(Z)$) : 선형 결과 Z에 비선형 함수 f 적용
효과
-
다층 구조 효과
f(x) = x 는 아무리 쌓아도 $W_3(W_2(W_1X+b_1)+b_2)+b_3)$ 와 같아 결국 $W'X+b'$ 형태의 하나의 선형 함수가 된다.
하지만 비선형 함수를 적용하면, 각 층이 서로 다른 비선형 변환을 수행해 복잡한 곡선 형태를 만들 수 있다.
-
정규화 및 스케일링
일부 활성화 함수(sigmoid, tanh)는 출력값을 특정 범위(0~1, -1~1)로 출력을 압축해 다음 층의 입력값 크기가 너무 크거나 작아지는 것을 방지하는 효과도 가진다.
다만, 위 두 함수는 Gradient Vanishing(가중치 소실) 문제를 가진다.
가중치 소실은 모델이 깊어질 수록(여러 번 활성화 함수를 거칠수록) 정규화한 값이 여러 번 활성화 함수를 거치면서 값이 지극히 0에 가까워지는 현상이다
3. 주요 활성화 함수의 종류
은닉층
- ReLU (Rectified Linear Unit)
- $f(x) = max(0, x)$
- 가장 많이 사용하는 함수. x>0 이면 그대로 가중치를 보내고 <0 이면 0으로
- x<0 일 때 기울기가 0이 되어 뉴런이 죽는 현상이 있음
- Leaky ReLU
- $f(x) = max(ax, x)$(단, a 는 작은 상수)
- ReLU의 뉴런이 죽는 문제 개선, x<0 일 때도 아주 작은 기울기를 부여
- Sigmoid
- $f(x) = {1 \over 1+e^{-x}} = 1/(1+e^{-x})$
- 은닉층, 출력층 두루두루 자주 사용하는 함수
- 0~1 사이의 값으로 가중치를 정규화(확률 표현에 용이)
- 입력값이 클수록 기울기가 0에 가까워져 학습이 멈추는 Gradient Vanishing 문제 심각
- tanh
- $f(x) = {e^x - e^{-x} \over e^x + e^{-x}} = (e^x - e^{-x})/(e^x + e^{-x})$
- 출력을 -1 ~ 1 사이의 값으로 정규화.
- 시그모이드 보다 중심이 0에 가까워 학습이 안정적이나, 아직 Gradient Vanishing 존재
출력층
- Sigmoid
- 이진 분류에서 사용. (Binary Classification)
- 0~1 사이의 출력을 단일 확률 값으로 변환
- 예) 강아지, 고양이 분류 문제에서 강아지일 확률 0.8 이면 고양이는 자동으로 0.2
- Softmax
- $y_i = {e^{x_i} \over \sum_{k=1}^K e^{x_k}} = {e^{x_i} / \sum_{k=1}^K e^{x_k}}$
- 다중 분류에서 사용. (Multi-class Classification)
- 출력값을 모두 합하면 1이 되도록 확률 분포 형태의 벡터로 반환
- 예) 강아지일 확률 0.7, 고양이 0.2, 양 0.05, 말 0.05