[딥러닝] 성능향상(가중치 초기화)

Peter·2021년 7월 6일
0

딥러닝

목록 보기
20/47

대칭적 가중치 문제

  • 왼쪽 연산과정에서 두개의 가중치가 같음
  • 경사도가 같기 때문에 같은 값으로 갱신됨
  • 두 노드가 같은 일을 함
  • 난수로 가중치를 초기화해 중복노드를 야기하는 대칭을 파괴(오른쪽 그림)

난수로 가중치 초기화

  • 가우시안, 균일분포에서 난수 추출, 두 분포의 성능 차이는 거의 없음

  • 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이 될 때까지 가중치 조정함
profile
컴퓨터가 좋아

0개의 댓글