안녕하세요~


이번시간에는 가중치 초기값을 설정하는 것과 하이퍼파라미터에 대한 용어설명과 개념에 대해서만 설명하고 넘어가려고해요.



<1. 가중치 초기값 연구>


앞서 보았듯이 가중치값들이 어떻게 설정되어있는지에 따라서 DNN 모델의 성능이 달라져요. 그렇다면 최초의 가중치값들은 어떻게 설정하면 좋을까요? 


가중치 초기값 연구를 진행할때 기준점이 되는 부분은 hidden layer의 activation function 값들이 어떻게 변하는지 보는거에요. 예를들어서 activation function을 sigmoid function으로 썻다고 가정해볼게요. 활성화 함수로 시그모이드 함수를 사용하는 5층 신경망에 무작위로 생성한 입력 데이터를 흘리며 각 층의 활성화값 분포를 히스토 그램으로 그려볼거에요.



1) 가중치를 표준편차가 1인 정규분포로 무작위 초기화할 때의 각 층의 활성화값 분포


실험결과 활성화 값들이 0과 1에 치우쳐 있다는 것을 알 수 있어요 (시그모이드 함수값 범위는 0~1인거 알고계시죠?!). 시그모이드 특성상 값이 이와같이 분포되어 있다면 미분값이 매우 적기때문에 vanishing gradient 문제가 생기게 될거에요. 

<사진1>



2) 가중치를 0.01 표준편차로 초기화할 때의 활성화값 분포


sigmoid function을 거친 값들이 아래와 같이 분포되어 있어요. 조금 극단적으로 말하자면 가중치를 "0.01*정규분포"로 설정한다면 100개의 뉴런을 사용시 모두 같은 값(Wx)을 도출한다는 이야기가돼요. 어떤 입력이 들어오더라도 Wx결과가 모두 같은 값을 도출하게 된다면 그 DNN 모델이 복잡한 비선형 함수를 잘 표현할 수 있을까요? 결국은 100개의 뉴런을 사용하나 1개의 뉴런을 사용하나 큰 차이가 없어질거에요 (<- 이부분에 대한 보충설명은 여기 링크에서 '가중치 초기값' 부분을 살펴보시면 더 잘 이해하실거에요~)

 

<사진2>


이러한 문제들 때문에 He 초기값 설정방법, Xavier 초기값 설정방법이 제안됐어요. 이 두 개념에 대한 자세한 설명은 '밑바닥부터 시작하는 딥러닝'을 참고해주세요~





<2. 하이퍼파리미터>


DNN(Deep Neural Network)에서 사용하고 있는 하이퍼파라미터라는 용어는 상수값을 의미해요. 예를 들어, 가중치같은 경우는 학습을 하면서 지속적으로 바뀌기 때문에 '매개변수(parameter)'라는 용어를 사용하지만, mini-batch를 학습할 때 적용되는 batch의 크기 같은 경우는 학습 중에 변하는 것이 아니고 고정값으로 미리 정해주는 것이기 때문에 상수값이되요.


이렇게 상수값으로 설정할 수 있는건 각 층의 뉴런수, 학습률(learning rate) 등이 있어요. 


그런데 이러한 하이퍼파라미터마저도 최적의 값들을 찾도록 노력하고 있어요. 이러한 노력중 하나가 Bayesian optimization 기법들을 통해 최적의 값들을 찾는거에요.


사실 Bayesian optimization 기법에 대한 설명은 따로 챕터를 만들어야 할 정도로 설명할 부분이 많은 개념이기 때문에 나중에 공부를 하게 된다면 따로 다루도록 할게요.


여기에서는 하이퍼파라미터라는 개념과 하이퍼파리미터를 최적화시키는 방법에는 무엇이 있는정도만 알면좋을듯해요!  




자! 그럼 다음글에서 지금까지 배운 내용을 간단히 review해보면서 Deep Neural Network 챕터의 피날레를 장식해 보도록 하겠습니다!




[사진 래퍼런스]

<사진1,2>

밑바닥부터 시작하는 딥러닝

+ Recent posts