Processing math: 100%

ABOUT ME

-

  • [Regression]회귀(Regression)와 경사하강법(Gradient Descent)
    Engineering/AI 2021. 4. 17. 15:10

    1. 회귀(Regression)

    머신러닝의 회귀는 어떤 특징 값 하나를 숫자로 추정하여 출력하는 과정이다. 최초로 회귀 분석이라는 용어를 사용한 사람은 영국의 유전학자 프랜시스 골턴으로 부모와 자녀 키 사이의 상관관계를 연구하며 '두 값 사이에 깊은 상관관계가 있지만 세대가 지남에 따라 키가 계속 커지거나 작아지려고 하기보다는 조사 집단의 평균값으로 돌아가려는 경향이 있다.'라는 가설을 세웠고 이 같은 분석 방법을 회귀(Regression) 분석이라고 불렀다.

     

    2. 경사하강법(Gradient Descent)

    이러한 머신러닝을 활용한 회귀에서는 최소가 0이 되는 계수를 바로 찾는 것보다 최소가 되는 계수를 향해 계수를 일정하게 수렴하게 만드는 경사하강법(Gradient Descent)을 사용한다. 경사하강법은 최적의 파라미터를 갱신해가는 방법으로 활용된다. 그렇다면 예시를 통해서 살펴보자.

    Figure 1. f(x)

    f(x)=(x1)2=x22x+1

    f(x)=2x2

    경사하강법의 경우 x에 일정한 값을 대입하여 f(x)가 최솟값이 되는 x를 찾아가는 과정이다. 최적화할 함수가 f(x)라고 하면 시작점 x0를 정한다. xi가 갱신된 x값이라고 할 때 그다음 이동할 점 xi+1은 다음과 같이 정의된다.

    xi+1=xiηf(x)x

    x:=xηf(x)x

    이때 η는 학습률(Learning Rate)이라고 하는 양의 정수이다. 학습률의 크기에 따라 최솟값에 도달하는 갱신 속도가 달라지기 때문에 적절한 학습률의 선정이 중요하다고 볼 수 있다. 

     

    3. 시작점과 학습률 선정의 중요성

    기본적인 경사하강법은 학습률과 시작점에 따라 발산과 느린 수렴 속도라는 문제점이 있다. 우선 발산하는 경우를 살펴 보면, 위에서 사용했던 예제에서 학습률을 1로 정하고 시작점을 x0=3으로 정할 때 발산한다는 것을 알 수 있다.

    Figure 2. Divergence

    x:=31(2x2)

    x:=31(2×32)=1

    x:=31(2×12)=3

    x:=31(2×32)=1

    이번에는 수렴 속도에서 문제가 생긴 예제를 살펴보자. 학습률을 0.1로 정하고 마찬가지로 3에서 시작해본다.

    Figure 3. Slow Convergence

    x:=30.1(2x2)

    x:=30.1(2×32)=2.6

    x:=30.1(2×2.62)=2.3

    x:=30.1(2×2.32)=2.1

    x:=30.1(2×2.12)=1.9

    학습률을 너무 작은 값으로 설정하게 되면 꽤 정확한 최솟값을 찾는 것은 가능하겠지만, 갱신 횟수가 증가하게 된다는 단점이 있다. 따라서 이러한 점을 해결하기 위해 적절한 학습률과 시작점을 선정하는 것은 매우 중요한 문제이다. 나중에 살펴볼 Adam 기법은 이 학습률을 적절하게 갱신해주는 효율적인 방법 중 하나이다.

     

    4. 매개변수 갱신식

    이제 이 매개변수 갱신식이 실제 머신러닝에서 어떻게 쓰이는지 관찰해보자. 우선 목적 함수를 아래와 같이 정의한다.

    fθ(x)=θ0+θ1x

    E(θ)=12nk=1(ykfθ(xk))2

    이때 θ0θ1의 갱신식은 아래와 같다.

    θ0:=θ0ηEθ0

    θ1:=θ1ηEθ1

    θ0에 대해 E를 미분하는 과정은 합성함수 미분법을 활용한다.

    Eθ0=Efθfθθ0

    식을 왼쪽, 오른쪽으로 나누었을 때 우선 왼쪽 식을 먼저 구해보기로 한다.

    Efθ=fθ(12nk=1(ykfθ(xk))2)

    =12nk=1(fθ(y2k2ykfθ+f2θ))

    =12nk=1(2yk+2fθ)

    =nk=1(fθyk)

    다음은 오른쪽을 계산해보자.

    fθθ0=θ0(θ0+θ1x)=1

    결론적으로 이를 합쳐보면 아래와 같다.

    Eθ0=nk=1(fθ(xk)yk)

     

    그렇다면 두 번째 매개변수 갱신식인 θ1의 갱신식을 살펴보자.

    Eθ1=Efθfθθ1

    달라지는 부분은 매개변수의 오른쪽 부분이 θ1로 편미분 하는 과정이다. 따라서 이 부분만 계산해서 곱해주기로 하자.

    fθθ1=θ1(θ0+θ1x)=x

    이 식은 아래와 같이 갱신된다.

    Eθ1=nk=1((fθ(xk)yk)×xk)

    이에 대한 값들을 갱신식에 직접 대입해주면 최종 갱신식은 아래와 같다.

    θ0:=θ0ηnk=1(fθ(xk)yk)

    θ1:=θ1ηnk=1((fθ(xk)yk)×xk)

    4. 다항식 회귀

    우리는 1차 함수 관점에서 회귀 그래프를 구해봤지만, 때로는 2차 함수와 같은 곡선의 형태가 적합한 결과물도 존재할 것이다. 이때 더 큰 차수를 가진 식을 통해 회귀를 정의해도 괜찮다. 어떠한 식이 가장 적합하게 그래프를 표현하는지는 실험해가면서 정하면 된다. 그러나 무작정 차수를 늘려가게 된다면 과적합(Overfitting) 문제를 겪게 된다. 데이터의 입출력 관계를 잘 규명했더라도 특정 케이스에서만 완벽하게 들어맞는 상황이기 때문에, 여러 다른 케이스에 적용할 때 문제가 발생할 수 있다. 이는 나중에 다시 이야기해보기로 하고, 본문에서는 갱신식의 관점에서만 살펴보자. n차 다항식일 때 우리가 θ1을 구했던 방식처럼 특정 변수에 대한 합성함수 미분 부분만 계산해주면 된다.

    fθ(x)=θ0+θ1x++θnxn

    Eθn=Efθfθθn

    앞은 동일하므로 뒤의 식만 살펴보면 된다.

    fθθn=θn(θ0+θ1x++θnxn)=xn

    Eθn=nk=1((fθ(xk)yk)×xnk)

    따라서 최종 갱신식은 아래와 같다.

    θ0:=θ0ηnk=1(fθ(xk)yk)

    θ1:=θ1ηnk=1((fθ(xk)yk)×xk)

    θn:=θnηnk=1((fθ(xk)yk)×xnk)

    5. 다중 회귀

    마지막으로 다중 회귀에 대해서 관찰해보자. 다중 회귀는 기존의 x라는 하나의 변수가 아닌 여러 변수를 사용하는 회귀이다. 일반적으로 열 벡터를 활용하여 아래와 같이 정의했다고 하자.

    θ=[θ0θ1θ2θn],X=[x0=1x1x2xn]

    그렇다면 다음과 같이 정의할 수 있다.

    fθ(x)=θ0x0+θ1x1+θ2x2++θnxn

    fθ(x)=θTX

    이때 앞서 진행한 방식과 비슷하게 합성 함수를 통해 다중 회귀의 매개변수 갱신식을 구할 수 있다. 일반화하기 위해 다중 매개변수 식의 특정 항 i를 기준으로 편미분 해보자.

    Eθi=Efθfθθi

    합성함수의 왼쪽은 우리가 매개변수 갱신식에서 구한 것과 같기 때문에 오른쪽 결과만 확인하면 된다.

    fθ(x)θi=θi(θTX)

    =θi(θ0x0+θ1x1+θ2x2++θixi++θnxn)

    =xi

    따라서 최종 특정 i번째 갱신 식은 아래와 같다.

    θi:=θiηnk=1((fθ(xk)yk)×xki)

    - Reference

    경사 하강법 설명 참고 : ko.wikipedia.org/wiki/%EA%B2%BD%EC%82%AC_%ED%95%98%EA%B0%95%EB%B2%95

    Figure 1, 2, 3 및 설명 참고 : Likelion k-digital training 2nd

     

    반응형

    댓글

Designed by Titus Choi.