인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

heynow's profile image
heynow

asked

[Revised Edition] The Complete Guide to Python Machine Learning

5장 공부하다 궁금한것이 생겼습니다. 답변 부탁드립니다.

Written on

·

468

1

강의에서 numpy.T를 하는이유에 대해서 설명이 자세히 안나와 있어 이것저것 해보다 궁금한게 생겨서 질문 드립니다.

먼저 왜 dot연산을 할 때 전치행렬을 곱해주는지 이해가 잘 안됩니다.

수학적인 이야기이겠지만 제가 수학을 좋아하지만 잘기억이 안나는것 같습니다.

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

  우선 get_weight_updates함수에서 y_pred 구할때와 w1_update, w0_update할 때 왜 .T를 해주는지 설명해 주시면 감사하겠습니다.

더불어 제가 테스트한것 중에 궁금한게 있는게 이것도 봐주시면 감사하겠습니다.

a = np.array([1,2,3]).reshape(1, -1)

b = np.array([4,5,6]).reshape(1, -1)

1번

print(a.shape, b.T.shape)

np.dot(a,b.T)

2번

print(a.T.shape, b.shape)

np.dot(a.T,b)

1번과 2번이 값이 틀린데 왜 그럴까요

1번은 단일값이 나오고 2번은 3*3이 나오네요

get_weight_updates에서도 전치를 한 이유가 단일값으로 만들어 주기 위해서 인거 같은데 어떤건 앞에서 전치를 해주고 어떤건 뒤에 인자에 전치를 해주네요 정확한 원리를 몰라 이해하기가 힘드네요 꼭 도와주세요!

그리고 이번에 새로운 강의 내셨는데 축하드립니다. 이 강의가 너무 마음에 들어서 새로운 강의도 유심히 봤는데 Object Detection과 Segmentation 이 정확히 이미지를 분류하는 과정을 설명해 주시는 건가요?

python머신러닝 배워볼래요? 통계

Answer 1

2

권 철민님의 프로필 이미지
권 철민
Instructor

안녕하십니까,

1. Gradient descent를 수행할때 예측값 y_pred를 다음과 같이 계산하였습니다.

y_pred = np.dot(X, w1.T) + w0

이는 X가 [x1, x2, x3]와 같이 여러개의 feature들로 되어 있고, 가중치 W 벡터 역시 [w1, w2, w3]로 되어 있을 때 예측 회귀식은 y_pred = x1w1 + x2w2 + x3w3와 같이 계산하기 위해서 가중치 W 벡터의 전치값을 취합니다. (편의상 w0는 제외합니다)

물론 강의에서는 Feature도 1개, 가중치도 1개이기 때문에 W벡터의 전치를 하지 않아도 무방하지만, 보통은 여러개의 Feature들이 있기 때문에 W벡터의 전치를 적용하여 X feature와 내적합니다.

2. 내적을 수행할 때 선행 행렬과 후행 행렬의 차원은 아래와 같은 규칙이 적용됩니다.

즉 선행 행렬의 Colume 갯수와 후행 행렬의 row 갯수가 서로 같아야 하며 내적 결과의 Shape는 선행 행렬의 row 갯수 x 후행 행렬의 column 갯수가 됩니다.

강의의 예제와 같이 100개의 데이터가 1개의 feature를 가지는 X이고 이 X의 shape은 100 x 1, 그리고 이를  W벡터 1x1 과 내적하면 예측 값이 되며 예측값의 shape는 100 x 1 입니다.

만일 100개의 데이터가 3개의 feature를 가지는 X이고 이 X의 shape는 100x3, 그리고 이를 예측 하려면 W 벡터는 3개, [w1, w2, w3] 가 필요하고 이 W벡터의 Shape 은 1x3,  W벡터의 전치는 3X1이 되므로 (X) dot (W전치)의 결과값은 100x1 예측값이 됩니다.

이런 규칙성을 기반으로 테스트 해보시면 질문하신 a와 b값으로 테스트 하신 결과도 유추하실 수 있을 것입니다.

2. 새 강의 출시를 축하해 주셔서 감사합니다. '딥러닝 컴퓨터 비전 완벽 가이드'는 이미지의 분류가 아닌 이미지내에서 Object Detection과 Segmentation 딥러닝 기법을 설명한 강의입니다. Object Detection과 Segmentation은 이미지 분류보다 진일보한 방식이며 이미지 내에 사람과 자동차가 있다면 이 사람과 자동차의 위치가 이미지 내에서 어디에 있는지 찾아내주고  표시해주는 기법입니다.

감사합니다.

heynow's profile image
heynow

asked

Ask a question