-
4-2_요약_ Classifying_Surnames_with_an_MLP.ipynb_ 다층 퍼셉트론으로 성씨 분류하기 - overfitting 방지법 (데이터 늘리기, Early stopping(validation data), Weight Decay(가중치 감쇠), Dropout, Batch Normalizationpytorch를 이용한 자연어입문 2024. 4. 19. 16:18
Summary
Dropout : 학습중에 일부 가중치를 확률적으로 0으로 만드는것
Dropout 쓰는이유: overfitting 막는데 도움
Overfitting: 학습데이터를 모델이 거의 외워버린 상태 => 새로운 테스트 데이터 대해 모델이 성능 낮음
Overfitting 막는 방법: 데이터 늘리기, Early stopping(validation data), Weight Decay(가중치 감쇠), Dropout, Batch Normalization
아래그림) dropout
아래그림)
Overfitting: 학습데이터를 모델이 거의 외워버린 상태 => 새로운 테스트 데이터 대해 모델이 성능 낮음
아래그림)
train data, validation data, test data
train data만 있으면 언제 멈출지 모르기때문에 validation loss 함수가 꺾이는 지점에서 모델을 선정
test data는 최종적으로 성능평가.
아래그림)
데이터 늘리기 - overfitting 방지
기존 overfitting 일때는 loss가 0인 보라색 그래프인데,
데이터를 늘리고 학습을 더 진행하면, train loss가 증가함
그러면 train loss 가 감소되는 방향으로 학습이 일어나서 초록색 그래프처럼 loss가 줄어드는 방향으로 그래프가 변해짐
진짜 함수인 파란색 함수랑 비슷해짐
(ex. 수학문제를 외우면 새로운 문제 못품)
Weight Decay
weight 크기 줄여야
출처:https://sooho-kim.tistory.com/85
l1-norm과 l2-norm에 대하여
해당 포스팅은 Dive into Deep Learning과 Mathematics for Machine Learning을 참고하여 정리한 글입니다. 이 영화를 알고 계시다면 저와 비슷한 세대임은 분명하겠군요. (학생 때 영화관에서 봤던 기억이 있었
sooho-kim.tistory.com
아래그림) 가중치 크기가 적어지면 함수가 복잡해지지 않아서 overfitting이 줄어든다.
L는 새로운 L'으로 커지지만 loss를 줄어드는 방향으로 가서 overfitting이 줄어든다.
아래그림)
초기상태는 underfitting,
너무 overfitting(학습이 많이해서 거의 외운상태) 하면 train loss가 거의 0 됨(loss가 적다고 좋은게 아님)
파란색선은 학습이 잘된상태
Batch Normalization
normalization
m(평균)= 0 , 표준편차=1로 만들어준다.(원래 표준편차는 1이 같거나 아니었는데 1로만듬)
batch normalization
batch normalization
- 데이터의 batch를 normalization한다.
- 정리를 하니 overfitting 이 된다.
Code SUMMARY
성씨를 보고 국적을 맞추는 Multi class classification (class 는 국가종류)
mlp모델을 학습시켜서 해결
초기화
#Data 다운받는것# 만약 코랩에서 실행하는 경우 아래 코드를 실행하여 전처리된 라이트 버전의 데이터를 다운로드하세요. !mkdir data #Data 다운받는것 !wget https://git.io/JtaFp -O data/download.py !wget https://git.io/Jtabe -O data/get-all-data.sh !chmod 755 data/get-all-data.sh %cd data !./get-all-data.sh %cd ..
vectorize는 단어를 vector화
참고로 one hot vector는 하나만 1이고,
multil hot vector는 여러개가 1
원본 코드
https://colab.research.google.com/drive/13lckS_OU47911ewNURTMU9pTrm88MH6a#scrollTo=gGifMv5ONhSw
출처 파이토치로 배우는 자연어 처리
'pytorch를 이용한 자연어입문' 카테고리의 다른 글
6_요약_Surname_Classification_with_RNNs.ipynb (0) 2024.05.24 5-3_요약_new 분류 (0) 2024.05.17 5-2_요약_Continuous_Bag_of_Words_CBOW.ipynb_단어와 타입 임베딩 (0) 2024.05.10 4-3_요약_Classifying_Surnames_with_a_CNN.ipynb (1) 2024.04.20 4-1_요약_XOR_Problem2.ipynb_ 요약_20240403 (0) 2024.04.03