2025 학부 인턴/CV

활성화 함수 : Activation Function

dbwls-log 2025. 12. 14. 22:43

활성화 함수의 계열 

S자형 곡선 형태의 시그모이드 계열 

ex) Sigmoid, Tanh(Hyperbolic Tangent) 

 

구간 선형 함수로 정의되는 ReLU 계열 

ex) ReLU, Leaky ReLU, Maxout, ELU(Exponential Linear Unit) 

 

 

Step 

퍼셉트론은 이진 분류 문제를 풀기 위해 만들어진 것으로 이 때 사용된 활성화 함수가 계단함수이다. 

하지만 계단 함수는 여러가지 문제점이 있다. 

 

1. 미분이 불가능하여 역전파나 경사하강법을 사용할 수 없다. 

2. 출력이 0 또는 1이라 작은 변화에도 갑자기 변한다. 

3. 비선형 문제를 해결하지 못한다. (ex XOR) 

 

이러한 문제로 인하여 현대의 신경망에서는 사용하기 힘들다. 

 

 

Sigmoid : 시그모이드 

퍼셉트론 보다 더 깊은 네트워크인 MLP 학습에 역전파 알고리즘을 적용하기 위해 미분 가능한 시그모이드를 사용한다. 

출력은 0~1사이 값으로 연속적인 값을 사용하는데, 이는 확률 값을 기반으로 하여 최종 분류를 예측하는데 사용된다. 

미분이 가능하여 역전파를 사용할 수 있고, 비선형을 제공하여 XOR 같은 문제로 해결 가능하다. 

 

하지만 시그모이드 함수도 문제점이 있다. 

1. 기울기 소실 문제 : 입력이 너무 크거나 작으면 미분값이 0에 가까워지고, 이는 가중치가 거의 변화하지 않는다는 것을 의미한다. 그럼 자연스럽게 학습도 느려지게 된다. 

2. 출력값이 항상 0~1 : 중심이 0이 아니기 때문에 비효율적이고, 양수만 출력하므로 학습 경로가 진동하며 학습이 느려진다. 

3. 지수 함수 연산이 필요하기 때문에 계산량 자체가 많다. 

 

 

Tanh : Hyperbolic Tangent 

시그모이드 함수는 항상 양수만을 가지기 때문에 최적화에 비효율적이다. 

Tanh 함수는 -1~1 사이의 값을 사용하여 부드러운 곡선을 그리는 활성화 함수이다. 

평균이 0에 가깝기 때문에 학습이 더 원활하게 되며, 0부근에서 시그모이드보다 더 가파른 기울기를 보인다. 

신경망의 은닉층에서 출력 분포를 0 중심으로 맞추고 싶을 때 등 출력값이 양수와 음수로 균형이 잡혀있어야 하는 경우에 사용한다. 

 

하지만 시그모이드에서의 문제점이 그대로 남아있다는 문제점이 있다. 

 

※ 기울기 소실 문제란? 

1. 문제의 원리 : 역전파와 곱셈의 함정 

딥러닝 모델은 학습을 할 때 역전파라는 과정을 통해 각 층의 가중치를 업데이트 한다. 

이 과정에서 손실함수와 기울기를 계산한다. 

 

기울기 계산 

맨 마지막 층부터 시작하여 앞쪽 층으로 갈수록 미분값을 계속 곱해가며 기울기를 계산한다. 

 

활성화 함수의 미분 

특히, 이 미분값 중에서는 각 층의 뉴런을 통과하는 활성화 함수의 미분값이 포함된다. 

위에서 노란 부분에 해당된다. 

 

소실 발생 

만약 사용된 활성화 함수의 미분값이 대부분 1보다 작은 값을 가진다면, 이 값들이 계속 곱해지면서 입력층에 가까워질수록 전체 기울기 값이 점점 0에 가까워지게 된다. 이것이 바로 기울기 소실이다.      

 

 

 

2. 시그모이드 활성화 함수와 소실 

시그모이드 함수는 입력 값이 매우 크거나 매우 작을 때, 출력 값이 각각 1이나 0에 가까워 진다. 

미분값을 보면 시그모이드 함수의 미분값은 최대가 0.25이고, 입력 x가 0에서 멀어질수록 기울기가 빠르게 0으로 수렴하게 된다. 

 

이렇게 되면 이미지 우측에 되어있는 식처럼 기울기가 0이 되면서 가중치가 업데이트되지 않는 문제가 발생한다. 

 

 

3. 기울기 소실의 문제점 

가중치 업데이트 정체 : 학습 속도 저하 

시그모이드 함수나 Tanh 함수는 입력값이 크거나 작을 때 기울기가 매우 작아지기 때문에 가중치 업데이트에 필요한 값도 매우 작아진다. 

따라서 가중치가 거의 변화하지 않게 되어 학습이 매우 느려지거나 멈추는 현상이 발생한다. 

 

깊은 신경망에서의 학습 어려움 

깊은 신경망에서는 층이 많기 때문에 출력층에서 입력층으로 갈수록 기울기가 계속 곱해지면서 점점 작아진다. 

결과적으로 입력층에 가까운 층은 기울기가 거의 0에 가까워지면서 가중치가 거의 업데이트 되지 않고, 초기 증들이 전혀 학습 되지 않아 네트워크가 얕은 특성만 학습하게 된다. 

따라서 신경망의 성능 저하 또는 학습 불안정이 심각해질 수 있다. 

 

국소 최저점 또는 정체점에 갇히는 현상 

기울기가 너무 작으면 모델이 특정 가중치 근처에서만 맴돌면서 더 좋은 최적해를 찾기 어려워진다. 

따라서 모델이 국소 최저점 또는 정체점에 빠져 성능이 더 이상 향상되지 않는 현상이 생길 수 있다. 

 

 

 

ReLU 

대표적인 은닉층의 활성화 함수로 비선형함수지만, 선형과 매우 유사한 성질을 가지고 있어 계산이 쉽고 미분에 용이하다. 

 

ReLU의 특징으로는 학습 속도가 빨라지고, 안정적인 학습이 가능하다는 특징이 있다. 

 

ReLU는 기울기 소실 문제를 해결할 수 있다. 시그모이드는 출력값이 0 또는 1에 가까울수록 미분값이 작아져 학습이 느려지는데, ReLU는 x가 양수일 때 미분값이 1이므로 이러한 문제가 없다. 

 

또한 ReLU는 빠른 계산이 가능하다. 시그모이드처럼 지수함수 연산이 없고 최대값 연산만 수행한다. 양수 구간은 값을 그대로 통과시키고, 음수구간도 0을 출력하므로 연산이 필요없다. 이는 비선형을 유지하면서도 더 깊은 네트워크를 학습할 수 있도록 한다. 

 

 

ReLU도 문제점이 있다. 

 

ReLU를 사용하면 죽은 뉴런 문제가 발생할 수 있다. 죽은 뉴런 문제란 뉴런이 계속 0을 출력하는 상태를 의미한다. 

x가 음수일 때 기울기가 0이여서, 일부 뉴런이 업데이트 되지 않는 문제가 발생할 수 있다. 

이 때문에 Leaky ReLU나 PReLU 등의 활성화 함수가 등장하게 되었다. 

 

또한 출력 값에 음수가 없다는 문제도 있다. 이 때문에 ReLU 는 회귀 문제의 출력층에서는 잘 사용되지 않는다. 

 

 

Leaky ReLU 

일반 ReLU 의 단점을 보완한 변형 버전이다. 

ReLU가 입력이 0이하 일때는 항상 0이 되는 문제를 해결하기 위하여, 음수 입력에 작은 기울기 값을 추가하는 것이다. 

0이하일때도  아주 작은 값이라도 흘려보내기 때문에, 뉴런이 완전히 죽는 문제를 해결 할 수 있지만, 0에서 미분이 불가능하다는 특징이 있다. 

 

ReLU는 죽은 뉴런 문제를 해결하여 모든 뉴런이 조금이라도 학습할 수 있도록 한다. 

또한 ReLU보다 부드러운 학습이 가능하고, 특히 음수값도 중요한 경우에 유리하게 동작한다. 

마지막으로 단순한 선형 연산만 포함되어 있어 계산 속도가 빠르다. 

 

 

※  ReLU vs Leaky ReLU 

ReLU가 더 좋을 경우 

일반적인 경우에는 ReLU가 더 간단하고 학습 속도가 빠르다. 즉, 대부분의 문제에서는 ReLU만으로도 충분히 잘 작동한다. 

 

Leaky ReLU가 더 좋을 경우 

ReLU를 사용했을 때 죽은 뉴런 문제가 많이 발생하는 경우나 (깊은 신경망에서 특정 층이 거의 0이 되는 경우 등) 음수 값도 중요한 경우 (GAN이나 강화 학습 같은 특수한 상황 등) 등은 Leaky ReLU를 사용한다. 

 

 

PReLU와 ELU 

PReLU : Parametric ReLU 

Leaky ReLU는 기울기가 고정되어 있어 최적의 성능을 내지 못하기 때문에, 기울기를 학습하도록 나온 것이 PReLU이다. 

뉴런별로 기울기를 학습하므로 성능이 개선된다. 

 

ELU : Exponential Linear Units 

양수 구간에서는 ReLU(선형)과 동일하게 동작한다. 

음수 구간에서는 부드러운 곡선 형태의 지수 함수 형태로 동작한다. 

이는 미분이 가능한 함수로 학습에 유리하고, 음수 입력에서도 출력값이 존재하기 때문에 Dying ReLU 문제를 완화시킬 수 있다. 

 

 

하지만 지수 함수 계산으로 인하여 계산 비용이 증가하고, 하이퍼파라미터 a를 설정해야한다는 문제점이 있다. 

 

Swish 

Swish는 구글의 Google Brain의 AutoML로 찾은 최적의 함수로 SiLU(Sigmoid Linear Unit)이라고 불리기도 한다. 

연구 논문에서 Swish가 ReLU보다 더 나은 성능을 보이는 경우가 많다고 한다. 

 

ReLU와 달리 연속적이며 항상 미분이 가능하고, 작은 음수값에서도 출력이 0이 되지 않으므로 정보 손실을 최소화 할 수 있다. 

입력값이 크면 ReLU처럼 동작하고, 작으면 시그모이드처럼 부드러운 변화를 보인다. 

EfficientNet, BERT처럼 고성능 모델에서 실제로 사용되며, 특히 깊고 복잡한 신경망에서 성능이 향상된다. 

비선형성이 강하고 학습 성능이 우수하지만 계산 비용이 높다는 문제점이 있다.

 

출력층의 Softmax 

다중 클래스 분류를 할 때 출력층에서 특수하게 사용된다. 

출력값을 0~1 사이의 확률값으로 변환하여 총합이 1이 되도록 정규화한다. 

하나의 클래스 값이 높아지면 다른 클래스의 확률은 그만큼 감소하도록 만들어, 전체 확률의 합이 항상 1이 되도록 한다. 

가장 큰 값을 가진 클래스가 가장 높은 확률을 가지게 되며, 딥러닝 모델의 마지막 출력층에서 사용한다. 

각 입력을 지수함수 eˣ 로 변환하고 모든 변환된 값을 합산하여 정규화 한다. 

그 후 최종적으로 모든 값이 0~1 사이의 확률로 변환되며 전체 합은 1로 설정된다.

 

※ Sigmoid vs Softmax 

구분 Sigmoid Softmax 
적용문제  이진 분류 또는 다중 레이블 분류  다중 클래스 분류
출력 값 형태 각 노드가 독립적인 확률로 개별 값이 0~1 모든 노드 간의 상관관계로 계산되어 합이 1 
출력 예시 입력이 1,2,3일 때 > 0.731, 0.881, 0.953  0.090, 0.245, 0.665 > 합 1
출력층 적용  1개의 뉴런  여러개의 뉴런
클래스 관계  각 클래스가 독립적 클래스들이 상호 배타적

 

'2025 학부 인턴 > CV' 카테고리의 다른 글

CNN의 구조  (0) 2025.12.15
CNN 등장 배경  (0) 2025.12.15
옵티마이저 : Optimizer  (0) 2025.12.15
손실 함수 : Loss Function  (0) 2025.12.14
딥러닝 기초 with 파이토치  (0) 2025.11.21