brunch

매거진 딥러닝 101

You can make anything
by writing

C.S.Lewis

by TUGU Dec 17. 2018

로지스틱 리그레션의 Cost 함수란

딥러닝 101_Chapter 6

Cost 함수를 알아야 w, b를 학습시킬 수 있다. 딥러닝의 목적이 이것이다.


딥러닝에서 '러닝' 하는 것이 무엇이라고 했었나? 바로 error율이 작아지는 방향으로  w와 b의 최적 값을 찾아가는 과정이라과 했었다. 이 말이 수학적으로 무슨 의미이고, 지금 우리가 공부 중 인 Logistic  Regression에서는 이것이 어떻게 표현이 되는지 알아보자.

아래 내용을 보자. 문과생 혹은 수포자라면 정말 토 나오는 외계어 같을 것이다. 이해한다. 나도 직장 들어오고 나서 수학이라는 녀석을 10년간 쳐다본 적이 없었고, 오랜만에 log함수,  시그마(Σ) 같은 녀석들과 마주하게 되었다. 하지만 여러분, 기억을 더듬어 봐라. 우리가 이미 중, 고등학생 수학 시간에 수없이 맞닥뜨렸던 녀석들이다. 누누이 말하지만 인공지능, 머신러닝, 딥러닝은 중고등학교 수학적 내용으로 80% 이상은 이해할 수 있는 내용들이다. 지레 겁먹고 포기하지 말고 하나하나 차근차근 한번 살펴보도록 하자.


Logistic Regression이 손실,비용 함수의 정의


Sigmoid 함수

우선은 저번 글에서 다루었던 내용을 다시 한번 상기시켜 보자. 앞서 Logistic Regression을 구현하기 위하여 sigmoid라는 함수를 쓴다고 했었고, y^(또는 y hat, y predict)가 아래와 같은 수학적 정의를 가진다고 하였다. 복습하실 분은 지난 글을 참조 ( 1-5.Logistic Regression https://brunch.co.kr/@minsukshin/23)



예측값 y^와 정답 y의 차이, Loss(error)

딥러닝의 목적은 알고리즘이 예측한 y^ 와 정답 y(Ground truth)의 차이, 즉 error가 적도록 w, b와 같은 파라미터를 학습시키는 것이다. 따라서 당연히 Loss(error) Function에 대한 수학적 정의가 이루어져야 이 수치를 구할 수 있을 것이다.  


여기서부터가 조금 골 때리는 내용일 수 있기는 한데, 끈기 있게 한번 들여다보도록 하자. 우리가 아주 쉽게 생각할 수 있는 y^와 y의 Loss(error)를 나타내는 수학적 표기로는 둘의 차의 제곱을 반으로 나눈 정도가 있을 것이다.  그런데 실제로는 Logistic Regression에서 이와 같은 함수는 잘 쓰이지 않는데, 그 이유는  이 함수를 가지고 gradient descent를 사용하여 최적 값을 찾아갈 때, 아래 수식 옆에 꼬불꼬불한 그래프처럼, 군데군데의  local optima를 극복하지 못할 가능성이 크기 때문이다. 이에 대해서는 잘 이해가 안된다 하더라도 그냥 그런가 보다 하고 넘어가고, 다른 글에서 더 자세히 다룰 예정이다.


Log함수를 이용한 Convex한 Loss Function

그래서 이를 위해서 log함수를 사용하여 Loss Function을 아래와 같이 정의한다면, Convex(오목)한 함수를 구현할 수 있고 이러한 상황에서 w, b의 최적 값을 찾아가는 Gradeint Descent 알고리즘이 더 빠르고 정확하게 작동하게 된다. 아래 수식이 다소 복잡해 보일 수 있으나 눈을 크게 뜨고 천천히 훑어보면 그렇게 어려운 개념은 아니다.


L(y^,y)=-(y*logy^ + (1-y)*log(1-y^))가 Logistic Regression에서 가지는 수학적 의미는 이렇다. Logistic Regression은 Binary Classification을 구현하기 위한 알고리즘이므로, 아웃풋 y가 가질 수 있는 값은 0 아니면 1 둘 중의 하나이다. 따라서 y=1일 때, 그리고 y=0일 때로 나누어서 계산을 하면,


이렇게 표현이 되고 각각의 경우에 Loss값이 최소가 되려면 y=1 일 때는 y^이 커져야 하고, y=0일 때는 y^이 작아져야 한다. 각각의 경우에 수식의 앞에 마이너스 기호가 있다는 점을 참고하자. 참고로 log함수는 기본적으로 아래와 같이 생겼는데, 여기서 마이너스를 붙이면,  x축을 기준으로 대칭인 그래프가 그려질 것이다. 이 점을 참고하면 위에 언급한 말이 이해가 될 것이다.



log함수는 이렇게 생겼다



Cosf Function은 Loss의 합이다

그리고 가장 마지막에 정의한 Cost Function은 아래와 같다. Loss 함수 하나하나가 1번째, 2번째,,, m번째 트레이닝 데이터 셋 마다 계산이 되는데 이들의 총합을 의미한다. 아래 수식에서 y옆에 붙은 (i) 첨자는 i번째 데이터 셋을 의미한다. 일반적인 표기법으로 m번째 데이터셋이 있다고 표현하므로, i=1에서 m까지로 해서 시그마 기호를 사용하여 아래와 같이 수학적으로 Cost Function을 정의할 수 있다.

Cost Function


여기까지 수포자들께서 이해하시기에 다소 험난한 내용의 연속이었다. 하지만 여기에 쓰인 수식 하나하나를 차분히 들여다보면 분명히 고등학교 수준에서 충분히 해결될 수준의 내용들이므로, 포기하지 말고 끈기 있게 공부를 해 보도록 하자!


다음 글에서는 Cost Function을 가지고 도대체 어떻게 w, b를 학습시킨다는 것인지, 이를 위해서 이해하고 넘어가야 할 Gradient Descent 알고리즘이라는 녀석에 대해서 공부해 보도록 하겠다.




참조 : 강의 원본 출처 (앤드류 응 교수 딥러닝 강의)

Logistic Regression Cost Function (C1W2L03)

https://www.youtube.com/watch?v=SHEPb1JHw5o&list=PLkDaE6sCZn6Ec-XTbcX1uRg2_u4xOEky0&index=9

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari