인프런 커뮤니티 질문&답변
Gradient Descent 파이썬 코드에 대한 질문이 있습니다.
해결된 질문
작성
·
267
0
강의: 경사하강법을 통한 비용함수 RSS 최소화 - 파이썬 코드로 경사 하강법 구현하기
해당 강의에서 아래와 같은 코드가 잘 이해가 안갑니다.
def get_weight_updates(w1, w0, X, y, learning_rate=0.01):
N = len(y)
w1_update = np.zeros_like(w1)
w0_update = np.zeros_like(w0)
y_pred = np.dot(X, w1.T) + w0
diff = y-y_pred
w0_factors = np.ones((N,1))
w1_update = -(2/N)*learning_rate*(np.dot(X.T, diff))
w0_update = -(2/N)*learning_rate*(np.dot(w0_factors.T, diff))
return w1_update, w0_update
제가 수학을 잘 못해서 위의 코드 중 transpose를 왜 해야하는지 잘 모르겠습니다.
X도 1차원 배열이고 w1도 똑같은 1차원 배열이기 때문에 그냥 곱하면 되지 않나요?
답변 주시면 감사하겠습니다!
답변 1
3
권 철민
지식공유자
안녕하십니까,
강의에서는 Feature도 1개, 가중치도 1개이기 때문에 W벡터의 전치를 하지 않아도 무방하지만, 보통은 여러개의 Feature들이 있기 때문에 W벡터의 전치를 적용하여 X feature와 내적합니다
X가 [x1, x2, x3]와 같이 여러개의 feature들로 되어 있고, 가중치 W 벡터 역시 [w1, w2, w3]로 되어 있을 때 예측 회귀식은 y_pred = x1w1 + x2w2 + x3w3와 같이 계산하기 위해서 가중치 W 벡터의 전치값을 취합니다. (편의상 w0는 제외합니다)

감사합니다.





