gradient_w = np.sum((_y - train_y) * train_x) / n_data gradient_b = np.sum(_y - train_y) / n_data
gradient w
는 (오차*x값)의 평균, gradient b
에는 (오차)의 평균이 쓰였다.error(오차)
계산에 쓰인 MSE의 수식을 각 w
와 b
로 편미분했을 때 나오는 식이라는 것을 배울 수 있었다.mse = mean(실제 데이터 – 예측 데이터)**2
- 예측 함수의 w, b를 포함하면 다음과 같습니다.
mse = mean(y – wx+b)**2 (❗ 평균제곱오차, 오차 제곱의 평균값)
- 편향 w로 편미분하면 다음과 같습니다.
mse/dw = 2mean(y – wx+b) * x (❗ x 가 살아 남아있다!)
- 편향 b로 편미분하면 다음과 같습니다.
mse/db = 2mean(y – wx+b)
- 회귀모델에 쓰이는 손실함수에는 MSE, MAE, RMES 등이 있으며
- 분류에 쓰이는 손실함수에는 Binary cross-entropy, Categorical cross-entropy 등이 있다.
- MAE: 최적값에 가까워졌다고 하더라도 이동거리가 일정하기 때문에 최적값에 수렴하기 어렵다.
- MSE: MAE와 달리 최적값에 가까워질수록 이동값이 다르게 변화하기 때문에 최적값에 수렴하기 용이하다.
beta_gd
)를 구할 수 있었다.
- 전체 데이터가 아닌 1개/일부 데이터(이를
미니배치(Mini-Batch)
라고 부른다. ➡️ 이 부분에서 "확률적"이라고 부르는 것 같다.)를 활용해 Gradient Descent를 구하는 방법론.- 장점: (1)연산량 감소 & (2)볼록이 아닌(Non-Convex) 목적식도 최적화 가능 & (3)Local-minimum(지역 최적해)에 빠질 확률도 훨씬 적다..!
표본평균
과 같고 분산은 표본분산
과 같다..!.split()
로 쪼갠 후 ➡️ ' '.join()
으로 합치기 ! normalized_string = ' '.join(input_string.split())
abs(grad=diff)
와 np.abs(grad=diff)
는 다르다..!np.abs(grad)
가 정답