IT 프로그래밍/AI

선형 회귀 가중치 w와 비용함수 관계 시각화코드

기술1 2024. 9. 3. 16:19

선형 회귀 가중치 w와 비용함수 관계 시각화코드

import tensorflow as tf
import matplotlib.pyplot as plt

# 데이터 정의
X = tf.constant([1, 2, 3], dtype=tf.float32)
Y = tf.constant([1, 2, 3], dtype=tf.float32)

# 학습할 변수 정의
W = tf.Variable(initial_value=0.0, dtype=tf.float32)

# W의 값과 코스트를 저장할 리스트
W_val = []
cost_val = []

# W의 값을 변화시키면서 비용(cost) 계산
for i in range(-30, 50):
    # W 값을 업데이트
    W.assign(i * 0.1)
    
    # 가설 계산
    hypothesis = X * W
    
    # 비용 함수 계산 (MSE)
    cost = tf.reduce_mean(tf.square(hypothesis - Y))
    
    # 값을 리스트에 저장
    W_val.append(W.numpy())
    cost_val.append(cost.numpy())

# 결과 시각화
plt.plot(W_val, cost_val)
plt.xlabel("W")
plt.ylabel("Cost")
plt.show()

X와 Y는 입력 데이터와 목표 값 데이터를 정의합니다. 여기서 X와 Y는 모두 [1,2,3]으로 설정됩니다. tf.constant를 사용해 상수 텐서를 생성하며, dtype=tf.float32는 데이터 타입을 32비트 부동 소수점으로 지정합니다.

 

W는 모델이 학습할 가중치를 나타냅니다. tf.Variable은 텐서플로우에서 변경 가능한 변수로, 여기서는 초기값을 0.0으로 나타냅니다. 

그림을 보면 알겠지만 값을 최적화하는 값은 w가 1일 때입니다.