본문 바로가기
일기

오늘 뭐했나 11/1

by soypablo 2022. 11. 2.

개요

U스테이지에서, model이 현재 어떤 부분에 대해 학습이 부족한지 알아야 할 필요가 있었다.

따라서 템플릿에 model의 prediction과 실제 label의 차이값을 체크하는 prediction check기능이 필요하게 되었고,

해당 기능을 제작하는 것이 오늘의 주요일과였다.

 

이슈1

prediction check기능이 test dataset에서는 잘 작동했지만, dev dataset과 train dataset에서는 잘 작동하지 않았다.

 

해결

pl.trainer의 predict메소드를 실행시켰을 때, template의 Dataloader가 test dataset과 predict dataset 객체만 생성하도록 정의 되어있던 것이 문제였다.(메모리 때문에 predict에 필요한 두개만 메모리에 저장함)

단순하게 test data path를 dev data path 또는 train data path와 동일하게 설정하고, test dataset을 호출하게 하여 해결했다.

 

얻은 것

predict check를 통해 predict와 label의 데이터 차이가 큰 값들을 분석해 보았다.

모델이 3가지 범주에서 유사도를 잘 추론하지 못했다.

1. 한 단어를 좌변에는 영어로, 우변에는 한글로 표시한 경우 ex) apple [sep] 사과

    -이 경우 유사도를 높게 표시해야 하는데, 모델은 유사도를 낮게 예측했다.

2. 모델의 tokenizer가 모르는 단어가 있어서 문장에 [UNK]토큰이 들어있는 경우.

    label이 높은 두 문장이었지만, 당연히 모델이 예측 할 수 없을 것이다.

    주목할 점은 label이 낮고 문장에 [UNK]토큰이 있는 경우는 예측을 잘 했다.

3. 단순히 첫 문장의 반의어를 넣은 경우 ex) 나는 빵이 좋아 [sep] 나는 빵이 싫어

    이 경우, 유사도를 낮게 예측해야 하는데, 모델이 이를 잘 수행하지 못했다.

내일은 모델이 잘 추론하지 못한 데이터를 개선할 수 있는 방법을 적용해 볼 생각이다.

지금 생각나는 개선방안.

1번 개선방안. sentence의 영어단어가 들어오면, 이를 한국어로 바꾸는  preprocessing을 처리.

2번 개선방안. model의 tokenizer를 학습시키거나, 해당 데이터를 삭제한다.

(그러나 데이터를 삭제하는 방법은 ,상대적으로 희소한 유사도가 높은 문장을 삭제시키기에 조심스럽다.)

3번 개선방안. sentence의 감정분석을 수행하는 model을 추가해서, 해당 모델을 거쳐서 positive로 나오면 [pos], 반대이면 [neg]토큰을 문장에 추가하는 방식으로 데이터를 훈련시킬수 있지 않을까?라는 생각이 든다.

 

내일 추가로 해볼만 한 것.

데이터 증강을 해보고자 하는데, 현재 높은 유사도 문장 데이터가 부족한 상황이어서,

sentence 1 , sentence2를 가진 문장에서, sentence1, sentence1(aug1), sentence2, sentence2(aug2) 두 개로 유사도가 100인 데이터를 만들어 적용할 수 있지 않을까 라는 생각이 든다.

문제는 적당히(?) 유사한 두 문장의 데이터 증강이 애매하다는 점이다. 이 부분을 더 고민해 보아야 할 것 같다.

'일기' 카테고리의 다른 글

근데 이제 뭐함?: 부스트캠프4기가 끝나고 한달 뒤 후기 1편  (0) 2023.03.23
어제 오늘 뭐했나. 11/4  (0) 2022.11.04
오늘 뭐했나-10/28, 10/31  (1) 2022.10.31
10_4  (0) 2022.10.04