인공신경망 분석 ANN
인간의 신경망에서 아이디어를 얻어, 입력 신호를 연결 가중치로 처리하고 오차를 줄이도록 학습하는 예측모형. 구조를 이해하면 퍼셉트론·활성화함수·역전파를 한 번에 정리할 수 있습니다.
ANN·뉴런·퍼셉트론의 의미 설명
은닉층·노드·입력변수 선택
활성화·손실·역전파 구분
R 분류예측 및 핵심 문제
전체 목차 · 항목을 누르면 해당 페이지로 이동
인공신경망이란?
Artificial Neural Network: 다수의 뉴런(노드)을 연결해 입력과 출력 사이의 패턴을 학습하는 모형
생물학적 영감
뇌의 뉴런·연결이라는 아이디어를 참고합니다. 실제 뇌를 그대로 복제한 모델은 아닙니다.
수치적 연결
입력값에 가중치(weight)를 곱하고 편향(bias)을 더해 노드에서 계산합니다.
오차 최소화
예측과 정답의 차이를 손실함수로 평가하고, 학습 과정에서 매개변수를 갱신합니다.
관광 데이터 예시: 예약 취소 여부 예측
비선형 활성화
분류 기준으로 최종 판단
예약 취소 / 유지, 이탈 / 유지처럼 범주를 예측합니다.
관광객 지출액·방문수요처럼 연속적인 수치를 예측할 수도 있습니다.
입력층 → 은닉층 → 출력층
노드는 정보를 계산하는 단위, 연결선의 가중치는 학습으로 조절하는 수치입니다.
특성값을 받는다
독립변수(설명변수)를 신경망에 전달합니다. 입력층 자체가 항상 복잡한 계산을 하는 것은 아닙니다.
중간 특징을 학습
가중합과 활성화함수를 통해 데이터의 비선형적 관계를 표현합니다.
예측값을 만든다
이진분류·다중분류·회귀에 따라 노드 수와 출력 활성화함수가 달라집니다.
뉴런은 어떻게 계산할까?
아래 값을 움직이면, 가중합과 시그모이드 출력이 즉시 바뀝니다.
입력과 가중치 조절
계산 결과
단순 가중합 뒤에 비선형 변환을 넣어 신경망이 복잡한 관계를 학습하도록 합니다.
각 입력이 계산에 얼마나 크게 기여하는지 결정하는 학습 매개변수
입력의 가중합에 더하는 값으로, 활성화가 일어나는 위치를 조절
가중합을 비선형적으로 변환해 다음 층에 전달
ANN의 발전: 퍼셉트론에서 딥러닝까지
기본 개념과 역사적 기여를 구분해 이해해 봅시다.
단일 선형 경계만으로는 XOR 분리가 어려움
고전적인 단층 퍼셉트론은 선형 분리 가능한 분류에 적합합니다. 비선형 문제가 왜 어려운지 이해하는 대표 사례가 XOR입니다.
은닉층 + 비선형 활성화 + 역전파
신경망 내부에 표현을 학습하는 은닉층을 두고, 손실에 따른 기울기를 역방향으로 계산해 다층 모형을 효율적으로 훈련합니다.
XOR: 왜 은닉층이 필요할까?
XOR(배타적 논리합)는 두 입력이 다를 때 1, 같을 때 0입니다.
XOR 진리표
| x₁ | x₂ | 정답 y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
한 개의 직선으로 두 클래스(0과 1)를 구분할 수 없습니다.
2차원 좌표로 보면?
다층 퍼셉트론의 해결 아이디어
위의 논리 결합은 개념 설명용입니다. 실제 학습에서는 이런 내부 표현을 가중치와 활성화함수로 구현합니다.
시그모이드 · Tanh · ReLU 비교
함수를 선택해 모양과 출력 범위를 비교해 보세요.
시그모이드 함수
출력값이 0~1입니다. 이진분류의 출력층에서 많이 사용되지만, 입력의 절댓값이 크면 기울기가 작아질 수 있습니다.
| 함수 | 출력 범위 | 대표적 용도 / 특징 |
|---|---|---|
| Sigmoid | (0, 1) | 이진분류 출력층, 큰 양·음 입력에서는 포화 가능 |
| Tanh | (−1, 1) | 0을 중심으로 대칭인 변환, 포화 문제 가능 |
| ReLU | [0, ∞) | 은닉층에서 널리 사용, 음수 입력은 0으로 처리 |
역전파: 오차를 이용해 가중치를 학습
순전파는 예측을 만들고, 역전파는 오차를 줄이기 위한 기울기를 계산합니다.
초기화
연결 가중치·편향을 적절히 초기화합니다.
Initialize순전파
입력값에서 시작해 예측값 ŷ를 계산합니다.
Forward Pass손실 계산
실제 y와 예측 ŷ를 손실함수로 비교합니다.
Loss역전파·갱신
기울기를 계산하고 최적화기로 가중치를 갱신합니다.
Backprop + Update학습 과정을 한 줄로
예측 오차를 평가한 뒤 손실을 줄이는 방향으로 가중치를 조정합니다.
역전파 자체는 기울기를 계산하는 절차이고, 경사하강법·Adam 등의 최적화기가 가중치를 갱신합니다.
ANN 모형 구축 시 고려사항
과대적합을 줄이고 일반화 성능을 높이기 위해 구조·데이터·학습 설정을 함께 점검합니다.
수치화와 스케일링
연속형은 원칙적으로 그대로 사용할 수 있으며, 필요하면 표준화합니다. 범주형은 원-핫 인코딩 등의 수치화가 필요합니다.
적절한 무작위 초기화
모든 연결을 동일한 0으로 두는 방식은 대칭성 문제를 초래할 수 있습니다. Xavier·He 초기화 등이 대표적입니다.
은닉층 수와 노드 수
너무 단순하면 과소적합, 너무 복잡하면 과대적합 가능성이 있습니다. 검증 성능으로 결정합니다.
과소적합 Underfitting
복잡한 관계를 충분히 학습하지 못한 상태. 모형 표현력·특성·학습량을 살펴봅니다.
과대적합 Overfitting
훈련 자료에 지나치게 적응한 상태. 정규화·조기종료·데이터 확보·구조 조절 등을 고려합니다.
교재의 설명과 현대적 실무 권장 비교
| 교재 표현 | 정확한 이해 |
|---|---|
| 입력변수를 구간화하여 범주형으로 이산화 | 항상 필요한 절차가 아닙니다. 연속형 입력은 스케일링해 사용하는 것이 일반적이며, 범주형은 수치 인코딩합니다. |
| 가중치를 0에 가까운 값에서 시작해 높임 | 초기화와 학습 갱신은 별개입니다. 가중치는 양·음 방향 모두 조정되며, 모두 같은 0으로 초기화하는 것은 일반적으로 피합니다. |
| 은닉층은 하나, 노드는 많이 시작해 감소 | 절대 규칙은 아닙니다. 하나의 은닉층도 충분할 수 있지만, 데이터·목적·모형 크기에 맞추어 검증으로 결정합니다. |
R에서 ANN으로 붓꽃 품종 분류
기본 탑재 데이터 iris와 nnet 패키지로 다중분류를 연습합니다.
# install.packages("nnet") # 최초 1회만 필요하면 실행
library(nnet)
set.seed(123)
# 1. 종별로 훈련 70% / 시험 30% 분할
idx_by_class <- split(seq_len(nrow(iris)), iris$Species)
train_idx <- unlist(lapply(idx_by_class, function(i) {
sample(i, size = floor(0.7 * length(i)))
}))
train <- iris[train_idx, ]
test <- iris[-train_idx, ]
# 2. 훈련 데이터 기준으로 표준화 (데이터 누수 방지)
cols <- names(iris)[1:4]
mu <- sapply(train[cols], mean)
sd_v <- sapply(train[cols], sd)
train[cols] <- scale(train[cols], center = mu, scale = sd_v)
test[cols] <- scale(test[cols], center = mu, scale = sd_v)
# 3. 은닉노드 5개인 단일 은닉층 신경망
fit <- nnet(Species ~ ., data = train,
size = 5, decay = 0.01,
maxit = 500, trace = FALSE)
# 4. 시험자료로 예측·평가
pred <- predict(fit, newdata = test, type = "class")
table(실제 = test$Species, 예측 = pred)
mean(pred == test$Species)꽃받침·꽃잎 특성 4개
Sepal.Length · Sepal.Width · Petal.Length · Petal.Width
붓꽃 품종 3개
setosa / versicolor / virginica
정확도는 분할·초기값·옵션에 따라 달라집니다. 특정 정확도를 보장하지 않습니다.
한 장으로 끝내는 ANN 핵심 정리
서로 헷갈리기 쉬운 용어를 비교하면서 마무리합니다.
입력 → 은닉 → 출력
가중치가 연결을 결정
활성화함수
Sigmoid · Tanh · ReLU
역전파
손실의 기울기 계산
과대·과소적합
검증 데이터로 모형 평가
시험 암기용 비교표
| 구분 | 핵심 정의 | 헷갈리기 쉬운 점 |
|---|---|---|
| 퍼셉트론 | 입력의 가중합을 계산해 결과 생성 | 고전적 단층 퍼셉트론은 XOR를 해결하지 못함 |
| 은닉층 / 은닉노드 | 중간 계산 단계 / 그 안의 개별 계산 단위 | 층의 수와 노드의 수는 다른 개념 |
| 활성화함수 | 가중합에 비선형 변환 적용 | 시그모이드가 모든 층의 유일한 선택은 아님 |
| 역전파 | 오차 기울기의 효율적인 역방향 계산 | 가중치 갱신 자체와는 구별 |
| 하이퍼파라미터 | 학습률·층 수·노드 수·정규화 강도 등 | 학습으로 추정되는 가중치와는 구별 |
보완 및 확인 출처 · 교재 내용을 바탕으로 현대적 용법과 역사 부분을 교차 확인
- Google · Neural Networks (기본 구조·학습)
- Google · Activation Functions (Sigmoid·ReLU)
- Google · Backpropagation (학습 과정)
- Rumelhart et al. (1986) (역전파)
- Rosenblatt (1958) (퍼셉트론)
- R · nnet 공식 문서 (R 실습)
기출문제와 핵심개념 체크
정답을 고르면 바로 해설이 나타납니다. 31번은 교재 435쪽의 기출문항을 요약한 것이며, 아래 Q32~Q34는 이 HTML용 추가 연습문제입니다.