Gradient Descent
ML 모델 에 대한 적합한 ( 와 같은) parameter 를 찾기 위한 방법
B) Visualization of Gradient Descent
아래는 parameter 와 에 대한 loss function 의 등고선 그래프이다. 이 그래프의 사용 목적은 비용 함수 가 등고면 바닥에 닿을 수 있는 parameter 를 찾기 위함이다. 즉, 두 parameter 의 적절한 값을 찾기 위해 비용 함수를 미분하여 어느 방향으로 parameter 값을 조정해야 하는지 확인 해야한다.

- 위의 십자가 모양의 표시는 parameters 가 변화한 순간들을 포착한 것이다.
- 변화한 순간의 간격이 일정한 듯 보이는데, 이러한 간격 (size of each step) 을 결정하는 것은 라는 학습률 (Learning rate) 이 결정한다.
- 또한 의 값이 어디서 시작하냐에 따라서 (그림에서의 두 빨간 동그라미들), parameter 가 수렴하는 값이 달라진다.
C) Gradient Descent for 2 Dim
gradient descent 알고리즘은 다음과 같은 수식으로 표현된다.
중요한 점은 각 parameter 에 대하여 업데이트 할 값 () 을 먼저 모두 구하고, parameter 의 값들을 update 해야 한다는 점이다.
아래 그림은 올바른 또는 올바르지 않은 update 방식을 나타낸다.

- 는 assign 의 의미가 있으며, 는 assert 의 의미가 있다. 즉, 는 의 값을 에 부여하고, 는 와 의 값이 일치하는지 확인하는 것이다.
D) Gradient Descents 의 직관적 이해
비용 함수 에서, parameter 을 찾기 위해, 다음과 같은 gradient descent 를 반복한다고 가정하자.
위의 식은 의 값은 점점 이 에 수렴하는 방향으로 update 될 것이다.
그 이유는 아래 그림을 참조하자.

여기서 의문이 생길 수 있다: learning rate 값이 크다면 step size 가 커져서 가 수렴하지 못할 텐데, 이 수렴하는 과정에서 값도 점점 줄여줘야 하는 것인가?
답: 적절한 값만 설정한다면, 그럴 필요 없다. 왜냐하면 값이 수렴할수록, 값도 0 에 가까워지므로 step size 가 감소한다.

E) 예시
E.1) Gradient Descent For Linear Regression
의 비용 함수 을 이용하여 gradient descent 를 진행해보자. MSE 를 고려한 비용 함수 는 다음과 같다.
그리고 에 적용되는 Gradient Descent 는 다음과 같다.
\displaystyle\theta_j:=\theta_j-\alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1) $$ 여기서 $\displaystyle J(\theta_0,\theta_1)=\frac{1}{2m}\sum^{m}_{i=1}(h_\theta(x_i)-y_i)^2$ 를 의미한다. 위 식을 풀어 쓰면 다음과 같다. - $\displaystyle\theta_{0}:=\theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)-y_{i}\right)$ - $\displaystyle\theta_{1}:=\theta_{1}-\alpha\frac{1}{m}\sum_{i=1}^{m}\left(\left(h_{\theta}\left(x_{i}\right)-y_{i}\right)\cdot x_{i}\right)$ # SGD 전체 데이터에 대한 gradient를 한번에 계산(i.e. batch GD)하지 않고 일부 example만 batch로 샘플링하여 계산하는 방식을 [[stochastic gradient descent]]라 한다. 이때 batch size $b=1$ 이면, 이를 online 또는 incremental learning이라고 부른다. 그리고 $m > b > 1$ 을 만족하는 경우는 mini-batch GD 라고 불리는데, 그냥 SGD로 혼용되어 불리기도 하는 것 같다. ## Mini-batch GD Use $b$ examples in each iteration where $b<m$ is the mini-batch size (e.g. $b=10$ and $m=100$).  ## Choosing Your Mini-batch Size - 학습 데이터 개수가 작을 경우 (약 2000 이하), batch gradient descent를 사용 - 일반적인 mini-batch sizes: 64, 128, 256, 512, (가끔 1024) - 추가로, 모든 mini-batch 사이즈가 CPU 또는 GPU 메모리에 들어가도록 할 것 # Related [[Newton-Raphson method]] [[Batch Gradient Descent]] # References