Artificial neural network (ANN)
Cores: perceptron
퍼셉트론(Perceptron) 단위 구조
-
입력 신호(x₁,…,xₘ)
-
시냅스 가중치(wₖ₁,…,wₖₘ), 바이어스(bₖ)
-
가중합 (Summing Junction)
vk=i=1∑mwkixi+bk
-
활성화 함수(φ) : 입력 vk을 비선형 변환하여 yk=φ(vk) 출력
다층 퍼셉트론(MLP) / 심층 신경망(DNN)
층이 깊어질수록 더 높은 차원의 특징(feature)을 추출
ex. 단순 에지(edge) → 형태(shape) → 객체(Object)
Cores: activation functions
→ 비선형성 부여 : 여러 층을 겹쳐도 결국 선형 결합만 하면 표현력이 제한
-
Sigmoid : y=1+e−z1
-
ReLU : max(0,z)
-
Leaky ReLU : max(0.1z,z)
multilayer perceptron
입력층 → 하나 이상의 은닉층 → 출력층으로 구성
은닉층(Hidden Layers)
- 각 층마다 가중합 + 비선형 활성화 함수 적용
- 층이 깊어질수록 더 복잡한 특징(feature)·패턴을 추출
→ 단층 퍼셉트론으로 풀 수 없던 XOR 문제(비선형 분리 문제) 해결
ex. XOR 문제를 푸는 2-layer MLP
1층 퍼셉트론(은닉 유닛 두 개)
2층 퍼셉트론(출력 유닛 하나)
yˉ=σ(−11y1−11y2+6)
- y1 또는 y2 중 하나만 1일 때 → σ(−5)≈0
- y1 또는 y2 이 모두 0일 때 → σ(6)≈1
deep neural network
: 원본 이미지나 특성 벡터를 받아들임.
은닉층(Hidden Layers)
-
첫 번째 은닉층
: 엣지(edge), 선(line), 원(circle) 같은 저수준 특징(feature) 추출
-
두 번째 은닉층
: 얼굴의 눈·코·입 등 중간 수준 패턴 결합
-
세 번째 은닉층
: 사람 얼굴 전체 모양·식별 가능한 고수준 특징 학습
출력층(Output Layer)
: 최종 클래스(ex. “Mark”)나 예측값을 산출
ex. MNIST 손글씨 숫자 인식
Signal flow (forward,순전파)
입력 → 층별 가중합 → 활성화 → 다음 층 입력 을 반복하여,
마지막 출력층에서 모델의 예측값(가설, hypothesis) 을 계산해 내는 과정
-
입력층(Input Layer) 에서 신호 x1,x2가 들어옴
-
은닉층(Hidden Layer) 각 뉴런으로 연결되어,
각 은닉 유닛 i는
vi=wi1x1+wi2x2+bi⟹yi=fi(vi)
와 같이 선형 결합 후 활성화 함수 fi를 거쳐 출력 yi 생성
-
출력층(Output Layer) 에서 은닉층 출력을 다시 가중합 및 활성화
vout=i∑wout,iyi+bout⟹y=fout(vout)
최종 예측값 y 산출
Error flow (backward, 역전파)
손실 함수(loss) 값이 최소가 되도록, 각 가중치(weight) 기여도를 계산
⇒ 이를 토대로 가중치 갱신
손실 계산: 예측값과 정답(ground-truth)의 차이를 정의된 손실 함수(L)로 수치화
역전파(Backward)
Error measure
이진 분류(Binary Classification)
yk: 0/1로 이루어진 정답(one-hot 벡터)
다중 클래스 분류(Multi-class Classification)
회귀(Regression)
-
출력층 활성화 함수: 일반적으로 선형(identity)
-
손실 함수: L2 손실(Mean Squared Error)
J=21k=1∑K(yk−hk)2
yk,hk: 연속(real-valued) 타깃과 예측값
training and testing
훈련 단계 (Training)
: 손실 함수(loss)를 최소화하는 최적의 가중치 w 찾기
테스트 단계 (Testing)
: 학습된 가중치로 새로운 입력에 대한 예측 수행
- 단 한 번의 순전파(Forward Pass)
입력 → 네트워크 → 출력층에서 바로 예측값 산출
ANN for non-linear problem
Deep ANN에서도,
의도한 대로 학습이 이루어지지 않아 정확도(Accuracy)가 낮게 나올 수 있음
Sigmoid 활성화 함수의 특성
-
출력 범위가 (0, 1)로 한정
σ(z)=1+e−z1
큰 양수 입력에 대해 1에 근접, 큰 음수에 대해 0에 근접
-
미분(기울기)이 매우 작아짐
σ′(z)=σ(z)(1−σ(z))
입력 절대값이 크면 클수록 기울기가 거의 0에 가까워짐
Gradient Vanishing 문제
역전파 시 연쇄 법칙(chain rule) 에 의해
∂w1∂L=∂output∂L×∂hiddenn∂output×⋯×∂w1∂hidden1
각 층의 작은 미분값 σ′(z)이 곱해지면서,
초기 은닉층 쪽으로 갈수록 기울기(gradient)가 거의 0에 수렴
→ 가중치가 갱신되지 않음
Forward pass in fully-connected layers
완전연결(Fully-Connected) 층에서의 순전파(Forward Pass) 과정
입력층 → 은닉층
zj(x)=σ(i=0∑dwjixi)(j=1,…,H)
x=(x1,…,xd): 입력 벡터
wji: 입력층 i번 뉴런 → 은닉층 j번 뉴런 가중치
σ: 활성화 함수(ex. Sigmoid, ReLU)
은닉층 → 출력층
hk(x)=σ(j=0∑Hwkjzj)(k=1,…,K)
z=(z1,…,zH): 은닉층 활성화값
wkj: 은닉층 j번 뉴런 → 출력층 k번 뉴런 가중치
최종 출력 h=(h1,…,hK)
오차 측정(Loss)
출력 h와 정답 y 간 손실 함수를 계산하여,
역전파로 각 w를 갱신
Learning objective and optimization
샘플별 오차 εn(w)는 모든 가중치 w에 의존
손실 함수 정의 (Learning Objective)
L2 손실을 가정하면,
εn(w)=21k=1∑K(hk(xn;w)−yn,k)2
hk : 네트워크 출력, yn,k은 정답
전체 훈련 손실
E(w)=N1n=1∑Nεn(w)
이를 최소화하는 최적 가중치 : w∗=argminwE(w)
확률적 경사 하강법 (SGD)
w←w−η∇wεn(w)
η : 학습률(learning rate), ∇εn : 샘플 n에 대한 손실 기울기
Back propagation (BP)
인공신경망 학습에서 손실(오류) 함수에 대한 기울기(gradient) 를 계산해,
가중치 w를 효율적으로 업데이트
BP: Data flow
출력층 sensitivity
출력 hk와 정답 yk가 직접 연결되어 있으므로,
∂wkj∂E=∂hk∂E×∂sk∂hk×∂wkj∂sk
를 바로 계산 가능
은닉층 sensitivity
은닉 유닛 zj가 여러 출력 유닛 hk에 연결돼 있어,
∂wji∂E=k∑∂hk∂E×∂sk∂hk×∂sj∂zj×∂wji∂sj
와 같이 출력층 오차가 은닉층까지 복합적으로 전파되어야 하므로 복잡
Backpropagation 신호 흐름
입력 신호 xi
→ 은닉 유닛 zj=φ(∑iwjixi+bj)
→ 출력 유닛 hk=φ(∑jwkjzj+bk)
출력 hk를에서 목표값 yk를 빼면 오차 ek=hk−yk
BP: credit assignment
hidden to output layer
손실 함수 E를 최소화하기 위해,
출력층 가중치 wkj에 대한 편미분 ∂wkj∂E를 구함
sensitivity factor 체인 룰로 구하기 (Weight gradient)
∂wkj∂E=∂sk∂E∂wkj∂sk=∂sk∂E×zj=δkzj
sk=∑jwkjzj (출력층 선형 입력)
로컬 그라디언트 δk (Local gradient)
δk=∂sk∂E=∂hk∂E∂sk∂hk=ekσ′(sk)
가중치 업데이트 (SGD)
wkj←wkj−η∂wkj∂E=wkj−ηδkzj
한 스텝마다 “오차 신호 δk와 은닉층 출력 zj의 곱으로 가중치를 보정
-
출력층에서 δk 계산
-
은닉층으로 오차 전파
δj=∂sj∂E=k∑∂sk∂E∂zj∂sk∂sj∂zj=k∑δkwkjσ′(sj).
-
가중치 wji 갱신
BP: pseudo code
-
가중치 초기화
모든 wji,wkj 를 작은 랜덤값으로 세팅
-
반복 학습(Training Loop)
-
샘플 선택
: 훈련 데이터 중 하나 n을 뽑음
-
순전파(Forward)
: 입력 xn으로부터 은닉층 출력값 zj, 출력층 출력값 hk 계산
-
역전파(Backward)
: 출력층 오차 δk 계산, 은닉층 오차 δj 계산
-
가중치 업데이트(위치별)
: 은닉 → 출력층 (wkj): wkj←wkj−ηδkzj
입력 → 은닉층 (wji): wji←wji−ηδjxi
-
종료 조건 확인
정해진 에폭(epoch) 수 도달 또는 손실이 충분히 작아지면 반복 종료
-
결과 반환
학습된 최종 가중치 {wji∗,wkj∗} 반환
BP: vanishing gradient problem
시그모이드 활성화 함수 사용 시,
도함수 σ′(s)=σ(s)(1−σ(s))가 항상 ≤0.25로 작음
깊은 층을 거칠수록 각 층의 작은 미분 값들이 곱해지며
기울기가 지수적으로 감소
결과: 은닉층 학습이 극도로 느려지거나 멈춤
가중치 업데이트 식
Δwji=−η∂wji∂E=−ηδjxi=−ησ′(sj)(k∑δkwkj)xi
σ′(s)가 작으면 Δw도 작아져 학습 정체
Overcoming Vanishing Gradient
Sigmoid/tanh는 깊은 층에서 연쇄 곱셈으로 기울기를 빠르게 소실
해결책 :
- ReLU 계열 활성화 함수 사용 → 양수 영역에서 기울기 1 유지
- Unsupervised pre-training + fine-tuning
Difficulties with ANN
ANN의 한계 : 매개변수 폭발(Parameter Explosion)
완전연결(fully‐connected) 네트워크는
입력 차원을 크기를 그대로 가지는 은닉층을 여러 개 쌓으면,
파라미터 수 : ∣θ∣=3D2+D
(입력→은닉, 은닉→은닉, 은닉→출력 가중치 + 바이어스)
ex. 32×32 화소 이미지를 D=32^2개 입력으로 할 때:
∣θ∣=3⋅(322)2+322≈3×106
→ 학습 난이도↑, 오버피팅 및 지역 최적해에 빠질 위험↑
해결책 : Convolutional Neural Networks (CNN)
입력 전체 대신 작은 필터를 여러 위치에 적용 → 파라미터 수 대폭 절감
Breakthrough in BP
BP(Backpropagation)의 해결책
Unsupervised Pre-training + Fine-tuning
- Deep Belief Networks
: 각 은닉층을 비지도 학습(RBM, 오토인코더)으로 사전 학습
- 이어서 전체 네트워크를 지도학습으로 미세조정 → 기울기 소실 완화
Convolutional Neural Networks (CNNs)
- 파라미터 공유·국소 수용 영역 도입 → 매개변수 수 감소
Rectified Linear Unit (ReLU)
- f(x)=max(0,x), 양수 구간 도함수 1 → 그래디언트 소실 대폭 감소
Dropout
- 학습 시 무작위로 일부 뉴런 생략 → 과적합 완화, 일반화 성능 향상