KoBERT 텍스트 분류문제를 풀고자 합니다.
KoBERT(SKT 공개 모델)을 사용하여 텍스트 분 문제를 풀고 있습니다.
sentencePiece를 활용하여 vocab을 학습하였고, 이를 KoBERT 모델에 불러와서 학습을 하는데,
토크나이징은 잘 수행되는것 같은데 학습과정에서 loss가 안떨어지네요...
혹시 이럴때 제일먼저 해볼수있는 방법은 뭐가있을까요?
제가 학습한 vocab을 사용하지 않았을때는 오버피팅이 되기는 했는데, 제가학습한 vocab을 사용하니 학습조차안되어서.. vocab을 생성 잘못한것일지...
짐작하시듯 토크나이징에서 문제가 발생한 것으로 보입니다. 결론부터 말씀드리면 KoBERT 패키지에서 제공하는 vocabulary를 이용해서 토크나이징을 하셔야 합니다. KoBERT는 해당 vocabulary를 따라 사전 학습이 된 것이므로 해당 vocabulary 내의 각 단어 토큰에 대한 표현을 임베딩 형태로 갖고 있으며, 이를 기반으로 뒤의 task를 수행하게 되어 있습니다. 직접 정의하신 토크나이저를 이용해 토큰화를 할 경우 해당 vocabulary가 기존 KoBERT vocabulary와 호환되지 않을 것이며 따라서 온전한 NLP task 수행 역시 불가합니다.
아예 Loss가 줄지 않는다고 해주셨는데, 정확한 문제 파악은 코드가 없어 어렵습니다만, 아마도 토크나이징에서의 문제로 인해 모든 단어가 unknown으로 인식되었든지 하는 문제가 있었을 것으로 생각됩니다. 이런 경우 Loss가 정체될 수 있습니다. 토크나이저를 KoBERT의 vocabulary를 기반으로 만들어주세요.