본문 바로가기
인공지능/신경망

활성화 함수 2

by 베니스스토리 2023. 7. 18.

3. 렐루 함수(Rectifid Linear Unit, ReLU)

출처: AI 용어사전

ReLU(Rectifid Linear Unit) 함수는 인공 신경망에서 주로 사용되는 비선형 활성화 함수 중 하나로, 입력이 양수인 경우에는 입력 값을 그대로 출력하고, 음수인 경우에는 0으로 변환하는 함수입니다. 수식적으로는 다음과 같이 표현됩니다.

 

f(x) = max(0, x)

 

여기서, f(x)는 입력 x에 대한 ReLU 함수의 출력값을 의미합니다. 

max(a, b)는 a와 b 중에서 큰 값을 반환하는 함수입니다. 

ReLU 함수는 입력이 0보다 작을 때 출력이 0이 되므로, 비선형적인 특성을 가집니다. 이러한 비선형성은 인공 신경망의 은닉층에서 주로 사용되는 활성화 함수로서 매우 중요합니다. 왜냐하면 선형 활성화 함수를 사용하면 여러 층의 신경망을 쌓아도 하나의 선형 함수로 표현할 수 있기 때문에 딥 러닝의 장점을 살리지 못합니다. 따라서 비선형 활성화 함수가 필요하며, ReLU 함수가 많은 경우에서 성능과 학습 속도 측면에서 좋은 결과를 보여주었습니다.

 

ReLU 함수의 장단점

연산이 간단하고 빠르기 때문에, 학습과 추론 과정에서 계산 효율성이 높습니다. 입력이 양수일 경우 기울기가 1로 일정하여, 기울기 소실 문제를 완화시킵니다. 특정 조건 하에서 희소성(Sparsity)을 유발할 수 있어, 더 적은 파라미터를 사용하는 경향이 있습니다. 하지만 ReLU 함수도 몇 가지 단점이 있습니다.

 

입력이 음수인 경우에는 기울기가 0이 되기 때문에, 해당 부분은 학습이 진행되지 않아 "죽은 ReLU" 문제가 발생할 수 있습니다. 이를 해결하기 위해 Leaky ReLU와 같은 변형 함수들이 제안되기도 합니다. 입력이 음수인 경우 출력이 0이기 때문에, 양수 입력에 비해 손실이 발생할 수 있습니다. 이는 입력값이 음수인 경우 관련 정보를 완전히 버리는 단점으로 작용할 수 있습니다. 따라서, ReLU함수와 그 변형 함수들은 각자의 장단점을 가지고 있으며, 어떤 활성화 함수를 사용할지는 문제의 특성과 모델의 구조에 따라 선택되어야 합니다.

 

4. 리키 렐루 함수( Leaky ReLU)

출처 : AI 용어사전

 Leaky ReLU 함수는 ReLU 함수의 일종으로, ReLU 함수의 단점 중 하나인 "죽은 ReLU" 문제를 완화시키기 위해 제안된 활성화 함수입니다.  Leaky ReLU는 입력이 음수인 경우에도 작은 기울기를 가지도록 설계되어 있습니다.

 

수식적으로  Leaky ReLU 함수는 다음과 같이 표현됩니다.

 

f(x) = max(ax, x)

 

여기서 f(x)는 입력 x에 대한  Leaky ReLU 함수의 출력값을 의미합니다.

max(a, b)는 a와 b 중에서 큰 값을 반환하는 함수입니다. 

a는 0보다 작은 어떤 상수로, 일반적으로 0.01과 같이 작은 값을 사용합니다.

Leaky ReLU 함수는 입력이 양수인 경우에는 ReLU 함수와 동일하게 입력 값을 그대로 출력합니다. 하지만 입력이 음수인 경우에는 a * x의 값이 출력됩니다. 이렇게 음수 입력에도 기울기가 작은 값을 가지므로, "죽은 ReLU" 문제를 완화시키고 학습을 더 안정적으로 진행할 수 있습니다.

 

Leaky ReLU 함수는 주로 딥러닝 모델의 은닉층에서 사용되며, 특히 ReLU 함수가 죽은 뉴런을 많이 가지는 경우에 대안으로 사용됩니다. 또한 Leaky ReLU 의 변형으로  Parametric ReLU(PReLU)가 있는데, 이는 기울기 값을 학습 가능한 파라미터로 사용하여 더 유연한 활성화 함수를 만들어낼 수 있습니다.

 

Leaky ReLU  함수의 장점

ReLU 함수의 죽은 뉴런 문제를 완화시키기 때문에, 학습의 안정성을 증가시킬 수 있습니다. 기울기 값이 0보다 작기 때문에, ReLU 함수보다 기울기 소실 문제에 대한 저항력을 가집니다.

 

단점으로는 a라는 하이퍼파라미터를 조정해야 하는데, 이 값이 적절하지 않으면 여전히 죽은 뉴런 문제가 발생할 수 있습니다. 따라서 일반적으로 0.01과 같이 작은 값을 사용하며, 이 값은 주로 하이퍼파라미터 튜닝을 통해 결정됩니다. 

 

5. 소프트맥스 함수(Softmax Function)

소프트맥스 함수(Softmax Function)는 인공 신경망에서 주로 다중 클래스 분류 문제에 사용되는 활성화 함수입니다 소프트맥스 함수는 입력으로 들어온 값을 0과 1 사이의 확률로 변환하여 각 클래스에 속할 확률을 추정합니다.

 

소프트맥스 함수는 다음과 같이 표현됩니다.

 

f(x_i) = exp(x_i) / sum(exp(x_j) )

 

여기서 f(x_i)는 입력 x_i에 대한 소프트맥스 함수의 출력값을 의미합니다. 이는 i번째 클래스에 속할 확률로 해석됩니다.exp(x)는 e(자연 상수)의 x승을 의미합니다.sum(exp(x_j) )는 모든 클래스 j에 대한 exp(x_j)의 합을 의미합니다. 이로 인해 모든 클래스의 확률의 합이 1이 됩니다.

소프트맥스 함수는 입력값을 지수 함수를 사용하여 값을 양수로 변화하고, 이를 각 클래스별로 정규화함으로써 확률 값으로 해석할 수 있도록 만듭니다. 따라서 입력값을 확률로 변환하여 다중 클래스 분류 문제를 해결할 수 있습니다.

 

주요 특징과 장점

출력값이 확률로 해석 가능하여 다중 클래스 분류에 용이합니다. 소프트맥스 함수는 지수 함수를 사용하므로 출력값이 항상 양수이며, 각 클래스의 상대적 확률을 고려할 수 있습니다. 손실 함수로 크로스 엔트로피(Cross-Entropy)를 사용하면, 소프트맥스 함수의 기울기 계산이 용이하여 역전파 알고리즘에 적용하기 쉽습니다. 

 

하지만 소프트맥스 함수에도 몇 가지 주의할 점이 있습니다.

소프트맥스 함수의 지수 계산은 비교적 큰 값을 만들 수 있으므로, 입력값이 매우 큰 경우 수치적으로 불안정해지 수 있습니다. 이를 개선하기 위해 입력값에 상수를 빼주는 등의 조치를 취하기도 합니다. 이러한 개선된 소프트맥스 함수를 "Log-softmax" 또는 "Stable softmax"라고 부르기도 합니다.  소프트맥스 함수는 독립적으로 각 클래스에 대한 확률값을 계산하기 때문에, 클래스가 많아질수록 계산 비용이 증가할 수 있습니다. 대규모 다중 클래스 분류 문제에서는 조심해야 합니다.

 

활성화 함수에 대해 1,2편으로 나눠 알아보았습니다.

이 외에도 다양한 활성화 함수들이 존재하며, 문제에 맞게 선택되고 조합되어 사용됩니다. 예를 들면, 시그모이드 함수와 렐루 함수를 조합한 시그모이드 렐루(SiLU) 함수나, 렐루 함수를 응용한 여러 변형 함수 등이 있습니다. 활성화 함수는 신경망의 효율성과 성능에 큰 영향을 미치므로, 적절한 선택과 조정이 중요합니다.

'인공지능 > 신경망' 카테고리의 다른 글

트랜스포머(Transformer)  (0) 2023.07.20
전이학습(Transfer Learning)  (0) 2023.07.19
활성화 함수1  (0) 2023.07.17
GAN(Generative Adversarial Network)  (0) 2023.07.16
순환신경망(RNN), LSTM, GRU  (0) 2023.07.15