실습 결과 차이 | 테스트 해보면서 우리가 만든 모델로 의미 검색 해보면서 왜 이상한지 이해하기
제공해 주신 코드를 그대로 사용했을 뿐인데, 이 정도로 차이 나는 이유가 무엇인지 알 수 있을까요?
이번 수업의 실습에서 나온 결과가 아래와 같습니다.
npx tsx train.ts
문장 150개, 어휘 94개, 학습 쌍 1240개
epoch 1 평균 손실 0.6931
epoch 5 평균 손실 0.5178
epoch 10 평균 손실 0.4135
epoch 15 평균 손실 0.2569
epoch 20 평균 손실 0.2025
epoch 25 평균 손실 0.1867
epoch 30 평균 손실 0.1710
epoch 35 평균 손실 0.1687
epoch 40 평균 손실 0.1588
vectors.json 저장 완료
npx tsx similar.ts 고양이
"고양이"와 가까운 단어:
햄스터 0.988
앵무새 0.983
강아지 0.982
토끼 0.978
한다 0.733
npx tsx similar.ts 김치찌개
"김치찌개"와 가까운 단어:
떡볶이 0.987
된장찌개 0.982
불고기 0.980
비빔밥 0.980
사료 0.673
npx tsx chroma-search.ts 고양이
ChromaDB에서 "고양이"와 가까운 단어:
햄스터 distance 0.012
앵무새 distance 0.017
강아지 distance 0.018
토끼 distance 0.022
한다 distance 0.267
npx tsx chroma-search.ts 김치찌개
ChromaDB에서 "김치찌개"와 가까운 단어:
떡볶이 distance 0.013
된장찌개 distance 0.018
불고기 distance 0.020
비빔밥 distance 0.020
사료 distance 0.327
npx tsx chroma-search.ts 자동차
ChromaDB에서 "자동차"와 가까운 단어:
기차 distance 0.013
자전거 distance 0.018
버스 distance 0.018
지하철 distance 0.020
향한다 distance 0.221
回答 1
0
안녕하세요 blueBird님 질문 남겨주셔서 감사합니다!! 우선 제가 결론부터 말씀드릴게요.
코드가 절대 잘못된게 아닙니다. 학습 자체가 원래 돌릴떄마다 다른 값이 나오는게 정상적이에요.
숫자가 다른 이유
학습 자체가 확률적이기 떄문입니다. 기본적으로 train.ts 파일을 보시면 난수가 들어가는 부분들이 크게 세가지가 있어요.
model.ts의 초기화 : Math.random으로 인해서 랜덤 초기화를 진행합니다.
에폭마다 학습 쌍을 섞는 셔플도 Math.radom을 사용하고 있어요
에폭 : 학습 데이터 전체를 처음부터 끝까지 한 번 다 훑는 단위
negative sampling에서도 가짜 쌍을 뽑는데, 이것도 Math.random입니다.
그렇다고 시드를 고정하지는 않아요.
시드 : 난수 생성기 시작 지점
그래서 실행할 떄마다 출발하는 부분이 다른거고, 중간에 보는 순서도 다른거고 쌍도 매번 다르기 떄문에 수치가 다른게 맞습니다. bludBird님이 계속 실행해보셔도 다른 값이 나올꺼에요
그러기 떄문에 수치 자체를 보기 보다는 순위를 집중적으로 보시면 됩니다.
실행마다 수치는 달라지니깐 결국 어떤 방향으로 가고있냐를 보는것이 모델 학습이에요. 그 부분에 집중해서 보는것이 분포 가설이 잘 보이냐라는 관점인거죠. 그래서 동물 단어 순위를 집중적으로 보시면 됩니다.
이렇게 답변 드릴 수 있을꺼 같은데, 추가적인 질문이 있다면 편하게 댓글로 남겨주시거나 추가 질문으로 남겨주세요!!
질문 주제가 다르다면 추가적인 질문으로 논의 열어주시면 감사하겠습니다!! 다양한 분들이 참고 하실 수 있는 자료로써 활용이 될 수 있을꺼같아요!!
오늘도 좋은하루 보내세요!! 감사합니다!
강의자료
1
152
1
aws 계정 생성 질문
1
54
1
[강의 2. QGIS 설치 및 기본 설정]에서 필터링 안함 설정
1
35
2
실습 결과 차이 | 테스트 해보면서 우리가 만든 모델로 의미 검색 해보면서 왜 이상한지 이해하기
1
18
1

