신경망이란?
- 신경망(Neural network)은 머신러닝의 모델로 많이 사용된다
- '모델'이 '신경망'으로, '머신러닝'이 '학습규칙'으로 바뀐 것 뿐이다
- 신경망에서는 학습 데이터에서 모델(신경망)을 찾아내는 기법을 '학습 규칙'이라고 부른다
노드
- 뇌의 신경세포 역할을 수행한다
- 신경세포들의 연결을 신경망의 '연결 가중치'로 흉내 낸다
- ●: 노드
- x: 외부의 신호
- w: 해당 신호의 연결 가중치 (변수)
- b: 바이어스 (변수)
- 신경망에서 정보는 가중치와 바이어스의 형태로 바뀌어 저장된다 (보통 가중치라고 통칭한다)
- 외부에서 노드로 들어오는 신호는 각 가중치가 곱해져 노드에 전달되며, 노드에서 이 값들은 모두 더해진다
- 노드는 가중합을 활성함수에 입력해 얻은 값을 외부로 출력한다
- 활성함수에 의해 노드의 동작 특성이 결정된다
신경망의 계층 구조
- 신경망은 노드들을 연결해 만든 네트워크다
- 어떻게 연결하느냐에 따라 다양한 형태의 신경망을 만들 수 있으며, 대표적으로는 계층적으로 배치해 만든 형태이다
-입력층
- 들어온 신호를 그대로 다음 노드에 전달하는 창구 역할을 한다
- 입력층 노드에서는 가중합이나 활성함수 계산을 하지 않는다
-은닉층
- 신경망 외부에서 이 계층의 노드들에 직접 접근할 수 없다
-출력층
- 신경망의 최종 결과값을 뱉어낸다
- 단층 신경망: '입력층 - 출력층' 으로만 구성된 신경망
- 다층 신경망
- 얕은 신경망: '입력층 - 은닉층 - 출력층'으로 구성된 신경망
- 심층 신경망: '입력층 - 은닉층들 - 출력층'으로 구성된 신경망
- 같은 층의 노드들은 신호를 동시에 입력받고, 처리한 결과를 다음 층으로 내보내는 작업도 동시에 처리한다
- 활성함수로 선형함수를 사용하면 은닉층을 추가한 효과가 없어진다. 출력 노드의 활성함수로 선형함수를 사용하는 것은 괜찮다
신경망의 지도학습 절차
- 신경망의 가중치를 적당한 값으로 초기화한다
- 지도학습의 학습 데이터인 {입력, 정답}에서 '입력'을 신경망에 입력해 출력값을 얻는다. 이 출력값과 해당 입력의 '정답'을 비교해 오차를 계산한다
- 이 오차가 줄어들도록 신경망의 가중치를 조절한다
- 전체 학습 데이터에 관해 단계 2~3를 반복한다
- 지도학습에서 학습이란 모델의 출력과 해당 정답의 차이를 줄이도록 모델을 수정하는 과정이다
- 신경망에서는 주어진 정보에 맞춰 가중치를 체계적으로 변경하는 방법을 '학습 규칙'이라고 한다
델타 규칙
- 대표적인 신경망의 학습 규칙이다
- 단층 신경망은 해당되지 않는다
- 어떤 입력 노드가 출력 노드의 오차에 기여했다면, 두 노드의 연결 가중치는 해당 입력 노드의 출력(x)과 출력 노드의 오차(e)에 비례해 조절한다
$$w_{ij} = w_{ij}+\alpha e_{i} x_{j}$$
- $x_{j}$ : 입력 노드 $j$의 출력 $(j=1,2,3)$
- $e_{i}$ : 출력 노드 $i$의 오차
- $w_{ij}$ : 출력 노드 $i$와 입력 노드 $j$의 연결 가중치
- $\alpha$ : 학습률 $(0<\alpha\le1)$로 가중치를 얼마나 바꿀지 조절하는 역할
- 크게 잡으면 정답 근처에서 왔다갔다 하며 수렴하지 못하고, 작게 잡으면 정답에 접근하는 속도가 매우 느려진다