Skip to content

Latest commit

 

History

History
148 lines (56 loc) · 6.82 KB

Day2_경사하강법.md

File metadata and controls

148 lines (56 loc) · 6.82 KB

경사하강법

미분 (Differentiation)

image-20210806190115371

  • h 값이 0이 수렴함에 따라 x 점에서의 순간 변화율을 의미한다.
  • 다변수 함수의 경우 필요한 변화율에 대한 변수에 대해서 미분을 진행한다.

다변수 함수의 경우 각 변수 별 편미분 값을 계산한 gradient 벡터를 이용하여 경사 하강/상승법에 활용 할 수 있다.

image-20210807162648133

경사상승법 (Gradient ascent)

함수 값을 증가시켜야 하는 경우 : 미분 값을 x 값에 더해주는 것을 반복 함으로서 극대값을 구한다.

경사하강법 (Gradient descent)

함수 값을 감소시켜야 하는 경우 : 미분 값을 x 값에 빼주는 것을 반복 함으로서 극소값을 구한다.

  • 미분값 > 0이면, 증가하는 기울기에 있으므로 미분 값을 더하면, x+f′(x)>x , 오른쪽으로 이동하여 함수 값이 증가한다.

  • 미분값 < 0이면, 감소하는 기울기에 있으므로 미분 값을 더하면, x+f′(x)<x , 왼쪽으로 이동하여 함수 값이 증가한다.

  • 미분값 > 0이면, 증가하는 기울기에 있으므로 미분 값을 빼면, xf′(x)<x , 왼쪽으로 이동하여 함수 값이 감소한다.

  • 미분값 < 0이면, 감소하는 기울기에 있으므로 미분 값을 빼면, xf′(x)>x , 오른쪽으로 이동하여 함수 값이 감소한다.

Day1에서 학습한 것과 같이 선형 모델의 경우에는 무어-펜로즈 역행렬을 통해 최소값을 구하는 것이 가능하다.

BUT! 비선형의 경우에는 경사하강법을 이용해야 최소값을 구할 수 있다.

  • TIP !

    ∇(nabla)f'(x) 대신 사용하며 모든 변수에 대해서 동시에 업데이트 하는 것을 의미한다.

    Ex)

    f(x, y) = x2 + 2y2f = (2x, 4y)

    • gradient 벡터 ∇f(x,y) 는 각 점 (x,y)에서 가장 빨리 증가하는 방향과 같다.
    • 반대로, gradient 벡터 -∇f는 ∇(−f)와 같고, 이는 각 점 (x,y)에서 가장 빨리 감소하는 방향과 같다.
    image-20210807165105019

    선형 회귀 계수, 경사 하강법으로 구하기

    || y - X||β2 이 선형 회귀를 하고자 하는 목적식이라고 한다면,

    우리의 목적은 이를 최소화하는 β 값을 구하는 것이라고 할 수 있다.

    image-20210807170313593

    위와 같은 식으로 목적식을 표현 할 수 있다.

image-20210807170501820

  • 이때, 동작 원리를 이해하기 위해 편미분을 하는 것을 직접 유도해보는 것을 권장한다.

이해를 돕기 위한 한가지 포인트

데이터가 n가 있다는 가정 하에 미분을 하기 때문에 1/n 나누어 주는 연산을 해준 후에 root를 취해준다.

image-20210807174311357

이 과정을 결과로서, 목적식을 최소화하는 β를 구하는 식을 다음과 같이 구할 수 있다.

image-20210807174941860

  • 실제 계산을 할 경우 L2-Norm 을 최소화 하는 것이나 (L2-Norm)2 을 최소화 하는 것이나 같기 때문에 연산이 간단한 (L2-Norm)2 을 사용한다. 이는

image-20210807175354748

으로 나타낼 수 있다.

확률적 경사 하강법 (Stochastic Gradient Descent : SGD)

경사하강법(Gradient Descent)을 진행할 시에 전체 데이터를 사용하는 것 대신 한개 또는 일부 활용하여 경사하강법을 진행하고 변수를 업데이트한다.

  • 전체 데이터로 1번의 업데이트를 하지 않기 때문에 연산량이 감소하고, 자원을 효율적으로 사용 할 수있다.
  • 하지만, 전체 데이터를 사용하지 않기 때문에 극소값으로 최단 경로로 이동하지 않는다.

image-20210807180804218

SGD의 장점

  1. 경사하강법(Gradient Descent)의 경우

    볼록 함수에서 적절한 hyperparameter(학습률와 학습 횟수) 값이 주어졌을 때 수렴한다.

    선형 함수에서 L2-Norm 으로 구하는 목적식의 경우에는 볼록함수이므로 수렴을 보장하지만, 비선형 함수의 경우 볼록하지 않을 수 있다. 이때, 경사하강법(GD)은 수렴을 보장하지 않지만, SGD의 경우에는 일부의 데이터를 활용하기 때문에 수렴한다.

    • SGD는 일부 데이터를 사용하기 때문에 hyperparameter에서 mini-batch size도 고려해주어야 한다.

image-20210807181603137 image-20210807181647288

​ <선형 함수와 비선형 함수에서의 극소값을 구하는 모습>

  1. SGD의 경우

    매 step마다 다른 batch에 들어 있는 각각의 데이터를 사용하기 때문에 목적식이 계속 바뀐다.

    목적식이 모양이 계속 바뀌면서, 경사하강법에서는 극소점이던 곳이 mini-batch에서는 극소점이 아닐 수 있다. 이것은 다른 말로 표현하면 극소점이 아닌 local minimum에서 탈출 할 수 있다는 말이다. (반대로, GD는 목적식이 바뀌지 않으므로 local minimum 탈출이 불가능하다.)

image-20210807182431108

<적당한 batch-size를 설정하게 되면 진동량이 적어지고 안정적으로 극소값으로 수렴한다.>