Do it 딥러닝 165쪽 ,185쪽 문의

42 views
Skip to first unread message

덴푸라노

unread,
May 13, 2021, 10:53:41 PM5/13/21
to 머신러닝/딥러닝 도서 Q&A
안녕하세요.

165쪽 코드 마지막 줄에서 3번째 줄 코드 

w_grad += (self.l1 * np.sign(self.w) +self.l2 * self.w)/m 

m으로 나눈 것이 이해가 되지 않네요.

이미 backprop() 메소드가
샘플 전체에 대한 평균으로 w_grad를 반환하고 있으니 말이죠.

185쪽에서도 마찬가지입니다.

제가 잘못 이해한 것인지요?

답변주시면 감사하겠습니다.



Haesun Park

unread,
May 14, 2021, 12:57:09 AM5/14/21
to 덴푸라노, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.

아마 <Do It! 딥러닝 입문>을 보고 계시는 것 같군요.
책에서는 손실 함수를 간단히 나타내기 위해 합 기호를 쓰지 않았습니다.
사실 전체 (혹은 미니배치) 샘플에 대한 손실 함수의 값은 모든 샘플의 손실을 더하고 샘플 개수로 나누어 구합니다(166 페이지 코드에서도 이런 계산을 볼 수 있습니다).
따라서 손실 함수의 미분인 그레이디언트도 샘플 개수로 나눕니다.
만약 미니배치 크기에 따라 그레이디언트 크기가 같이 늘어난다면 이상하겠죠? :)

감사합니다!

2021년 5월 14일 (금) 오전 11:53, 덴푸라노 <denp...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 '머신러닝/딥러닝 도서 Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ml-dl-book-qn...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ml-dl-book-qna/b8c5186a-812d-44f0-b396-fb665d5b4c3an%40googlegroups.com을(를) 방문하세요.

덴푸라노

unread,
May 17, 2021, 3:59:00 AM5/17/21
to 머신러닝/딥러닝 도서 Q&A
답변 감사합니다.

제가 궁금한 것은 ,

w_grad를 계산할때  전체 샘플에 대한 평균값을 왜 구하는 것인지가 아니라

165쪽 코드에서
-------------------------------------------------------------------------------------------------
w_grad , b_grad = self.backprop(x,err)
w_grad += (self.l1 * np.sign(self.w) +self.l2 * self.w)/m 에서
------------------------------------------------------------------------------------------------

"페널티 항을 m으로 나누는 것은 잘못된것 아닌가"하는 것입니다.

backprop()은 w_grad을 반환할때 이미 전체 샘플 갯수 m으로 나눈값을 반환합니다.

이렇게 반환된 w_grad에 에포크마다 페널티 항을 한번씩 더하면 될 것 같은데

m으로 나누는 것이 잘못된것처럼 보여서입니다.

교재 코드에 따르면,

페널티는 샘플마다 계산된 것이 아니고 에포크마다 전체 샘플에 대해 구해진 w_rad의 평균값에 한번 더해지는 것 아닌가요?

제가 저자님을 혼란스럽게 하고 있지 않나 염려스럽지만
아직 의문이 해소되지 않아 다시 질문드리니 답변주시면 감사하겠습니다.

감사합니다.







2021년 5월 14일 금요일 오후 1시 57분 9초 UTC+9에 haesu...@gmail.com님이 작성:

Haesun Park

unread,
May 17, 2021, 5:21:36 AM5/17/21
to 덴푸라노, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.

규제 손실을 m으로 나누어 주는 것이 일반적인 프랙티스입니다.
개인적으로 생각하기에 가장 큰 이유는 배치가 작으면 상대적으로 규제가 커야하고 배치가 커질수록 규제가 완화되어야 하기 때문입니다.
만약 m으로 나누지 않는다면 배치 크기가 달라도 동일한 값이 손실에 더해지거든요.
이외의 다양한 관점에 대해서는 다음 글을 참고하세요.
https://towardsdatascience.com/understanding-the-scaling-of-l²-regularization-in-the-context-of-neural-networks-e3d25f8b50db

감사합니다.

2021년 5월 17일 (월) 오후 4:59, 덴푸라노 <denp...@gmail.com>님이 작성:

덴푸라노

unread,
May 18, 2021, 1:06:44 AM5/18/21
to 머신러닝/딥러닝 도서 Q&A
그렇군요.  감사합니다. (링크해주신것은 문제가 있는지 페이지를 찾지못하네요)

친절한 답변 다시한번 감사드립니다.
2021년 5월 17일 월요일 오후 6시 21분 36초 UTC+9에 haesu...@gmail.com님이 작성:

Haesun Park

unread,
May 18, 2021, 1:29:35 AM5/18/21
to 덴푸라노, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.

구글에서 understanding-the-scaling-of-l²-regularization 정도로 검색하면 금방 찾으실 수 있습니다.

감사합니다.

2021년 5월 18일 (화) 오후 2:06, 덴푸라노 <denp...@gmail.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages