가중치(Weight)

머신러닝에서의 가중치는 입력 변수의 영향력을 나타내는 값으로, 선형 모델의 경우 각 입력 변수마다 가중치가 부여되어 해당 변수가 출력에 미치는 영향을 나타내게 됩니다. 이 가중치 값은 모델이 학습하면서 데이터에 적합하게 조정되며, 최적화 과정에서는 가중치를 조정하여 모델의 예측 성능을 향상시킵니다.

간단한 예를 들면, 다음과 같이 입력 변수 x와 출력 변수 y의 관계가 있는 데이터가 있다고 가정해봅시다.

x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

이 경우, y는 x에 대해 직선의 형태로 관계가 있다고 볼 수 있습니다. 이 관계식은 y = 2x로 나타낼 수 있으며, 여기에서 2는 x의 가중치입니다. 이 가중치는 모델이 학습하면서 최적화 과정에서 조정됩니다.

코드로 예를 들어보면, 다음과 같이 Numpy를 이용하여 간단한 선형 모델을 만들고 학습시킬 수 있습니다.

실행하기 #가중치(Weight)

import numpy as np

# 입력 변수 x와 출력 변수 y 정의
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

# 가중치 w 초기화
w = np.random.rand()

# 학습률과 최대 반복 횟수 설정
learning_rate = 0.01
max_iterations = 1000

# 경사 하강법으로 가중치 학습
for i in range(max_iterations):
    y_pred = w * x
    error = y - y_pred
    w = w + learning_rate * np.dot(x, error) / len(x)

# 학습된 가중치 출력
print(w)

이 코드는 입력 변수 x와 출력 변수 y를 정의하고, 초기 가중치 w를 무작위로 설정한 후 경사 하강법을 이용하여 가중치를 학습합니다. 최종적으로 학습된 가중치를 출력합니다.

수학에서의 기울기(Slope)와의 차이

편의상 수학시간에 많이 본 기울기 처럼 기억하면 되지만, 실제로 가중치(Weight)와 수학에서의 기울기(Slope)는 전혀 다른 개념입니다.

머신러닝에서의 가중치는 모델이 학습하는 과정에서 입력 변수에 대한 상대적인 중요도를 나타내는 값으로, 최적화 알고리즘을 사용하여 학습됩니다.

반면 수학에서의 기울기는 한 점에서의 함수 값의 변화량과 그 위치에서의 독립 변수의 변화량의 비율을 나타내는 값입니다. 함수의 기울기는 해당 점에서의 접선의 기울기를 말하며, 일반적으로 미분으로 구해집니다.