
딥러닝의 신경망은 뇌를 모방한 것으로 "뉴런"이라 부르는 인공 신경세포(Artificial Neuron)가 존재하는데, 이렇게 모델화된 뉴런을 연결해서 구축한 것이 신경망(Neural Network)이다.

위 그림에서 신경 세포에서 수상 돌기로 다중 입력을 받고 축삭으로의 출력은 하나인 모양을 볼 수 있으며, 이를 본딴 인공 뉴런 또한 다수의 입력과 단일 출력을 갖는 모습을 하고 있다.
뉴런에 대한 각 입력에는 각각 다른 가중치를 곱하여 표현한다. 이 가중치의 값이 시냅스에서의 전달 효율에 상응하고, 가중치의 값이 크다는 것은 그 시냅스에 많은 정보가 흐른다는 것을 의미한다.
단일 뉴런 모델을 수식으로 표현하면 (입력과 가중치의 곱)
1개 뉴런에 대한 전체 입력은
여기에 바이어스 를 더한다.
전체 입력에 대해 활성화 함수를 적용함으로써 단일 뉴런의 출력은 다음과 같이 계산된다.
활성화 함수는 뉴런의 출력 상태, 활성화 여부를 결정한다.
뉴런의 활성 상태를 0, 1로 간단하게 표현 가능한 함수이다. 하지만 0, 1의 중간 상태는 표현할 수 없음
import numpy as np
import matplotlib.pyplot as plt
def step_function(x):
return np.where(x<=0, 0, 1)
x = np.linspace(-5, 5)
y = step_function(x)
plt.plot(x, y)
plt.show

시그모이드 함수는 과 사이를 매끄럽게 변화하는 함수로, 함수로의 입력 가 작아지면 함수의 출력 는 0에 가까워지고, 가 커지면 는 에 가까워진다. 출력 값이 1에 가까울수록 뉴런이 활성화되고, 값이 0에 가까울수록 뉴런이 비활성화된 것이다.
def sigmoid_function(x):
return 1/(1+np.exp(-x))
x = np.linspace(-5, 5)
y = sigmoid_function(x)
plt.plot(x, y)
plt.show()

시그모이드 함수와 형태는 비슷하나, tanh의 결과값 범위는 이고, 0을 중심으로 대칭되는 형태를 하고 있어, 딥러닝에서 많이 쓰인다. 시그모이드에 비해 좀더 균형잡힌 활성화 함수로 사용된다.

def tanh_function(x):
return np.tanh(x)
x = np.linspace(-5, 5)
y = tanh_function(x)
plt.plot(x, y)
plt.show()

ReLU는 의 범위에서만 활성화시키는 함수이다.
def relu_function(x):
return np.where(x<=0, 0, x)
x = np.linspace(-5, 5)
y = relu_function(x)
plt.plot(x, y)
plt.show()

간단하게 입력이 그대로 출력인 함수이다. 출력 범위에 제한이 없고 연속적 수치에 대한 예측에 적합하기 때문에 출력이 연속값인 회귀 문제에서 주로 사용한다.
x = np.linspace(-5, 5)
y = x
plt.plot(x, y)
plt.show()

소프트맥스 함수는 분류 문제에 적합하다. 활성화 함수의 입력 , 출력 , 해당 계층의 뉴런 수 에 대하여 다음과 같다.
따라서 소프트맥스 함수의 의미는, 각 뉴런이 어떤 대상으로 대응되어 분류될 확률을 의미한다고 할 수 있다.
def softmax_function(x):
return np.exp(x)/np.sum(np.exp(x))
y = softmax_function(np.array([1, 2, 3]))
print(y)
실행 결과
[0.09003057 0.24472847 0.66524096]
출력된 모든 요소는 범위에 속하고 합계는 1이다.