무작위 초기화
로지스틱 회귀에서는 그렇지 않지만, NN 에서 가중치를 0 이 아닌 랜덤한 값으로 초기화 하는 것은 매우 중요함
위 그림에서, 이 모두 0으로 초기화 된 2x2 행렬이라고 가정했을 때 가 되기 때문에 같은 활성화 값을 가지게 되버리고 히든 레이어의 노드 갯수가 의미 없어짐
역전파 시 도 성립함
이처럼 레이어의 노드들이 모두 동일한 값을 가지고 계산하게 되는 상황을 “대칭한다” 라고 표현함
경사 하강을 한번 수행 해도 값이 변하지 않으므로 같은 값 (이 경우 0) 으로 초기화 하면 안됨
Python 에서 올바른 가중치 초기화 방법
W1 = np.random.randn((2,2)) * 0.01
b1 = np.zeros((2, 1))
W2 = np.random.randn((1,2)) * 0.01
b2 = np.zeros((1, 1))
# b2 = 0
- 0.01 을 곱하는 이유
- 활성화 함수를 계산 할 때 값이 너무 크면 기울기가 0과 너무 가까워지기 때문에 더 많은 경사 하강 반복이 필요해질 수 있음