
640
4
밑바닥부터 구현하는 딥러닝
진행된 후에는
0
에 가까운 결과를 얻게 될 것입니다.
>>> x = torch.randn(200, 100)
>>> for i in range(50): x = relu(x @ (torch.randn(100,100) * 0.1))
>>> x[0:5,0:5]
tensor([[0.0000e+00, 1.9689e-08, 4.2820e-08, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 1.6701e-08, 4.3501e-08, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 1.0976e-08, 3.0411e-08, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 1.8457e-08, 4.9469e-08, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 1.9949e-08, 4.1643e-08, 0.0000e+00, 0.0000e+00]])
이는 역시나 잘못된 초기화 때문입니다. 왜 그럴까요? 글로럿과 벤지오가 논문을 쓸 당시만 해
도, 신경망에서 가장 인기 있는 활성화 함수는 하이퍼볼릭 탄젠트(
tanh
)였습니다. 즉 이 초기
화 방식에는
ReLU
를 전혀 고려하지 않았죠. 다행히 이후
ReLU
에 적절한 값의 범위를 계산한
사람이 있습니다. 케이밍 ...