인공 신경망
IT 위키
더 많은 작업
(인공신경망에서 넘어옴)
- Artificial Neural Network, ANN; 人工神經網
- 사람의 뇌, 신경망에서 영감을 얻은 통계학적 학습 알고리즘 모델
- 협의적으론 다수의 퍼셉트론을 중첩으로 엮어서 구성한 다층 퍼셉트론 모델
인공 신경망은 노드(뉴런)들이 층을 이루고, 앞 층의 노드와 다음 층의 노드가 가중치가 붙은 연결로 이어진 구조이다. 입력이 층을 차례로 지나며 변환되어 출력이 된다. 은닉층이 하나 이상인 구조를 다층 퍼셉트론(멀티 레이어 퍼셉트론)이라 하고, 은닉층을 여러 개 깊게 쌓은 신경망을 다루는 분야를 딥 러닝이라 한다.
| 요소 | 설명 |
|---|---|
| 입력층 (input layer) | 입력 변수를 받는 층. 노드 수는 입력 변수의 수와 같다. 범주형 변수는 가변수로 바꾸어 넣는다. |
| 은닉층 (hidden layer) | 입력층과 출력층 사이의 층. 입력을 비선형으로 변환해 복잡한 패턴을 표현한다. 층 수와 노드 수는 분석자가 정한다. |
| 출력층 (output layer) | 결과를 내는 층. 회귀는 보통 노드 1개, 이진 분류는 1개(또는 2개), 다중 분류는 범주 수만큼 둔다. |
| 가중치 (weight) | 노드 사이 연결의 강도. 학습으로 조정되는 핵심 모수이다. |
| 편향 (bias) | 가중합에 더하는 상수항. 활성화 함수가 작동하는 기준점을 옮긴다. |
| 활성화 함수 | 가중합을 받아 노드의 출력을 정하는 함수. 비선형 함수를 써야 층을 쌓는 의미가 있다. |
노드 하나의 출력은 입력의 가중합에 편향을 더한 값을 활성화 함수 f에 넣은 것이다.
| 단계 | 설명 |
|---|---|
| 순전파 (forward propagation) | 입력을 입력층에서 출력층 방향으로 전달하며 각 층의 출력을 계산해 예측값을 얻는다. |
| 오차 계산 | 예측값과 실제값의 차이를 손실 함수로 계산한다. 회귀는 평균 제곱 오차, 분류는 교차 엔트로피를 흔히 쓴다. |
| 오차역전파 (backpropagation) | 출력층의 오차를 출력층에서 입력층 방향으로 거꾸로 전달하며, 연쇄 법칙으로 각 가중치에 대한 손실의 기울기(편미분)를 구한다. 1986년 러멜하트(Rumelhart), 힌턴(Hinton), 윌리엄스(Williams)의 논문으로 널리 알려졌다. 자세한 내용은 역전파 문서를 참고한다. |
| 가중치 갱신 | 경사 하강법으로 손실이 줄어드는 방향, 즉 기울기의 반대 방향으로 가중치를 조금씩 옮긴다. 이동 폭은 학습률로 정한다. |
- 가중치 갱신 식은 이다. η는 학습률, E는 손실이다.
- 순전파 → 오차 계산 → 역전파 → 가중치 갱신을 전체 학습 데이터에 대해 여러 번(에폭, epoch) 반복한다.
- 손실 함수가 볼록하지 않으므로 경사 하강법은 지역 최솟값에 머무를 수 있고, 초기 가중치에 따라 결과가 달라진다.
| 함수 | 식 | 출력 범위 | 주된 용도와 특징 |
|---|---|---|---|
| 계단 함수 (step) | 0 이상이면 1, 아니면 0 | 0 또는 1 | 초기 퍼셉트론에서 사용. 미분값이 0(또는 정의되지 않음)이라 역전파 학습에 쓸 수 없다. |
| 시그모이드 (sigmoid) | (0, 1) | 이진 분류의 출력층에서 확률처럼 해석. 도함수 최댓값이 0.25여서 층이 깊으면 기울기 소실이 생긴다. | |
| 하이퍼볼릭 탄젠트 (tanh) | (−1, 1) | 은닉층에 사용. 출력의 중심이 0이라 시그모이드보다 학습이 잘 되는 경우가 많지만 기울기 소실은 남는다. | |
| ReLU | [0, ∞) | 딥 러닝 은닉층에서 널리 사용. 양수 구간의 기울기가 1이라 기울기 소실이 줄고 계산이 빠르다. 음수 입력에서는 기울기가 0이다. | |
| 소프트맥스 (softmax) | 각 값 (0, 1), 합계 1 | 다중 분류의 출력층. K개 범주 각각의 확률을 낸다. |
자세한 내용은 활성화 함수 문서를 참고한다.
| 장점 | 단점 |
|---|---|
| 변수 사이의 복잡한 비선형 관계와 상호작용을 스스로 학습한다. | 가중치가 무엇을 뜻하는지 해석하기 어렵다(블랙박스 모형). 결과를 설명해야 하는 분석에는 의사결정 나무나 로지스틱 회귀가 더 적합할 수 있다. |
| 분류와 회귀(수치 예측)에 모두 쓸 수 있다. | 은닉층·노드가 많으면 과적합되기 쉽다. |
| 잡음이 있는 자료에도 비교적 잘 작동한다. | 초기 가중치에 따라 결과가 달라지고 지역 최솟값에 빠질 수 있다. |
| 입력 변수 사이에 상관이 있어도 쓸 수 있다. | 입력 변수의 척도에 민감하다. 척도를 맞추지 않으면 값이 큰 변수가 학습을 좌우하고 수렴이 느려지므로, 입력을 표준화하거나 0~1 범위로 변환해서 넣는다. |
| 새 자료로 계속 학습시킬 수 있다. | 학습에 시간이 오래 걸리고, 은닉층 수·노드 수·학습률 등 정할 것이 많다. |
R의 nnet 패키지는 은닉층이 하나인 순전파(feed-forward) 신경망과 다항 로그선형 모형을 제공한다.
library(nnet)
set.seed(123)
idx <- sample(1:nrow(iris), 100)
train <- iris[idx, ]
test <- iris[-idx, ]
# size: 은닉 노드 수, decay: 가중치 감쇠, maxit: 최대 반복 횟수
model <- nnet(Species ~ ., data = train, size = 3, decay = 5e-4, maxit = 200)
pred <- predict(model, test, type = "class")
table(actual = test$Species, predicted = pred) # 혼동 행렬
- 입력 변수의 척도가 크게 다르면
scale()등으로 먼저 표준화한다. - 초기 가중치가 무작위로 정해지므로
set.seed()를 주지 않으면 실행할 때마다 결과가 달라진다. - 수치 예측(회귀)에는
linout = TRUE를 준다.
- 입력층·은닉층·출력층의 구성과 가중치·편향의 역할, 은닉층 노드 수가 너무 적으면 과소적합, 너무 많으면 과적합이라는 점
- 학습은 순전파로 예측하고, 오차역전파로 기울기를 구해, 경사 하강법으로 가중치를 갱신하는 과정이다.
- 활성화 함수별 출력 범위: 시그모이드 (0, 1), tanh (−1, 1), ReLU [0, ∞), 소프트맥스는 합이 1인 확률(다중 분류 출력층)
- 기울기 소실은 시그모이드 같은 함수를 깊게 쌓을 때 생기며 ReLU 등으로 완화한다.
- 결과 해석이 어렵고, 초기값과 입력 척도에 민감하므로 입력을 표준화한다.
