Allen's 데이터 맛집

신경망 활성화 함수 - 시그모이드 함수, 하이퍼볼릭 탄젠트 함수, 렐루 함수, 리키 렐루 함수 본문

Machine Learning/머신러닝

신경망 활성화 함수 - 시그모이드 함수, 하이퍼볼릭 탄젠트 함수, 렐루 함수, 리키 렐루 함수

Allen93 2024. 1. 21. 02:03
이번에는 신경망에서 사용되는 주요 활성화 함수에 대해 알아보겠습니다. 활성화 함수는 신경망의 각 뉴런에서 입력을 받아 출력을 생성하는 데 사용되며, 모델에 비선형성을 부여하여 다양한 패턴을 학습할 수 있게 합니다.



활성화 함수의 역할


활성화 함수는 신경망의 뉴런이 입력을 받아 출력을 생성할 때 비선형성을 부여하는 역할을 합니다. 이 비선형성은 신경망이 다양한 복잡한 함수를 학습하고 표현할 수 있도록 도와줍니다. 주요 활성화 함수에는 다음과 같은 것들이 있습니다.

1. 시그모이드 함수 (Sigmoid Function)
시그모이드 함수는 0과 1 사이의 출력값을 갖는 S 모양의 곡선 함수입니다. 주로 이진 분류 문제에서 출력층에 사용됩니다.

시그모이드

import numpy as np
import matplotlib.pyplot as plt

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

# 시그모이드 함수 시각화
z = np.linspace(-7, 7, 200)
plt.plot(z, sigmoid(z), label='Sigmoid Function')
plt.xlabel('z')
plt.ylabel('sigmoid(z)')
plt.title('Sigmoid Function')
plt.legend()
plt.show()

 

 

2. 하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent, Tanh)

하이퍼볼릭 탄젠트 함수는 -1과 1 사이의 출력값을 갖는 함수로, 시그모이드 함수와 유사하지만 출력 범위가 더 넓습니다.

하이퍼볼릭-탄젠트 함수

def tanh(z):
    return np.tanh(z)

# 하이퍼볼릭 탄젠트 함수 시각화
plt.plot(z, tanh(z), label='Tanh Function')
plt.xlabel('z')
plt.ylabel('tanh(z)')
plt.title('Hyperbolic Tangent Function')
plt.legend()
plt.show()

 

 

3. 렐루 함수 (Rectified Linear Unit, ReLU)
렐루 함수는 입력이 양수일 경우 그 값을 그대로 반환하고, 음수일 경우 0으로 반환하는 함수로, 특히 은닉층에서 주로 사용됩니다.

렐루-함수

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

# 렐루 함수 시각화
plt.plot(z, relu(z), label='ReLU Function')
plt.xlabel('z')
plt.ylabel('ReLU(z)')
plt.title('Rectified Linear Unit (ReLU) Function')
plt.legend()
plt.show()

 

 

4. 리키 렐루 함수 (Leaky ReLU)
리키 렐루 함수는 렐루 함수와 유사하지만, 음수 영역에서 작은 기울기를 갖도록 하는 변형된 함수입니다.

리키-렐루-함수

def leaky_relu(z, alpha=0.01):
    return np.maximum(alpha * z, z)

# 리키 렐루 함수 시각화
plt.plot(z, leaky_relu(z), label='Leaky ReLU Function')
plt.xlabel('z')
plt.ylabel('Leaky ReLU(z)')
plt.title('Leaky Rectified Linear Unit (Leaky ReLU) Function')
plt.legend()
plt.show()

 

 

활성화 함수 선택의 중요성


활성화 함수의 선택은 모델의 성능에 큰 영향을 미칩니다. 데이터의 특성과 문제에 따라 적절한 활성화 함수를 선택하는 것이 중요합니다. 이러한 활성화 함수들은 모델의 학습 속도, 수렴성, 그리고 성능에 영향을 미치므로 실험을 통해 최적의 활성화 함수를 찾는 것이 좋습니다.