반응형
선형회귀모델
\begin{equation}
f(x)=wX+B
\end{equation}
$$ f'(x) = \lim_{x \rightarrow
0} \frac{f(x+h)-f(x)}{h} $$
Gradient Descent(경사하강법)
- 함수 값이 낮아지는 방향으로 독립 변수(W,B) 값을 변형시켜가면서 최종적으로는 최소 함수 값을 갖도록 하는 독립 변수 값을 찾는 방법이다.
- 함수의 최소, 최대값을 찾기위해 사용하는 방법으로 미분 계수가 0이 되는 지점을 찾는다.
- 하지만 함수의 형태가 복잡해서 정확히 0이되는 지점을 찾기는 불가능에 가까워서 0에 가까운 epsilon값을 사용
- 아래와 같이 w와 b를 개선해서 error가 최적의 w와 b를 구할 수 있다
- w와 b에 대해서 각각 편미분을하고 학습 데이터의 개수로 나눠서 평균을 구해준다.
- 그 후 w와 b를 갱신한다.
함수식은 y = 7x+2다
for i in range(100):
_y = train_x * w + b
error = np.sum((_y - train_y) ** 2) / n_data
gradient_w = np.sum((_y - train_y) * train_x) / n_data
gradient_b = np.sum((_y - train_y)) / n_data
w -= lr_rate * gradient_w
b -= lr_rate * gradient_b
errors.append(error)
- 위에서 축적한 errors를 출력해보면 아래와같다
from IPython.display import clear_output
import matplotlib.pyplot as plt
%matplotlib inline
def plot(errors):
clear_output(True)
plt.figure(figsize=(20,5))
plt.ylabel('error')
plt.xlabel('time step')
plt.plot(errors)
plt.show()
Stochastic Gradient Descent(확률적 경사하강법)
- 확률적 경사하강법은 학습 데이터의 일부를 사용한다.
- 일부를 사용하기 때문에 진폭이 크고 불안정하지만 학습량이 많은 경우에 좋은 메모리 효율을 갖고있다.
- ex) 1epoch를 100개로 쪼개서 100번의 데이터로 나누어서 한다
for i in range(100):
idx = np.random.choice(1000, 10, replace=False)
mini_x = train_x[idx]
mini_y = train_y[idx]
_y = mini_x * w + b
error = np.sum((_y - mini_y) ** 2) / n_data
gradient_w = np.sum((_y - mini_y) * mini_x) / n_data
gradient_b = np.sum((_y - mini_y)) / n_data
w -= lr_rate * gradient_w
b -= lr_rate * gradient_b
# Error graph 출력하기 위한 부분
errors.append(error)
plot(errors)
반응형
'부스트캠프 AI Tech 2기 > 2기 U-Stage' 카테고리의 다른 글
2주차 MLP (Multi-Layer Perceptron) (0) | 2021.08.09 |
---|---|
2주차 딥러닝에서 사용되는 용어 (0) | 2021.08.09 |
1주차 MLE(최대우도법) (0) | 2021.08.09 |
1주차 - U Stage (0) | 2021.08.06 |
USTAGE - 확률론 (0) | 2021.08.06 |