2019. 2. 8. 10:39ㆍArtificial Intelligence
*첨부자료의 모든 저작권은 Coursera에 있음을 미리 밝힙니다.
Neural Networks(3)
- Cost Function & BackPropagation
이번 시간에는 Neural Networks의 Cost Function에 대해 살펴보고
저번 포스팅에서 살펴보았던 Forward Propagation에 이어 error 를 최소화하기 위한 하나의 방법인
Back Propagation Algorithm에 대해서 간략하게 살펴보고자 한다.
Cost Function의 식은 Logistic Regression의 식과 굉장히 비슷하다. 아니 사실상 동일하다고 봐도 무방하다. 한 가지 차이점은, h(theta) 함수, 즉 가설함수의 개수(Neural Network의 경우 k개, Logistic Regression의 경우 1개)일 뿐이다. 그 이유는 간단하다. Neural Network의 경우 결과를 나타내는 함수의 개수가 여러개이기 때문이다. 즉, Neural Network System은 oneVsAll 모델과 비슷하게, 0아니면 1이 아닌, 여러가지 0, 1들의 조합들을 통해 결과를 표현하기 때문이다. 간단하게 Neural Network를 나타낸 다음 그림을 보면 이해가 더욱 쉬울 것이다.
Logistic Regression 모델과는 다르게 가설함수의 개수가 4개임을 알 수 있다. 따라서 이 가설함수의 개수를 나타내는 K만 고려해준다면 Neural Network Cost Function은 Logistic Regression Cost Function과 큰 차이가 없다.
Back Propagation Algorithm
Back Propagation Algorithm은 Neural Networks Cost Function을 Minimize하기 위한 방법으로 이전 포스팅에서 살펴봤던 Forward Propagation 을 거꾸로 시행하여 오류를 수정해 나가는 방법이다.원리는 다음과 같다.
첨부된 사진 위와 같은 신경망을 가지는 Neural Network Model이 있다고 하자. 이때, 우리가 BackPropagation Algorithm을 통해 구해야 하는 것은 전체 Error중에서 w10^(1)이 차지하는 비율을 구하고 그 비율만큼 수정해 주는 것이다.
이는 편미분을 통해 가능하다. 편미분의 자세한 과정은 위의 사진에 첨부되어 있다.
즉, Back Propagation Algorithm이란, 전체 에러에 대해서 각각의 weight들이 얼마만큼의 비중을 차지하고 있는지를 편미분을 통해 구한 다음에 그것을 거꾸로 빼줌으로써 Algorithm의 성능을 개선하는 방식이다. 이를 프로그램으로 구현할 때 모든 weight들의 원소에 대해 각각 계산하는 것은 비효율적이므로 벡터적인 성질을 이용하여 계산하면 된다.
Back Propagation Algorithm의 수행 과정은 다음과 같다.
1. 우선 delta vector를 도입하여 모든 값을 0으로 초기화한다. 이 delta vector는 갱신될 weight들을 축적하는 Accumulator 역할을 하며, 나중에 weight값을 갱신할때 사용하게 될 것이다. (Cost Function의 gradient 값으로 사용한다.)
2. 모든 parameter에 대해 Forward Propagation을 수행한다. 일단 Forward Propagation을 수행해야 Total Error를 구할 수 있고, 이 Total Error로 부터 Back Propagation의 모든 단계가 시작된다.
3. 가설함수의 결과에서 y값을 뺀 오류를 계산한다.
4. 벡터적 성질을 이용해서 델타 항을 계산한다.
*BackPropagation에 대한 시각적인 설명을 원한다면 아래 링크로 들어가 Youtube 영상을 참조하는 것을 권한다.
왜 이런식을 곱하고 이렇게 더하는거지? 에 대한 설명을 시각적으로 이해시켜주는 좋은 자료이다.
'Artificial Intelligence' 카테고리의 다른 글
Bias & Variance (0) | 2019.02.12 |
---|---|
Neural Networks & BackPropagation with Octave (0) | 2019.02.11 |
Multi-Class Classification with Octave (0) | 2019.02.08 |
Neural Networks(2) (0) | 2019.02.07 |
Neural Networks (1) (0) | 2019.02.07 |