(도서:머신러닝교과서 파이토치편) AdalineSGD() 수행결과 상이점 문의 - 92페이지

140 views
Skip to first unread message

Kevin Song

unread,
Mar 4, 2024, 6:16:26 AMMar 4
to 머신러닝/딥러닝 도서 Q&A
안녕하세요.

제목내용대로 자체실행결과와 본 도서의 92페이지(그림2-15) 결과가 다르게 나옵니다.

1. 도서에는 2번째 epoch에서 오차가 크게 떨어지고 이 후 점차 수렴해가는 형태인데
2. offline jupyter lab 실행환경에서는 2번째 epoch에서 오차가 크게 증가한 후 3번째 감소, 이후에 수렴하는 모습입니다.

그림결과를 첨부하였으니 참고하시어 피드백 부탁드립니다.

감사합니다.그림2-15 (92페이지).png  
 

Haesun Park

unread,
Mar 4, 2024, 9:46:44 PMMar 4
to Kevin Song, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
이따금 라이브러리와 환경의 차이로 로컬의 실행 결과와 일치하지 않을 수 있습니다.
또, 코랩에서 2장의 노트북을 실행해 보시고 작성하신 코드와 비교해 보시면 좋을 것 같습니다.
감사합니다.

2024년 3월 4일 (월) 오후 8:16, Kevin Song <kevin...@gmail.com>님이 작성:
--
이 메일은 Google 그룹스 '머신러닝/딥러닝 도서 Q&A' 그룹에 가입한 분들에게 전송되는 메시지입니다.
이 그룹에서 탈퇴하고 더 이상 이메일을 받지 않으려면 ml-dl-book-qn...@googlegroups.com에 이메일을 보내세요.
웹에서 이 토론을 보려면 https://groups.google.com/d/msgid/ml-dl-book-qna/4e3da13b-8d60-4fce-8d02-d8f6f4be152fn%40googlegroups.com을(를) 방문하세요.

Kevin Song

unread,
Mar 5, 2024, 12:48:01 AMMar 5
to 머신러닝/딥러닝 도서 Q&A
안녕하세요.

1. 코드는 동일하다고 보면 되는데, 혹시나 해서, github의 코드를 copy 해서 실행했는데도 동일합니다.

2. Local 환경기준에서 봤을 때 (jupyterlab=Version 4.0.0) 추가 수행결과
- SGD가 아닌 AdalineGD() 에서는 Epochs vs. MSE 그래프는 동일하게 나옵니다. (그림2-14, 87페이지)
- SGD()와 GD() 모두 결정경계 그래프는 다르게 나오는데 (그림2-14, 그림2-15), Perceptron에서의 결정경계 그림은 동일합니다 (그림2-8)
- 제가 수정한 부분은 "plot_decision_regions" 함수를 새로운 파일(*.py)에 정의하여 import 해서 사용한거와, StandardScaler() 로 스케일링한 부분입니다. 
- 말씀하신대로 colab 에서 실행했을 때는 도서의 결과와 동일하다는 것을 확인했습니다.

3. 특이사항은 "Epochs vs. MSE 그래프" 와 "결정경계 그래프"  이 두 경우가 일관적인 결과를 도출하는게 아니라, 동일, 또는 그렇지 않은 부분입니다.

본 코드들 대부분이 알고리즘의 플로우를 따른 것이라 외부환경에 덜 민감할 것 같은데, 추가적으로 로컬환경에 대한 정보가 필요하다면 알려주도록 하겠습니다. 

감사합니다.

Haesun Park

unread,
Mar 5, 2024, 12:56:18 AMMar 5
to Kevin Song, 머신러닝/딥러닝 도서 Q&A
안녕하세요. 박해선입니다.
독자의 로컬 컴퓨터에서 수행한 결과가 코랩과 다른 이유를 원격에서 파악하기 어려운 점 이해 부탁드립니다.
이 책은 코랩을 사용해서 예제를 구성했지만 예제를 그대로 재현하는 것이 목적이 아니며 
예제에 담긴 기술과 알고리즘을 배우는 것이 목표임을 생각해 주세요.
감사합니다.

2024년 3월 5일 (화) 오후 2:48, Kevin Song <kevin...@gmail.com>님이 작성:

Kevin Song

unread,
Mar 5, 2024, 1:15:10 AMMar 5
to 머신러닝/딥러닝 도서 Q&A
안녕하세요.

추가적으로 확인할 사항이 없는 것으로 이해하겠습니다.
로짓을 이해하려고 했고, 나온 결과가 다름으로 해서 재차 확인 후 공유하게 된 것입니다. 

또한, 본 코드가 필요한 경우, 가령 jupyterlab 환경에서 시험도 볼 수 있는 경우도 있으니, 개인적으로는 여건이 될 때 원인파악하도록 하겠습니다.
빠른 대응 감사드립니다. 
Message has been deleted
Message has been deleted

Kevin Song

unread,
Mar 6, 2024, 12:35:40 AMMar 6
to 머신러닝/딥러닝 도서 Q&A
안녕하세요.

처음 문의드렸던 AdalineSGD() 수행결과가 다른 점을 파악하여 공유드립니다. ( "도서에 있는 결과 vs. 로컬에서 수행결과" 차이점)
또한, 메일 루프에서 제가 작성하였던 내용중에 잘못된 부분이 있어 수정하도록 하겠습니다.

1. 원인 제공의 요인은 iris 데이터셋입니다
- 저는 sklearn의 iris 를 (from sklearn.datasets import load_iris)
- 일반적으로 iris는 동일 데이터셋이라 생각했고, 실습중에 sklearn의 데이터셋 사용 후 보여지는 일련의 그래프가 같은 것으로 판단하여 계속 사용했습니다.
- 요약하면,  두 데이터셋의 차이가 그림 2-15 (92페이지)의 AdalineSGD() 클래스에서 상이한 결과가 도출됩니다.

2. 두 데이터셋의 차이점 (iris.data vs. load_iris)
- describe().T 로 해서 보면 mean(평균: 소수점 3자리부터 ) 하고 std(편차: 소수점 3자리부터) 가  "Petal length (cm)" 에서만 차이가 납니다.
- 본 도서에서는 "Sepal length (cm)" 와 "Petal length (cm)" 를 입력변수로 하여 사용합니다.

(from sklearn.datasets.import load_iris)

               count    mean     std                         min        25%       50%       75%       max

0             100.0     5.471     0.641698             4.3         5.0         5.40       5.900     7.0 (Sepal length)

1             100.0     2.861     1.449549             1.0         1.5         2.45       4.325     5.1 (Petal length)

(https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)

                count     mean     std                         min        25%       50%       75%       max

0             100.0     5.471     0.641698             4.3         5.0         5.40       5.900     7.0 (Sepal length)

1             100.0     2.862     1.448565             1.0         1.5         2.45       4.325     5.1 (Petal length)


3. 메일 루프에서 제가 작성하였던 내용중에 잘못된 부분 수정

"Mar 5, 2024, 2:48:01 PM" 작성내용 빨간색으로 수정함.

2. Local 환경기준에서 봤을 때 (jupyterlab=Version 4.0.0) 추가 수행결과

SGD()와 GD() 모두 결정경계 그래프는 다르게 나오는데 (그림2-14, 그림2-15), Perceptron에서의 결정경계 그림은 동일합니다 (그림2-8)

(수정)  다르게 나오는데  -> "동일하게 나오고"로 수정

3. 특이사항은 "Epochs vs. MSE 그래프" 와 "결정경계 그래프"  이 두 경우가 일관적인 결과를 도출하는게 아니라, 동일, 또는 그렇지 않은 부분입니다.

(수정)  삭제.


4. 첨부파일

첨부에는 두 데이터셋의 차이와  그에 따른 AdalineSGD() 클래스의 결과를 추가하였습니다.


참고부탁드리며, 혹시 오타나 추가 진행여부가 있으시면 답장 주시기 바랍니다.


감사합니다.

AdalineSGD결과비교 (iris.data vs. load_iris).png
Iris 데이터셋 비교.png
Reply all
Reply to author
Forward
0 new messages