[머신러닝 교과서] p.60 퍼셉트론 구현

23 views
Skip to first unread message

MYK

unread,
Jun 15, 2021, 10:48:13 PM6/15/21
to 머신러닝/딥러닝 도서 Q&A
머신러닝 교과서 60쪽 퍼셉트론 구현하는 코드 중 fit 메소드 코드 내 for 문입니다.

for _ in range(self.n_iter):
   errors = 0
   for xi, target in zip(X,y):
      update = self.eta * (target - self.predict(xi))
      self.w_[1:] += update * xi 
      self.w_[0] += update
      errors += int(update != 0.0)
   self.errors_.append(errors)
return self

여기서 제가 bold 체로 바꾼 부분이 잘 이해가 되지 않습니다. 
왜 가중치 벡터 전체를 업데이트 하는 지 모르겠습니다. 
이를테면, 그 앞 56 페이지에서 w는 각 샘플별로 w1, w2, w3 가 각각 업데이트 되므로
 self.w_[i] 가 업데이트 되어야 하는 것이 아닐까요?

감사합니다.

Haesun Park

unread,
Jun 16, 2021, 5:15:25 AM6/16/21
to MYK, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.

56페이지 중간 부분의 수식에 있는 x는 하나의 샘플을 나타냅니다.
1장에 나와있듯이 이 책에서 윗첨자가 샘플의 인덱스고 아랫첨자는 특성의 인덱스입니다.
이 식에 의하면 각각의 가중치는 해당하는 특성 값을 사용해 업데이트됩니다.
60페이지 코드는 넘파이 배열을 사용해 가중치 배열과 특성 배열을 한번에 계산한 것 뿐입니다.
self.w_[1] += update*xi[0]
self.w_[2] += update*xi[1]
...
와 같은 식입니다.

감사합니다.

2021년 6월 16일 (수) 오전 11:48, MYK <minyk...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 '머신러닝/딥러닝 도서 Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ml-dl-book-qn...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ml-dl-book-qna/ca398119-64da-42fe-8f39-2f2c93bdbe38n%40googlegroups.com을(를) 방문하세요.
Reply all
Reply to author
Forward
0 new messages