computer_study

[인공지능] Linear classifier(선형분류), Logistic regression (Numerical optimization) 본문

학교수업정리/인공지능

[인공지능] Linear classifier(선형분류), Logistic regression (Numerical optimization)

knowable 2020. 9. 10. 00:04

Linear classifier(선형 분류)

 

정의

주어진 속성의 선형결합을 바탕으로 분류를 수행한다. (직선으로 데이터를 두 그릅으로 분류한다.)

주어진 data D = {xi, yi} 이고 xi는 d차원vector, y ∈ {1,2} 일 때, (y는 class를 의미한다.)

wTx - b ≥ 0 이면 y(x) = 1 ,      wTx-b <0 이면 y(x)=2라고 분류할 수 있다 

training data D를 가지고 적절하게 b를 바꾸어가며 data를 완벽하게 분류하는 w를 찾는 것이 linear classifier를 학습한다 라고 한다.

(w vector의 inner product(wTx)를 사용하는 이유는 선과 같은 boundary를 이용하기 위해서이다.)

 

data D가 d-dimensional data라면, boundary는 (d-1)dimensional subspace가 되고, 이를 hyperplane이라고 부른다.

 

data가 위 그림 처럼 완벽하게 분류가 된다면 Linearly separable이라 하고, 하나의 선으로 완벽하게 분류하지 못한다면 Linearly non-separable하다고 한다.

 

 

 

Linear classifier이용하여 optimization하기

 

objective function을 만들어 optimization할 수 있다.

예시, Loss function

objective function의 예로, 실제 값 yi 와 precision함수(예측 값) f(xi;w)의 차이를 비교하는 식으로 Loss function을 만든다. 이를 이용해서 L(w)가 최소가 되게끔 하는 w값을 찾아내는 것이 Linear classifier을 이용한 optimization이고, learning한다고 한다.

w를 찾는 방법으론(learning의 방법) 크게 Analytic MethodNumerical Method가 있다.

 

 

 

 

Analytic Method

L을 w로 미분한 뒤 이가 0이 되도록 하는 w를 optimal solution으로 본다.

위 식에서 w를 구하는 방법은 knowable.tistory.com/37의 미분 예시 부분을 참고한다.

 

 

 

 

Numerical method

w를 수치해석 적으로 구할 수도 있다. 처음 w(w0)를 임의로 잡고, 더 적절한 w를 찾아가며 optimal한 w를 찾아나가는 방법이다. Numerical Method로는 Gradient descentOnline learning이 있다.

 

  • Gradient descent

출처 : https://towardsdatascience.com/coding-deep-learning-for-beginners-linear-regression-gradient-descent-fcd5e0fc077d

처음 임의의 w0를 잡고 그 지점부터, 일정 범위 안에 있는 점들 중 가장 작은 값을 다음 w로 정한다.

  • Online learning

data set이 굉장히 커지면서 data를 분석하여 예측하는 과정이 매우 오래걸리기 시작했다. 때문에, 여러 데이터 중 임의의 몇개만을 골라서 optimization을 하고 다음 단계로 넘어간다.

예시 : Mini-batch

k개의 data를 고른 후 다음 w값을 예측한다. 이후 매 단계마다 k개의 data만을 골라 다음 w값을 예측한다.

 

 

 

 

 

 

Logistic Regression

사용 이유

사실 위에서 얘기했던 Linear classifier의 f(x;w)= wTx인 경우는 굉장히 naive한 모델이다.

다음과 같은 data분류를 위해 wTx를 사용한다면, 다음을 각 class로 projection했을 때 

다음과 같은 그림이 나오게 된다. 이때 점 A는 f(x;w)와 굉장히 멀리 떨어져있게되고 이는 오차를 굉장히 크게 만든다.

이를 해결하기 위해서 sigmoid function을 사용한다.

다음과 같이 f(x;w)를 잡아야 오차를 줄일 수 있다. 이를 위한 예로 Logistic regression을 사용한다.

 

 

 

 

*sigmoid function(시그모이드 함수)

시그모이드 함수는 실함수로써 유계이고 미분가능하며, 모든 점에서 음이 아닌 미분값을 가지고 단 하나의 변곡점을 가진다. S자형 곡선 혹은 시그모이드 곡선을 가지며, 이에 대한 예시로는 로지스틱 함수, 아크탄젠트 함수 등이 있다.

로지스틱함수의 기본 꼴은 다음과 같다.

그래프는 a값에 따라서 모양이 달라진다.

즉, sigmoid function을 boundary로 사용했을 때, a가 작은 경우엔 새로운 training data가 들어온다 해도 많은 차이가 없다(조금만 움직인다.) 하지만 a가 큰 경우엔 data 구분이 크게크게 바뀌기 때문에, 새로운 training data에 따라 값이 크게크게 바뀐다.

 

data가 노이즈라면 a를 작게 만들어 둔감하게 만들고, 실제 정보라면 a가 크도록 만들어 민감하게 만드는 것이 좋다.

 

 

 

 

 

 

Logistic regression 1번예시

prediction 함수에 logistic함수를 넣고 오차를 minimize하는 w를 찾는 문제로 만들면, 이를 logistic regression의 한 버전이라고 할 수 있다.

Logistic function 예시

위에서 구했던 Loss function을 objective function으로 하고, prediction함수로 logistic function을 이용해보면

이를 미분해서 w를 구하기엔, 식 자체가 너무 복잡하므로 gradient descent를 이용한 update rule을 사용한다.

임의의 w0부터 시작해서 반복하여 minimum값을 찾을 수 있다.

 

위에 제시한 예시는 boundary가 무조건 원점을 지나게 되는 homogeneous equation이다. 원점을 지나지 않는 hyper plane을 구하기 위해서 exp(-wTx) 대신 exp(-wTx+b) 를 사용할 수 있다.

 

 

 

 

 

 

Logistic regression 2번예시

또다른 방법으론, 알맞게 분류 할 확률을 최대로 하는 방법으로 w를 구할 수 있다.

 

f(x;w)      :   위 logistic function의 1번예시와 같다.

L(w)        :   전체 i에 대해서 맞는 class를 선택 할 확률

f(xi;w)     :   yi가 1일 확률

1-f(xi;w)  :   yi가 0일 확률

y             :   {0,1}

라고 할 때

object function

이 L(w)가 최대가 되도록 하는 w가 optimal w가 된다.

 

w찾는 방법

Log함수는 monotonic increase(단조증가)함수이기 때문에, L에서나 log(L)에서나 최대값을 갖는 w 같다. 때문에, 식을 간단하게 하기 위해 양변에 ln을 취하고 식을 전개한다.

앞서 구했던 update rule또한 Logistic regression이지만, 지금 이 식이 일반적으로 Logistic regression이라 불리운다.

 

 

*logistic function의 미분값 ( f(1-f)x )는 외워두는 것도 좋다.

 

Comments