경사하강법 - 순한맛
미분이란?
미분(differentiation)은 변수의 움직임에 따른 함수값의 변화를 측정하기 위한 도구.
sympy 의 diff 함수를 사용하면 미분을 구할 수 있다.
미분은 함수 f의 주어진 점 (x, f(x))에서의 접선의 기울기를 구합니다.
경사하강법
미분값을 더하면 경사상승법(gradient ascent)이라 하며, 함수의 극대값의 위치를 구할 때 사용합니다.
미분값을 빼면 경사하강법(gradient descent)이라 하며, 함수의 극솟값의 위치를 구할 때 사용합니다.
경사상승/경사하강 방법은 극값에 도달하면 움직임을 멈춥니다.
따라서 미분이 가능한 함수의 x에서 접선의 기울기가 음수라면 x를 증가하면 감소한다.
미분값이 음수든 양수든 더하면 상승하고 빼면 감소한다 ??
극값에 도달하면 미분값이 0이므로 업데이트가 되지 않으므로 최적화가 자동으로 끝이 난다.
다만 미분값이 0이라고 해서 찾은 극소값이 꼭 함수의 최소값이 아닐 수 있다!! local minimum
경사하강법 : 알고리즘
#gradient : 미분을 계산하는 함수
# init : 시작점,
# lr : 학습률
# eps : 알고리즘 종료조건
var = init
grad = gradient(var)
while (abs(grad) > eps): # 정확히 0이 되는 것은 불가능하므로 > eps라는 종료조건이 필요하다.
var = var - lr * grad
grad = gradient(var)
종료조건이 성립하기 전까지 미분값을 계속 업데이트한다.
lr은 학습률로서 미분을 통해 업데이트하는 속도를 조절할 수 있다.
경사하강법 파트 -> var = var - lr * grad
learning rate은 중요하다.
각 변수별로 편미분을 계산한 그레디언트(gradient) 벡터를 이용하여 경사하강/경사상승법에 사용할 수 있다.
계산법
f(x, y) = x^2 + 2y^2라고 한다면
그레디언트는 2x, 4y인 셈
각각 마다 편향 미분을 해준 셈
경사하강법은 norm이 적용된다. 절대값 대신 놈
'Boostcamp AI tech 3기 > 개념 이해' 카테고리의 다른 글
torch.range is deprecated warning -> torch.arange (0) | 2022.01.25 |
---|---|
텐서 함수 조금 정리. 생성, 타입, select, cat, stack (0) | 2022.01.25 |
pytorch의 reshape and view 차이 (+ contiguity 문제) (0) | 2022.01.24 |
[Week02] Pytorch - 3강 Pytorch 기본 환경 세팅 : colab에서 ssh 연결해 vscode 실행하기 (0) | 2022.01.24 |
[Week02] Pytorch - 1강 Introduction to Pytorch (0) | 2022.01.24 |
[Week01] AI Math - 행렬과 역행렬 그리고 무어-펜로즈 역행렬 (0) | 2022.01.20 |
[Week01] AI Math - 벡터의 길이, 각도, 내적 구하기 (0) | 2022.01.20 |
jupyter notebook : ModuleNotFoundError 모듈 설치했는데도.. (0) | 2022.01.20 |