Tech Trail

What is an Activation Function? (활성화 함수 선택 전략: Binary step/Linear/Sigmoid/tanh/ReLU/Softmax) 본문

AI/Computer Vision

What is an Activation Function? (활성화 함수 선택 전략: Binary step/Linear/Sigmoid/tanh/ReLU/Softmax)

_밍지_ 2024. 3. 27. 18:30
728x90
반응형
SMALL

활성화 함수는 딥러닝에서 신경망이 제대로 작동하는 데 매우 중요하며, 이미지 분류 및 언어 번역과 같은 작업에 필요합니다. 이러한 함수는 딥러닝 모델 출력값의 정확도를 결정하는 데 중요한 역할을 합니다. 또한 신경망의 수렴 능력과 속도에 큰 영향을 미칩니다.

 

활성화 함수가 없다면 딥러닝의 이러한 복잡한 작업을 처리하기가 어려울 것입니다.

 

이 게시물에서는 다음 사항에 대해 다룰 것입니다.

  1. 활성화 함수란 무엇인가?
  2. 활성화 함수를 사용하는 이유는?
  3. 활성화 함수의 주요 유형

 

What is an Activation Function?

 

활성화 함수는 신경망에 대한 입력에 따라 뉴런을 활성화해야 하는지 여부를 결정합니다. 이러한 함수는 수학 연산을 사용하여 입력이 예측에 중요한지 여부를 결정합니다. 입력이 중요하다고 판단되면 이 함수는 뉴런을 활성화합니다.

 

활성화 함수는 node(노드) 또는 layer(계층)에 주어진 입력 값 집합을 사용하여 출력을 생성합니다. 신경망의 노드는 인간 뇌의 뉴런과 유사하며 입력 신호(외부 자극)를 수신하고 반응합니다. 뇌는 입력 신호를 처리하고 시간이 지남에 따라 축적된 경로와 뉴런이 발화하는 강도에 따라 뉴런을 활성화할지 여부를 결정합니다.

 

딥러닝의 활성화 함수도 비슷한 역할을 수행합니다. 활성화 함수의 주요 목적은 노드에서 합산된 가중치 입력을 다음 hidden layer(숨겨진 계층)으로 전달되거나 최종 출력으로 사용되는 출력 값으로 변환하는 것입니다.

 

Why Are Activation Functions Important?

 

대부분의 활성화 함수는 non-linear(비선형)입니다. 이를 통해 신경망은 데이터셋에 대한 특징(즉, 다양한 픽셀이 이미지의 특징을 구성하는 방식)을 "학습"할 수 있습니다. 비선형 활성화 함수가 없으면 신경망은 linear (선형) 함수와 affine(아핀) 함수만 학습할 수 있습니다. 이것이 왜 문제일까요? 선형 함수와 아핀 함수는 실제 데이터에 자주 존재하는 복잡한 비선형 패턴을 캡처할 수 없기 때문에 문제가 됩니다.

 

활성화 함수는 또한 알 수 없는 분포 및 스케일을 알려진 스트림에 매핑하는 데 도움을 줍니다. 이렇게 하면 학습 프로세스가 안정화되고 classification(분류), generative modeling(생성 모델링) 또는 강화 학습과 같은 비회귀 작업을 위해 원하는 출력에 값을 매핑할 수 있습니다. 비선형 활성화 함수는 신경망에 복잡성을 도입하고 신경망이 고급 작업을 수행할 수 있도록 합니다.

 

Types of Activation Functions

 

가장 인기 있는 유형의 신경망 활성화 기능을 살펴보겠습니다. 가장 많이 사용되는 세 가지 기능은 다음과 같습니다. 

  1. Binary step (바이너리 스텝)
  2. Linear activation (선형 활성화)
  3. Non-linear activation (비선형 활성화)

 

Binary Step Activation Functions

 

Binary step function(이진 스텝 함수)는 임계값을 사용하여 뉴런을 활성화해야 하는지 여부를 결정합니다. 활성화 함수에서 수신한 입력은 임계값과 비교됩니다. 입력값이 임계값보다 크면 뉴런이 활성화되고 출력값이 다음 hidden layer(은닉 계층)로 전달됩니다. 입력값이 임계값보다 작으면 뉴런이 비활성화되고 출력값이 전달되지 않습니다.

 

A plot showing a binary step activation function

 

Binary step function는 다중 출력값을 제공할 수 없습니다. 즉, 다중 클래스 분류 문제를 해결하는 데 적합하지 않습니다. 또한 미분 불가능하므로 그래디언트 기반 최적화 알고리즘과 함께 사용할 수 없으며 이는 어려운 학습으로 이어집니다.

 

Linear Activation Function

 

" no activation(활성화 없음)" 또는 " identity function(항등 함수)"라고도 하는 선형 활성화 함수는 활성화가 입력에 정비례하는 함수입니다. 이 함수는 입력의 가중치 합계를 수정하지 않고 단순히 주어진 값을 반환합니다. 

 

The linear activation function

 

그러나 선형 활성화 함수에는 두 가지 주요 문제가 있습니다.

 

첫째, 이 함수는 함수의 도함수가 입력과 관련이 없는 상수이고 신경망의 모든 계층이 하나로 축소되기 때문에 역전파와 함께 사용할 수 없습니다.

 

둘째, 얼마나 많은 레이어가 존재하는지에 관계없이 선형 활성화 함수를 사용할 때 마지막 레이어는 첫 번째 레이어의 선형 함수가 됩니다. 이렇게 하면 신경망이 단일 계층으로 효과적으로 줄어듭니다.

 

Non-Linear Activation Functions

 

선형 활성화 함수는 선형 회귀 모델과 동일합니다. 이는 선형 활성화 함수가 변환을 적용하지 않고 수신한 입력을 출력하기만 하기 때문입니다.

 

그 이유를 이해하기 위해 예를 들어 보겠습니다. 신경망에서 뉴런의 출력은 다음 방정식을 사용하여 계산됩니다.

활성화 함수가 선형 함수인 경우 출력은 입력의 선형 조합이 되며 이는 입력 변수와 출력 변수 간의 관계를 모델링하기 위해 선형 회귀에 사용되는 것과 동일한 방정식입니다.

 

반면에, 비선형 활성화 함수는 역전파와 여러 층의 뉴런 적층을 가능하게 함으로써 선형 활성화 함수의 한계를 해결합니다. 이는 많은 최첨단 컴퓨터 비전 및 고급 기계 학습 알고리즘의 표준 절차입니다.

 

비선형 함수를 사용하면 도함수 함수가 입력값과 관련될 수 있으며, 이를 통해 모델은 입력 뉴런의 가중치를 조정하여 예측을 개선할 수 있습니다. 또한 비선형 활성화 함수를 사용하면 출력이 여러 계층을 통해 전달되는 입력의 비선형 조합이 될 수 있습니다. 이를 통해 신경망은 데이터의 비선형 관계를 모델링할 수 있습니다.

 

다음 섹션에서는 오늘날 사용되는 가장 일반적인 비선형 활성화 함수에 대해 이야기하겠습니다. 비선형 함수는 기계 학습 및 컴퓨터 비전에서 가장 유용한 것 중 하나이며, 이러한 분야의 대부분의 문제는 선형 함수로 해결할 수 없습니다. 그래서 우리는 비선형 함수에 더 집중해야 합니다.

 

Common Non-Linear Activation Functions

 

최근 몇 년 동안 비선형 활성화 기능에 대한 연구가 진행되어 새롭고 향상된 기능이 개발되고 특정 기능에 대한 인기가 높아졌습니다. 그러나 일부 고전적인 활성화 함수는 여전히 널리 사용됩니다.

 

가장 일반적으로 사용되고 잘 알려진 활성화 기능 중 일부는 다음과 같습니다. 

 

Sigmoid Activation Function

 

시그모이드 활성화 함수는 입력 스트림을 범위 (0, 1)에 매핑합니다. 0 또는 1만 출력하는 step 함수와 달리, 시그모이드는 0과 1 자체를 제외하고 0과 1 사이의 값 범위를 출력합니다. 다음은 이 함수의 그림입니다.

 

The Sigmoid activation function

 

시그모이드 함수는 앞서 설명한 활성화 함수보다 개선되었으며 이진 분류와 같은 작업에 유용하지만 역전파와 관련하여 상당한 단점이 있습니다. 특히 vanishing gradient와 exploding gradient 경우가 모두 발생합니다.

 

Vanishing gradient는 레이어가 깊어질수록 그라디언트가 점점 작아질 때 발생합니다. 이렇게 하면 가중치에 대한 옵티마이저 업데이트가 매우 작기 때문에 신경망이 학습하기 어려울 수 있으며 이로 인해 신경망이 학습을 중지하게 됩니다.

 

반대로, exploding gradient 문제는 레이어가 깊어질수록 그래디언트가 점점 더 커질 때 발생합니다. 이로 인해 가중치가 매우 커질 수 있으며, 이로 인해 수치적 불안정성이 발생하고 모델의 성능이 저하될 수 있습니다.

 

또한 [0, 1]의 출력 범위는 0의 중심이 아니므로 역전파 중에 문제가 발생할 수도 있습니다. 마지막으로, 지수 함수를 사용하면 계산 비용이 많이 들고 네트워크 속도가 느려질 수 있습니다.

 

Tanh

 

tanh 활성화 함수는 입력 값을 s자형 곡선에 매핑한다는 점에서 시그모이드와 유사합니다. 그러나 tanh 함수에서 범위는 (-1, 1)이고 중심은 0입니다. 이렇게 하면 시그모이드 함수의 문제 중 하나가 해결됩니다.

 

Tanh는 쌍곡선 탄젠트를 나타내며, 이는 쌍곡선 사인을 쌍곡선 코사인으로 나눈 값진 것으로, 일반 탄젠트와 유사합니다. 다음은 이 함수의 그림입니다.

 

The tanh function

 

tanh는 시그모이드보다 더 효과적일 수 있지만 입력 값이 크거나 작은 역전파와 관련하여 여전히 시그모이드와 동일한 문제를 겪고 있으며 지수 함수이기도 합니다.

 

ReLU

 

ReLU(Rectified Linear Unit)는 보다 현대적이고 널리 사용되는 활성화 함수입니다. ReLU는 음수 값을 0으로 바꾸고 양수 값은 변경하지 않은 상태로 두는 간단한 활성화 함수로, 역전파 중에 기울기 문제를 방지하고 계산 속도가 더 빠릅니다. 다음은 사용 중인 ReLU 함수를 보여주는 그래픽입니다.

 

The ReLU function

 

실제로, ReLU를 사용하는 신경망은 시그모이드(sigmoid) 또는 tanh를 사용하는 신경망보다 약 6배 더 빠르게 수렴하는 경향이 있습니다. 그러나 ReLU는 0에 중심을 두고 있지 않으며 음수 입력값을 잘 처리하지 못합니다. 이로 인해 훈련 중에 문제가 발생할 수 있습니다.

 

Leaky ReLU는 이러한 문제를 해결하는 ReLU의 확장입니다.

 

Leaky ReLU

 

Leaky ReLU는 원래 ReLU 함수에서 음수 입력이 0으로 대체되는 문제를 해결하는 것을 목표로 하는 ReLU 활성화 함수의 확장입니다. 음수 입력을 0으로 바꾸는 대신 Leaky ReLU는 0과 1 사이의 작은 사용자 정의 값을 곱하여 음수 입력에 포함된 일부 정보를 모델에 유지할 수 있도록 합니다. 이 함수의 표현은 다음과 같습니다.

 

The leaky ReLU function

 

Softmax

 

Softmax 활성화 함수의 모든 기능을 살펴보기 전에 구성 요소인 확률 값 계산에 사용되는 시그모이드/로지스틱 활성화 함수에 초점을 맞춰야 합니다.

시그모이드 함수의 출력은 확률로 생각할 수 있는 0에서 1 사이였습니다. 그러나 이 기능에는 몇 가지 문제가 있습니다. 각각 0.65, 0.9, 0.85, 0.8 및 0.6의 5 개의 출력 값이 있다고 가정해 보겠습니다. 우리는 어떻게 앞으로 나아갈 수 있을까요?

 

정답은 '할 수 없다'입니다.

 

출력 계층에 있는 여러 클래스의 값을 합하면 최대 1이 되어야 하지만 현재 값의 경우에는 그렇지 않습니다. Softmax 함수는 여러 시그모이드를 결합하여 각 클래스의 상대 확률을 계산합니다.

 

Softmax 함수는 다중 클래스 분류 문제에서 각 클래스의 확률을 결정하는 데 사용됩니다. 신경망의 최종 계층에 적용되는 경우가 많습니다. 이 함수는 상대 확률을 계산하여 시그모이드/로지스틱 활성화 함수와 유사하게 작동합니다.

 

예를 들어 보겠습니다. 출력 계층에 3개의 클래스와 3개의 뉴런이 있는 모델이 있다고 가정해 보겠습니다. 이러한 뉴런의 출력값은 [1.8, 0.9, 0.68]로 지정됩니다. 이 값에 Softmax 함수를 적용하면 확률이 [0.58, 0.23, 0.19]가 됩니다.

 

Softmax 함수는 값이 가장 높은 출력값에 가장 높은 확률을 할당하고 다른 출력값에는 0의 확률을 할당합니다.

 

이 예제에서 가장 높은 값을 가진 출력값은 인덱스 0(0.58)에 있으므로 함수는 인덱스 1과 2의 출력값에 확률 1을 할당하고 출력값에 확률 0을 할당합니다. 이렇게 하면 다중 클래스 분류 문제에 Softmax 함수를 편리하게 사용할 수 있습니다.

 

Swish

 

Swish는 이미지 분류, 기계 번역 등과 같은 다양한 까다로운 영역에 적용되는 심층 네트워크에서 ReLU 활성화 기능과 일관되게 일치하거나 이를 능가합니다.

 

swish 함수의 출력값은 입력값이 음의 무한대에 가까워질수록 상수 값에 가까워지지만, 입력값이 무한대에 가까워질수록 제한 없이 증가합니다.

 

The swish activation function

 

ReLU와 비교했을 때, 스위시 활성화 함수는 x = 0에서 방향이 급격히 변하는 ReLU와 달리 매끄럽고 연속적입니다. Swish는 ReLU처럼 갑자기 전환되지 않고 0에서 음수 값으로 점진적으로 구부러졌다가 다시 위로 올라갑니다.

 

또한, ReLU 활성화 함수는 음수 값을 0으로 변환하지만, 이러한 값은 데이터에서 패턴을 식별하는 데 여전히 유용할 수 있습니다. 또한 큰 음수 값은 0으로 설정되어 네트워크의 희소성을 촉진합니다.

 

How to Choose the Right Activation Function

 

신경망을 훈련시킬 때 활성화 함수를 선택하려면, 일반적으로 ReLU 기반 함수로 시작하는 것이 좋은데, 이 함수는 다양한 작업에서 성공적이었기 때문입니다. 그러나 RNN 및 LSTM과 같은 특정 아키텍처에는 시그모이드 또는 tanh와 같은 특정 활성화 함수가 필요할 수 있습니다.

 

ReLU 활성화 함수는 신경망의 은닉층에서만 사용하는 것이 좋습니다. 또한 Sigmoid/Logistic 및 Tanh 함수는 기울기 소실로 인해 학습에 문제를 일으킬 수 있으므로 신경망의 은닉 계층에서 사용해서는 안 됩니다.

 

다음은 예측 문제의 유형에 따라 출력 계층에 대한 활성화 함수를 선택하기 위한 몇 가지 지침입니다.

  • Regression (회귀): Linear Activation Function (선형 활성화 함수) 사용
  • Binary Classification (이진 분류): Sigmoid/Logistic Activation Function (시그모이드/로지스틱 활성화 함수) 사용
  • Multi-class Classification (다중 클래스 분류): Softmax (소프트맥스) 사용
  • Multi-label Classification (다중 레이블 분류): Sigmoid (시그모이드) 사용

 

Key Takeaways On Activation Functions

 

이제 우리가 다룬 것을 간단히 요약해 보겠습니다!

 

활성화 함수는 신경망의 출력을 결정하기 때문에 신경망의 필수 구성 요소입니다. 비선형 활성화 함수는 가장 일반적으로 사용되며 네트워크에 복잡성을 도입하는 데 필요합니다.

 

활성화 함수는 입력 값을 알려진 범위에 매핑하는 데 도움이 되며, 이는 훈련을 안정화하고 마지막 계층에서 원하는 출력에 값을 매핑하는 데 도움이 됩니다. 가장 널리 사용되는 활성화 함수에는 Binary step, Linear, Sigmoid, tanh, ReLU 및 Softmax가 있습니다.

 

활성화 함수의 선택은 신경망 아키텍처의 유형과 예측 문제의 유형에 따라 달라집니다. 신경망이 역전파를 사용하여 훈련될 수 있으려면 활성화 함수를 미분할 수 있어야 합니다.

 

 

 

위 글은 Petru Potrimba의 글을 기반으로 작성하였습니다.

 

728x90
반응형
LIST