우선 선형회귀 란 선형회귀 모델은 최적의 직선(또는 초평면)을 찾아내려고 시도하며, 이 직선은 데이터 포인트들과의 거(오차)가 최소가 되도록 설정
여러가지 방법 들중에 경사 하강법은 아래 그림과 같이
직선은 로 표현되며, 여기서 선형회귀 모델은 데이터의 추세를 예측하려고 시도 한다.
즉 선형 회귀에서는 h(x) = Wx+b 이라는 가설의 가중치(기울기)와 편향(y절편)을 찾아내는것이 핵심 이고 최적화 알고리즘( optimizer ) 를 찾는다.
최적의 매개변수를 찾는 과정은 말로 표현하면 아래와 같다.
선형회귀 모델이 최적의 매개변수를 찾아가는 과정은 주로 다음 단계로 이루어집니다:
1. 모델 초기화:
- 선형회귀 모델 \( h(x) = Wx + b \)의 매개변수 \( W \) (기울기)와 \( b \) (y절편)을 초기화합니다. 종종 이 값들은 무작위로 설정되거나 0으로 초기화됩니다.
2. 비용 함수 계산:
- 모델의 예측값과 실제 데이터 포인트 사이의 오차를 계산하는 비용 함수(예: 평균 제곱 오차)를 정의합니다.
- 비용 함수는 \( J(W, b) = \frac{1}{2m} \sum_{i=1}^{m} (h(x^{(i)}) - y^{(i)})^2 \) 와 같이 표현될 수 있으며, 이는 모델의 예측값과 실제값 사이의 오차 제곱의 평균입니다.
3. 경사 하강법 실행:
- 매개변수 \( W \)와 \( b \)에 대해 비용 함수의 경사(기울기)를 계산합니다.
- 이 경사는 비용 함수의 미분을 통해 얻어지며, 매개변수를 어떻게 조정해야 비용이 감소하는지 알려줍니다.
- 경사 하강법은 다음과 같은 공식을 사용해 매개변수를 업데이트합니다:
\[ W := W - \alpha \frac{\partial}{\partial W} J(W, b) \]
\[ b := b - \alpha \frac{\partial}{\partial b} J(W, b) \]
- 여기서 \( \alpha \)는 학습률로, 매개변수가 얼마나 큰 스텝으로 업데이트될지 결정합니다.
4. 반복적 업데이트:
- 비용 함수의 값이 충분히 낮아질 때까지, 또는 지정된 반복 횟수에 도달할 때까지 위의 과정(비용 계산, 경사 계산, 매개변수 업데이트)을 반복합니다.
5. 최적 매개변수 도출:
- 위의 과정을 통해 비용 함수가 최소화되는 \( W \)와 \( b \)의 값을 찾아냅니다.
- 이 때의 \( W \)와 \( b \)는 데이터를 가장 잘 설명하는 선형 모델의 매개변수로 간주됩니다.
이 과정을 통해 선형회귀 모델은 데이터의 패턴을 학습하고, 새로운 데이터에 대한 예측을 수행할 수 있게 됩니다.
그럼 이제 colab 으로 확인 해보자
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers
x = np.array([11,13,15,16,20], dtype=np.float32)
y = np.array([4, 1, 5, 7, 8], dtype=np.float32)
model = keras.Sequential([ layers.Dense(units=1, input_shape=[1], activation="linear")])
sgd = keras.optimizers.SGD(learning_rate=0.001)
model.compile(optimizer=sgd, loss='mean_squared_error')
history = model.fit(x, y, batch_size=1, epochs=10)
# epochs 전체데이터를 몇번씩 돌릴것인가
w, b = model.layers[0].get_weights()[0][0][0], model.layers[0].get_weights()[1][0]
print(x ,y) # 어떤값인지 확인
# Plot the regression line
plt.scatter(x, y)
plt.plot(x, w * x + b, color='red')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Linear Regression')
plt.show()
딥러닝 기본 용어 정의 (0) | 2024.02.05 |
---|---|
로지스틱 , 소프트맥스, One-hot Encoding 이란 (0) | 2024.02.02 |
AI학습을 위한 기본적인 환경세팅 (0) | 2024.01.29 |
Hugging Face의 Transformers 라이브러리_인코딩, 디코딩 (0) | 2024.01.21 |
Tokenizers ?! (0) | 2024.01.19 |