-
[Week 5] Cost Function and BackpropagationCourses/Andrew Ng - Machine Learning 2022. 1. 10. 19:10
Cost Function
신경망 알고리즘에서의 비용 함수에 대해 알아봅니다. 비용 함수를 구함으로써 적합한 파라미터 theta도 찾을 수 있습니다.
- L : 신경망의 총 layer 숫자. 위의 경우 L = 4
- Sl : 해당 layer의 유닛 숫자입니다. S1 = 3 , S2 = 5 ... (bias 제외)
Binary classification 이라면 가설의 출력은 실수 ( 0 또는 1 )이 됩니다. 따라서 마지막 출력층 SL도 1입니다.
Multi-class classification 이라면 가설의 출력은 클래스의 숫자와 동일합니다. 클래스의 수가 K 라면 출력 유닛의 숫자도 K입니다. 이 경우 가설은 R^K차원 벡터입니다. 출력1 = [1;0;0;0] , 출력2 = [0;1;0;0] ...
기존 로지스틱 회귀와 신경망의 비용 함수 비교입니다. Multi-class classification 문제에서도 범용적으로 쓰기 위해 출력의 모든 벡터의 합을 구하는 것을 볼 수 있습니다. 시그마 k =1 에서 k 까지의 합에서 확인 가능합니다. 만약 4개의 클래스를 갖는 문제라면 K=4 이고 1번 벡터부터 4번 벡터까지 오차의 합이 됩니다.
정규화 항도 달라집니다. 복잡해 보이지만 자세히 보면 모든 레이어의 모든 파라미터 theta의 원소를 합산하는 것입니다. 다만 바이어스 유닛에 대한 항은 정규화하지 않습니다.
Cost fuction and Backpropagation
비용 함수를 최적화하기 위한 알고리즘인 역전파에 대해 알아봅니다.
가설을 도출하기 위하여 순전파 알고리즘을 사용합니다. 입력에 대하여 theta1 을 곱한 값을 시그모이드 함수에 넣으면 2번째 층의 활성화 유닛들이 됩니다. 그에 바이어스 유닛을 더한 후 , theta2를 곱하고 시그모이드 함수에 넣습니다. 이런 과정을 출력까지 반복하여 가설을 얻습니다.
가설을 구했다면 오차를 구하기 위해 역전파 알고리즘을 적용합니다. 역전파는 말그대로 순전파의 반대로 출력층부터 입력층 방향으로 시작합니다.
delta j ^l 은 l층의 j번 유닛의 오차를 표기하는 방법입니다. 출력층의 오차부터 계산해봅시다. delta j ^4 의 오차는 a j^4 - y j 일 것입니다. (가설과 실제 결과의 차이) 그 다음 3층의 오차를 계산해봅니다. delta^3(3층 오차들의 벡터) 는 theta^3T * delta^4.*g'(z^3)과 같습니다. 이것이 오차항을 계산하는 결과입니다. g'(z^3)는 시그모이드 함수를 미분한다는 뜻이고 결과는 a^3.*(1-a^(3))이 됩니다. 이 결과를 반복하여 2층의 오차도 구합니다. 단 1층은 입력 층이므로 오차가 존재하지 않으니 구하지 않습니다.
여러 개의 데이터 셋이 있을 때 역전파 알고리즘을 적용하는 법입니다. m개의 학습 데이터 셋이 있을 때 , 델타는 각 층의 오차 행렬입니다. 이를 초기화합니다. For 루프문을 돌리고 순전파를 먼저 실행하여 마지막 층의 활성화 함수를 구합니다. 그 후 역전파 알고리즘을 실행하여 각 층의 오차들을 구합니다. 오차값을 축적하기 위하여 델타 행렬에다가 누적하여 더해줍니다.
그 후 정규화 항을 추가하고 학습 데이터 셋의 수로 나누어 줍니다. 대문자 D는 정규화하는 항과 하지 않는 항을 나눕니다. j=0일 때는 바이어스 항이므로 정규화 항이 없습니다.
delta j ^l 은 a j ^l의 오차라는 사실을 기억해야 합니다. 결국 오차는 비용 함수 cost(i)를 미분한 것과 같습니다. 역전파는 순전파처럼 오차항이 퍼져나가는 방식으로 전개할 수 있습니다.
마지막 항의 오차가 delta 1 ^(4) 이면 편미분하였을 때 , delta 2 ^(3) * theta 12 ^(3) 이 됩니다. 순전파의 파라미터 전개하듯 연결된 노드끼리 계산을 하면 됩니다.
혼자서 강의를 듣고 정리한 것이니 틀린 점이 있다면 언제든지 지적 부탁드립니다 :)
'Courses > Andrew Ng - Machine Learning' 카테고리의 다른 글
[Week 6] Evaluating a Learning Algorithm (0) 2022.01.14 [Week 5] Backpropagation in Practice (0) 2022.01.10 [Week 4] Neural Networks - Applications (0) 2022.01.08 [Week 4] Neural Networks (0) 2022.01.03 [Week 3] Logistic Regression Model (0) 2021.12.30