5기(210102~)/B팀

모두의 딥러닝 2 Lec 14 ~ 17 review

KAU-Deeperent 2021. 2. 4. 10:47

안녕하세요 B조 김주안입니다. 팀내에서 나온 질문과 토의했던 부분을 중심으로 리뷰하도록 하겠습니다. 

1. "Sigmoid 는 왜 Vanishing Problem 이 생기는 가?" 에 대한 수학적 고찰

일단 시그모이드를 미분하고 그래프를 그려봅시다

 이 궁금증을 해결하기 위해서는 몇가지 요건을 이해해야 합니다. 퍼즐조각 모으듯이 하나둘 관찰하면 나중엔 노력하지 않아도 이해할 수 있습니다. 먼저 sigmoid 를 미분해야 합니다. 위의 식처럼 미분이 되는데요, 그래프를 그려보면 sigmoid 함수의 미분값은 1/4을 넘지 않는다는 것을 알 수 있습니다. (이거 나중에 쓸겁니다. 기억하세요)

 

체인룰은 개념을 이해하는 것이 좋습니다

 다음은 Back propagation을 할때 사용하는 Chain rule 을 이해해 보는 것입니다. 일단 간단한 예시를 위해 몇 가지 조건이 붙은 신경망을 그렸습니다. bias = 0 이고, 변수가 하나인 단 변량 신경망입니다. 마지막으로 weight_init 은 표준적으로 적용하는 -1 에서 1 사이의 값으로 초기화 되어있다고 생각하겠습니다. (이거 나중에 쓸겁니다. 기억하세요)

 

왼쪽아래에 있는 톱니바퀴그림을 보시면 가장 왼쪽의 톱니에 가장 오른쪽의 톱니가 얼마나 영향을 미치는지 알고싶다면 중간 톱니를 무시할 수 없듯이 신경망 구조도 마찬가지 입니다. 결과적으로 나온 Cost 에 w1 이 미치는 영향을 알고싶다면, w1이 w2에 미치는 영향을 알아야하고 이는 미분값들의 곱으로 표현됩니다.

 

 사실 미분이라는 개념자체가 x,y 그래프에서 x의 아주 작은 움직임에 y의 변화량을 나타낸 기울기의 개념이기 때문에 다른 말로 하면 x가 y에 얼만큼 영향을 주고 있는가 라고 이해를 할 수 있습니다. 그렇다면 chain rule 도 어쩌면 당연한 식입니다. 각각의 톱니가 직후 톱니에 관한 영향을 얼마나 주었는가(미분)를 그저 곱한 식이기 때문입니다. 

 

 우리는 w1의 값을 갱신하기 위해서 Chain rule 의 값을 기존 값에서 뺍니다. (:=) 이 기호는 대입입니다. 그렇다면 Vanishing Problem 은 무엇인가요? 바로 저 Chain rule 의 값이 아주 미약해서 Multi Layer 신경망에서 이전 Layer 로 갈수록 변화량이 희미해진다는 의미입니다. 

 

 여기까지 무리가 없으셨다면, Chain rule 식의 중간부분을 조금만 변형해봅니다. 이제 마지막 단계입니다.

 

매직아이 같죠. 뭐 조금 바꿨더니 당연하게 보입니다.

 이 중간 두항을 고치려고 하는데 z1, z2는 그저 이전 신경망에서 토스해준 값으로 치환해서 생각해주시면 됩니다. (weight  * 이전 hidden layer의 output) 이제 z를 이용해서 각항을 표현하면 sigmoid 를 미분한 꼴로 생각할 수 있습니다. 앞 항을 보면 분모에 있는 hidden2 = z1/w3 이고, 분자는 output 이니 z1을 sigmoid 한것입니다. 그 표현 그대로 써준 것을 생각해보면 그냥 대입입니다. 다 끝났습니다. 이제 관찰하면 됩니다.

 

 아까 Sigmoid 의 미분값은 1/4을 넘지 않는 다는 것을 확인했고, weight_init 은 모두 -1과 1사이로 초기화 됐으니 층이 깊어 질수록 1이 안되는, 적어도 1/4 이하의 값이 계속해서 곱해지는 것을 볼 수 있습니다. 즉, 기하급수적으로 Chain rule 값이 줄어드는 것입니다. 그렇다면 층이 깊어질수록 weight 변화량이 미약해지니 Vanishing Problem 이 생기는 것입니다. 끝.

2. "Drop out 을 쓰면 정확도가 떨어지는데 쓰면 안될까?" 주의할 점

 간혹 Drop out 과 같은 over fitting방지 알고리즘을 사용하다보면 알고리즘 없이 well fitting 되었을 때보다 정확도가 낮아진 것을 확인할 수 있다. 이때 우리팀에서 나온 질문은 위와 같다. 정확도가 줄어드니, 사용하지 말아야 하는 경우가 있는 것인가? 이다. 

 

 바로 여기서 주의할 점이 있다. MIT Andrew ng 교수님이 말씀하셨다. Overfitting을 막기 위한 것과 정확도를 올리는 것을 간혹 헷갈려 할 수 있다고, 즉 설탕넣고 짠맛나는지 확인하는 짓을 가끔 할 수 있다는 것이다. 실제로 지금 실습에 나온 데이터는 overfitting 이 날 수 있는 확률이 적어 드라마틱한 결과를 확인 할 수 있지는 않지만 비전과 같은 분야에서는 항상 데이터가 부족하기 때문에 default 로 overfitting 방지 알고리즘을 적용하긴 한다. 하지만 사용해야 할 때를 가릴때 그 목적 자체를 헷갈리면 안된다는 점을 항상 명심해야 한다.