작성
·
434
0
안녕하세요 파이썬 머신러닝 완벽가이드를 통해 잘 공부하고 있는 학생입니다.
다름이 아니고 경사하강법 파트를 공부하다 질문 사항이 생겨 글 남깁니다.
경사하강법의 원리를 배우며, 손실함수의 최저점을 찾기 위해 (손실함수 값이 낮아지는 방향성을 찾기 위해) R(w0,w1)에 대해 편미분을 하는 것은 이해했으나,
w1(new) = w1(old) + n(보정계수)*(편미분값)
w0(new) = w1(old) + n(보정계수)*(편미분값)
w1,w0을 업데이트 하는 과정에서
왜 원래의 값에서 보정계수*편미분값을 빼게 되는 것인지 그 원리가 잘 이해되지 않습니다 ㅠㅠ
편미분은 대략 기울기, 변화량 정도를 의미하는데 .. 그 값에 보정계수를 곱하고, 원래 값에서 빼게 된 값이 그 기울기만큼 감소한 지점의 f(w) 함숫값(?)이 되는건지..? 그렇다면 왜 그렇게 되는 건지 궁금합니다 ㅠㅠ
제가 질문을 제대로 설명한 건지 모르겠네요.
강의 항상 잘듣고 있습니다. 감사합니다.
답변 1
1
안녕하십니까,
음, 무척 본질적인 질문이군요.
예측값과 실제값의 차이(loss)를 감소시킨다는 방향성을 적용한다는게 기존 weight에서 얼마나 변경을 시켜야 하는 걸로 생각해 주시면 어떨까 싶습니다. 손실함수의 최저점을 가지는 weight를 바로 찾기는 매우 어려운 문제이기 때문에 손실함수의 최저점으로 향하는 방향성을 반복해서 조금씩 찾아내는 것입니다. 이 최저점으로 향하는 방향성을 편미분을 통해 Gradient로 계산하게 되면, 이는 기존 weight에서 얼마나 변경을 해야 하는가를 의미하게 됩니다. 그래서 이 Gradient를 기존 weight에서 보정계수를 곱해서 - 시켜주게 됩니다.
속도를 미분해서 나오는 가속도의 경우도 가속도 자체로서 의미가 있지만, 전체적으로는 속도가 앞으로 증가할지, 감소할지를 판별하게 되고, t+1 시점의 속도는 t의 속도에 가속도를 적용해서 얻어지게 됩니다.
우리가 구하는 gradient는 loss를 감소시키는 방향성을 의미하는 미분 값이지만 실제로는 weight에 적용되어야만 합니다. loss를 최소로 하는 weight를 바로 찾아내기는 매우 어렵기 때문에 이러한 방식을 적용한 것입니다.
감소합니다.