지난 포스트에서 NN에서 w값을 스스로 조절하는 방법을 찾았다고 했다.
w값을 조절하는 일련의 과정을 "학습"이라고 한다.
비유를 좀 하자면 Training Data가 교과서, Learning Algorithm이 암기하는 학원이라고 생각하면 좋다.
암기한 Training Data를 기반으로 새로운 입력이 들어왔을때 스스로 추측하여 답을 내는 것이다.
갑자기 학습 알고리즘이 뭔가 싶다. 그치만 어렵지 않은 개념이다.
"학습"은 connection weight인 w값을 조절하는 과정이고, 이 w값들을 계속해서 스스로 조절하는 과정이라는 뜻이다.
w값을 어떻게 조절하지...?
원하는 결과값과 NN이 출력해낸 출력값이 얼마나 차이나는지를 바탕으로 다음 w값을 조절해 주면 되겠네!
이게 학습 알고리즘의 개념이다.
학습 알고리즘을 사용하려면 우선적으로 [원하는 결과값과 실제 출력값의 차이] 가 필요하다.
이걸 수식으로 표현하면 다음과 같다.
결과값과 출력값의 차이:
수식 쓰기 힘드네....
아무튼 차이의 정도를 나타내기 위해 제곱을 한 것이고, 사실 절댓값을 붙여도 전혀 문제될건 없다고 한다.
위에서 서술한 수식을 보면, Error 함수는 w에 대한 함수임을 알 수 있다.
왜냐고? 그야 x는 트레이닝 데이터의 입력값이고, t도 트레이닝 데이터의 출력값이라 모두 상수이기 때문이다. 둘 다 입력값이라는 뜻임...
그래서 Error를 최소화 하는 방향으로 w를 개선하는 과정이 학습이라 보면 되겠다.
그렇다면 어떻게 최소화 할 것이냐? 바로 미분이다.
고등학교 때 미분을 배웠다면 미분 값이 0이 될 때 함수가 최소/최대 값을 가지게 된다는 것을 이해할 것이다.
그 중 함수가 최소값을 가지게 되는 상황의 미분값 변화는 미분값이 큰 값에서 작은 값으로 점점 작아지는 상황인 것도 당연하다.
이게 무슨 뜻이냐...면
위의 사진과 같이 기울기의 크기가 점점 작아지는 쪽으로 w를 옮겨야 한다!가 핵심이다.
그래서 이런 방법을 Gradient Descent Method라고 하고,
그렇게 w를 얼마나 옮겨야 하는지를 구한 뒤, 그걸 반영해서 다시 w를 조절하는 과정이 Error Back Propagation이다
Error Back Propation을 자세하게 파고들려면 합성함수의 미분과 꽤나 복잡한 과정의 수학 연산을 해야하기에 스킵하도록 하겠다.
나만 알고 스킵해버리기~
사실 다른 포스트에 너무 잘 설명돼있어서.... 애초에 설명을 위해 작성하는 포스트도 아니기도 하고!
아무튼 다음 포스트는 오버피팅에 대해 작성할 계획!