Linear Regression
로지스틱 회귀(Logistic Regression) 모델의 구조
y=σ(WX)=σ(w0+w1x1+w2x2)=1+ew0+w1x1+w2x2ew0+w1x1+w2x2
선형 결합 결과 s를 시그모이드 함수 σ에 통과시켜 , 최종 출력 y를 만듦
Softmax Regression
y=Softmax(WX)=Softmax(W1X,W2X,W3X)=eW1X+eW2X+eW3X[eW1X,eW2X,eW3X]
선형 출력 WX을 확률로 변환하는 활성화 함수(Softmax)를 적용
Issues with Linear Classifiers
: 선형 분류기의 한계
→ 선형 경계만 학습
선형 분류기는 예측을 위해 하나의 직선(고차원에서는 초평면)을 사용
데이터가 직선(초평면)으로 나눌 수 없는 복잡한 형태라면 제대로 분류 불가
Features
: Feature Engineering을 통한 선형 분류기의 확장
directly 입력→출력 매핑 대신,
데이터를 새로운 특징 공간(feature space)으로 변환한 뒤 선형 분류를 적용
Perceptron
: 입력 특징의 가중합을 기준으로 단순한 직선 결정경계를 학습
-
입력 값을 받아 각 입력에 가중치를 곱함
-
가중합 ∑wixi 이 임계값 θ를 초과하면
뉴런이 “fire”(출력=1), 그렇지 않으면 출력=0.
-
선형(직선) 경계를 형성하여 두 클래스를 구분
→ 선형 분리 가능(linearly separable)한 문제에만 적용 가능
: 비선형 문제에는 다층 구조(다층 퍼셉트론) 또는 비선형 특징 변환이 필요.
Multi-Layer Perceptron (MLP)
: 은닉층을 추가해 입력을 여러 직선으로 분할한 뒤, 그 결과를 다시 조합
• 은닉층 : 노드 h1, h2
- h1=f(w1x1+w2x2)
- h2=f(w3x1+w4x2)
• 출력층 : f는 step 함수
y=f(w5h1+w6h2)=f(w5f(w1x1+w2x2)+w6f(w3x1+w4x2))
Single-Layer Perceptron (SLP)
입력·출력 형태
- 입력 벡터 x∈Rd (ex. d=30 차원)
- 선형 변환 후 결과 s∈Rc (ex. c=2 차원)
가중치 행렬
- W∈Rc×d
- 각 출력 노드 j에 대응하는 가중치 벡터 wj는 d차원
Multi-Layer Perceptron (MLP)
MLP without activation
- Input x∈Rd
- First linear layer W1∈Rh×d → hidden h=W1x∈Rh
- Second linear layer W2∈Rc×h → output s=W2x∈Rc
- 출력 : f(x)=W2(W1x)
→ W1W2도 하나의 행렬 W이므로, 여전히 선형 변환.
비선형성 도입 : 활성화 함수 (Activation)
활성화 함수 a1,a2 (ex. ReLU, 시그모이드 등)을 각 층 사이에 삽입
f(x)=a2(W2a1(W1x))
선형 변환 사이에 비선형 함수를 넣어야만 복잡한(비선형) 결정 경계를 학습 가능
Activation Functions (활성화 함수)
Neural Networks
Parameter Estimation
: 가중치 W를 조정해 예측 오차(손실)를 줄이는 것이 목표
Gradient descent
wj←wj−α∂wj∂J(W)
wj : 수정할 개별 가중치
α : 학습률(learning rate), 한 번에 얼마나 크게 이동할지 결정
∂J/∂wj : 현재 가중치에서의 손실 함수 기울기(그래디언트)
Chain Rule (연쇄 법칙)
- 변수 z가 변수 y에 의존(함수 관계)
- 변수 y가 다시 변수 x에 의존
dxdz=dydzdxdy
Linear Regression
: 선형 회귀에서의 손실함수 기울기(Gradient) 계산
모델 : f=wx+b
손실함수 (Squared Error) : J=(f−y)2
연쇄법칙(chain rule)에 따른 기울기 계산
- 가중치 w에 대한 기울기 ∂w∂J
∂w∂J=∂f∂J∂w∂f=2(f−y)∂w∂(wx+b)=2(f−y)x=2(wx+b−y)x
- 편향 b에 대한 기울기 ∂b∂J
∂b∂J=∂f∂J∂b∂f=2(f−y)∂b∂(wx+b)=2(f−y)=2(wx+b−y)
Logistic Regression
: 로지스틱 회귀의 손실 함수에 대한 기울기(gradient)
선형 결합 : z=wx+b
시그모이드 함수(확률 변환) : p=σ(z)=1+ezez=1+e−z1
손실 함수 : 실제 클래스 y∈0,1와 예측 확률 p간의 차이를 측정
J=−[ylogp+(1−y)log(1−p)]
기울기(Gradient) 계산 :
연쇄 법칙에 따라,
∂w∂J=∂p∂J∂z∂p∂w∂z=(p−y)x,∂b∂J=∂p∂J∂z∂p∂b∂z=p−y
Backpropagation
순전파 (Forward Pass)
- 입력값 x 와 가중치 W 를 곱한 후
- 편향 b 를 더해 최종 출력 f 를 계산
역전파 (Backpropagation)
: 순전파 과정을 거꾸로 타고 올라가며, 출력 f 에 대한
손실 L의 기울기(gradient)를 각 파라미터(W,b) 에 전파해 주는 과정
-
f 에 대한 손실 함수 L(f) 를 정의
-
∂f∂L 를 계산
-
연쇄법칙(chain rule)을 이용해
∂W∂L=∂f∂L⋅∂W∂f,∂b∂L=∂f∂L⋅∂b∂f
-
∂f/∂W=x 이고, ∂f/∂b=1 이므로,
∂W∂L=∂f∂L×x,∂b∂L=∂f∂L×1
-
이를 학습률 α 와 곱해
W←W−α∂W∂L,b←b−α∂b∂L
Backpropagation Example
: 함수 f(x,y,z)=(x+y)z에 대한 순전파, 역전파
순전파 (Forward Pass)
입력값: x=−2,y=5,z=−4
역전파 (Backpropagation)
출력 f 에 대한 기울기 ∂(⋅)∂f를 뒤로 전파하며,
각 중간값(노드)과 입력값에 대한 편미분을 구함.
출력 단계
∂f∂f=1
곱셈 노드 f=q×z
-
∂q∂f=z
→ 위에서 받은 upstream gradient 1에 곱해 δq=1×z=−4
-
∂z∂f=q
→δz=1×q=3
덧셈 노드 q=x+y
-
∂x∂q=1
→δx=δq×1=−4
-
∂y∂q=1
→δy=δq×1=−4
Chain Rule
Training Neural Networks
업스트림 그래디언트(upstream)
: 최종 출력 f 에 대한 입력의 민감도
로컬 그래디언트(local)
: 해당 노드 연산의 국소 편미분
다운스트림 그래디언트(downstream)
: 곱셈(chain rule)을 통해 각 입력으로 전파
-
역수 노드
업스트림 : ∂f∂f=1
로컬 : dvd(v1)=−v21≈−1.3721≈−0.53
→ ∂f/∂v=−0.53
-
“+1” 노드 v=u+1
업스트림 : −0.53
로컬 : d(u+1)/du=1
→ ∂f/∂u=−0.53
-
지수 함수 u=er
업스트림 : −0.53
로컬 : drder=er≈0.37
-
부호 반전 r=−q
업스트림 : −0.20
로컬 : d(−q)/dq=−1
→ ∂q∂f=(−0.20)×(−1)=0.20
-
덧셈 노드 q=s0+s1+b
업스트림 : 0.20
로컬 : 각각
ds0d(s0+s1+b)=1,ds1d(s0+s1+b)=1,dbd(s0+s1+b)=1
→ ∂s0∂f=0.20,∂s1∂f=0.20,∂b∂f=0.20
-
첫 번째 곱셈 s0=w0x0
업스트림 : 0.20
로컬 :
∂w0∂s0=x0=−1.0,∂x0∂s0=w0=2.0
→ ∂w0∂f=0.20×(−1.0)=−0.20,∂x0∂f=0.20×2.0=0.40
-
두 번째 곱셈 s1=w1x1
업스트림 : 0.20
로컬 : ∂w1∂s1=x1=−2.0,∂x1∂s1=w1=−3.0
→ ∂w1∂f=0.20×(−2.0)=−0.40
∂x1∂f=0.20×(−3.0)=−0.60
Training Neural Networks
모델 구조 설계
해결하려는 문제에 맞는 신경망(레이어 수, 유닛 수, 활성화 함수 등)을 정의
파라미터 초기화
가중치 W와 편향 b를 작은 무작위 값으로 초기화
학습 반복 (Epoch)
세 단계를 데이터셋 전체(또는 배치)에서 반복 수행하여
목표 출력 y^가 실제 레이블 y에 근접하도록 만듦.
-
순전파 (Forward Pass)
입력 x를 신경망에 통과시켜 예측값 y^를 계산
-
손실 계산 (Loss Evaluation)
예측 y^와 실제 y 간의 차이를 측정하는 손실함수 J(y^,y)를 구함
-
역전파 & 파라미터 업데이트 (Backprop & Update)
체인룰을 이용해 ∇WJ,∇bJ를 계산.
경사하강법(또는 변형된 옵티마이저)으로
W←W−α∇WJ,b←b−α∇bJ
형태로 파라미터 갱신
Batch Gradient Descent
학습 데이터 전체(모든 샘플)를 사용해
손실 함수 J(θ)의 기울기를 계산하고 가중치를 업데이트
- 안정적인(부드러운) 경로로 수렴
- 한 번의 업데이트에 전체 데이터셋을 순회하므로
계산량이 많고 메모리 부담이 큼
Stochastic Gradient Descent (SGD)
매 업데이트마다 한 개의 학습 샘플만 사용해
기울기를 계산하고 가중치를 업데이트
-
매 스텝마다 빠른 업데이트 → noisy한 경로를 그리며 전역 최적점에 근사
-
전체 샘플을 순회하지 않아도 되므로 메모리 부담이 작고,
온라인 학습에 적합
-
단일 샘플의 잡음 때문에 진동이 크지만,
국소 최적점을 빠져나올 수 있는 장점
Mini-batch Gradient Descent
전체 데이터 대신, 임의로 샘플된 작은 묶음(미니배치, 예: 32~256개)으로 기울기를 계산하고 업데이트