수업내용
transformers 전에 GPT라고 있었는데 예전꺼다 보니 RNN처럼 계속 문장을 입력받아 다음 단어나 문장 예측하는 방식으로 만들어진 모델. 생성에 초점을 맞춘 듯.
이 모델도 다른 모델처럼 fine-tuning을 하는데 만든사람 논문에서 굳이 그래야 하나? 싶었다고 한다. 이미 많은 정보들이 들어있을 텐데 굳이 해야 하나? 그래서 few-shot, one-shot, zero-shot등을 했다. 문제를 내놓고 그 문제에 대한 답 예시들을 드는 방식.
GPT-2, 3으로 넘어가면서 정말 방대한 양의 데이터를 학습하고 모델 사이즈도 10배가량 키웠다. 그래서 정말 왠만한건 다 되는 듯.
다음 단어 혹은 masked 단어 예측하는 언어 모델 학습 방식으로 정말 다 해결될까?
Weight update가 없다는 것은 모델에 새로운 지식 학습이 없다는 것!
시기에 따라 달라지는 문제에도 대응 불가!
갈수록 모델 사이즈만 키우면 되는 것인가? à 다른 연구 방향 필요
멀티 모달 정보가 필요! à GPT는 글로만 세상을 배움
GPT-2로 실습해보자.
실습
Day8_실습자료0한국어_GPT_2_pre_training.ipynb의 사본
GPT-2 모델 text 파일을 불러와서 학습하는거. GPT는 bert와 달리 maskids, paddingids 이런거 없어서 간단하다.
피어세션
실험은 작은 모델로 하고 최종적으로 나올때 무거운걸 쓰는게 낫겠다.
처음에 시작할 때 learning rate 조절함. 이게 아니더라도 scheduler를 잘 하면 잘 되더라.
validation set이랑 LB랑 안맞을때?. 일단 validation set을 잘 해보자. 바꾸든 뭐하든. 보통은 일반화가 k-fold를 하면 좋더라. 가볍고 적당한 모델로 일단 여러가지 실험해본 다음에 무거운걸 최종적으로 하는게 좋은듯. 시간 절약도 되고.
근데 더 어려운 문제는 무거운 모델은 풀고 가벼운 모델은 못풀어서 실험이 안되는 경우도 있는듯.
scikit-learn에 있는 strate 어쩌구 k-fold
pororo 띄어쓰기 해결해주는 메소드가 있다. 6시간 걸렸음..
저번 대회도 그렇고 이번 대회도 그렇고 label 이 너무 unbalance해서 그런거 아닌가.
NTT e1 e2 붙이기만 해도 많이 오르더라.
목표
어제 자기전에 외부 데이터 몇십만개 훈련시킨거 해보기
행동
외부 데이터를 너무 많이 증가시킨거를 그대로 넣으니까 성능이 오히려 내려갔다. 평소 잘나오던게 77% 정도였는데 65% 정도로 나왔음. 비율이 너무 불균형해서 그런듯.
smoothing 0.5 해봤는데 성능 별로 변화없고 loss만 커져서 조금 불안하다. 커지는게 당연히 맞긴 한데 acc에서도 이득이 없으니까..
각 단어에 대한 entity. 즉 pororo library를 이용해 ner을 앞에 넣어줘서 만들어준 데이터셋을 넣었을 때 처음엔 잘 되었는데 재현하려니까 죽어도 안된다. 환경이 너무 이상하게 된듯. 또 ner 로 만들어준 데이터셋이 이상한것 같아 내가 직접 만들려 하니까 7시간 걸림.. 내일 제출이라 시간이 없어서 다른거 해보는게 나은듯.
비율 불균형한거 이제 균형맞춰서 외부데이터 넣고 지금 돌리고 있다. 이제 자야지.
회고
가벼운 모델로 데이터 실험 이것저것 만져보고 후에 제출할 때 무거운 모델로 바꾸는 방식 아주 좋은것 같음.
'과거의 것들 > AI Tech boostcamp' 카테고리의 다른 글
P-stage2 마지막 정리 (0) | 2021.11.30 |
---|---|
P-stage2 [Day9] 외부 데이터 (0) | 2021.11.30 |
P-stage2 [Day7] focal loss, 다른 tokenizer들 (0) | 2021.11.30 |
P-stage2 [Day6] autoML로 인한 최적화된 환경 너무좋다. (0) | 2021.11.30 |
P-stage2 [Day5] (0) | 2021.11.30 |