본문 바로가기
수업 복습/머신러닝과 딥러닝

비선형 활성화 함수

by 김복칠 2024. 1. 17.

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

  • 신경망의 성능을 향상시키기 위해 사용
  • 선형 함수는 입력값과 가중치를 곱한 결과를 그대로 출력하기 때문에 신경망에서 여러 개의 활성화 함수를 사용한다면 최종 출력값은 입력값과 가중치의 선형 조합으로 표현되므로 입력 데이터의 비선형 관계를 표현할 수 없음
  • 신경망이 입력 데이터의 비선형 관계를 잘 학습할 수 있도록 하기 위해 비선형 활성화 함수가 필요

1-1. 시그모이드

import numpy as np
import matplotlib.pyplot as plt

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],':')   # x,y (0,0) 위치에 y 선으로 0 ~ 1 까지 점선을 그리라는 의미
plt.title('Sigmoid Function')
plt.show()

  • 시그모이드 구조를 확인하기 위해 임의의 값을 만들어서 그래프를 확인해줍니다
  • 보이는 그래프와 같이 시그모이드는 0과 1 사이의 결과를 이지선다로 반환하는 함수라는걸 알수 있습니다

1-2. 하이퍼볼릭탄젠트

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()

  • 하이퍼볼릭 탄젠트 함수는 시그모이드와 같은 1과 0 사이의 결과를 이지선다로 반환하는 함수라는걸 알수 있습니다
  • 또한 시그모이드 함수 대비해서 기울기가 작아지지 않는 구간이 넓어서 학습 효율성이 뛰어나다는걸 알수 있습니다
  • 따라서 시그모이드 대안으로 사용할 수 있는 함수입니다

1-3. 렐루

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],':')   # x,y (0,0) 위치에 y 선으로 0 ~ 1 까지 점선을 그리라는 의미
plt.title('Relu Function')
plt.show()

  • 렐루 함수는 입력이 양수인 경우에는 정비례로 출력하고 음수인 경우에는 0으로 출력하는걸 볼수 있습니다
  • 이는 다중선택지 중에서 결과를 내야할 경우에 사용한다는걸 알수 있습니다
  • 다만 입력이 음수인 경우에는 그래디언트가 0이 되기 때문에 해당 부분에서는 가중치 업데이트가 이뤄지지 않습니다
  • 따라서 모델을 구성하는 경우에서 단일 레이어들의 결과를 증폭시키는데 사용되고 학습과정에서는 softmax를 주로 사용합니다

1-4. 소프트맥스

x = np.arange(-5.0,5.0,0.1)
y = np.exp(x) / np.sum(np.exp(x))

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

2. 역전파(Backpropagation)

  • 1969년 XOR는 '지금의 기술로 풀 수 없다' 라는 것을 민스키 교수님이 수학적으로 증명함
  • 1974년 Paul Werbos에 의해 박사 논문에서 해결됨
  • W,b를 이용해 주어진 입력을 가지고 출력을 만들어 낼 수 있음. 출력이 우리가 가지고 있는 값과 다른 출력일 경우 W,b를 조절함
  • 1986년 Hinton에 의해 위 같은 방법을 독자적으로 만들어 냄(재발견)

'수업 복습 > 머신러닝과 딥러닝' 카테고리의 다른 글

간단한 CNN 모델 만들기 실습  (2) 2024.01.23
CNN 기초  (0) 2024.01.23
딥러닝  (0) 2024.01.16
데이터 로더  (1) 2024.01.16
파이토치로 구현한 논리회귀  (0) 2024.01.12