대칭적 가중치 문제
- 왼쪽 연산과정에서 두개의 가중치가 같음
- 경사도가 같기 때문에 같은 값으로 갱신됨
- 두 노드가 같은 일을 함
- 난수로 가중치를 초기화해 중복노드를 야기하는 대칭을 파괴(오른쪽 그림)
난수로 가중치 초기화
-
가우시안, 균일분포에서 난수 추출, 두 분포의 성능 차이는 거의 없음
-
AlexNet: 평균 0, 표준편차 0.01인 가우시안에서 난수 생성
-
ResNet: 평균 0, 표준편차 인 가우시안에서 난수 생성, 편향 0 설정
-
요즘엔 많이 사용하지 않음
다른 방법들
- [Saxe2014]: 가중치 행렬의 행 혹은 열이 수직이 되도록 설정
-분포로 난수만들고 가중치 설정, 가중치 행렬을 특이(SVD)분해로 분해한 후 가중치 재조정
W = np.random.randn(ndim, ndim)
u, s, v = np.linalg.svd(W) <- u 수직 초기화 가중치 행렬
- [Sussilo2014]: 임의 행로 활용하여 설정
- [Sutskever2013]: 가중치 초기화와 가속도를 동시에 최적화
- [Mishkin2016]: 가중치 분포가 아니라 노드의 출력 값 분포가 일정하도록 강제화
- 1단계: 수직 규칙을 적용하여 갖우치를 초기화
- 2단계: 하나의 미니배치를 가지고 전방 계산을 수행하면서 가중치 조정. 이 때, 각 츠엥 대해 노드 출력값의 분산이 1이 될 때까지 가중치 조정함