활성화 함수 요약 (단계, 명령, ReLU, 소프트맥스, 항등 함수)

13163 단어 DeepLearningPython
[참조] 0부터 시작하는 Deep Learning

활성화 함수


활성화 함수는 입력 신호의 총계가 어떻게 활성화되는지 확인하는 데 사용됩니다.그것의 역할은 다음 층에 전달되는 값을 조정하는 것이다.
일반적으로 말하면
'단순 포세프트론'의 활성화 함수에서'단계 함수'등 사용
다중 절류관(신경 네트워크)의 활성화 함수는'시그모드 함수, 소프트 맥스 함수'와 항등 함수를 사용한다.
또한 이런'계단함수, 시그모드 함수, 소프트맥스 함수'를 비선형 함수라고 하고'y=cx'와 같은 함수를 선형 함수라고 한다.
일반적으로 신경 네트워크는 선형 함수를 사용하지 않는다.이 원인은 왜 다층 절류관은 선형 함수를 사용하지 않습니까? 에 설명되어 있습니다.
일반적으로 소프트 맥스 함수와 항등 함수는 출력층에서 사용된다.

단계 함수


단계 함수는 한도값을 경계로 출력을 전환하는 함수입니다.계단 함수라고도 부른다.
일반적으로 그것은 간단한 입자 (단층 네트워크) 에서 사용하는 함수이다.
입력 값이 0 이하일 때 0, 0보다 크면 1인 스텝 함수를 예로 들다
실현과 행위는 아래와 같다.
def step_function(x):
  if x>0:
    return 1
  else:
    return 0

# step_function(4) => 1
# step_function(-3) => 0
도표는 다음과 같이 실현할 수 있다.
step_function은 수조[np.array()]를 매개 변수로 처리합니다
처리 그룹을 제외한 동작은 변하지 않습니다.
import numpy as np
import matplotlib.pylab as plt

def step_function(x):
  y = x > 0
  return y.astype(np.int)

x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1)
plt.show()

신호 함수


공식은 다음과 같습니다.
h(x) = \frac{1}{1+e^{-x}}\\
e^{-x}はnumpyではnp.exp(-x)と書ける。
입력한 값이 클수록 1에 가깝습니다.
입력한 값이 작을수록 함수는 0에 가깝다.
보장 함수의 출력이 0이나 1인 것에 비하면 원시 입력의 값을 지나치게 죽이지 않는다고 할 수 있다.
실현과 동작은 다음과 같다.
import numpy as np

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

x = np.array([-3.0, 1.0, 4.0])
# sigmoid(x) => [ 0.04742587  0.73105858  0.98201379]
도표는 아래와 같다.
import numpy as np
import matplotlib.pylab 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.ylim(-0.1, 1.1)
plt.show()

ReLU 함수


입력한 값이 0 이하이면 0이고 1 이상이면 직접 출력합니다.
도표는 아래와 같다.
import numpy as np
import matplotlib.pylab as plt

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

항등함수


출력층에 사용되는 함수입니다.
입력한 값과 같은 값의 함수를 항상 되돌려줍니다.
[문제] 수학: 항등함수는
일반적으로 회귀 문제에 쓰인다.
import numpy as np
import matplotlib.pylab as plt

def koutou(a):
  return a

x = np.arange(-5, 5, 0.1)
y = koutou(x)
plt.plot(x, y)
plt.show()

소프트 맥스 함수


출력층에 사용되는 함수입니다.
일반적으로 문제를 분류하는 데 쓰인다.
import numpy as np
import matplotlib.pylab as plt

def softmax(a):
  exp_a = np.exp(a)
  sum_exp_a = np.sum(exp_a)
  y = exp_a / sum_exp_a
  return y

x = np.arange(-5, 5, 0.1)
y = softmax(x)
plt.plot(x, y)
plt.show()

선형 함수와 비선형 함수


선형 함수는 입력의 상수 배로 출력되는 함수를 가리킨다.
예를 들어 y=cx(cは定数)도표를 만들면 곧은 직선이다.
비선형 함수는 선형 함수가 아니다.

왜 다층 절류관은 선형 함수를 사용하지 않습니까?


활성화 함수에서 선형 함수를 사용하면 신경 네트워크로 심층적인 의미를 더할 수 없기 때문이다.
선형 함수의 문제는 층이 아무리 깊어도'숨겨진 층이 없는 네트워크'가 반드시 같은 일을 할 수 있다는 것이다.
간단한 예로 선형 함수h(x)=cx를 활성화 함수로 3층 중첩하면 y=h(h(h(x)).즉, 이는 y=c*c*c*x(y=ax) 이렇게 숨겨진 층이 없는 네트워크에서도 나타난다.
본 예에서 보듯이 활성화 함수에서 선형 함수를 사용하면 다층화의 장점을 발휘할 수 없다.
즉, 헛수고로 처리가 증가할 수 있으므로 활성화 함수에 선형 함수를 사용해서는 안 된다는 것이다.

회귀 문제와 분류 문제


회귀 문제는 어떤 입력 데이터에 근거하여 수치를 예측하는 문제이다.(예: 사람의 사진에 따라 그 사람의 체중을 예측하는 문제)
분류 문제는 데이터가 어느 종류에 속하는지의 문제다.(예: 사람의 사진에 따라 그 사람이 남성인지 여성인지 분류하는 문제)

좋은 웹페이지 즐겨찾기