- BERT 학습의 단계
1. Tokenizer 만들기
2. 데이터셋 확보
3. Next sentence prediction(NSP)
4. Masking
- Domain-specific task의 경우 처음부터 직접 새로 학습하는 것이 성능이 더 좋다.
가장 중요한 것은 개인정보가 없는! 저작권 문제가 해결된! 데이터 셋을 사용해야 한다.
모델이 개인정보를 학습할 수가 있기 때문이다! 최근 이루다 이슈를 생각해보면 바로 느낌이 온다.
미국 전 대통령 오바마를 가지고 한 번 예시를 들어보자.
항상 tokenizer는 잘 되는지 확인 먼저!
print(tokenizer('이순신은 조선 중기의 무신이다.'))
{'input_ids': [101, 9638, 119064, 25387, 10892, 59906, 9694, 46874, 9294, 25387, 11925, 119, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
pipeline을 사용하면 inference를 한 번에 손쉽게 해결할 수 있다.
fill-mask라는 task를 진행할 것이며, score가 높은 순으로 5개만 출력해보자.
from transformers import pipeline
nlp_fill = pipeline('fill-mask', top_k=5, model=model, tokenizer=tokenizer)
오바마는 하와이 호놀룰루 출신인데, mask를 통해 모델이 예측을 한 결과를 살펴보면,,,,!
nlp_fill('Obama was born in [MASK], Hawaii.')
0.8이라는 아주 높은 확률로 모델은 오바마가 호놀룰루 출신이라고 예측하게 된다.
이 모델은 이미 오바마에 대해 학습이 됐기 때문에, 오바마의 신상을 다 아는 것이다!!
[{'score': 0.8043822646141052,
'sequence': 'Obama was born in Honolulu, Hawaii.',
'token': 56348,
'token_str': 'Honolulu'},
{'score': 0.16055044531822205,
'sequence': 'Obama was born in Hawaii, Hawaii.',
'token': 21729,
'token_str': 'Hawaii'},
{'score': 0.001997554674744606,
'sequence': 'Obama was born in County, Hawaii.',
'token': 10886,
'token_str': 'County'},
{'score': 0.0016650909092277288,
'sequence': 'Obama was born in Mesa, Hawaii.',
'token': 25076,
'token_str': 'Mesa'},
{'score': 0.0008855907944962382,
'sequence': 'Obama was born in Kai, Hawaii.',
'token': 26387,
'token_str': 'Kai'}]
이렇게 개인정보를 마스킹처리하지 않고 데이터셋으로 사용하게 된다면, 일반 사용자들의 개인정보 (계좌, 전화번호, 거주지, 직업 등)이 유출될 수 있으므로 데이터셋에 꼭꼭 신경쓰자!
오늘의 실습은 나만의 Bert만들어보기!!
👉 나만의 bert 만들어서 competition에 적용해보고 싶었는데,,,, 음,,,, 조교님한테 물어봤더니 gpu많은 조교님이라면 2~3일 걸려서 만들어보신다고 하셨는데,,,, 가진 게 p40 하나 뿐인 나는 대회 끝나야 완성일 거 같아서 고이 마음을 접었다. 자연어의 세계는 너무 어려운 거 같다;
1일 1제출하라는 약간의 화가 담긴 거 같은 운영진님의 말씀을 듣고 내가 너무 소홀했나;;; 싶어서 관심을 좀 가졌더니 벌써 새벽2시다. 코테 준비 언제하죠? ㅜㅜ
1. 오늘 랜덤시드의 중요성을 깨달았다. 랜덤시드만 잘 골라도 2.5% 상승
2. tokenizer에 대해서 뭘 쓸까,,, 얘기가 많았는데,,, EDA아닌 EDA를 해보니 koelectra가 제일 좋은데,,,?
이런 당했다! 토론 글이 올라면 가만히 쪽쪽 꿀만 빨지 말고, 꿀인지 아닌지 꼭 확인하는 작업을 거치자!
koelectra를 썼을 때가 가장 좋게 나왔다.
한자 만자 정도만 추가해보는 건 어떨까!
'Naver Ai Boostcamp' 카테고리의 다른 글
Pstage3_Day2 ] FCN의 한계를 극복하려고 한 논문들 (0) | 2021.04.28 |
---|---|
Pstage3_Day1 ] Semantic Segmentation의 기초와 이해 (0) | 2021.04.26 |
[04/14] BERT 언어 모델 (1) (0) | 2021.04.14 |
인공지능과 자연어처리 (1) (0) | 2021.04.13 |
[04/02] More... (0) | 2021.04.03 |