가우시안 드롭아웃과 몬테카를로 드롭아웃을 알아보자.
우선 가우시안 드롭아웃을 살펴보자.
기존 드롭아웃은 확률적으로 노드들을 없앤다.
: 베르누이 1or0으로 드롭아웃될 확률이 p로 생략
Bern(1-p)를 따르는 값 m(0or1)들[1 0 0 1 1 1]을 이용하여 Wx와 element wise곱으로 없앨 노드는 없애는 것이다.
그렇게 학습한 후에 test에서는 1-p를 곱해 weight들의 값을 낮춘 후 진행한다.
가우시안 드롭아웃은 대신에 각각의 노드들을 가우시안 노이즈에 의해 조정한다.
평균이 1이고 분산이 p/(1-p) 인 정규분포를 따르는 적당한 실수값들이 나온다. 즉, wieghted sum Wx에 가중치를 부여한다고 생각하면 된다.(그렇기에 노드들은 사라지지 않는다.)
이 방식을 사용한다면 노드 connection이 사라지지 않고, 애초에 평균이 1인 곳에서 가져온 m 값들이기에 test시 가중치를 조절할 필요가 없다!
왜 이렇게 복잡한 방식을 사용할까?
=> 모든 노드들이 살아있기에 모든 weight들이 iteration마다 backpropa로 학습할 수 있다. 이렇게 되면 weight update의 속도가 빨라진다.
이제 몬테카를로 드롭아웃을 알아보자.
Q. 몬테카를로?
반복적으로 random sampling을 진행한 후 그 sample들을 이용하여 어떤 함수값을 근사치로 구할 때 몬테카를로 라고 한다.
ex) 예를 들어 휘어진 동전의 앞면이 나올 확률을 알고 싶을 때, 몬테카를로 기법으로 근사치를 알 수 있는 것이다.
dropout에도 몬테카를로를 적용시키는 것인데, 여기서 특징은 test에도 dropout을 하게 된다. 구조를 바꾸지 않기에 유용하고 그렇게 되면 하나의 input에 대해 dropout을 할 때 마다 output이 달라지게 된다. output이 적당한 확률분포를 따라서 나오게 된다는 것인데, 베이시안 머신러닝의 일종이 된다. output이 어떤 확률분포로 나오기 때문에 하나의 값만 나오는 deterministic이 아니라 stochastic이다. 같은 input에 대해서 다른 여러 output이 나오기에 이를 이용하여 평균값으로 예측을 할 수 있게 된다. 분산 또한 좋은 정보를 주는데 분산의 값은 불확실성을 이야기할 수 있으며, 신뢰도를 말할 수 있기에 활용하여 정보를 얻을 수 있게 된다. 아래와 같은 그림에서도 2시그마 오차 범위 즉, 95%의 신뢰구간 내의 정보를 확인할 수 있다. 여기서는 training set과 가까울 때는 정확히 예측할 수 있지만 뒤로 갈 수록 신뢰도가 낮아짐을 확인할 수 있다. 이렇게 더 많은 정보를 얻을 수 있는 것이다.
또 다른 장점으로는 예측값의 여러 샘플들을 만들 수 있다.
고려대학교 오승상 교수님 딥러닝 강의 : https://www.youtube.com/watch?v=amp72pSviI8&list=PLvbUC2Zh5oJvByu9KL82bswYT2IKf0K1M&index=15