딥러닝 2

딥러닝 | 가중치 초기화? (Weight Initialization)

딥러닝은 손실 함수를 최소화 하는 모델의 파라미터 즉, 모델의 weight 값을 알아내는 것이다. 일반적으로 gradient descent 알고리즘을 사용하는데, gradient descent 알고리즘은 initial point가 꽤나 중요하다. 이번에는 가중치를 초기화 하는 몇 가지 방법에 대해 정리하려 한다. 일단, 만약 표준정규분포(평균 0, 표준편차 1)를 이용해서 랜덤하게 weight를 초기화 하면 어떻게 될까? 레이어를 지날수록 점점 weight 값이 커지고 분산도 커진다. 이는 활성 함수를 통과하면 saturation 될 가능성이 높아지고 학습이 더 이상 진행이 되지 않는다. 그렇다고 평균은 0, 표준 편차가 0.01인 분포를 이용해서 초기화를 하면 어떻게 될까? 레이어를 지날수록 점점 we..

딥러닝 | 정규화? (Batch Normalization, Layer Normalization)

기계학습 살펴보기 할 때, 정규화와 표준화를 잠깐 언급하긴 했는데 이번에 좀 더 자세히 정리하려고 한다. 일단, 우리는 보통 zero-mean, unit-variance를 선호하는데 그 이유가 무엇일까? activation 함수를 생각해보자. 대부분의 활성함수는 0 부근에서 gradient 값을 갖고, 0에서 멀어지면 gradient가 거의 0에 수렴하게 되고 더 이상 학습이 진행되지 않는다. 따라서 우리는 데이터 인풋이 0 근처에 있었으면! 하는 것이다. 그래서 input을 어느정도 normalization 해주자!가 되는 것이다. 배치 정규화 (Batch Normalization) 위에서 언급했듯이, zero-mean, unit-variance를 위해서 아래 수식을 이용한다. (아래에서 소개할 레이어..