alt

4월 17일

Shared on April 17, 2026

Deep Learning (CSE4048) – Initialization 요약 목차

  • [00:00] 지난 강의 슬라이드 오타 정정 & Backpropagation(역전파) 복습
  • [03:00] Toy Example를 통한 Forward/Backward Pass와 Chain Rule(연쇄 법칙)
  • [06:00] Backpropagation 알고리듬 요약
  • [08:00] Optimization 목표와 Initialization(초기화) 문제 제기
  • [11:00] 파라미터 초기화: 가우시안 분포, 작은/큰 분산이 Forward Pass에 미치는 영향
  • [15:00] 작은/큰 분산이 Backward Pass에서 만드는 Vanishing/Exploding Gradient
  • [18:00] Vanishing/Exploding Gradient 직관적 시각화
  • [20:00] Activation Function: Sigmoid의 포화(saturation)와 gradient 소실
  • [23:00] ReLU의 장점과 Dying ReLU 문제
  • [25:00] LeakyReLU의 장점과 여전히 남는 폭주(Exploding) 위험
  • [28:00] Gradient Clipping(그래디언트 클리핑)으로 폭주 억제
  • [31:00] 초기화에 따른 각 층 activation/gradient 분산 변화 시각화
  • [34:00] He Initialization 소개 및 효과 요약
  • [37:00] 왜 bias 초기화는 덜 민감한가
  • [39:00] “분산을 층 사이에서 유지하자”는 수학적 목표 설정
  • [43:00] He Initialization의 수학적 유도(평균, 분산 계산)
  • [50:00] He vs Xavier Initialization 비교, practical 의미
  • [54:00] 수업/시험 안내 및 산업 연구 소개 예고

상세 번역 기록

타임스탬프는 녹취에 명시된 구간이 없어, 내용 흐름 기준으로 근사 배치했습니다.


[00:00 - 03:00] 지난 강의 슬라이드 오타 정정 & Backpropagation 복습

지난 강의에서 썼던 슬라이드를 다시 보여주면서 시작합니다.
3주차 첫 번째 강의의 “슬라이드 59번”인데, 여기서 intercept(절편)와 slope(기울기)를 서로 바꿔 적는 오타를 냈다고 설명합니다.
학생들이 지적해 줬지만, 수식 자체의 개념적 오류는 아니고, 단순히 slope(기울기)와 intercept(절편), 혹은 bias(바이어스)와 weight(가중치) 자리를 잘못 쓴 타이포라고 말합니다.

이걸 계기로 다시 한 번 헷갈리지 말라고 하고,
곧바로 지난 시간에 했던 핵심 내용인 gradient(기울기) 계산과 역전파(Backpropagation) 복습으로 넘어갑니다.

  • 손실 함수(loss)는 개별 loss term들의 합으로 정의
  • Stochastic Gradient Descent(SGD) 알고리듬을 적용
  • 최종 목표: 파라미터(β, ω), 즉 **bias(바이어스)와 weight(가중치)**에 대한 loss의 gradient를 구해서 최적 파라미터를 찾는 것
  • 이를 위해 1986년에 제안된 Backpropagation(역전파) 알고리듬을 사용한다고 상기시킵니다.

[03:00 - 06:00] Toy Example를 통한 Forward/Backward Pass와 Chain Rule

이어서 간단한 toy example을 다시 설명합니다.

  • 여러 개의 함수가 서로 합성(composition)된 형태의 식이 주어졌다고 가정
  • 이 예제에서는 벡터가 아니라 스칼라만 쓰고,
    • Activation Function(활성화 함수): sin, exp, cos
    • Loss Function(손실 함수): 최소제곱법(least squares)

Forward Pass(순전파)에서는:

  • 전체 함수를 여러 개의 중간 함수들로 분해하고
  • 각 중간 단계의 계산 결과를 차례로 구해 저장합니다.
  • 이렇게 저장한 중간 결과들은 나중에 Backward Pass(역전파)에서 다시 사용됩니다.

Backward Pass(역전파)에서는:

  • chain rule(연쇄 법칙)을 사용해
  • 손실 L을 각 중간 변수들에 대해 역순으로 미분합니다.
  • 여기서 보이는 수식들은 결국 전부 chain rule의 반복 적용으로 볼 수 있다고 설명합니다.

[06:00 - 08:00] Backpropagation 알고리듬 요약

요약하면, Forward Pass는 다음 세 줄로 정리할 수 있습니다.

  • F₀ = 첫 번째 층: 입력 x에 파라미터를 곱해서 얻는 선형 결합
  • Hₖ = Activation Function(활성화 함수)을 Fₖ에 적용한 hidden units(은닉 유닛) 벡터
  • F_K = 마지막 층까지 같은 과정을 반복해 최종 출력 계산

Backward Pass에서는:

  • 먼저 출력에 대한 손실의 미분 ∂L/∂(output)를 구하고
  • 이를 이용해 각 층 k에 대해 ∂L/∂βₖ, ∂L/∂ωₖ를 차례대로 계산해 나갑니다.
    • bias(바이어스) β는 단순히 더해지는(additive) 항이기 때문에, weight처럼 hidden unit과 곱해지지 않고 상대적으로 단순한 형태
    • 반면 weight(가중치) ω는 hidden unit H와 곱해지므로, gradient에 H가 곱해져 등장합니다.

또 activation function의 도함수를 쓸 때, 각 위치에서 pointwise(원소별) 곱셈으로 구현된다는 점을 강조합니다.
즉, 전체 gradient는 여러 층의 weight와 activation 도함수가 연속해서 곱해진 형태가 됩니다.


[08:00 - 11:00] Optimization 목표와 Initialization(초기화) 문제 제기

이어서 지난 강의에서 봤던 두 가지 문제를 다시 상기시킵니다.

  1. Problem 1: Computing Gradients(gradient 계산)
    • 이는 방금까지 복습한 Backpropagation으로 해결하는 부분.
  2. Problem 2: Initialization(초기화)
    • 어디서부터(어떤 값으로) 파라미터를 시작하느냐에 따라
      • global minimum(전역 최솟값)을 찾을 수도 있고
      • local minimum(국소 최솟값)에 갇힐 수도 있고
      • **saddle point(안장점)**에서 gradient가 0이 되어 전혀 움직이지 않는 상황이 생길 수도 있음.

여기서 pre-activation(프리-액티베이션) 개념을 다시 정의합니다.

  • Fₖ = βₖ + Ωₖ Hₖ (k번째 층의 pre-activation)
  • Hₖ = activation(Fₖ₋₁)
  • Fₖ는 activation function을 적용하기 “바로 직전”의 값이기 때문에 pre-activation이라 부름.

그리고 초기화 조건을 다음과 같이 둡니다.

  • 모든 bias(바이어스) β는 0으로 설정
  • weight(가중치) Ωₖ는 평균 0, 분산 σ²를 갖는 Gaussian(정규) 분포에서 샘플링:
    Ωₖ ~ N(0, σ²)

질문:

  • 만약 σ²가 아주 작으면 (예: 10⁻⁵), 네트워크를 통과하면서 어떤 일이 일어날까?
    • Forward Pass에서 언더플로(underflow) 발생 가능
  • 반대로 σ²가 아주 크면 (예: 10⁵), 어떤 일이 일어날까?
    • Forward Pass에서 오버플로(overflow) 발생 가능

[11:00 - 15:00] 작은/큰 분산이 Backward Pass에서 만드는 Vanishing/Exploding Gradient

이제 같은 초기화 조건을 **Backward Pass(역전파)**에 대입했을 때 어떤 일이 생기는지 묻습니다.

  • σ²가 매우 작은 경우:
    → Backward Pass에서 Vanishing Gradient(그래디언트 소실) 문제
  • σ²가 매우 큰 경우:
    → Backward Pass에서 Exploding Gradient(그래디언트 폭주) 문제

이는 딥 뉴럴 네트워크 학습에서 가장 큰 문제 중 하나라고 강조합니다.
Forward Pass의 underflow/overflow 자체보다, gradient 소실/폭주가 훨씬 더 심각한 문제라는 점을 짚습니다.


[15:00 - 18:00] Vanishing & Exploding Gradient 직관적 시각화

슬라이드의 시각화를 기반으로 직관을 설명합니다.

  1. Vanishing Gradient(그래디언트 소실)

    • Backward Pass에서 ∂L/∂(각 층 출력)을 구할 때,
      • 각 층마다 weight(ω)와 activation 도함수를 계속 곱해 나갑니다.
    • 만약 weight의 크기가 매우 작다면,
      • 곱할 때마다 값이 점점 0에 가까워져서,
      • 입력에 가까운 앞단(layer 1 근처)으로 갈수록 gradient가 거의 0이 됨.
    • 그 결과:
      • 앞단의 weight는 거의 업데이트되지 않음 → **“dead-like layer”**가 생기는 효과
      • 학습이 사실상 뒷단 몇 층 위주로만 이뤄짐.
  2. Exploding Gradient(그래디언트 폭주)

    • 반대로 weight의 크기가 매우 크면,
      • Backward Pass에서 매 층을 지날 때마다 gradient가 기하급수적으로 커짐.
    • Optimization 관점에서,
      • gradient가 너무 크면,
        • parameter space 상에서 한 번의 업데이트가 너무 큰 점프를 만들어
        • loss surface(손실 함수 곡면) 위를 이리저리 튀기만 하고
        • global minimum 근처에 안정적으로 수렴하지 못함.

[18:00 - 23:00] Activation Function: Sigmoid의 포화와 gradient 소실

이제 Activation Function(활성화 함수) 관점에서 문제를 봅니다.

  1. Sigmoid 함수

    • Sigmoid의 도함수(gradient)의 최대값은 약 0.25.
    • 즉, 어느 층에서든 ∂(activation)/∂(pre-activation)의 최대값이 0.25를 넘을 수 없음.
    • 예를 들어:
      • 각 층마다 최대 0.25를 곱해 나가면,
      • 3층만 가도 0.25³ 정도,
        100층, 1000층이 되면 거의 0에 가까운 값이 됨.
    • 따라서 딥 네트워크에 Sigmoid를 쓰면,
      층이 깊어질수록 gradient가 급격히 소실.
  2. Saturation(포화)

    • 입력 x가 일정 영역을 벗어나면:
      • Sigmoid 출력은 0 또는 1 쪽으로 포화(saturate)되어
      • 도함수(gradient)는 거의 0이 됨.
    • 따라서:
      • 입력이 너무 크거나 작을 때,
      • gradient가 0에 가깝게 고정되어 학습이 진행되지 않는 구간이 생김.

이 포화 문제 때문에 Sigmoid 기반 네트워크에서 vanishing gradient가 심각해진다는 점을 강조합니다.


[23:00 - 28:00] ReLU의 장점과 Dying ReLU, LeakyReLU의 한계

  1. ReLU(Rectified Linear Unit)

    • ReLU는 0 이상 영역에서 기울기가 1이므로,
      • Sigmoid처럼 gradient 상한이 0.25로 제한되지 않음.
      • 따라서 반쪽(양수 영역)에서는 gradient 소실 문제가 덜 심각.
    • 하지만:
      • 음수 영역에서는 출력이 0, gradient도 0.
      • 어떤 뉴런이 음수 영역에 계속 머무르면,
        • gradient가 0이라 영원히 업데이트되지 않는 뉴런이 생길 수 있음.
      • 이것이 Dying ReLU 문제.
  2. LeakyReLU

    • Dying ReLU 문제를 완화하기 위해
      • 음수 영역에도 작은 기울기(예: 0.01)를 주는 LeakyReLU를 사용.
    • 이렇게 하면:
      • 음수 영역에서도 gradient가 완전히 0이 되지 않아
      • 뉴런이 완전히 “죽는” 현상을 줄일 수 있음.
    • 그러나:
      • 여전히 activation 값이 unbounded(상한 없음) 이기 때문에
      • 값이 커지면 gradient 폭주(Exploding Activations/Gradients)의 위험은 남아 있음.
    • 이 부분에서 강의자는
      • “그럼 이렇게 완전히 bounded로 만들까?” 같은 아이디어를 던지며
      • 좋은 activation function을 설계하는 방법을 학생들에게 생각해 보라고 유도합니다.
    • 또, 서로 다른 activation 함수들을 섞어서 사용하는 것도 한 가지 해결책이 될 수 있다고 언급합니다.

[28:00 - 31:00] Gradient Clipping(그래디언트 클리핑)

Exploding Gradient를 막는 실용적인 기법으로 **Gradient Clipping(그래디언트 클리핑)**을 소개합니다.

  • 아이디어:
    • gradient 벡터 ĝ의 **크기(노름)**가 어떤 임계값(threshold)을 넘으면,
      • 방향(direction)은 유지하되
      • 크기만 임계값에 맞게 정규화(rescaling).
  • 결과:
    • 너무 큰 gradient로 인한 폭주/오버플로를 막으면서
    • descent 방향은 유지하여 학습을 계속 진행 가능.

슬라이드의 그림 설명:

  • Gradient Clipping이 없으면:
    • gradient가 커지면서, parameter 업데이트가 영역 밖으로 ‘점프’해 나가 버림.
  • Gradient Clipping을 쓰면:
    • 공(ball)을 너무 세게 치지 않고,
      조금씩 굴려서 cost function(또는 loss function)의 골짜기 안으로 자연스럽게 떨어뜨리는 효과.

이 기법은 실제 산업에서도 많이 사용하는 간단하지만 효과적인 방법이라고 설명합니다.


[31:00 - 34:00] 초기화에 따른 activation/gradient 분산 변화 시각화

이제 다시 **Parameter Initialization Problem(파라미터 초기화 문제)**로 돌아와,
초기화가 각 층의 activation/gradient의 **분산(variance)**에 어떻게 영향을 주는지 시각적으로 보여줍니다.

  • 왼쪽 그래프: 각 층의 activation 분산
  • 오른쪽 그래프: 각 층의 gradient 분산
  1. σ²(가중치 분산)가 너무 큰 경우:

    • Forward Pass:
      • 층을 지날수록 activation 분산이 계속 커짐 → Exploding Activations
    • Backward Pass:
      • gradient 분산도 점점 커져 Exploding Gradients
  2. σ²가 너무 작은 경우:

    • Forward Pass:
      • activation 분산이 점점 줄어들어 Vanishing Activations
    • Backward Pass:
      • gradient 분산이 작아져 Vanishing Gradients
  3. 우리가 원하는 형태:

    • 층을 지날 때마다 activation과 gradient의 분산이 거의 일정하게 유지되는 경우
    • 즉, neither exploding nor vanishing.

오늘 강의의 목표는,
**“어떻게 weight 초기화를 설계해야, Forward/Backward 모두에서 분산을 안정적으로 유지할 수 있는가?”**를 수학적으로 밝히는 것이라고 정리합니다.


[34:00 - 37:00] He Initialization 소개 및 효과 요약

He Initialization(slide 상 “He Initialization”)을 소개합니다.

  • 아이디어:
    • 각 층 k의 가중치 Ωₖ를,
      • 평균 0,
      • 분산 σ² = 2 / Dₕ (Dₕ: 해당 층의 hidden units 수)
      • 인 **정규 분포 N(0, 2/Dₕ)**에서 초기화.
  • 이렇게 하면:
    • Forward Pass에서 activation 분산이 층 사이에서 유지되고
    • Backward Pass에서도 gradient 분산이 지나치게 커지거나 작아지지 않게 안정화됩니다.
  • 실제로:
    • 예시 네트워크에서 hidden units 개수가 일정한 경우,
    • σ² = 0.02(= 2 / 100 형태)의 초기화를 적용하면,
      • activation과 gradient의 분산이 중심에 모여 있는 안정된 패턴을 보이는 것을 시각적으로 보여줍니다.

He Initialization은 ReLU 계열 활성화 함수에 특히 잘 맞는 초기화 방식이라고 설명하며,
오늘 슬라이드의 핵심 예시로 삼습니다.


[37:00 - 39:00] 왜 bias 초기화는 덜 민감한가

이어서 bias(바이어스) 초기화는 왜 덜 신경 쓰는가를 설명합니다.

  • 대부분의 initialization 논문/기법에서
    • weight 초기화는 매우 신중히 다루지만
    • bias는 보통 0으로 두고 크게 신경 쓰지 않음.
  • 이유:
    • gradient를 계산할 때,
      • bias에 대한 gradient는 weight에 대한 gradient에 비해
        • 구조적으로 단순하고
        • 분산 안정성에 미치는 영향이 상대적으로 작음.
    • bias는 network를 미세하게 조정(micro-adjustment)하는 역할에 가까운 반면,
      • weight는 network 구조와 표현력을 크게 좌우.
  • 따라서:
    • 실무에서 bias는 0으로 두고,
    • weight 초기화에만 분산 유지 조건 등을 적용하는 경우가 많다고 설명합니다.

[39:00 - 43:00] “분산을 층 사이에서 유지하자”는 수학적 목표 설정

이제 He Initialization의 수학적 유도에 들어갑니다.

목표:
인접한 두 층 사이에서 pre-activation(프리-액티베이션)의 분산을 유지하는 것.

  • 인접한 pre-activation을 f, f′라고 놓고
    • f ∈ ℝ^{Dₕ}, f′ ∈ ℝ^{Dₕ′}
  • 다음과 같이 정의:
    • f′ = β + Ω h
    • h = activation(f)
  • 이때,
    • bias β의 평균은 0
    • weight Ω의 평균도 0 (N(0, σ²) 가정)
  1. 평균(E[f′]) 계산

    • E[f′] = E[β + Ωh]
    • 선형성에 의해:
      • = E[β] + E[Ωh]
    • β와 Ω의 평균을 0으로 설정했으므로:
      • E[f′] = 0
  2. 분산(Var[f′]) 계산

    • 분산 정의:
      • Var[g] = E[(g - E[g])²]
    • 여기서 g = f′ᵢ (각 차원의 스칼라 성분)이라 하면:
      • Var[f′ᵢ] = E[(f′ᵢ - E[f′ᵢ])²]
    • 이미 E[f′ᵢ] = 0이므로:
      • Var[f′ᵢ] = E[f′ᵢ²]
    • f′ᵢ = βᵢ + Σⱼ Ωᵢⱼ hⱼ 로 두고 전개하면,
      • β의 기댓값은 0,
      • Ω의 기댓값도 0이므로,
      • Var[f′ᵢ]는 결국
        • Ω의 분산 σ²와
        • h의 분산 Var[h]를 곱한 형태로 정리됩니다.
  3. ReLU를 쓴 경우의 기대값

    • h = ReLU(f)이므로,
      • expectation E[h²]를 ReLU의 정의를 사용해 적분 형태로 전개합니다.
    • ReLU의 도함수는 indicator function(지시 함수), 즉 index function으로 볼 수 있고,
    • ReLU가 음수 영역을 0으로 만들기 때문에
      • 적분 구간을 [0, ∞)로 줄여서 정리할 수 있습니다.
    • 적분을 통해 얻은 결과는:
      • Var[f′] = (1/2) Dₕ σ² Var[f]
        • (정확한 상수는 슬라이드에서 유도 과정을 통해 결정)
    • 이 분산이 이전 층 분산과 같게 되도록 σ²를 선택하면,
      • 층 사이에서 분산이 유지됩니다.

[43:00 - 50:00] He Initialization의 수학적 결론 및 Xavier와의 비교

수학적 유도 결과, ReLU 계열에서 Forward Pass의 분산을 유지하기 위해서는:

  • σ² ≈ 2 / Dₕ 로 두는 것이 좋다는 결론에 도달합니다.
    (슬라이드에서 “He Initialization (Forward Pass)”로 표시)

반면, Xavier Initialization은:

  • Forward와 Backward 양쪽 분산을 동시에 고려하는 방식으로 소개됩니다.
  • 흔히:
    • Xavier Initialization은 tanh나 Sigmoid 같이 대칭적 활성화 함수에 자주 쓰이고,
    • He Initialization은 ReLU 계열에 특화된 형태라는 맥락을,
      슬라이드 말미에서 “Forward Pass vs Forward+Backward Pass” 비교로 나타냅니다.

강의자는 두 초기화법이

  • 같은 목표(“분산 유지”) 아래에서
  • 서로 다른 activation 특성을 반영해 도출된 것이라는 점을 강조합니다.

[50:00 - 54:00] practical 관찰과 Optimizer 차이, 그리고 정리

강의자는,

  • 우리가 수업에서 다루는 Gradient Descent 기반 최적화
  • 실제로 많이 쓰는 Adam optimizer(Adam 최적화기) 같은 기법들이
    • 모두 같은 **“최적 파라미터 ĥ, ŵ를 찾는다”**는 목적을 공유하지만,
    • loss landscape 상에서의 이동 방식과 안정성이 서로 다르다는 점을 짚습니다.

또한:

  • parameter가 optimum(최적점)에서 멀리 떨어져 있을 때,
    • loss 값이 거의 0에 가까워지는 구간과
    • 여전히 loss가 꽤 남아 있는 구간의 차이를 슬라이드로 보이며,
    • He Initialization이 underflow 방지, 안정적 학습 측면에서 실용적으로 유용함을 다시 강조합니다.

마지막으로:

  • 다음 주 목요일(4/23)에는 in-class 세션이 없고,
  • 학생들이 시험 준비와 과제 복습을 할 수 있도록 시간을 줄 예정이라고 안내합니다.
  • 본인이 한국의 한 산업계 연구소(약 7년 근무)에서 했던 연구 소개 영상을 학생들이 이미 봤을 것 같다고 언급하며,
    • 앞으로 실제 산업에서 어떤 딥러닝 연구가 이뤄지고 있는지도 조금씩 소개하겠다고 말하며 강의를 마무리합니다.

위 내용은 주어진 녹취와 슬라이드에 직접 등장하는 정보만 바탕으로,
시간 흐름을 유지하며 번역·정리한 것입니다.

4월 17일 | Alt