Neural Networks I

chelseey·2025년 5월 22일

Linear Regression

로지스틱 회귀(Logistic Regression) 모델의 구조

y=σ(WX)=σ(w0+w1x1+w2x2)=ew0+w1x1+w2x21+ew0+w1x1+w2x2y = \sigma(WX) = \sigma(w_0 + w_1x_1 + w_2x_2) = \frac{e^{w_0+w_1x_1+w_2x_2}}{1 + e^{w_0+w_1x_1+w_2x_2}}

선형 결합 결과 s를 시그모이드 함수 σσ에 통과시켜 , 최종 출력 y를 만듦

Softmax Regression

y=Softmax(WX)=Softmax(W1X,W2X,W3X)=[eW1X,eW2X,eW3X]eW1X+eW2X+eW3Xy = \text{Softmax}(WX) = \text{Softmax}(W_1X, W_2X, W_3X) = \frac{[e^{W_1X}, e^{W_2X}, e^{W_3X}]}{e^{W_1X} + e^{W_2X} + e^{W_3X}}

선형 출력 WXWX을 확률로 변환하는 활성화 함수(Softmax)를 적용

Issues with Linear Classifiers

: 선형 분류기의 한계

→ 선형 경계만 학습
선형 분류기는 예측을 위해 하나의 직선(고차원에서는 초평면)을 사용
데이터가 직선(초평면)으로 나눌 수 없는 복잡한 형태라면 제대로 분류 불가

Features

: Feature Engineering을 통한 선형 분류기의 확장

directly 입력→출력 매핑 대신,
데이터를 새로운 특징 공간(feature space)으로 변환한 뒤 선형 분류를 적용

Perceptron

: 입력 특징의 가중합을 기준으로 단순한 직선 결정경계를 학습

  • 입력 값을 받아 각 입력에 가중치를 곱함

  • 가중합 wixi\sum w_ix_i 이 임계값 θθ를 초과하면
    뉴런이 “fire”(출력=1), 그렇지 않으면 출력=0.

  • 선형(직선) 경계를 형성하여 두 클래스를 구분

→ 선형 분리 가능(linearly separable)한 문제에만 적용 가능

: 비선형 문제에는 다층 구조(다층 퍼셉트론) 또는 비선형 특징 변환이 필요.

Multi-Layer Perceptron (MLP)

: 은닉층을 추가해 입력을 여러 직선으로 분할한 뒤, 그 결과를 다시 조합

• 은닉층 : 노드 h1h_1, h2h_2

  • h1=f(w1x1+w2x2)h_1 = f(w_1x_1 + w_2x_2)
  • h2=f(w3x1+w4x2)h_2 = f(w_3x_1 + w_4x_2)

• 출력층 : f는 step 함수

y=f(w5h1+w6h2)=f(w5f(w1x1+w2x2)+w6f(w3x1+w4x2))y = f(w_5h_1 + w_6h_2) = f(w_5 f(w_1x_1 + w_2x_2) + w_6 f(w_3x_1 + w_4x_2))

Single-Layer Perceptron (SLP)

입력·출력 형태

  • 입력 벡터 xRdx∈\mathbb{R}^d (ex. d=30 차원)
  • 선형 변환 후 결과 sRcs∈\mathbb{R}^c (ex. c=2 차원)

가중치 행렬

  • WRc×d\mathbf{W} \in \mathbb{R}^{c \times d}
  • 각 출력 노드 j에 대응하는 가중치 벡터 wjw_j는 d차원

Multi-Layer Perceptron (MLP)

MLP without activation

  • Input xRdx∈\mathbb{R}^d
  • First linear layer W1Rh×d\mathbf{W}_1 \in \mathbb{R}^{h \times d} → hidden h=W1xRh\mathbf{h} = \mathbf{W}_1\mathbf{x} \in \mathbb{R}^h
  • Second linear layer W2Rc×h\mathbf{W}_2 \in \mathbb{R}^{c \times h} → output s=W2xRc\mathbf{s} = \mathbf{W}_2\mathbf{x} \in \mathbb{R}^c
  • 출력 : f(x)=W2(W1x)f(\mathbf{x}) = \mathbf{W}_2(\mathbf{W}_1\mathbf{x})

W1W2\mathbf{W}_1\mathbf{W}_2도 하나의 행렬 W\mathbf{W}이므로, 여전히 선형 변환.

비선형성 도입 : 활성화 함수 (Activation)

활성화 함수 a1a_1,a2a_2 (ex. ReLU, 시그모이드 등)을 각 층 사이에 삽입

f(x)=a2(W2a1(W1x))f(\mathbf{x}) = a_2(\mathbf{W}_2 a_1(\mathbf{W}_1\mathbf{x}))

선형 변환 사이에 비선형 함수를 넣어야만 복잡한(비선형) 결정 경계를 학습 가능

Activation Functions (활성화 함수)

Neural Networks

Parameter Estimation

: 가중치 W를 조정해 예측 오차(손실)를 줄이는 것이 목표

Gradient descent

wjwjαwjJ(W)w_j \leftarrow w_j - \alpha \frac{\partial}{\partial w_j} J(W)

wjw_j : 수정할 개별 가중치
α\alpha : 학습률(learning rate), 한 번에 얼마나 크게 이동할지 결정
J/wj∂J/∂w_j : 현재 가중치에서의 손실 함수 기울기(그래디언트)

Chain Rule (연쇄 법칙)

  • 변수 z가 변수 y에 의존(함수 관계)
  • 변수 y가 다시 변수 x에 의존
dzdx=dzdydydx\frac{dz}{dx} = \frac{dz}{dy} \frac{dy}{dx}

Linear Regression

: 선형 회귀에서의 손실함수 기울기(Gradient) 계산

모델 : f=wx+bf=wx+b
손실함수 (Squared Error) : J=(fy)2J=(f−y)^2

연쇄법칙(chain rule)에 따른 기울기 계산

  • 가중치 ww에 대한 기울기 Jw\frac{\partial J}{\partial w}
    Jw=Jffw=2(fy)(wx+b)w=2(fy)x=2(wx+by)x\frac{\partial J}{\partial w} = \frac{\partial J}{\partial f} \frac{\partial f}{\partial w} = 2(f - y) \frac{\partial (wx + b)}{\partial w} = 2(f - y) x = 2(wx + b - y) x
  • 편향 bb에 대한 기울기 Jb\frac{\partial J}{\partial b}
    Jb=Jffb=2(fy)(wx+b)b=2(fy)=2(wx+by)\frac{\partial J}{\partial b} = \frac{\partial J}{\partial f} \frac{\partial f}{\partial b} = 2(f - y) \frac{\partial (wx + b)}{\partial b} = 2(f - y) = 2(wx + b - y)

Logistic Regression

: 로지스틱 회귀의 손실 함수에 대한 기울기(gradient)

선형 결합 : z=wx+bz=wx+b

시그모이드 함수(확률 변환) : p=σ(z)=ez1+ez=11+ezp = \sigma(z) = \frac{e^z}{1 + e^z} = \frac{1}{1 + e^{-z}}

손실 함수 : 실제 클래스 y0,1y∈{0,1}와 예측 확률 p간의 차이를 측정

J=[ylogp+(1y)log(1p)]J = -[y \log p + (1 - y) \log(1 - p)]

기울기(Gradient) 계산 :
연쇄 법칙에 따라,

Jw=Jppzzw=(py)x,Jb=Jppzzb=py\frac{\partial J}{\partial w} = \frac{\partial J}{\partial p} \frac{\partial p}{\partial z} \frac{\partial z}{\partial w}= (p−y)x, \quad \frac{\partial J}{\partial b} = \frac{\partial J}{\partial p} \frac{\partial p}{\partial z} \frac{\partial z}{\partial b}= p−y

Backpropagation

순전파 (Forward Pass)

  • 입력값 x 와 가중치 W 를 곱한 후
  • 편향 b 를 더해 최종 출력 f 를 계산

역전파 (Backpropagation)
: 순전파 과정을 거꾸로 타고 올라가며, 출력 f 에 대한
손실 L의 기울기(gradient)를 각 파라미터(W,b) 에 전파해 주는 과정

  • ff 에 대한 손실 함수 L(f)L(f) 를 정의

  • Lf\frac{\partial L}{\partial f} 를 계산

  • 연쇄법칙(chain rule)을 이용해
    LW=LffW,Lb=Lffb\frac{\partial L}{\partial W} = \frac{\partial L}{\partial f} \cdot \frac{\partial f}{\partial W}, \quad \frac{\partial L}{\partial b} = \frac{\partial L}{\partial f} \cdot \frac{\partial f}{\partial b}

  • f/W=x∂f/∂W=x 이고, f/b=1∂f/∂b=1 이므로,
    LW=Lf×x,Lb=Lf×1\frac{\partial L}{\partial W} = \frac{\partial L}{\partial f} \times x, \quad \frac{\partial L}{\partial b} = \frac{\partial L}{\partial f} \times 1

  • 이를 학습률 αα 와 곱해
    WWαLW,bbαLbW \leftarrow W - \alpha \frac{\partial L}{\partial W}, \quad b \leftarrow b - \alpha \frac{\partial L}{\partial b}

Backpropagation Example

: 함수 f(x,y,z)=(x+y)zf(x,y,z)=(x+y)z에 대한 순전파, 역전파

순전파 (Forward Pass)
입력값: x=2,y=5,z=4x=−2, y=5, z=−4

  • 덧셈 노드
    q=x+y=2+5=3q=x+y=−2+5=3

  • 곱셈 노드
    f=q×z=3×(4)=12f=q×z=3×(−4)=−12

역전파 (Backpropagation)
출력 f 에 대한 기울기 f()\frac{\partial f}{\partial (\cdot)}를 뒤로 전파하며,
각 중간값(노드)과 입력값에 대한 편미분을 구함.

출력 단계
ff=1\frac{\partial f}{\partial f} = 1

곱셈 노드 f=q×zf=q×z

  • fq=z\frac{\partial f}{\partial q} = z
    \rightarrow 위에서 받은 upstream gradient 1에 곱해 δq=1×z=4\delta_q = 1 \times z = -4

  • fz=q\frac{\partial f}{\partial z} = q
    δz=1×q=3\rightarrow \delta_z = 1 \times q = 3

덧셈 노드 q=x+yq=x+y

  • qx=1\frac{\partial q}{\partial x} = 1
    δx=δq×1=4\rightarrow \delta_x = \delta_q \times 1 = -4

  • qy=1\frac{\partial q}{\partial y} = 1
    δy=δq×1=4\rightarrow \delta_y = \delta_q \times 1 = -4

Chain Rule

Training Neural Networks

업스트림 그래디언트(upstream)
: 최종 출력 ff 에 대한 입력의 민감도

로컬 그래디언트(local)
: 해당 노드 연산의 국소 편미분

다운스트림 그래디언트(downstream)
: 곱셈(chain rule)을 통해 각 입력으로 전파

  1. 역수 노드

    f=1xf = \frac{1}{x}

    업스트림 : ff=1\frac{\partial f}{\partial f} = 1
    로컬 : d(1v)dv=1v211.3720.53\frac{d\bigl(\frac{1}{v}\bigr)}{dv} = -\frac{1}{v^2} \approx -\frac{1}{1.37^2} \approx -0.53
    f/v=0.53∂f/∂v=−0.53

  2. +1+1” 노드 v=u+1v=u+1
    업스트림 : −0.53
    로컬 : d(u+1)/du=1d(u+1)/du=1
    f/u=0.53∂f/∂u=−0.53

  3. 지수 함수 u=eru=e^r
    업스트림 : −0.53
    로컬 : derdr=er0.37\frac{d e^r}{dr} = e^r \approx 0.37

  4. 부호 반전 r=qr=−q
    업스트림 : −0.20
    로컬 : d(q)/dq=1d(−q)/dq=−1
    fq=(0.20)×(1)=0.20\frac{\partial f}{\partial q} = (-0.20)\times(-1) = 0.20

  5. 덧셈 노드 q=s0+s1+bq=s_0+s_1+b
    업스트림 : 0.20
    로컬 : 각각

    d(s0+s1+b)ds0=1,d(s0+s1+b)ds1=1,d(s0+s1+b)db=1\displaystyle \frac{d(s_0 + s_1 + b)}{ds_0} = 1,\quad \frac{d(s_0 + s_1 + b)}{ds_1} = 1,\quad \frac{d(s_0 + s_1 + b)}{db} = 1

    fs0=0.20,fs1=0.20,fb=0.20\begin{aligned} \frac{\partial f}{\partial s_0} &= 0.20, \frac{\partial f}{\partial s_1} &= 0.20, \frac{\partial f}{\partial b} &= 0.20 \end{aligned}

  6. 첫 번째 곱셈 s0=w0x0s_0=w_0x_0
    업스트림 : 0.200.20
    로컬 :
    s0w0=x0=1.0,s0x0=w0=2.0\frac{\partial s_0}{\partial w_0} = x_0 = -1.0, \frac{\partial s_0}{\partial x_0} = w_0 = 2.0
    fw0=0.20×(1.0)=0.20,fx0=0.20×2.0=0.40\frac{\partial f}{\partial w_0} = 0.20 \times (-1.0) = -0.20, \frac{\partial f}{\partial x_0} = 0.20 \times 2.0 = 0.40

  7. 두 번째 곱셈 s1=w1x1s_1=w_1x_1
    업스트림 : 0.200.20
    로컬 : s1w1=x1=2.0,s1x1=w1=3.0\frac{\partial s_{1}}{\partial w_{1}} = x_{1} = -2.0, \frac{\partial s_{1}}{\partial x_{1}} = w_{1} = -3.0
    fw1=0.20×(2.0)=0.40\frac{\partial f}{\partial w_{1}} = 0.20 \times (-2.0) = -0.40
    fx1=0.20×(3.0)=0.60\frac{\partial f}{\partial x_{1}} = 0.20 \times (-3.0) = -0.60

Training Neural Networks

모델 구조 설계

해결하려는 문제에 맞는 신경망(레이어 수, 유닛 수, 활성화 함수 등)을 정의

파라미터 초기화

가중치 W와 편향 b를 작은 무작위 값으로 초기화

학습 반복 (Epoch)

세 단계를 데이터셋 전체(또는 배치)에서 반복 수행하여
목표 출력 y^\hat{y}가 실제 레이블 yy에 근접하도록 만듦.

  • 순전파 (Forward Pass)
    입력 x를 신경망에 통과시켜 예측값 y^\hat{y}를 계산

  • 손실 계산 (Loss Evaluation)
    예측 y^\hat{y}와 실제 yy 간의 차이를 측정하는 손실함수 J(y^,y)J(\hat{y}, y)를 구함

  • 역전파 & 파라미터 업데이트 (Backprop & Update)
    체인룰을 이용해 WJ,  bJ\nabla_{W}J,\;\nabla_{b}J를 계산.
    경사하강법(또는 변형된 옵티마이저)으로

    WWαWJ,bbαbJW \gets W - \alpha \nabla_{W}J,\quad b \gets b - \alpha \nabla_{b}J

    형태로 파라미터 갱신

Batch Gradient Descent

학습 데이터 전체(모든 샘플)를 사용해
손실 함수 J(θ)J(θ)의 기울기를 계산하고 가중치를 업데이트

  • 안정적인(부드러운) 경로로 수렴
  • 한 번의 업데이트에 전체 데이터셋을 순회하므로
    계산량이 많고 메모리 부담이 큼

Stochastic Gradient Descent (SGD)

매 업데이트마다 한 개의 학습 샘플만 사용해
기울기를 계산하고 가중치를 업데이트

  • 매 스텝마다 빠른 업데이트 → noisy한 경로를 그리며 전역 최적점에 근사

  • 전체 샘플을 순회하지 않아도 되므로 메모리 부담이 작고,
    온라인 학습에 적합

  • 단일 샘플의 잡음 때문에 진동이 크지만,
    국소 최적점을 빠져나올 수 있는 장점

Mini-batch Gradient Descent

전체 데이터 대신, 임의로 샘플된 작은 묶음(미니배치, 예: 32~256개)으로 기울기를 계산하고 업데이트

  • Batch GD와 SGD의 절충안

  • GPU 병렬 연산에 유리하며,
    한 번에 몇 샘플씩 묶어 효율적인 메모리·연산 활용

  • 업데이트마다 어느 정도 부드러움과 잡음을 모두 갖추어 빠르게 수렴

0개의 댓글