[ML / Andrew Ng] Neural Networks - Cost Function ans Backpropagation
NN의 cost function은 logistic regression과 유사한 모양을 하고 있다. 하지만 그 연산 수에서 차이가 보이는데 그 전에 알아야 할 변수는 L : 총 layer의 개수, s_l : layer l의 unit 개수, K : output의 개수 이다. 그렇게 보면 logistic regression에서 layer와 output 개수만큼 더한 것이라 볼 수 있다.
우린 이 cost function을 최소화하기 위해 back propagation이라는 방법을 사용한다. 이는 logistic regression에서의 gradient descent와 유사한 역할을 하게 된다. 그렇게 하기 위해 우린 J함수와 J함수의 theta에 대한 편미분이 필요하다. 우린 위에서 J함수, 즉 cost function을 구했기에 편미분함수만 구하면 된다.
우선 error인 small delta를 선언한다. 이 값은 output layer에서 결과가 실제 y값과 얼마나 차이가 나냐를 나타낸다. 그리고 각 layer마다 error를 계산한다. delta는 위의 식처럼 계산되며 *는 element-by-element 곱이다. 맨 아래 식은 정규화항 lambda가 0일 때를 나타낸다.
그리고 이를 모든 training set에 적용해보면 순서대로 large delta를 0으로 우선 세팅한다. 그리고 forward propagation을 진행해 a를 구하고 small delta를 뒤에서 앞으로 구해준다. 이 값을 토대로 large delta를 구한후 마지막으로 J의 편미분함수인 D를 구하게 된다.
위 내용을 토대로 lambda를 0으로 설정한 뒤 small delta를 계산해보면 위와 같이 오른쪽에서 왼쪽으로 계산이 된다는 것을 확인할 수 있다. 이렇게 우리는 FP를 진행시켜 실제 결과값을 비교하여 J함수를 구하였고 BP를 진행시켜 J함수의 편미분함수를 구하였다. 이를 이용하여 weights와 bias를 효율적으로 갱신할 수 있게 되었다.