수식이 나오지 않는다면 새로고침(F5)을 해주세요
모바일은 수식이 나오지 않습니다.
📌 활성화 함수(Activation Functions)??
머신 러닝과 딥러닝에서, 특히 딥러닝에서 활성화 함수는 신경망의 핵심 요소 중 하나로, 모델이 복잡한 문제를 해결할 수 있도록 합니다.
활성화 함수는 신경망의 각 뉴런에 들어오는 입력 신호의 총합을 출력 신호로 변환하는데 사용합니다. 이러한 함수들은 비선형 함수로 머신러닝의 트리 기반 모델에서 분류를 한 후 나오는 출력값을 확률로 변환하는데에도 사용됩니다.
크게 시그모이드 함수(Sigmoid function), 소프트맥스 함수(Softmax functions), ReLU 함수(Rectified Linear Unit functions), Leakly ReLU를 알아보겠습니다. 이 외에도 많은 활성화 함수가 있으며 분석에 있어서 데이터의 특징이나 분석 목적에 따라 선택하여 사용할 수 있습니다.
◼️ 시그모이드 함수(Sigmoid)
시그모이드 함수는 아마 많이 들어봤을 겁니다. 오래전부터 사용되어온 함수로 입력을 받아 확률 값으로 사용할 수 있는 0과 1사이의 출력으로 반환합니다.
이러한 특징으로 시그모이드는 이진 분류 문제에서 주로 사용됩니다. 그래프와 수식은 아래와 같습니다.
$$
sigmoid(x) = \dfrac{1}{1+e^{-x}} = \dfrac{e^x}{e^x+1}
$$
겉햝기로 알면 아쉽겠죠? 시그모이드 함수 안에 있는 자연로그의 밑을 기반으로하는 지수함수를 한번 확인해봅시다.
먼저 자연상수인 $e$는 아래와 같습니다.
$$
e = \lim_{n \rightarrow 0} (1+n)^{\frac1n}
$$
n이 커질수록 약 2.71828...로 수렴하는 무리수 입니다. 지수함수의 그래프를 한번 보면..
자 이렇습니다. $y=e^{-x}$를 보면 x가 작아질수록 큰 단위로 y가 커지고, x가 커질수록 y가 0에 수렴합니다.
이를 시그모이드 함수에서 확인해보면?
분류를 한후, 출력값 x가 비교적 큰 값일 때를 가정해봅시다. 그럼 $e^{-x}$는 작아질 것이고, 결과적으로 시그모이드 함수에서 분모는 작아지고 함수 반환값은 커지게 됩니다. 이로인해 확률값이 커지죠.
당연히 출력값 x가 작은 값일때는 확률값은 작아지겠네요.
시그모이드 함수의 단점이라면, 딥러닝에 있어서 기울기 소실이 발생합니다.
◾ 기울기 소실(Vanishing Gradient)
시그모이드 함수를 그래프로 확인할 때 0과 1로 수렴은 하지만 실제 0과 1이 되지는 않습니다. 때문에 0과 1로 강제 출력하는 부분에서 학습이 잘 이루어지지 않고 이를 기울시 소실 문제라고 합니다.
시그모이드 함수의 미분 그래프를 한번 보자.
이와 같이 입력값이 0 일 때 1/4로 제일 높음에도 절대적인 값은 그리 크지 않습니다. 또한, 입력값이 커지거나 작아질수록 미분값은 0으로 수렴합니다.
이러한 이유로 역전파 과정에서 시그모이드 함수의 미분값이 반복해서 곱해지면서 점점 기울기 값이 작아지게 되고 모델 적합이 제대로 이루어지지 않습니다.
◼️ 소프트맥스 함수(Softmax)
소프트맥스 함수는 시그모이드 함수와 유사하게 작동하지만, 이진 분류가 아닌 다중 분류에 있어서 유용하게 사용됩니다. 입력값을 0과 1사이의 값으로 정규화하는데,
주목할 점은 모든 출력값의 합을 1이 되도록 만듭니다. 이러한 특성으로 인해 다중 분류에 있어 적합한 함수로 여겨집니다. 제일 높은 확률을 가진 값으로 분류하게 되는거죠.
수식은 아래와 같습니다. K는 클래스의 개수.
$$
softmax(x)_i = \dfrac{e^{x_i}}{\Sigma_k e^{x_k}}
$$
직관적으로 이해하기 쉽습니다. 한번 확인해봅시다.
출력값이 3가지 클래스에 대해 각각 [0.1253, 0.3351, 1.235]로 나타났다고 해보자.
먼저 지수함수를 통해 미분가능하게 만들고 softmax 함수를 적용시키면? 각 값은 약 [0.189, 0.234, 0.575]가 됩니다. 소수점 개수에 따라 차이가 있지만 실제 합은 1이 됩니다.
높은 값이 결국 높은 확률을 반환하죠.
◾ 그렇다면 K = 2일 때, 시그모이드 함수와 스프트맥스 함수는 같은 값을 반환하나??
소프트맥스 함수에서 클래스 개수인 K가 2라면, 이는 이진 분류와 같습니다. 그렇다면 시그모이드와 소프트맥스의 차이는 뭘까?
먼저, 입력에 있어서 부터 차이가 있습니다.
시그모이드의 경우 입력을 단일 스칼라로 받게됩니다. 출력도 단일 확률로 얻게되고 대부분의 분류에 있어서 이는 '1'의 클래스에 속할 확률이 됩니다. 일반적으로 출력값이 0.5 이상이면 '1'로, 미만이면 '0'으로 분류되는 겁니다.
반면 소프트맥스의 경우 입력을 K개의 요소를 가진 벡터로 받게됩니다. 출력 또한 K개의 요소를 가진 확률 벡터를 얻게되죠. '1'의 확률이 0.7, '0'의 확률이 0.3과 같이 말이죠. 이 경우 당연히 '1'로 분류될 것입니다.
때문에 엄밀히 말해서 시그모이드 함수는 중간층의 활성화 함수로, 보통 소프트맥스는 출력층에서 사용됩니다.
또한, 만약 소프트맥스를 이진 분류에 사용하고 싶다면 하나의 입력값을 0으로 고정하여 시그모이드 함수와 같이 사용할 수 있습니다.
하나의 입력값을 0으로 고정한다면 아래와 같은 공식이 됩니다. 시그모이드와 같게 되죠
$$
softmax([x,0]) = \dfrac{e^x}{e^x + e^0} = \dfrac{1}{1 + e^{-x}}
$$
표로 정리해보자면
시그모이드 | 소프트맥스 | |
목적 | 이진 분류 | 다중 분류 |
사용 | 중간층의 활성화 함수 | 보통 출력층 |
출력 값 해석 | 0.5 이상이면 양성 클래스로 | 각 클래스에 속할 확률 |
비고 | 총합이 1 |
◼️ ReLU 함수(Rectified Linear Unit)
이 또한, 널리 사용되는 활성화 함수로. 입력이 양수라면 이 값은 $y=x$에 따라 대로 출력값이 되고 음수일 경우 0으로 출력됩니다.
ReLU는 간단해서 계산 효율성이 높고, 앞서 시그모이드 함수의 한계점인 기울기 손실 문제를 줄여주는 효과가 있어 자주 사용됩니다. 아래와 같은 함수로 나타나겠네요.
이를 직접적으로 예측에 활용하는 건 아니고 은닉층에서의 활성화 함수로 활용됩니다.
앞서 기울기 손실 문제를 줄여주는 효과가 있다고 하였는데, ReLU 함수의 경우 미분값이 입력이 0보다 작으면 0으로 1보다 크다면 1이 됩니다. 이를 통해 역전파 과정의 기울기 손실을 해결할 수 있죠.
하지만 이 역시 한계가 있는데, 예상하셨듯이 입력값이 0 음수이면 미분값이 0이기 때문에 뉴런이 죽어버릴수도 있습니다. 이 문제를 Dying ReLU 현상이라고 하며, 해당 현상을 보완하기 위해 Leakly ReLU가 제안되었습니다.
◼️ Leakly ReLU
ReLU 함수의 변형으로써 입력값이 음수일 때 0이 아니지만 매우 작은 값을 출력하도록 설계된 함수입니다. 아래와 같이 나타나며 여기서 $a$는 설정해줘야할 하이퍼 하라미터입니다.
입력값이 음수일 때는 $y=ax$로 나타나게 됩니다. 이런 함수 구조를 통해 ReLU의 한계를 보완하게 됩니다.
'🌞 Statistics for AI > Deep learning' 카테고리의 다른 글
TensorFlow(텐서플로우 2.x) 선형회귀 예제 (0) | 2024.08.01 |
---|---|
Tensorflow? 텐서플로우? (0) | 2024.08.01 |
경사 하강법 최적화 알고리즘 : Momentum method, AdaGrab, RMSProp, Adam (0) | 2023.12.14 |
드롭 아웃(Drop out)과 정규화(Regularization) (0) | 2023.12.13 |
경사 하강법 : 배치, 확률적, 미니 배치 경사하강법(Batch, Stochastic, Mini Batch) (0) | 2023.12.13 |