2026/05/27 5

[밑바닥부터 시작하는 딥러닝 1] 10c. 드롭아웃과 검증 데이터는 과대적합을 서로 다른 위치에서 막는다

밑바닥부터 시작하는 딥러닝 1 - 과대적합과 검증 데이터 심화학습이 잘 된다는 말은 훈련 데이터 점수가 높다는 뜻만은 아니다. 처음 보는 데이터에서도 잘 맞아야 한다. 이때 문제가 되는 것이 과대적합이다.이번 글은 드롭아웃, 가중치 감소, 검증 데이터를 한 줄 요약으로 끝내지 않고, 각각이 과대적합을 어느 위치에서 막는지 구분한다.이번 글에서 잡을 것과대적합은 훈련 데이터에는 잘 맞지만 새로운 데이터에는 약한 상태다.가중치 감소는 큰 가중치에 페널티를 주어 모델이 과하게 날카로워지는 것을 막는다.드롭아웃은 훈련 중 일부 뉴런을 꺼서 특정 뉴런 의존을 줄인다.검증 데이터는 하이퍼파라미터 선택용이고, 시험 데이터는 최종 평가용이다.과대적합을 숫자로 보면과대적합은 훈련 정확도만 보면 좋아 보인다. 하지만 시험..

[밑바닥부터 시작하는 딥러닝 1] 10b. 배치 정규화는 왜 평균 0, 분산 1로 맞춘 뒤 다시 scale과 shift를 배울까

밑바닥부터 시작하는 딥러닝 1 - BatchNorm 심화초깃값은 학습 시작 시점의 분포를 다룬다. 배치 정규화(Batch Normalization)는 한 걸음 더 나아가 학습 중간에 각 층으로 들어가는 값의 분포를 직접 조정한다.이번 글은 BatchNorm을 '학습을 빠르게 한다'는 효과만 외우지 않고, 미니배치 평균과 분산으로 무엇을 바꾸는지, 왜 다시 gamma와 beta를 두는지까지 정리한다.이번 글에서 잡을 것BatchNorm은 미니배치 단위로 평균과 분산을 계산한다.입력값을 평균 0, 분산 1에 가깝게 정규화한다.정규화만 하면 표현이 너무 제한될 수 있으므로 gamma와 beta로 다시 확대/이동한다.초깃값 의존을 줄이고 학습을 안정적으로 만드는 데 도움을 준다.BatchNorm이 끼어드는 위치..

[밑바닥부터 시작하는 딥러닝 1] 10a. 가중치 초깃값은 왜 0이면 안 되고, 왜 Xavier와 He가 나오는가

밑바닥부터 시작하는 딥러닝 1 - 초깃값 심화신경망 학습은 가중치를 조금씩 고쳐가는 과정이다. 그런데 시작점이 나쁘면 아무리 좋은 학습 루프를 만들어도 신호가 잘 흐르지 않거나, 모든 뉴런이 비슷한 일만 하게 된다.이번 글은 초깃값을 단순히 '랜덤으로 둔다'에서 멈추지 않고, 왜 0이면 안 되는지와 왜 활성화 함수에 따라 Xavier와 He 초깃값을 다르게 쓰는지까지 정리한다.이번 글에서 잡을 것모든 가중치를 0으로 두면 여러 뉴런이 같은 값으로 갱신되어 대칭성이 깨지지 않는다.초깃값이 너무 크면 활성화값이 극단으로 몰려 기울기 흐름이 약해질 수 있다.초깃값이 너무 작으면 여러 뉴런의 출력이 비슷해져 표현력이 줄어든다.Sigmoid/tanh 계열에는 Xavier, ReLU 계열에는 He 초깃값이 자주 쓰..

[밑바닥부터 시작하는 딥러닝 1] 10. 초깃값, 배치 정규화, 드롭아웃은 학습을 안정시키는 장치다

밑바닥부터 시작하는 딥러닝 1 - 학습 관련 기술들신경망은 구조만 만든다고 잘 학습되지 않는다. 출발점이 나쁘거나, 층을 지나며 값이 치우치거나, 훈련 데이터에만 지나치게 맞춰지면 성능이 흔들린다.6장의 여러 기술은 서로 다른 문제를 다룬다. 초깃값은 출발점을, 배치 정규화는 중간 분포를, 드롭아웃과 가중치 감소는 과대적합을 다룬다.이번 글에서 잡을 것가중치를 모두 0으로 시작하면 대칭성이 깨지지 않는다.Sigmoid/tanh에는 Xavier, ReLU에는 He 초깃값이 자주 쓰인다.배치 정규화는 미니배치 단위로 데이터 분포를 평균 0, 분산 1에 가깝게 맞춘다.가중치 감소와 드롭아웃은 과대적합을 막는 대표적인 방법이다.하이퍼파라미터는 시험 데이터가 아니라 검증 데이터로 조정한다.초깃값을 모두 0으로 하..

[밑바닥부터 시작하는 딥러닝 1] 09b. SGD, Momentum, AdaGrad, Adam은 실제로 무엇을 다르게 계산하나

밑바닥부터 시작하는 딥러닝 1 - optimizer 심화앞 글에서는 SGD가 왜 지그재그로 움직이고, Momentum과 AdaGrad가 무엇을 기억하는지 큰 흐름을 잡았다. 이번 글은 그 흐름을 코드와 숫자 표로 조금 더 내려놓는 심화편이다.목표는 optimizer 공식을 모두 외우는 것이 아니다. 같은 기울기가 들어왔을 때 각 방법이 어떤 값을 저장하고, 다음 갱신에 그 값을 어떻게 다시 쓰는지 확인하는 것이다.이번 글에서 잡을 것SGD는 현재 기울기만 사용한다.Momentum은 이전 이동량 `v`를 누적해 관성을 만든다.AdaGrad는 과거 기울기 제곱합 `h`를 누적해 보폭을 줄인다.Adam은 기울기의 방향 평균과 크기 정보를 함께 사용한다.optimizer의 차이는 결국 기억 변수와 보폭 조절 방..