728x90

가중치를 설정하는 작업(원하는 결과를 출력하도록 가중치 값을 적절히 정하는 작업)은 여전히 사람이 수동으로 합니다.

앞 장에서는 AND, OR 게이트의 진리표를 보면서 우리 인간이 적절한 가중치 값을 정했습니다.

 

신경망은 이를 해결해줍니다! 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 이제부터 살펴볼 신경망의 중요한 성질입니다.

 

이번 장에서는 신경망의 개요를 설명하고 신경망이 입력을 식별하는 처리 과정을 자세히 알아봅니다. 데이터에서 가중치 매개변수 값을 학습하는 방법은 다음 장에서 배우게 됩니다.

 

3.1.1 신경망의 예

신경망을 그림으로 나타내면 아래의 [그림 1]처럼 됩니다. 여기에서 가장 왼쪽 줄을 입력층, 맨 오른쪽 줄을 출력층, 중간 줄을 은닉층이라고 합니다. 은닉층의 뉴런은 (입력층이나 출력층과 달리) 사람 눈에는 보이지 않습니다. 그래서 은닉인 것이죠.

 

또한 이 책에서는 입력층에서 출력층 방향으로 차례로 0층, 1층, 2층이라 하겠습니다(층 번호를 0부터 시작하는 이유는 파이썬 배열의 인덱스도 0부터 시작하여, 나중에 구현할 때 짝짓기 편하기 때문입니다).

 

[그림 1]에서는 0층이 입력층, 1층이 은닉층, 2층이 출력층이 됩니다.

그림 1

※ [그림 1]의 신경망은 모두 3층으로 구성됩니다만, 가중치를 갖는 층은 2개뿐이기 때문에 2층 신경망이라고 합니다. 문헌에 따라서는 신경망을 구성하는 층수를 기준으로 위 그림을 3층 신경망이라 하는 경우도 있으니 주의해야 합니다.

이 책에서는 실제로 가중치를 갖는 층의 개수(입력층, 은닉층, 출력층의 합계에서 1을 뺀 값)를 기준으로 하겠습니다.

 

[그림 1]의 신경망은 앞 장의 퍼셉트론과 별다른 차이점이 보이지 않습니다. 실제로도 뉴런이 연결되는 방식은 퍼셉트론과 달라진 것이 없습니다. 그럼 신경망에서는 신호를 어떻게 전달할까요?

 

 

 

3.1.2 퍼셉트론 복습

퍼셉트론을 간결한 형태로 작성해봅시다. 이를 위해서 조건 분기의 동작(0을 넘으면 1을 출력하고 그렇지 않으면 0을 출력)을 하나의 함수로 나타냅니다. 이 함수를 $h(x)$라 하면 아래와 같이 표현할 수 있습니다.

 

[식 1]

$$y = h(b + w_{1}x_{1} + w_{2}x_{2})$$

 

[식 2]

$$h(x) = \left\{\begin{matrix}
0 (x\leq 0)\\ 
1 (x > 0)
\end{matrix}\right.$$

 

입력 신호의 총합이 $h(x)$라는 함수를 거쳐 변환되어, 그 변환된 값이 $y$의 출력이 됨을 보여줍니다.

그리고 위 연립부등식의 $h(x)$ 함수는 입력이 0을 넘으면 1을 돌려주고 그렇지 않으면 0을 돌려줍니다.

 

 

 

3.1.3 활성화 함수의 등장

조금 전 $h(x)$ 라는 함수가 등장했는데, 이처럼 입력 신호의 총합을 출력 신호로 변환하는 함수를 일반적으로 활성화 함수(activation function)라 합니다. 활성화라는 이름이 말해주듯 활성화 함수는 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할을 합니다.

 

[식 1]을 다시 써보면, ①가중치가 곱해진 입력 신호의 총합을 계산하고, ②그 합을 활성화 함수에 입력해 결과를 내는 2단계로 처리됩니다. 그래서 이 식은 다음과 같은 2개의 식으로 나눌 수 있습니다.

 

$a = b + w_{1}x_{1} + w_{2}x_{2}$

$y = h(a)$

 

[식 1]은 가중치가 달린 입력 신호와 편향의 총합을 계산하고, 이를 a라 합니다. 그리고 [식 2]에서는 a를 함수 $h()$에 넣어 $y$를 출력하는 흐름입니다.

 

지금까지와 같이 뉴런을 큰 원으로 그려보면 [식 1]과 [식 2]는 아래 [그림 2]처럼 나타낼 수 있습니다.

 

그림 2

보다시피 위 그림에서는 기존의 뉴런의 원을 키우고, 그 안에 활성화 함수의 처리 과정을 명시적으로 그려 넣었습니다.

 

즉, ①가중치 신호를 조합한 결과가 $a$라는 노드가 되고, ②활성화 함수 $h()$를 통과하여 ③$y$라는 노드로 변환되는 과정이 나타나 있습니다.

 

참고로 이 책에서는 뉴런과 노드라는 용어를 같은 의미로 사용합니다. 방금 a와 y의 원을 노드라 했는데, 이는 지금까지 뉴런이라고 한 것과 같은 의미입니다.

 

왼쪽은 일반적인 뉴런, 오른쪽은 활성화 처리 과정을 명시한 뉴런($a$는 입력 신호의 총합, $h()$는 활성화 함수, $y$는 출력)

그림 3

 

이 책에서는 퍼셉트론이라는 말이 가리키는 알고리즘을 엄밀히 통일하진 않습니다.

일반적으로 단순 퍼셉트론은 단층 네트워크에서
계단 함수(임계값을 경계로 출력이 바뀌는 함수)를 활성화 함수로 사용한 모델을 가리키고,

다층 퍼셉트론은 신경망(여러 층으로 구성되고, 시그모이드 함수 등의 매끈한 활성화 함수를 사용하는 네트워크)를 가리킵니다.
728x90