선형회귀(Linear Regression)
- 종속 변수 y와 한 개 이상의 독립변수 x와의 선형 상관 관계를 모델링하는 기법
- 최적의 기울기(weight)와 편향(bias)을 구하는 것이 문제
- 평가 기준을 세워, 최적의 기울기와 편향을 탐색
- 단순 반복을 해서 최적의 파라미터를 찾는 것은 어렵다! -> Gradient Descent 등을 사용
# 1. Data set
import numpy as np
import matplotlib.pyplot as plt
import random
param1 = random.randint(1, 5) # 기울기
param2 = random.randint(20, 40) # 편향
data = [[3, 24], [6, 48], [9, 40], [12, 52]]
x = np.array([i[0] for i in data])
y = np.array([i[1] for i in data])
plt.plot(x, y, "b.")
# 2. 모델
def model(x):
y = param1 * x + param2
return y
# 3. RMSE
def rmse(predict, true):
return np.sqrt(((predict - true) ** 2).mean())
# 4. Initial Graph
predict = []
for i in x:
predict.append(model(i))
predict = np.array(predict)
plt.plot(x, predict, "r-")
plt.plot(x, y, "b.")
# 5. Calculate RMSE
rmse_result = rmse(predict, y)
print(rmse_result)
# 6. Repeat the process
for k in range(10):
param1 = random.randint(1, 5)
param2 = random.randint(2, 40)
# Prediction
predict = []
for i in x:
predict.append(model(i))
predict = np.array(predict)
# Calculate RMSE
rmse_result = rmse(predict, y)
# Print setting
print("Param1: {}".format(param1))
print("Param2: {}".format(param2))
print("RMSE: {}".format(rmse_result))
# 7. Plot each case
param1 = 5
param2 = 36
# Prediction
predict= []
for i in x:
predict.append(model(i))
predict = np.array(predict)
plt.plot(x, predict, "r-")
plt.plot(x, y, "b.")
경사하강법 (Gradient Descent)
- 일정한 거리를 움직이면서 오차 함수에서의 최저점을 찾는 방법
- 기울기가 0이 되는 지점이 최저점이라는 아이디어라는 것에서 착안
- 경사를 내려가는 것과 같다고 하여 Gradient Descent라는 이름이 붙게 됨
- 학습률(Learning rate)는 얼마만큼 움직일지 결정하는 것
-> 너무 크면 최저점을 찾지 못하고 발산, 너무 작으면 오래 걸린다.
SGD (Stochastic Gradient Descent)
- 가장 단순한, 확률적 경사 하강법으로 지정해둔 학습률만큼 이동하는 것
- 상당히 비효율적인 움직임을 보이게 됨
- Momentum, AdaGrad, RMSProp과 같은 보조적인 수단을 활용함
Momentum
- 기울기의 방향으로 물체가 가속된다는 물리 법칙을 적용
AdaGrad
- 학습률을 효과적으로 변경해야 하는 필요성이 대두됨
- 매개변수의 원소 중, 변화가 큰 원소는 학습률을 낮게 적용함
- 즉, 가중치가 크게 변한 파라미터는 next step에서 적게 움직이게 함
RMSProp
- AdaGrad는 기울기를 계속 제[곱하기 때문에 결국 나중에는 거의 변하지 않음
- 이를 보완하기 위한 알고리즘
- 지수 이동평균을 사용해 과거 기울기는 서서히 잊고, 최신 기울기 정보를 크게 반영
Adam (Adaptive Moment Estimation)
- Momentum + RMSProp Optimizer
- 기울기의 지수 평균과 제곱값의 지수 평균을 저장
- 결과적으로 많이 사용되는 것으로 기억하면 됨
'AI > Deep Learning' 카테고리의 다른 글
| [딥러닝] 전처리 - 토큰화 (Tokenizing) (0) | 2025.12.09 |
|---|---|
| [딥러닝] 인공신경망(Artifical Neural Network) (0) | 2025.12.07 |
| [딥러닝] TensorFlow란? (0) | 2025.12.06 |
| [딥러닝] 생성형 AI의 발전 과정 (0) | 2025.08.06 |
| [딥러닝] CNN (Convolutional Neural Network) (0) | 2024.12.11 |