앞서 퍼셉트론에는 가중치를 설정하는 작업, 즉 원하는 결과를 출력하도록 가중치 값을 적절히 정하는 작업은 여전히 사람이 수동으로 한다는 단점이 있다. 신경망은 이런 퍼셉트론의 단점을 해결할 수 있다. 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 있다.

좀 더 복잡한 형태의 다층 퍼셉트론을 신경망이라고 부르기도 한다.

3.1 퍼셉트론에서 신경망으로

신경망은 아래 그림처럼 표시할 수 있다.

Untitled

가장 왼쪽을 입력층(input layer), 맨 오른쪽을 출력층(output layer), 중간에 있는 것을 **은닉층(hidden layer)**이라고 한다. 입력층을 제외하고 나머지 층의 갯수로 신경망의 층수를 정의한다. 따라서 위 그림은 2층 신경망이라고 한다.

자, 짧게 퍼셉트론에 대해서 복습 해보자.

$$ y = \begin{cases} 0 & (b +w_1x_1 + w_2x_2 \le 0)\\ 1 & (b + w_1x_1 + w_2x_2 > 0)\\\end{cases} $$

$b$는 편향, $w_1, w_2$는 가중치라고 한다. 편향을 포함하여 그림을 표현하면 다음과 같다.

Untitled

Untitled

왼쪽은 편향이 포함되지 않은 퍼셉트론이고, 오른쪽은 편향을 포함한 퍼셉트론의 그림이다.

왼쪽 그림을 더 자세히 설명하면, 가중치가 b이고 입력이 1인 뉴런이 추가되었다. 이 퍼셉트론의 동작은 $x_1, x_2,1$이라는 3개의 신호가 뉴런에 입력되어, 각 신호에 가중치를 곱한 후, 다음 뉴런에 전달된다. 다음 뉴런에서는 이 신호들의 값을 더하여, 그 합이 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력한다.

<aside> 💡 참고! 편향의 입력 신호는 항상 1이기 때문에 그림에서는 해당 뉴런을 회색으로 채워 구별한다.

</aside>

조건 분기의 동작, 0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력을 하는 하나의 함수로 나타낸다. 이 함수를 $h(x)$라 하면 다음과 같이 나타낼 수 있다.

$$ y = h(b + w_1x_1 + w_2x_2) \\ h(x) = \begin{cases} 0 & (x \le 0) \\ 1 & (x>0) \end{cases} $$

편향을 입력층과 같이 놓고 가중치를 b라고 하면, 다음과 같이 퍼셉트론을 표현할 수 있다.