logo

딥러닝에서의 활성화 함수 📂머신러닝

딥러닝에서의 활성화 함수

정의

실제 생물의 역치를 모방한 비선형 함수를 활성화 함수activation function라 한다.

수학적 정의

딥러닝에서 비선형 스칼라 함수 $\sigma : \mathbb{R}^{n} \to \mathbb{R}$를 활성화 함수라 부른다.

  • 물론 정의를 벗어난 소프트 맥스같은 것도 있지만 예외로 치자.

설명

반면 벡터 함수레이어layer, 층라 부른다.

만약 $\sigma : \mathbb{R} \to \mathbb{R}$로 정의된 활성화함수가 벡터를 인풋으로 받는다는 표현이나 코드가 있다면, 다음과 같이 성분별로 적용한다는 의미이다.

$$ \sigma (\begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{bmatrix}) = \begin{bmatrix} \sigma (x_{1}) \\ \sigma (x_{2}) \\ \vdots \\ \sigma (x_{n}) \end{bmatrix} $$

모티브

20190325\_153312.png

역치란 생물이 자극에 대해 어떤 반응을 일으키는 데 필요한 최소한의 자극의 세기로써, 딥러닝은 이를 모방하기 위해 각 노드의 계산 결과에 활성화 함수를 취해 다음 레이어로 넘긴다. 이러한 비선형적 보정이 없다면 딥러닝에서 히든 레이어를 두며 계산을 여러번 하는 의미가 없다.활성화 함수는 여러 종류가 있는데, 어떤게 좋은지는 말 그대로 케이스 바이 케이스다. 무슨 활성화 함수를 쓰면 퍼포먼스가 어떻게 달라진다는 식의 이론은 거의 없고, 그냥 시도해 보고 결과가 좋으면 채택하는 식이다.

예시

계단 함수

$$u (x) := \begin{cases} 0 & , x<0 \\ 1 & x \ge 0 \end{cases} $$

계단 함수는 역치라는 이름에 가장 잘 맞는 함수지만 계산 결과를 너무 단순하게 축약시키기 때문에 실제로 쓰기엔 어려운 측면이 있다. 다른 활성화 함수들도 계단 함수는 아니지만 마치 계단 함수처럼 작용하기 위해서 고안되었다고 생각하면 좋다.

시그모이드 함수

1\_XxxiA0jJvPrHEJHD4z893g.png

시그모이드 함수 중 가장 유명한 것은 아무래도 로지스틱 함수 $\displaystyle \sigma (x) := {{1} \over { 1 + e^{-x} }}$ 로, 마치 계단함수를 연속함수로 이어놓은 듯한 모양을 가지고 있다. 치역은 다르지만 $\tanh x$ 역시 비슷한 이유로 사용되었다. 최근에는 그래디언트 배니싱이라는 문제가 발견되어 거의 쓰이지 않는다.

ReLu(Rectified Linear Unit) 함수

$$\operatorname{ReLU} (x) := \max \left\{ 0 , x \right\}$$

시그모이드 함수의 문제점을 극복하기 위해 고안된 함수다. $x <0$ 이면 아예 함수값을 죽여버리고, $0$ 을 넘겨야 그대로 전달된다는 점에서 활성화 함수답다고 할 수 있다.