신경망 (Neural Network)
퍼셉트론을 통해 AND, OR, NAND 게이트 구현이 가능함을 확인하였고, 다층 퍼셉트론을 통해 XOR 게이트 구현 역시 가능함을 확인하였다. 그러나 가중치와 편향에 대해 모두 설정해주어야 하는 특징이 있었다.
신경망은 퍼셉트론과 유사한데, 아래와 같이 그 구조를 나타낼 수 있다. 입력층인 $0$층과 출력층인 $2$층이 있고, 그 중간에 은닉층(hidden layer)이 있다. 이 경우 보통은 입력층을 제외하고 2층 신경망이라 부른다. 단 어떤 경우에는 3층이라 부르기도 하니 주의해야 한다.
다시 퍼셉트론으로 돌아와서 구조를 생각해보면 기존 편향을 명시하지 않은 구조는 아래와 같았다.
수식으로는 편향을 포함하여 아래와 같이 나타냈었다.
$$ y = \begin{cases} 0 & (b+ w_1 x_1 + w_2 x_1 \leq 0) \\ 1 & (b+w_1 x_1 + w_2 x_1 > 0) \end{cases} $$
이제 편향을 명시하면 아래와 같이 나타낼 수 있다.
이렇게 입력이 $1$이고 가중치가 $ b $ 인 뉴런을 추가하여 편향을 반영하였다. 이 퍼셉트론은 $ x_1, x_2, 1 $ 이라는 3개의 신호가 입력되고, 각 신호에 각 가중치 $ w_1, w_2, b $ 를 곱하여 다음 뉴런에 전달한다. 그 합을 구한 후 $0$을 넘으면 $ 1$을 출력하고, 넘지 못하면 $0$을 출력한다. 이를 다시 반영하여 수식으로 아래와 같이 나타낼 수 있다.
$$ y = h(b+w_1x_1 + w_2x_2) $$
$$ h(x) = \begin{cases} 0 & (x \leq 0) \\ 1 & (x > 0) \end{cases} $$
즉 입력 신호의 총합이 $ h(x) $ 라는 함수를 거쳐 변환되고, 그 변환된 값이 $ y $ 의 출력이 되는 것을 보여준다.
활성화함수 (Activation Function)
위에서 등장한 $ h(x) $ 라는 함수는 입력 신호의 총합을 출력 신호로 변환하였다. 이처럼 입력 신호의 총합이 활성화를 일으키는지 정하는 함수를 활성화함수라 한다. 이를 바탕으로 앞선 식을 다시 써보면 다음과 같이 쓸 수 있다.
$$ a = b + w_1 x_1 + w_2 x_ 2 $$
$$ y = h(a) $$
이를 다시 방향 그래프로 그리면 아래와 같다.
즉 가중치를 반영하여 $ a $ 를 계산하고, 이를 $ h() $, 활성화함수에 넣어 처리하는 방식이다.