Machine Learning and Deep Learning

[Deep Learning] Week3-4 Random Initialization

Kkamang 2021. 2. 25. 21:22

Random Initialization in Neural Network 

Logistic Regression에서는 Theta값(뉴럴 네트워크에서의 w,b와 같은 추정치)을 초기에 0으로 설정했었다. 그러나 Neural Network에서는 w값을 0으로 설정할 경우 layer가 아무리 깊어져도 각각의 neuron들이 같은 연산을 해버리는 symmetry 문제가 발생한다.

 

Neural Network의 weight(w)를 초기 설정할 때에는 특별한 방법을 사용해줘야한다. (b는 zeros로 세팅해도 되는 것과 다르게) 

$ w^{[1]} =np.random.randn((2,2))*0.01 $

weight를 b와 마찬가지로 0으로 초기세팅하지 않는 이유는 Symmetry 문제를 방지하기 위해서이다. 

 

만약 

$ w^{[1]} = \left[
\begin{matrix}
    0 & 0 \\
    0 & 0 \\
\end{matrix}
\right]
$

이고 

b도 0이라면 \( a_1^{[1]} = a_2^{[1]} \)가 되며  \( z_1^{[1]} = z_2^{[1]} \)가 된다. 

 

그리고 \( dW^{[1]} = {1 \over m}dZ^{[1]}X^{T} \) 이므로,

dW값은 행을 기준으로 대칭이 된다. 따라서 결과적으로 \( W^{[1]} \)의 값도 행을 기준으로 대칭이 되고 이는 Neural Network의 성능을 약화시킨다.