본문 바로가기

Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 3주차 강의노트 본문

AI/Machine Learning- Andrew Ng

Andrew Ng[앤드류 응]- Machine Learning(머신러닝) 3주차 강의노트

점핑노루 2021. 7. 5. 13:39

Logistic Regression - Classification


1강에서 supervised learning(지도 학습)은 크게 regression과 classification로 나눌 수 있다고 언급한 바 있다. 2강에서는 regression에 대하여 살펴보았고, 3강에서는 classification에 대하여 알아볼 것이다. Classification은 분류의 문제이며, 특정 이메일이 스팸인지 아닌지, 사기 온라인 거래임을 파악할 수 있는지 아닌지, 특정 종양이 악성인지 양성인지 확인할 수 있다. 분류할 종목이 2가지이면 {0,1} 두개의 결과값을 가지게 되며, 0과 1은 각각 "거짓", "참"으로 나눌 수 있다. 분류할 종목이 4가지라면 {0,1,2,3} 네개의 결과값을 가지게 된다. 

 

Classification을 regression으로 분류한다고 치자. 만약 위와 같은 자료가 있다면, regression을 구할 때 가설함수 h(x)를 활용해 그 값이 0.5이상이면 y=1, 0.5미만이면 y=0이라고 분류할 것이다. 그러나 regression은 이상치에 민감하다. 가령 우측 최상단에 있는 새로운 점이 형성된다면, regression은 분홍색 대각선의 모양으로 바뀌어, 실제로 악성이 아닌 종양도 악성으로 분류하는 치명적인 오류를 낳을 가능성이 있다. 

 

실제로는 h(x)가 0미만이거나 1초과인 경우도 발생한다. 그렇기에 우리는 logistic regression이라는 새로운 기법을 도입해 모든 h(x)값을 0과 1사이로 설정한다. 우리는 logistic regression을 classification의 용도로 사용할 것이다. 

 

Logistic Regression - Hypothesis Representation


앞서 설명하였듯이 우리는 가설함수 h(x)가 0과 1 사이이길 원한다. 또한 우리는 가설함수 h(x)가

로 이루어진다는 사실을 학습하였다. 그래서 우리는

값인 z를 조정하여 그 값이 0과 1사이에 오도록 할 것이다. 그 방법이 바로 Sigmoid Function(시그모이드 함수)를 활용하는 것이다. 시그모이드 함수의 식은 슬라이드에서 우측 상단의 네모이고, 그 개형은 바로 아래에 있다. 시그모이드 함수 값의 범위가 모든 z에 대하여 0과 1사이에 있음을 확인할 수 있다. θ는 parameter이라는 사실도 잊지 말자. 

 

 

악성/양성 종양의 예시로 돌아가보자. 만약 특정 x값에 대하여 h(x)값이 0.7이 나왔다면, 그것은 환자에게 종양이 악성일 확률이 0.7임을 알려주는 것이나 다름없다. 그리고 x가 주어졌고 θ가 parameter일 때, y=1일 확률을  왼쪽 아래의 파란 글씨와 같이 나타낸다. 오른쪽 아래에서 살펴볼 수 있듯이 x가 주어졌을 때 y가 1일 확률과 y가 0일 확률을 더하면 1이되고, 수식을 넘겨서 그 아래와 같이 뺄셈의 형태로 나타낼 수도 있다. 

 

Logistic Regression - Decision Boundary


여태까지 logistic regression식을 알아보았다. 가령 h(x)가 0.5 이상일 때 y=1이라고 치자. 그렇다면 시그모이드 함수에

따라

값인 z가 0보다 크면 h(x)가 0.5 이상일 것이다. 같은 원리로 y=0일 때 z는 0보다 작을 것이다.

 

θ가 적절히 설정되었다고 했을 때, 우리는 z값이 0이상, 혹은 미만인지 확인하면 된다. 그 결정 경계는 식에 따라 선형일수도 있고, 비선형일수도 있다.

 

Logistic Regression - Cost Function


Logistic regression에서 x^(i)값에 다른 y^(i)값은 항상 0또는 1이 나올 것이다.  그렇다면 θ값은 어떻게 정할까?

 

 

Logistic regression의 cost function(비용 함수)는

 

와 같은 모양이다. Linear regression과 다르게 1/2이 곱해져 있지 않다. 

 

Linear regression의 cost function(비용 함수)를 logistic regression에 대입하면, cost function이 convex한 형태로 나오지 않는다. 그래서 local minima 혹은 saddle point에 막혀 global optimum에 도달할 수 없게 된다. 우리는 logistic regression이 "convex"한 모양, 혹은 그와 비슷하게 나오도록 cost(h(x), y)를 조정해야 한다.

 

그래서 우리는 logistic regression의 cost(h(x),y)를 슬라이드와 같이 설정할 것이다. 

예를 들어 y=1이라 치자. 그 때의 식은 

꼴이며, 함수의 개형은 슬라이드의 왼쪽아래와 같다. 이 때 우리의 h(x)값도 1이라면, h(x)와 y값의 편차가 0이 되어 비용이 최소화될 것이다. 반면 y가 0에 가까워지면, h(x)값은 무한히 증가하며 h(x)와 y값의 편차 및 cost 또한 무한대로 증가할 것이다. 계속 설명하였듯이 우리는 cost를 최소화해야하기 때문에, 알고리즘은 cost를 0으로 내려오게 할 것이다. 

 

y=0일 때 

의 개형은 슬라이드의 왼쪽 아래와 같을 것이며, h(x)가 0일 때에는 비용이 줄어들지만 1과 가까워질수록 그 비용이 무한히 증가하여 cost가 증가할 것이다. 

 

Logistic Regression - Simplified Cost Function and Gradient Descent


 

우리는 여태까지 y=0, y=1일 때 cost function이 달라지는 모습을 보았다. 그러나 이를 하나의 식으로 나타내고 싶을 때에는 어떡해야 할까? 그 때는 슬라이드 아래 파란 글씨 부분처럼 y랑 (1-y)를 앞에 각각 붙여준다. 이러면 y=1일 경우 (1-y)가 0이 되면서 뒷항이 사라지고, y=0일 경우 앞 항의 y가 0이 되어 앞 항 전체가 사라지게 된다. 

 

 

최종 logistic regression의 cost function은 위와 같다. 그리고 우리는 최적의 θ값을 얻어내기 위하여 J(θ)를 최소화한다. 

그리고 θ들은 동시에 조정된다. 

Prediction equation h(x)가 파란색 글씨와 같은 꼴이었던 것 또한 잊지 말자. 

Logistic regresssion의 cost function은 linear regression의 cost function과 비슷한 꼴을 가지고 있다.

그리고 Logistic regression의 gradient descent를 구할 때에는 cost(h(x), y)를 편미분하고 α랑 곱한 다음, 기존의 θj에서 빼야한다. 그 과정은 파란색 테두리를 확인해보면 된다.

Logistic Regression - Advanced Optimization


 

우리는 θ가 주어졌을 때 gradient descent를 활용하여 optimization을 진행한다. 그러나 gradient descent 말고도 conjugate gradient, BFGS, L-BFGS 등의 optimization algorithms들이 존재한다. 이들은 learning rate α를 정하지 않아도 되고 gradient descent보다 빠르다는 장점이 있다. 그러나 복잡하다는 단점이 있다. 

 

Logistic Regression - Multiclass classification: One-vs-all


여태까지 2개의 항목을 분류하는 법을 배웠다. 그러나 슬라이드와 같이 여러 항목들을 분류해야할 경우에는 어떻게 할까?

 

 

여러 항목들을 분류할 떄에는 multi-class classification을 활용한다. 우리가 배워왔던 classification은 binary classification이다.

 

 

Multi-class classification을 할 때에는 one-vs-all(one-vs-rest)법을 사용한다. 위 슬라이드처럼 3개의 항목이 있을 때 특정 한 항목과 나머지 항목들을 비교하는 방법으로, 총 3C1인 3번의 classification을 거치면 된다. 마찬가지로 항목이 4개일 때는 4C1인 4개의 classification을 진행하면 된다.

 

 

그리고 각각의 h(x)를 측정하여 y=i일 확률을 구한다. 최종적으로는 h(x)가 최대인 클래스 i를 찾아낸다.

 

Regularization - The Problem of Overfitting


 

Overfitting이 무엇인지 알아보자. Overfitting은 위 세 linear regression 학습 결과 중에서 오른쪽 그림을 의미한다. 즉 자료가 training set에 너무 맞춰져 있어 새로운 예시들이 주어졌을 때 그에 대한 예측을 잘 못하는 경우를 의미한다. 이를 "High variance"라고도 한다. 거꾸로 왼쪽 그림 같은 경우, linear regression이 training set을 잘 반영하지 못한다. 이를 underfitting이라고 하며 "High bias"라고도 한다. 우리는 자료를 가운데 그림처럼, training set도 어느 정도 반영하며 새로운 예시들이 주어졌을 때 잘 학습하도록 해야 한다. 

 

Logistic regression에도 overfitting과 underfitting의 문제가 발생한다. 

 

 

Overfitting을 극복하기 위해서는

1. feature의 개수를 줄이거나 (수동적으로 feature을 고르거나 model selection algorithm을 돌려본다)

2. Regularization을 진행해야 한다. Regularization을 활용하면 feature의 개수는 유지하되 각 θj의 영향을 줄일 수 있다.

 

Regularization - Cost Function


 

θ3과 θ4의 값이 커질수록 "penalize"를 한다. 즉, θ3, θ4값을 0으로 가까이 만들고, 계수에 큰 숫자를 넣어 그 영향이 어느 정도 미치도록 한다. 하지만 그 영향은 미비하여 아무리 n차 함수(위의 예시에는 사차함수)의 꼴이 나타난다 하더라도 그보다 작은 함수(위의 예시에는 이차함수)로 줄어들 수 있다.

 

 

그래서 우리는 비용함수 J(θ)을 위와 같이 재구성한다. Parameter인 λ와 각 θj를 곱한 뒤 더한 형식이다. 이 λ는 앞서 말하였던 "penalize"를 하는 방법이다.

 

 

λ가 너무 클 경우 모델이 underfit할 수 있기 때문에 최적의 λ를 골라야만 한다. (4개의 선지 중 세번째 - 가 정답이다)

 

Regularization - Regularized Linear Regression


우리는 J(θ)를 통해 각 θ값을 최소화 해야한다. 

최소화하는 법은 위와 같다.

θ0일 때에는 regularization항이 빠진다. 그러나 θ0가 아닌 경우에는 뒤에 (λ/m)*θj항이 함께 빠진다. 두 번째 식을 θj로 묶어주면 세 번째 식이 나온다. 

 

normal equation에서도 뒤에 regularization term을 아래와 같이 더할 수 있다. θ0의 값은 포함하지 않으므로 행렬의 (1,1)위치가 0임을 확인할 수 있다. 또한 이는 feature의 수보다 data 수가 적을 때 발생하는 non-invertibility의 문제도 해결하는 데에 도움을 준다.

 

Regularization - Regularized Logistic Regression


Logistic regression을 regularize하는 법은 linear regression의 방법과 비슷하다. 단지 h(x)의 형태가 시그모이드 값이라는 점에서 차이가 존재한다. 

 

 

슬라이드 출처
https://www.coursera.org/learn/machine-learning?

 

기계 학습

스탠퍼드 대학교에서 제공합니다. Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine ... 무료로 등록하십시오.

www.coursera.org

 

 

Comments