가중치 초기화

행동하는 개발자·2022년 11월 10일
0

PHM

목록 보기
10/43

딥러닝과 가중치

딥러닝에서 가중치를 초기화하는 것은 매우 중요하다. 각 뉴런들은 가중치 값을 갖고 있고, 이것을 학습하여 어떠한 '지식'의 형태로서 문제를 해결한다.

첫 위치를 잘 정하는 것이 좋은 학습을 위한 조건이기 때문에 상황에 맞는 적절한 가중치 초기화 방법을 찾게 되었다.

  1. Zero initialization

모든 파라미터 값을 0으로 놓고 시작하면 되지 않을까 하지만 파라미터의 값이 모두 같다면 역전파를 통해서 갱신하더라도 모두 같은 ㄱ밧으로 변하게 된다. 신경망 노드의 파라미터가 모두 동일하다면 여러 개의 노드로 신경망을 구성하는 의미가 사라진다.

결과적으로 층마다 한 개의 노드만을 배치하는 것과 같기 때문에, 초깃값은 무작위로 설정해야 한다.

-> 2. Random Initialization

따라서 확률분포를 사용할 수 있다. 정규분포를 이루는 값을 각 가중치에 배정하여 모두 다르게 설정할 수 있다. 정규분포를 이루는 값을 각 가중치에 배정하여 모두 다르게 설정할 수 있다. 100개의 노드를 5층으로 쌓인 신경망을 보자.

  • 표준편차가 1

활성화 함수로부터 0과 1에 가까운 값만 출력되는 것을 확인할 수 있다. 이렇게 되면 학습이 일어나지 않는 기울기 소실 현상이 발생하게 된다.

  • 표준편차가 0.01

그림과 같이 기울기 소실효과는 발생하지 않았지만 대부분의 출력값이 0.5 주변에 위치한 것을 확인할 수 있다. 앞에서 말했듯이 모든 노드의 활성화 함수의 출력값이 비슷하면 노드를 여러개로 구성하는 의미가 사라진다.

  1. Xavier Initialization

이 초기화는 고정된 표준편차를 사용하지 않고 이전 은닉층의 노드수에 맞춰서 변화시킨다.

앞의 두 그림보다 훨씬 더 고르게 퍼져 있는 것을 확인할 수 있다.

  1. He Initialization

ReLU 함수를 활성화 함수로 사용할 때 추천되는 초기화 방법이다.

3의 방법은 층이 깊어지면 분포가 치우치지만 이 함수는 층이 깊어지더라도 모든 활성값이 고른 분포를 보이는 것을 확인할 수 있다.

이 함수를 가장 많이 사용한다.

profile
끊임없이 뭔가를 남기는 사람

0개의 댓글