- Optimizer
- 딥러닝
- object detection
- image classification
- deep learning
- overfeat
- Weight initialization
- SPP-Net
- LeNet 구현
- Convolution 종류
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Today
- Total
I'm Lim
Zero Initialization 본문
Zero Initialization
Zero Initialization은 딥러닝 모델의 가중치 초기화 방법 중 하나이고, 가중치와 편향값의 초기 값을 모두 0으로 설정한다.
Zero Initialization의 문제점
흔히 알려져있는 Zero Initialization의 문제점은 모든 가중치의 값이 동일하게 업데이트 된다는 것이다. ( $S_i = \Sigma W_i * X_i$ )
그러나, Softmax를 통과하고 Cross Entropy를 거친 딥러닝 모델의 Back Propagation 연산과정을 직접 진행하면서 몇가지의 의문점이 생겼다.
Zero initialization 의문점
다음은 출력층에 Softmax를 사용하고, Loss function으로 Cross Entropy를 가지는 딥러닝 모델의 Backpropagation 연산이다.
보이다시피, 제일 마지막 레이어는 가중치의 값에 영향을 받지 않는다.
1 ) Sigmoid
만약, 레이어의 활성화 함수로 Sigmoid 함수를 사용한다면 $\dfrac{\partial E}{\partial W_{ji}}$의 식에서 $X_j$가 0.5가 된다. 그리고, $\hat y_i - y_i$ 는 실제 값과 예측 값의 차이에 의존하게 된다. 다시 말해, $\dfrac{\partial E}{\partial W_{ji}}$는 각기 다르게 가중치가 업데이트 된다는 것을 의미하지 않을까?
2 ) ReLU, tanh
만약, 레이어의 활성화 함수로 RelU나 tanh 함수를 사용한다면 $\dfrac{\partial E}{\partial W_{ji}}$의 식에서 $X_j$가 0이 된다. 그렇다면 모든 가중치 값들이 모두 동일하게 업데이트 된다는 것이 이해가 된다. 다만, $\dfrac{\partial E}{\partial b_{ji}}$는 $\hat y_i - y_i$이므로 1 ) 에서의 설명과 동일하게 bias는 제각각 업데이트 되지 않을까?
Zero Initialization 실험
Zero Initialization 실험을 위해서 간단한 딥러닝 모델을 생성하여 진행하였다.
- 모델 구조 ( batch_size = 128, learning_rate = 0.01, epoch = 30 )
- 첫 번째 레이어 : 200개의 node를 가진 Linear layer
- 두 번째 레이어 : 100개의 node를 가진 Linear layer
- 세 번째 레이어 : 10개의 node를 가진 Linear layer
- Loss function : Cross Entropy
- Optimizer : SGD
- 데이터 셋
- Mnist train 데이터 셋
- 실험내용
- 본 실험은 Zero Initialization시 Weight, Bias의 업데이트가 어떻게 진행되는지에 대해 분석한다. 따라서, minibatch가 한번 진행 될 때마다 Weight와 Bias를 모두 저장하여 이를 시각화하였다.
- 따라서, 저장된 총 갯수는 [60000 / 128] * 30 = 14040 이다.
1 ) Sigmoid 실험
- Weight 시각화
1 ) 첫 번째 Linear Layer weight 분석
위 그림은 하나의 입력데이터와 연결된 첫 번째 레이어의 모든 노드의 가중치를 시각화 시킨 것이다. (즉, 200개를 시각화 시킨 것이다)
첫 번째 레이어는 입력데이터에 의해 직접 데이터를 받는 레이어이기 때문에 위 backpropagation 연산과정에서 입력데이터의 값이 영향을 미치게 된다. 그렇기 때문에 입력 데이터의 값이 0인경우 가중치 업데이트가 전혀 이루어지지 않고, 데이터의 값이 0이 아닌 경우에 가중치 업데이트가 이루어지는 것을 확인 할 수 있다.
입력데이터에 따라 업데이트가 될 수도 있고 안 될수도 있지만 하나의 입력데이터와 연결된 모든 노드는 동일한 가중치로 업데이트 되는 것을 확인할 수 있다.
2 ) 두 번째 Linear Layer weight 분석
위 그림은 하나의 첫 번째 레이어 노드와 연결된 두 번째 레이어의 모든 노드의 가중치를 시각화 시킨 것이다. (즉, 100개를 시각화 시킨 것이다)
두 번째 레이어의 backpropagation은 정확히 $\dfrac {\partial E}{\partial W_{kj}}$와 동일하게 진행된다. 이는 두 번째 레이어의 가중치 업데이트가 $(\hat {y_i} - y_i)$ , $W_{ji}$ , $X_j (1 - X_j)$ 그리고 $X_k$ 에 의존하는 것을 알 수 있다. 우선 $X_k$는 첫 번째 레이어의 출력 값이다. 이는 동일하다. 그 이유는 첫 번째 layer weight 분석에서 유추할 수 있다.
다음으로, $X_j ( 1 - X_j )$는 activation function을 거친 값인데 이 값은 상수로 볼 수 있다. $(\hat {y_i} - y_i)$ , $W_{ji}$는 이 역시 상수 취급할 수 있다. 따라서, 특정 항이 0이 아닌 이상 동일하게 업데이트 됨을 알 수 있다.
3 ) 세 번째 Linear Layer Weight 분석
위 그림은 하나의 두 번째 레이어 노드와 연결된 세 번째 레이어의 모든 노드의 가중치를 시각화 시킨 것이다. (즉, 10개를 시각화 시킨 것이다)
이는 $\dfrac {\partial E}{\partial W_{ji}}$에 해당한다. $X_j$는 1 ) 과 2 )로부터 모두 같은 값임을 알 수 있고, 따라서, 세 번째 레이어의 업데이트는 $\hat y_i - y_i$에 의존하는 것을 알 수 있다.
- Bias도 같은 논리로 진행되기 때문에 생략.
결론적으로, sigmoid를 activation으로 사용하게되면 activation value 값들이 0이 아니게 되므로 업데이트가 진행이 된다. 또한, 마지막 레이어의 가중치는 다르게 업데이트 될 수 있다.
2 ) ReLU, tanh 실험
ReLU와 tanh는 activation value 값들이 ( $X_j$ ) 0이므로 weight 업데이트가 안될 것이라고 추측했다.
- Weight 시각화
1 ) 첫 번째 Linear Layer weight 분석
2 ) 두 번째 Linear Layer weight 분석
3 ) 세 번째 Linear Layer Weight 분석
예상했듯이, weight 업데이트는 전혀 이루어지지 않았다.
- Bias 시각화
1 ) 첫 번째 Linear Layer Bias 분석
2 ) 두 번째 Linear Layer Bias 분석
3 ) 세 번째 Linear Layer Bias 분석
Backpropagation시 마지막 레이어의 bias는 $X_j$의 영향을 받지 않는다. 그러나, 그 앞 레이어들은 $W$ 와 $X$의 영향을 받는다. 따라서, 마지막 레이어를 제외하고는 bias 업데이트가 되지 않는 것을 볼 수 있다.
'Deep Learning > Weight Initialization' 카테고리의 다른 글
Kaiming He initialization (0) | 2022.10.29 |
---|---|
Xavier Initialization (0) | 2022.10.23 |
Lecun Initialization (0) | 2022.10.23 |
Random Initialization (0) | 2022.10.23 |
Weight Initialization (1) | 2022.09.30 |