미분
의 개념과gradient vector
에 대해 공부- 경사하강법 (gradient descent)의 알고리즘과 실제 코드에서의 구현
- 접선의
기울기
를 이용해서 함수의 최솟값으로 점을 이동시키는 원리를 알면
이를 바탕으로 경사하강법의 알고리즘과 수식을 이해- 특히 변수가 벡터인 경우,
편미분
을 통해서 구한 그래디언트 벡터를 통해d-차원
으로 경사하강법을 확장할 수 있다는 개념
- 기울기 = 점 x와 h만큼 이동한 (x+h) 움직인 거리 h로 나눠주었을 때
sympy.diff
- 미분값을 더하고 감소시킴으로써,
함수 값 증감 가능
미분값이 음수
일 때,
미분값이 양수
일 때,
- 함수를 감소시키고 싶다면
미분 값을 뺌
- 미분값을 더해주므로써
함수를 최대화
- 미분값을 빼주므로써
함수를 최소화
gradient ascent/descent
는 극값에 도달하면 움직임을 멈춘다 (최적화
)
gradient
: 미분을 계산하는 함수
학습률
을 조심해서 다뤄야 하는 변수
ei
: 주어진 벡터 x가 있을 때 x의 i번째 벡터에만 영향을 주고, 나머지에는 영향을 주지 않음- i번째 벡터값만 1이고 나머지는 0인 단위벡터
- 특정 x벡터의 i번째 구성성분만 변화율을 줄 수 있음 →
극한 계산
- i번째 방향(변수)에서의
변화율
계산 가능x방향에서의 편미분만 계산해보면 y를 상수 취급하고 x에 대해서만 미분한 결과
만 나옴
- 의 도함수 = / 의 도함수 = / 의 도함수 =
nabla
: 주어진다변수를 입력
으로 가지는 함수의 그레디언트 벡터를 표시하는 기호
- 일반적인 d차원 공간에서 벡터에 적용되는 경사하강 · 상승법 사용 가능
- 우측 :
최소점
으로 흐르는 모습
- gradient ascent/descent는
최적화
를 할 때, 가장 중요한 개념