깊은 신경망은 이론적으로는 매우 강력하지만, 실제 학습은 생각보다 쉽게 망가질 수 있습니다. 신호가 층을 지나며 너무 커지거나 작아질 수 있고, gradient가 깊은 곳까지 잘 전달되지 않을 수 있으며, 시작점이 나쁘면 좋은 해로 가기도 어렵습니다. 초기화, 정규화, residual connection, 여러 optimization trick은 각각 다른 이름을 가지고 있지만, 사실은 모두 같은 문제를 다룹니다. 바로 "깊은 네트워크에서 정보와 gradient가 안정적으로 흐르게 만드는 것"입니다.
먼저 알아둘 말
- 초기화: 학습 시작 전에 가중치를 어떤 값으로 둘지 정하는 과정이다.
- 정규화: 층의 활성값이나 표현 분포를 더 안정적으로 유지하게 만드는 방법이다.
- residual connection: 입력을 그대로 더해 지름길을 만드는 연결 방식이다.
- optimization trick: 학습을 더 빠르고 안정적으로 만들기 위한 실전 기법들이다.
- gradient explosion: 역전파 중 gradient가 지나치게 커지는 현상이다.
- gradient vanishing: 역전파 중 gradient가 지나치게 작아지는 현상이다.
이 강의에서 답할 질문
- 왜 초기값이 깊은 네트워크 학습 결과에 큰 영향을 줄까?
- 정규화는 정확히 무엇을 안정화하려는 걸까?
- residual connection은 왜 깊은 모델을 더 쉽게 학습하게 만들까?
먼저 떠올릴 장면
- 출발점이 너무 나쁘면 내리막길이 있어도 그쪽으로 잘 못 갈 수 있다.
- 신호가 층을 지나며 계속 증폭되거나 계속 줄어들면 뒤쪽 층이 제대로 학습하지 못한다.
- 길이 너무 길어도 중간에 지름길이 있으면 정보 전달이 쉬워진다.
즉 이 강의는 여러 "트릭"을 따로 외우는 강의가 아니라, 깊은 모델의 학습이 왜 어렵고 그것을 어떻게 안정화하는지 이해하는 강의입니다.
생각의 순서
- 먼저 왜 깊은 네트워크가 학습하기 어려운지 본다.
- 그다음 초기화가 출발점을 어떻게 바꾸는지 본다.
- 이어서 정규화가 신호 분포를 어떻게 안정화하는지 본다.
- 마지막으로 residual connection과 여러 실전 기법을 하나의 관점으로 묶어 본다.
본문
1. 깊은 네트워크는 깊기 때문에 학습이 어렵다
층이 많아질수록 표현력은 커질 수 있지만, 학습은 오히려 더 어려워질 수 있습니다. 이유는 단순합니다.
- 신호가 앞으로 전달될 때 크기가 너무 커질 수 있다.
- 역전파 중 gradient가 너무 작아질 수 있다.
- 층이 많아질수록 작은 불안정이 반복적으로 누적된다.
즉 문제는 "모델이 강력하지 않다"가 아니라, "그 강력한 모델을 실제로 학습시키기가 어렵다"는 데 있습니다.
2. 초기화는 단순한 시작값이 아니다
가중치 초기화는 그냥 아무 숫자로 시작하는 단계가 아닙니다. 초기화가 잘못되면 학습이 시작부터 불안정해질 수 있습니다.
예를 들어 가중치가 너무 크면 층을 지날수록 활성값이 커지고, gradient도 폭발할 수 있습니다. 반대로 가중치가 너무 작으면 신호가 층을 지나며 점점 사라지고, gradient도 거의 전달되지 않을 수 있습니다.
그래서 Xavier 초기화나 He 초기화 같은 방법은 층을 지나는 동안 분산이 지나치게 커지거나 작아지지 않도록 설계됩니다. 핵심은 "출발점에서부터 신호 흐름을 망가뜨리지 않는 것"입니다.
또한 모든 가중치를 0으로 두는 것도 좋지 않습니다. 그러면 뉴런들이 서로 같은 방식으로만 업데이트되어 대칭이 깨지지 않기 때문입니다.
3. 정규화는 분포를 안정적으로 유지하게 돕는다
정규화는 여러 맥락에서 쓰이지만, 여기서는 층의 입력이나 출력을 더 안정적인 범위로 유지하게 돕는 장치로 이해하는 것이 좋습니다.
BatchNorm, LayerNorm 같은 방법은 각 층의 표현이 지나치게 치우치지 않도록 조정합니다. 이로 인해 다음과 같은 이점이 생깁니다.
- 학습이 덜 흔들린다.
- gradient 흐름이 부드러워진다.
- 더 큰 모델도 비교적 안정적으로 학습할 수 있다.
즉 정규화는 성능을 올리는 마법이 아니라, 학습 과정을 더 다루기 쉽게 만드는 안정화 장치입니다.
4. residual connection은 지름길을 만든다
Residual connection의 대표적인 형태는 다음과 같습니다.
$$ y = F(x) + x $$
여기서 중요한 점은 입력 x가 변형된 결과 F(x)에 그대로 더해진다는 것입니다. 즉 모델은 "완전히 새 표현을 처음부터 만드는 것" 대신, 기존 입력에 얼마나 보정할지를 배우게 됩니다.
이 구조의 장점은 명확합니다.
- 원래 정보가 사라지지 않고 직접 전달된다.
- gradient가 뒤쪽 층에서 앞쪽 층으로 더 잘 흐를 수 있다.
- 깊은 네트워크에서도 학습이 더 쉬워진다.
즉 residual connection은 단순한 구조 장식이 아니라, 깊은 모델에서 정보와 gradient가 지나갈 수 있는 지름길입니다.
5. optimization trick들은 같은 목표를 가진다
실전에서는 이 외에도 여러 기법을 씁니다.
- learning rate warmup
- learning rate scheduler
- gradient clipping
- dropout
겉보기에는 서로 달라 보이지만, 공통 목적은 비슷합니다.
- 너무 급한 업데이트를 막는다.
- 학습 초기를 안정화한다.
- gradient 폭주를 막는다.
- 지나친 공적응과 과적합을 줄인다.
즉 실전 기법들은 "학습을 더 잘 되게 하는 작은 요령"이 아니라, 깊은 모델에서 흔히 생기는 실패 모드를 제어하는 장치들입니다.
6. gradient clipping은 왜 필요한가
특히 recurrent 구조나 깊은 네트워크에서는 gradient가 지나치게 커질 수 있습니다. 이 경우 한 번의 업데이트가 너무 커져 학습이 깨질 수 있습니다.
Gradient clipping은 gradient의 크기를 일정 범위 안으로 잘라서 이런 폭주를 막습니다. 즉 방향 정보는 최대한 유지하되, 걸음 크기가 너무 커지지 않게 하는 장치입니다.
이 점은 optimization trick을 이해하는 좋은 예입니다. 많은 트릭은 결국 "방향은 살리고 폭주는 막는다"는 공통 목적을 가집니다.
7. 드롭아웃과 정규화는 조금 다른 방식으로 안정화를 돕는다
드롭아웃은 학습 중 일부 뉴런을 무작위로 끄는 방식입니다. 이렇게 하면 특정 뉴런 조합에 과하게 의존하는 것을 줄이고, 더 견고한 표현을 배우게 도울 수 있습니다.
즉 드롭아웃은 분포를 맞추는 정규화와는 결이 다르지만, 결과적으로는 과적합을 줄이고 학습을 더 강건하게 만든다는 점에서 같은 범주의 안정화 도구로 볼 수 있습니다.
8. AI에서는 왜 이런 기법들이 필수일까
현대 신경망은 매우 깊고 넓습니다. 이론적으로 표현력이 충분해도, 실제로 학습이 제대로 되지 않으면 아무 의미가 없습니다.
그래서 실전에서는 모델 구조만큼 다음 질문이 중요합니다.
- 신호가 앞쪽에서 뒤쪽으로 잘 전달되는가?
- gradient가 뒤쪽에서 앞쪽으로 잘 돌아오는가?
- 학습률과 초기화가 지나치게 공격적이지 않은가?
- 깊은 구조를 버틸 수 있는 지름길과 안정화 장치가 있는가?
즉 초기화, 정규화, residual, 여러 optimization trick은 성능을 꾸미는 부가 기능이 아니라, 깊은 모델을 실제로 학습 가능하게 만드는 핵심 인프라입니다.
예제
-
초기화의 의미 문제: 왜 가중치를 모두 0으로 시작하면 좋지 않을 수 있는가? 풀이: 모든 뉴런이 같은 방식으로 업데이트되어 서로 다른 역할을 배우지 못하기 때문이다. 해설: 초기화는 단순히 작은 수로 시작하는 것이 아니라, 대칭을 깨고 안정적인 신호 흐름을 만드는 출발점이다.
-
residual connection의 직관 문제: residual connection은 왜 깊은 모델을 돕는가? 풀이: 입력을 직접 전달하는 경로가 있어 정보와 gradient가 더 쉽게 흐를 수 있기 때문이다.
$$ y = F(x) + x $$
해설: residual connection은 깊은 네트워크 안에 지름길을 만들어 주는 구조다.
- 정규화의 역할 문제: BatchNorm이나 LayerNorm은 무엇을 안정화하려고 하는가? 풀이: 층을 통과하는 활성값의 분포를 지나치게 치우치지 않게 유지하여 학습을 더 안정적으로 만들려는 것이다. 해설: 정규화는 깊은 모델에서 신호와 gradient 흐름을 덜 흔들리게 만드는 장치다.
스스로 점검
연습 문제
- 깊은 네트워크가 왜 학습하기 어려운지 설명하라.
- 좋은 초기화가 막으려는 문제를 설명하라.
- residual connection이 정보 흐름에 어떤 도움을 주는지 설명하라.
- gradient clipping이 필요한 상황을 설명하라.
복습 질문
- 초기화는 무엇을 안정화하려 하는가?
- 정규화는 어떤 종류의 흔들림을 줄이려 하는가?
- residual connection은 왜 깊은 모델에서 특히 중요할까?
체크포인트
- 초기화, 정규화, residual의 역할을 설명할 수 있다.
- 깊은 네트워크의 학습 난점을 이해한다.
- 여러 optimization trick이 같은 목표를 가진다는 점을 설명할 수 있다.
- 신호와 gradient 흐름 관점에서 안정화 기법을 이해한다.