Processing math: 100%

ABOUT ME

후회없이 살고 싶습니다.

Today
Yesterday
Total
  • 머신러닝에서 선형과 비선형
    Math 2021. 7. 25. 15:56

    많은 머신러닝 서적에서 선형과 비선형이라는 말이 등장한다.

    개념이 잘 잡히지 않아서 정리해본다. 

     

     

    선형과 비선형의 개념은 선형대수학 책에서 선형변환을 통해 정의하게 된다. 

    선형성(linearity)를 따르는 변환 또는 함수들은 선형 변환, 선형함수라고 하고, 그 외의 모든 함수들은 비선형 변환, 비선형함수(non-linear function)이라고 한다. 

     

     

    그렇다면, 선형성이 도대체 무엇일까?

    위키피디아에는 다음과 같이 선형성이 수학적으로 정의되어 있다. 

     

     

    선형성의 정의

    함수 f가 선형이라면

    • 가산성(Additivity), 임의의 수(실수나 복소수) x, y에 대해 f(x+y)=f(x)+f(y)가 항상 성립한다.

    • 동차성(Homogeneity), 임의의 수 xα에 대해 f(αx)=αf(x)가 항상 성립한다. 

    • 두 식을 하나의 식으로 표현하면 f(ax1+bx2)=af(x1)+bf(x2)로 표현된다. 

     

     

    즉, 위의 성질들을 만족하면 어떠한 함수가 진행하는 모양이 직선이 된다는 뜻이다. 다른 말로 1차라고도 하지만 1차가 선형 자체를 의미하지 않는 경우도 많다. 

     

     

    머신러닝에서 예를 들어보자. 

     

    ReLU, GELU 함수

     

    ReLU의 수학식은 다음과 같다. 

     

    y=x(x>0)y=0(otherwise)

     

     

    딥러닝의 ReLU 함수는 x의 값이 0이하에서는 0, 0초과에서는 x 값을 그대로 출력한다. 이 함수는 직선이지만 비선형 함수이다. 왜 그럴까? 바로 위의 가산성을 만족시키지 않기 때문이다. 

     

     

    예를 들어보자. x가 -3, y가 4라고 하고 값을 넣어보면 가산성을 만족하지 않는다.

    f(3+4)=f(1)=1

    f(3)+f(4)=0+4=4

     

    즉, 14 가 되어 선형성의 정의에 맞지 않는다.

    ReLU 함수는 정의역에서 +, -, * 를 통해 연산한 값들이 치역에서 함수값들을 연산한 것들에 대해 선형적으로 사상(mapping)되지 못한다는 것을 뜻한다. 즉, 직선을 그리지 못한다는 것이다! 따라서 ReLU 함수는 비선형인 것이다!

    마찬가지로 동차성도 위의 값에 대해서 동차성도 만족시키지 않는다. 0 이하의 값에 대해서는 모두 0을 출력하기 때문이다. 

     

    머신러닝에서의 선형성과 비선형성

     

    머신러닝에서 가장 먼저 보게 되는 다항식 곡선 피팅 예시를 살펴보자.

     

    곡선을 피팅하기 위해 다음과 같은 식을 활용한다.

     

    y(x,w)=w0+w1x+w2x2+...+wMxM=Mj=0wjxj

     

    여기서 M을 차수라고 하며, jx의 승수이다. 패턴인식과 머신러닝 책에서는

    다항함수 y(x,w)x에 대해서는 비선형이지만 계수 w에 대해서는 선형이라고 한다. 

     

    다변수함수의 값 yx에 대해서는 비선형이고, w에 대해서는 선형이라는 의미이다. 이를

    matplotlib 라이브러리를 통해 확인해보자. 시각화할 수 있도록 2차까지만 전개해서 확인한다. 

    그림들을 확인해보면 w에 대해서는 함수값이 선형이고 x에 대해서는 비선형(곡선)임을 확인할 수 있다.  

    이를 확장하면 위의 식은 M-1 차원의 초평면을 이루게 될 것이다.

     

     

      

     

     

     

     

    출처

    [1] https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95_%EA%B2%B0%ED%95%A9

    [2] https://ko.wikipedia.org/wiki/%EC%84%A0%ED%98%95%EC%84%B1

     

     

    댓글

Designed by Tistory.