인프런 커뮤니티 질문&답변

Dae Young Kang님의 프로필 이미지
Dae Young Kang

작성한 질문수

[Pytorch] 파이토치를 활용한 딥러닝 모델 구축

Neural Network 훈련 원리 - 경사하강법-2

update 공식 관련 질문 (3분31초 경)

작성

·

241

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

안녕하세요, 좋은 강의 감사드립니다.

다름이 아니라, 3분 31초 경에 나오는 강의자료에서 Update 부분 theta0 = theta0 + alpha * 미분값으로 표기 되었는데, theta0 = theta0 - alpha * 미분값 이 아닌가하여 질문 드립니다! (MSE Loss function -> 최소값을 찾아야 하는 문제라 gradient에 음수를 곱해야 할 것 같습니다.)

답변 1

1

YoungJea Oh님의 프로필 이미지
YoungJea Oh
지식공유자

강대영님,

정확하게 경사하강법의 update rule을 이해하고 계시네요.
MSE 는 포물선 형태의 그래프 모양을 보이기 때문에 손실 함수의 기울기(미분값)이 + 면 현재의 weight를 왼쪽으로 움직이고 (빼주고), 기울기가 - 면 현재의 weight를 오른쪽으로 움직이게(더해주게) 됩니다. 따라서 강대영님이 지적하신 대로 alpha * 미분값을 빼주어야 하는데 저의 교재에서 구한 gradient는 손실함수를 theta0와 theta1에 대해서 편미분까지 한 것이므로 gradient 자체에 minus가 표시되어 있어 update rule에서는 + 로 표시한 것 입니다. Gradient에 minus가 포함되게 된 이유는 제가 손실함수를 표시할 때 (y_i - (theta0 + theta1.x_i))^2 으로 했기 때문인데 순서를 바꾸어서 손실함수를 ((theta0 + theta1.x_i) - y_i)^2 으로 표시하면 편미분할 때 minus가 없어져서 강대영님 말씀대로 theta0 = theta0 - alpha * 미분값 으로 표시해야 합니다.

자세한 내용은 https://www.humanunsupervised.com/post/regression-univariate-cost-function-hypothesis-gradient-descent 참고 하세요. 결국 표현상의 문제이므로 두 가지는 같은 것이고 원리를 이해하는 것이 중요합니다.

좋은 질문 감사드립니다. 새해 복 많이 받으시고 건강하세요.

잘 이해 안되시면 추가 질문 바랍니다.

감사합니다.

아! 선생님 감사합니다.

제곱이라서 square 내부에 마이너스를 곱했느냐의 차이로 업데이트때 플러스 혹은 마이너스가 되는 것이군요.

덕분에 꼭 마이너스로만 표기하지 않을 수 있다는 점을 알게됐네요! 감사합니다.

선생님도 새해 복 많이 받으시고 항상 건강하세요! :-)

KakaoTalk_20221229_143823875.jpg선생님 그런데 문득 아무리 제곱이어도, square 내부에 -1을 곱했다는 이유로 부호가 바뀐다는게 이해가 가지 않아서 직접 계산을 해보았는데요 (동그라미 1은 강의자료 gradient),

square 내부에 -1을 곱하든 곱하지 않든 ((hypothesis - ylabel)^2 or (ylabel - hypothesis)^2), 결국 gradient에 -1을 곱해야 하는 것으로 계산이 되는데 혹시 제가 잘못 생각한 것일까요?

YoungJea Oh님의 프로필 이미지
YoungJea Oh
지식공유자

강대영님,

지적하신 내용이 맞는 것 같습니다. 혼돈을 드려 죄송합니다. 교재 내용 수정하겠습니다.
감사합니다.

Dae Young Kang님의 프로필 이미지
Dae Young Kang

작성한 질문수

질문하기