3. 경사하강법 (gradient descent)

Daisy 🌼·2022년 7월 11일
0

AI 기초

목록 보기
3/5
post-thumbnail

학습목표

  • 미분의 개념과 gradient vector에 대해 공부
  • 경사하강법 (gradient descent)의 알고리즘과 실제 코드에서의 구현
  • 접선의 기울기를 이용해서 함수의 최솟값으로 점을 이동시키는 원리를 알면
    이를 바탕으로 경사하강법의 알고리즘과 수식을 이해
  • 특히 변수가 벡터인 경우, 편미분을 통해서 구한 그래디언트 벡터를 통해 d-차원으로 경사하강법을 확장할 수 있다는 개념

1. 미분

  • 기울기 = 점 x와 h만큼 이동한 (x+h) 움직인 거리 h로 나눠주었을 때


  • sympy.diff

  • 미분값을 더하고 감소시킴으로써, 함수 값 증감 가능

  • 미분값이 음수일 때,

미분값이 양수일 때,

  • 함수를 감소시키고 싶다면 미분 값을 뺌



2. 경사상승법 (gradient ascent)

  • 미분값을 더해주므로써 함수를 최대화

3. 경사하강법 (gradient descent)

  • 미분값을 빼주므로써 함수를 최소화
  • gradient ascent/descent는 극값에 도달하면 움직임을 멈춘다 (최적화)

4. 경사하강법 : 알고리즘

  • gradient : 미분을 계산하는 함수

  • 학습률을 조심해서 다뤄야 하는 변수


5. 변수가 벡터이면, 편미분 사용

  • ei : 주어진 벡터 x가 있을 때 x의 i번째 벡터에만 영향을 주고, 나머지에는 영향을 주지 않음
  • i번째 벡터값만 1이고 나머지는 0인 단위벡터
  • 특정 x벡터의 i번째 구성성분만 변화율을 줄 수 있음 → 극한 계산
  • i번째 방향(변수)에서의 변화율 계산 가능
  • x방향에서의 편미분만 계산해보면 y를 상수 취급하고 x에 대해서만 미분한 결과만 나옴
    • coscos의 도함수 = sin-sin / sinsin의 도함수 = coscos / tantan의 도함수 = 1+tan21+tan^2
  • nabla : 주어진 다변수를 입력으로 가지는 함수의 그레디언트 벡터를 표시하는 기호
    • 일반적인 d차원 공간에서 벡터에 적용되는 경사하강 · 상승법 사용 가능


6. 그레디언트 벡터

  • 우측 : 최소점으로 흐르는 모습


7. 벡터의 경사하강법 알고리즘

  • gradient ascent/descent는 최적화를 할 때, 가장 중요한 개념



profile
세상을 이롭게하는 AI Engineer

0개의 댓글