AI/딥러닝

[딥러닝] 비선형 활성화 함수(Activation Functions)

caramel-bottle 2024. 1. 9.

비선형 활성화 함수(Activation Functions)

인공 신경망의 능력을 높이기 위해 은닉층을 계속해서 추가해야 합니다.

 

만약 선형 함수만으로 은닉층을 구성한다면 결국은 하나의 선형 함수로 표현되어집니다.

 

이는 은닉층이 하나인 것과 다름이 없습니다.

 

이를 해결하기 위해 비선형 활성화 함수를 사용합니다.

 

1. 시그모이드(Sigmoid)

로지스틱 회귀 모델에서 분류를 위해 사용되는 함수입니다.

 

시각화를 통해 함수의 특징을 알아봅시다.

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)

plt.plot(x, y)
plt.plot([0, 0], [1.0, 0.0], ':')
plt.title('Sigmoid Function')
plt.show()

output>>

 

시그모이드 함수는 값이 0에서 멀어질 수록 기울기가 0에 가까워지는 특징을 가지고 있습니다.

 

* 역전파 과정에서 0에 가까운 기울기가 곱해진다면, 앞단에는 기울기가 잘 전달되지 않게 됩니다.

 

이러한 현상을 기울기 소실(Vanishing Gradient) 문제라고 합니다.

 

이러한 문제 문제 때문에 시그모이드 함수는 은닉층에서 사용하지 않도록 권장한다고 합니다.


2. 하이퍼볼릭탄젠트

하이퍼볼릭탄젠트 함수는 입력값을 -1과 1사이의 값으로 변환합니다.

x = np.arange(-5.0, 5.0, 0.1)
y = np.tanh(x)

plt.plot(x, y)
plt.plot([0, 0], [1.0, -1.0], ':')
plt.axhline(y=0, color='orange', linestyle='--')
plt.title('Tanh Function')
plt.show()

output>>

시그모이드 함수와 유사한 형태이지만 범위가 -1부터 1이고 중심이 0이라는 차이점이 있습니다.

 

마찬가지로 기울기가 0에 가까워지면 역전파시 기울기 소실 문제가 발생하는데 중심이 0이라는 이유로 시그모이드 함수보다는 기울기 소실 증상이 적은 편입니다.

 

그래서 시그모이드 함수보다는 많이 사용된다고 합니다.


3. 렐루(ReLU)

인공 신경망에서 가장 인기있는 함수입니다. 수식은 다음과 같습니다.

 

def relu(x):
    return np.maximum(0, x)

x = np.arange(-5.0, 5.0, 0.1)
y = relu(x)

plt.plot(x, y)
plt.plot([0, 0], [5.0, 0.0], ':')
plt.title('Relu Function')
plt.show()

# 활성화함수 전용 함수

output>>

음수를 입력하면 0을 출력하고, 양수를 입력하면 입력값 그대로 반환합니다.

 

깊은 신경망에서 시그모이드 함수보다 훨씬 더 잘 작동하고, 연산 속도도 빠릅니다.

 

하지만 입력이 음수여서 기울기가 0이 된다면 죽은 렐루(dying ReLU)가 되어 회생하는 것이 어렵다고 합니다.


4. 리키 렐루(Leaky ReLU)

죽은 렐루(dying ReLU)를 보완하기 위한 함수입니다.

 

입력이 음수인 경우 기울기가 0이 아닌 매우 작은 수를 반환하도록 하여 렐루가 죽지 않게 방지합니다.

여기서 a는 Leaky(새는정도)라는 하이퍼 파라미터이고, 일반적으로 0.01의 값을 가집니다.


5. 소프트맥스

def softmax(x):
    return np.exp(x) / np.sum(np.exp(x))

x = np.arange(-5.0, 5.0, 0.1)
y = softmax(x)

plt.plot(x, y)
plt.title('Softmax Function')
plt.show()

output>>


끝내며

비선형 활성화 함수의 종류와 특징을 알아보았습니다.

 

보통 ReLU나 그 변형함수들을 많이 사용한다고 합니다.

 

비선형 활성화 함수들은 각각의 장단점이 있고, 아예 사용을 권장하지 않는 함수도 있습니다.

 

하지만 은닉층 구성에 한해서만 그렇지 로지스틱 회귀 등에 사용되니 알아둡시다.

댓글