달나라 노트

Activation Function 활성화 함수 (Sigmoid, Tanh, ReLU) 본문

AI/Deep Learning

Activation Function 활성화 함수 (Sigmoid, Tanh, ReLU)

CosmosProject 2025. 11. 7. 23:04
728x90
반응형

 

 

 

 

y = wx + b를 통해 딥러닝을 진행하면 상황에 따라 출력값의 숫자가 매우 커지는 경우가 있을 수 있습니다.

이런 상황이 지속되면 컴퓨터의 계산 가능한 범위를 넘어서는 크기의 숫자가 나올 수도 있습니다.

 

또한 단순한 y = wx + b와 같은 연산만 반복하게 되면 input과 output의 관계성이 선형으로만 정의되어 단조로운 선형(Linearity) 패턴만 가지게 될 수 있습니다.

이렇게되면 복잡한 패턴을 가지는 현실의 다양한 패턴들을 구체화하기 어려울 수 있죠.

그래서 Deep Learning의 핵심 중 하나는 비선형(Non-Linearity) 패턴을 구현하는 주는 것입니다.

 

위같은 현상을 방지하면서 인공 신경망을 거칠 때 마다 나오는 output 값을 특정 범위 내로 제한하여 output값이 목표값에 더 잘 가까워질 수 있도록 도와주는 것이 활성화 함수(Activation Function)입니다.

 

활성화 함수는 y = wx + b의 결과값인 y를 그대로 사용하지 않고 y값을 얼마나 활성화할지를 결정하는 함수입니다.

마치 신경에서 신호가 전달될 때 모든 세기의 신호가 전달되는게 아니라 역치 이상의 신호만 다음 뉴런으로 전달되는 것과 같은 맥락이죠.

 

 

각 Activation Function에 대한 자세한 내용은 다른 글에서 알아보고 이 글에서는 대표적인 Activation Function와 각각의 Activation Function을 어떻게 사용하는지, 그리고 각각의 간단한 특징을 알아봅니다.

 

* Sigmoid

Sigmoid 순전파
y = 1 / (1 + e^(-x))

Sigmoid 역전파
xb = yb * у * (1 - у)

 

Sigmoid 사용 예시
y = wx + b  # 순전파
y = 1 / (1 + e^(-y))  # sigmoid 순전파

yb = y - t  # 역전파
yb = yb * y * (1 - y)  # sigmoid 역전파

 

Activation Function은 위 식에서처럼

순전파에서는 y = wx + b의 결과값 y를 sigmoid라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

역전파에서는 t(목표값)과의 차이인 yb를 sigmoid 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.

 

Sigmoid는 활성화 함수를 거치면 값이 0~1 사이의 값으로 변환되므로 다양성이 좀 줄어드는 단점이 있습니다.

그래서 잘 사용되지는 않습니다.

 

 

 

 

 

* tanh

Tanh 순전파
y = tanh(x)

Tanh 역전파
xb = yb * (1 + y) * (1 - y)

 

Tanh 사용 예시
y = wx + b  # 순전파
y = tanh(y)  # tanh 순전파

yb = y - t  # 역전파
yb = yb * (1 + y) * (1 - y)  # tanh 역전파

 

Activation Function은 위 식에서처럼

순전파에서는 y = wx + b의 결과값 y를 tanh라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

역전파에서는 t(목표값)과의 차이인 yb를 tanh 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.

 

Tanh는 Sigmoid와 비슷하게 활성화 함수를 거치면 값이 -1~1 사이의 값으로 변환되므로 다양성이 좀 줄어드는 단점이 있습니다.

그래서 잘 사용되지는 않습니다.

 

 

 

* ReLU

ReLU 순전파
y = x * (x > 0)

ReLU 역전파
xb = yb * (y > 0)

 

ReLU 사용 예시
y = wx + b  # 순전파
y = y * (y > 0)  # ReLU 순전파

yb = y - t  # 역전파
yb = yb * (y > 0)  # ReLU 역전파

 

Activation Function은 위 식에서처럼

순전파에서는 y = wx + b의 결과값 y를 ReLU라는 식을 통해 y값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

역전파에서는 t(목표값)과의 차이인 yb를 ReLU 역전파 식을 통해 yb값을 한번 더 변경하여 계산 결과를 특정 값으로 변형합니다.

이렇게 Activation Function은 어떤 계산의 결과를 특정 값으로 변형시키는 역할을 합니다.

 

ReLU는 Sigmoid, Tanh와는 달리 0보다 큰 값에 대해서는 그 값을 그대로 return합니다.

따라서 모든 output값을 -1~1 사이의 값으로 만들어버리는 Sigmoid, Tanh와는 달리 ReLU는 양수값에서 더 큰 다양성을 띕니다.

단, 음수값에 대해서는 ReLU가 음수값을 다 0으로 만들어버린다는 점이 있긴 합니다. 이것을 음수 값에 대해 죽은 뉴런(Dead Neuron)이라고 표현합니다.

이러한 이유로 현재는 ReLU가 자주 사용되는 Activation Function 중 하나입니다.

 

 

 

 

 

728x90
반응형
Comments