본문 바로가기
반응형

AI64

[Optimizer] SGD , Momentum , NAG , Adagrad , Adadelta , RMSprop , Adam Optimizer란 weight를 갱신하는 기법이다. 기본적으로는 gradient vector에 learning rate를 곱하여 갱신한다. Optimizer를 공부할 때 gradient자체가 loss에 미치는 영향력을 알려주는데 왜 learning rate을 또 곱해주는지에 대해 의문을 가졌었다. 혹시 weight를 갱신할 때 gradient에 learning rate이라는 것을 왜 곱하는지를 모른다면, optimizer를 공부하기 전에 아래 포스팅을 읽으면 도움이 될 것이다. https://amber-chaeeunk.tistory.com/75 weight를 갱신할 때 기울기에 왜 Learning rate를 곱할까? Optimizer를 공부하면서 Learning rate에 대해 의문이 들었다. Grad.. 2021. 8. 15.
[경사하강법] 미분 , 경사하강법 , gradient vector , 확률적 경사하강법 ( SGD ) 이번 포스팅에서는 weight 업데이트에 사용되는 경사하강법에 대해 정리할 것이다. weight를 조정하는 방법을 설명하기 위해 가장 먼저 미분부터 살펴본다. 그 이유는 기울기를 알면 변수를 어느 방향으로 움직여야 함숫값이 증가하는지 감소하는지를 알 수 있기 때문이다. 그 후 변수가 벡터인 경우의 기울기를 나타내는 gradient vector를 다룰 것이다. 1. 미분(differentiation) 미분은 함수 f의 주어진 점 (x, f(x))에서의 접선의 기울기이다. ※ 파이썬에서 미분은 sym.diff함수를 사용하여 계산할 수 있다. import sympy as sym from sympy.abc import x sym.diff(sym.poly(x**2 + 2*x + 3), x) #poly(2*x + .. 2021. 8. 9.
37~38 단계) tensor , 형상 변환 함수 ( reshape, transpose ) 텐서 지금까지는 '스칼라' 변수를 주로 사용했는데, 머신러닝 데이터는 벡터나 행렬 등의 '텐서'가 주로 사용된다. 따라서 이번 단계에서는 텐서를 사용시 주의할 점을 보면서 DeZero를 확장할 것이다. 1. 원소별 계산 add, mul, div, sin 등 함수를 구현하면서 입출력 값을 모두 스칼라로 가정하였다. 아래의 예시에서 x는 0차원의 인스턴스인 스칼라이다. import numpy as np import dezero.functions as F from dezero import Variable x = Variable(np.array(1.0)) y = F.sin(x) print(y) #variable(0.84147098) 만약 x가 행렬이라면 sin함수가 원소별로 적용될 것이다. x = Variabl.. 2021. 7. 17.
36단계) backpropagation 연결의 고차 미분 이외의 용도 지난 포스팅에서 backpropagtion 계산에서도 연결을 만들었다. 역전파의 계산 그래프는 고차 미분을 가능하게 하는 것뿐만 아니라 다른 용도로도 활용할 수 있다. 오늘은 다른 활용법에 대해 설명할 것이다. 1. double backprop의 용도 아래의 미분 계산 문제를 보면, 계산해야 하는 식에 이미 미분이 포함되어 있다. 즉, 미분이 포함된 식을 다시 미분해야 한다. 이 문제도 double backprop으로 계산할 수 있다. 먼저 이 식을 직접 계산해보면 다음과 같다. 마지막 식에 x = 2를 대입하면 100이 나온다. ※ 주의할 점은 위의 z식에서 x에 대한 y의 미분은 값이 아니라 식이다. 따라서 x = 2일 때 x에 대한 y의 값을 찾고, 그 값을 z에 대입하면 올바른 결과를 얻을 수 없.. 2021. 7. 15.
728x90
반응형