신경망
지난 포스트에서 다루었던 머신러닝을 다시 돌아보자. 머신러닝은 학습데이터를 통해 모델을 만들고, 입력데이터를 통해 모델의 정확도를 측정한다.
신경망에서는 학습데이터를 학습규칙을 통해 학습하여 신경망을 만들고, 입력데이터를 통해 신경망의 정확도를 측정한다. 학습데이터로 학습하고, 입력데이터로 검증하는 것은 같다. 모델이 아닌 신경망을 만든다는 것과 머신러닝이 아니라 학습규칙으로 학습한다는 것이 다르다.
신경망은 노드와 엣지로 이루어진 단방향 그래프의 일종으로 볼 수 있다. 예를 들어 한 노드에 두 개의 입력신호와 바이어스를 (바이어스는 가중치와 함께 신경망이 정보를 저장하는 데 관여하는 변수) 받아, 출력신호 y를 생성한다고 가정하자. 이 때 노드는 각 입력 신호 \(x_1\), \(x_2\)에 대해 \(w_1\), \(w_2\)의 가중치를 곱하여 더한값에 바이어스값을 더한다. 이를 수식으로 정리하면,
\[\begin{align*} v = w_1 \times x_1 + w_2 \times x_1 + b \end{align*}\]위 식에서 \(v\)는 가중합이라 하고, 다음과 같이 쓸 수도 있다.
\(v\)를 출력값이라고 하지 않고, 가중합이라고 하는 이유는 가중합과 출력값은 다르기 때문이다. 출력값은 가중합을 활성함수에 입력해 얻은 값이다. 따라서 활성함수가 어떤 함수냐에 따라 신경망은 또 달라진다.
\(\varphi()\)는 활성함수이다. 따라서 신경망의 각 노드가 출력값을 생성하는 단계는 다음과 같다.
-
입력 신호의 가중합 구하기 \(v = w_1 x_1 + w_2 x_2 + b\)
-
가중합과 활성함수를 통해 출력값 구하기 \(y = \varphi(v)\)
신경망의 분류
외부에서 입력을 받아 다른 노드들로 입력값을 전달하기만 하는 노드들을 입력층이라고 하고, 연산이 끝난 결과값을 받아 외부로 전달하기만 하는 노드들을 출력층이라고 한다. 입력층과 출력층 사이에 얼마나 많은 계층의 노드들이 있느냐에 따라 신경망을 분류한다.
-
단층 신경망
- 입력층과 출력층으로만 구성되어 있다.
-
다층 신경망
-
얕은 신경망
- 입력층과 출력층 사이에 하나의 은닉층이 존재한다.
-
심층 신경망
- 입력층과 출력층 사이에 다수의 은닉층이 존재한다.
-
델타 규칙
- 단순히 말하자면, 단층 신경망의 신경망 가중치를 적절하게 조절하는 학습 규칙이다.
-
역전파 알고리즘
-
다층 신경망의 경우 중간의 은닉층들의 신경가중치를 적절히 조절할 수 없다는 단점이 있어 장기간 발전하지 못했다.
-
이 은닉층들의 신경가중치를 적당히 조절하기 위한 방법이 역전파 알고리즘으로 출력층에서부터 역으로 계산하여 가기 때문에 역전파 알고리즘이라고 한다.
-
-