Andrew Ng 2일차-만만치 않은, 기반 다지기

gradient descent 란 한 지점에서 기울기가 가장 가파른 지점을 찾아서 그 방향으로 이동하는 것이었다.

 

이것이 J의 극점, 나름의 최저점을 찾는 방법이다. J가 뭔지조차 생각이 안나는듯 하지만, 간신히 실제 데이터와 예측값의 차이를 뜻한다는 사실을 상기시킬 수 있었다.
그 방향을 찾는 방법은 예상외로 간단하지만서도 직관적으로 와닿지가 않아서 애를 좀 먹고 있다. 한 지점에서 접선을 그렸을 때, 접선과 수직인 방향이 가장 기울기가 가파른 방향이 되는 것인데, 왜일까?!

 물론 위 그림과 같이 입체모형에서의 접선을 그었을 경우에는 그 방향이 가장 가파른 방향이 되는 것이 맞다. 그것이 접선의 정의이니까. 하지만 세타0과 세타1에 대해서 각각 편미분을 해주었을때 나오는 값은 입체상에서의 접선(세타0과 세타 1의 값에 따른 J값의 변화량)이 아니라 등고선 상에서의 접선, 즉 세타0이 변함에 따라 세타1이 얼마나 바뀌는지를 알려주는 값이 될 것이다. 



강의 자료에 따르면 접선의 방향이 J의 편미분값에 따른다고 되어 있다. 내가 편미분의 정의를 헷갈린 모양이다. J를 세타0에 대해 편미분했을 때 세타0이 향하는 방향이 정해지고, 세타1에 대해 편미분했을 때 세타1의 방향이 정해지는 것이 맞을 것이다. 

저 위의 그림에서 각 점 사이의 거리를 별로 중요하게 생각하지 않았는데 learning rate라고 해서 나름대로 중요한 parameter가 되는 듯하다. (식에서는 알파로 표시되었다) 따지자면 다음 단계를 밟는 속도라고 생각하면 될 듯하다. 강의에서는 J가 극점으로 감에 따라서 우변의 우항이 0으로 수렴하므로 자연스레 세타값이 수렴한다고 설명하고 있는데, J가 극점으로 가는 것이 결국엔 세타값이 수렴하는 것이므로 이상한 논리적 오류를 범한게 아닌가 싶다. A=B이므로 B=A다 라는 식의 순환 논리 오류라는 느낌이 강하게 든다. 하지만 learning rate를 굳이 지금 따질 필요는 없다. 편미분은 어차피 제수를 0으로 보낸다는 전제가 있으므로 여기서 learning rate는 무한 소라고 보고 넘어가면 될 것 같다.

이것으로서 week 1이 끝이 났다. 약간 맛뵈기 식이었지만 예전에 배운 것들을 몽땅 잊어버린 상태에서 기반을 다시 다지는 작업이 만만치는 않다. 

댓글

이 블로그의 인기 게시물

아두이노 - 안드로이드 블루투스 연결 및 실시간 그래프 표현 (1)

opencv feature matching 으로 월리 찾기

라즈베리3에 텐서플로 설치 & Python 3.6 설치