다음 Gradient Descent 관련 기초 질문들에 대해 모두 잘 설명해 주실 수 있고, 코드로도 금방 보여주실 수 있나요?
그럼 보이저엑스 딥러닝 개발자 포지션에 지원해 주세요.
https://voyagerx.com
기다리겠습니다.
Q1. 신경망에서의 W가 3천만개가 있습니다. 이 중 하나의 W를 아주 조금 그러니까 0.0001 만큼 바꾸면 학습 예제(정답 세트)들중 하나의 X에 대한 예측값 Y 즉, Y_pred은 얼마나 바뀔까요?
A1. 아주 조금 (매우 미세하게) 바뀔 것입니다.
Q2. 1번의 답을 생각할 때 Activation Function의 형태도 고려하셨나요? 보통 사용하는 Activation Function은 연속적입니다. 이것이 연속적이라는 것과 1번 질문의 관계는 어떻게 될까요?
A2. 변화 또한 연속적이라는 의미입니다. Activation Function이 연속적이지 않다면 하나의 W가 미세하게 바뀐다고 하더라도, Activation Function에 의해서 변화가 Y_pred에 반영되지 않을 수 있습니다.
Q3. Y_pred이 조금 바뀐다면 Loss는 얼마나 바뀔까요? 일단 Loss는 RMSE Loss라고 한정 합시다. 그렇다면 학습 예제 전체에 대한 Total Loss는 얼마나 바뀔까요?
A3. Loss가 SVM loss와 같은 이산적인 loss라면 바뀌지 않을 가능성이 있지만 RMSE Loss라면 미세하게나마 Loss가 변화할 것입니다. Total Loss는 data loss \(L_i\)의 평균이므로 Total Loss 또한 아주 미세하게 변화할 것입니다.
Q4. 3차원 공간을 생각해 보세요. 3개의 축이 있는데 수평면(바닥면)의 2개축은 W1과 W2의 축이라고 하고, 수직선의 1개축(Z축)을 Total Loss의 축이라고 합시다. 그리고, 모든 W1, W2의 값에 대해서 (나머지 2999만 9998개의 W는 고정해두고) Total Loss의 값을 구해서 그 (w1, w2, t_l) 위치에 점을 찍어주기로 합니다. 앞의 1.2.3.의 연장선으로 생각해 보면 이 공간에서 이 점들의 분포는 어떻게 될까요? 그러니까 어떤 형태를 뛰게 될까요?
A4. 부분 부분 convex하면서 연속적인 분포일 것이라고 생각합니다. 매끄러운 종 모양이 여러개 있는 그런 모습 말입니다. 기본적으로 Gradient Descent가 convex한 함수에서의 opitmization 방법임을 감안하면 아마 그럴 것입니다. 그러나 global하게 convex한 분포임을 기대하기는 힘들것입니다. 만약 그랬다면 딥러닝은 아주 쉬운 최적화 문제에 속할 것이기 때문입니다.
Q5. 3번에서 Loss를 RMSE Loss가 아닌 다른 Loss라고 하면 4번의 답이 어떻게 바뀔까요? Y_pred과 Loss Function 사이에 어떤 관계에 있을 때 4번에서 답한 내용이 바뀌지 않을 수 있을까요?
A5. 예를 들어 SVM Loss라고 한다면, 마치 원형 계단(?)과 같은 모양일 것이라고 예상합니다. Y_pred와 Loss Fuction 사이에는 ‘연속성 (continuous)’ 관계가 보장되어야만 4번에서 답한 내용이 바뀌지 않습니다.
Q6. W1은 -0.1 변경 하면 Total Loss가 감소하고 W2는 +0.3 변경 하면 Total Loss가 감소한다는 것을 알았습니다. 이때 W1, W2를 동시에 변경, 즉 (-0.1, +0.3)을 한번에 해 주면 Total Loss는 감소할까요?
A6. 그러한 보장은 전혀 없습니다. Q4에서 제시한 그래프를 생각해보겠습니다. (W1-0.1,W2) , (W1, W2 + 0.3) 부분은 convex, (W1 - 0.1, W2 + 0.3)은 다른 두 점보다 z값이 크면서 concave한 모양을 쉽게 생각해볼 수 있습니다. 즉 Total Loss는 더 클 수 있습니다. 만약 Q6가 참이라면, Gradient Descent를 모든 parameter에 대해 동시에 수행하는 대신 하나의 parameter마다 개별적으로 수행하는 최적화가 가능할 것이라는 이야기와 동일합니다. 비슷한 예시로 안장점(saddle point)를 들 수 있습니다.
Q7. W 3천만개를 동시에 조정해서 Total Loss가 감소 하게 되었습니다. 이때 각 Example 들 하나하나의 Loss도 모두 다같이 감소 하였을까요? 8. Gradient Descent를 하는 도중 W 3천만개 전체의 Gradient가 동시에 0이 될 가능성이 어느 정도 있을까요?
거의 없다고 생각합니다. W 3천만개 전체의 Gradient가 동시에 0이 된다는 것은 Global Optima에 도달하였거나, 오버피팅이 성공적으로 이루어졌다는 뜻입니다.
Q9. GD를 하는 도중 어느 시점에 W 3천만개 중에서 1천만개의 Gradient가 0이었습니다. 하지만 2천만개의 Gradient는 0이 아니었기에 다같이 한번에 2천만개의 W를 조정하였습니다. 즉 GD를 한스텝 실행 하였습니다. 이렇게 조정 한 후에 다시 원래 Gradient가 0이었던 W들의 Gradient를 조사해 보면 그대로 0일까요?
그런 보장은 없습니다. 간단하게 W가 2개인 Q4의 그래프에서, saddle point의 경우만 고려해봐도 그렇지 않다는 것을 알 수 있습니다.
10. 그렇다면, W 3천만개가 동시에 0이될 가능성이 정말 없고, GD는 끊임 없이 실행할 수 있고, W는 계속 계속 영원히 조정 될 수 있는데, 왜 Total Loss는 무한히 줄어들지 않고 어느 시점에 이르면 증가, 감소를 반복 하면서 특정 값 이하로는 떨어지지 않는 듯한 양상을 보이게 될까요?
첫번째로는, gradient descent 과정에서 global opitma가 아닌 local optima에 수렴했을 때 나타나는 문제라고 생각합니다. 두번째로는, step size가 잘못 설정된 경우 opitma에 수렴하지 않아 해당 문제가 발생할 수 있다고 생각합니다. (사실 배우기로는 optima 주변에서 빙빙 돈다고 배웠는데 - step size 때문에 - 이게 맞는지 잘 모르겠습니다 하하)