본문 바로가기

프로젝트/(NLP)GPT2의료기사생성

(2) GTP2를 이용한 의료기사생성 AI - 모델 평가

그동안 게을러서 진행 사항을 정리 안했더니 포스팅할 내용이 쌓였다.

(11.09) 

오늘 진행할 내용은 다음과 같다.

- 사전 fine_tuning 해놓은 모델 불러오기 연습

- 팀원이 전처리한 데이터로 다시학습하기

- 팀원이 정리한 문단출력방식 활용해보기

 

 fine tuning한 모델 불러오기

불러오기 과정에서 알아야 할 요소는 다음과 같다.

 

- GPT_finetuning.ipynb 파일: 데이터를 로드하고, 모델을 생성, 저장하는 코드

- Dataset폴더: 전처리된 csv 데이터가 저장되어있음

- data_out폴더: fit된 모델을 h5파일로 저장

모델 생성 ipynb파일과 Dataset, data_out 경로

 

팀원이 전처리한 데이터로 다시학습하기

- dataloader에서 불러오는 데이터 변수명을 수정해주었다.

 

팀원이 정리한 문단출력방식 활용해보기

팀원이 제시한 방법은, input array에 들어오는 토큰의 길이를 count 해서, 총 300개 넘게 쌓일 때까지 generate하는 방법이었다.

 

 

해당 방법을 이용하면 토큰이 </s>가 나오건 말건 무조건 300개의 토큰을 출력하므로 얼핏보기엔 괜찮아 보였다.

 

find_tuning하지 않은 상태

 

하지만 의료기사를 학습시킨 이후, 몇 가지 문제점이 관측되었다.

 

뉴스의 형식에 갇힌 모습

 

첫 번째, 출력 길이를 길게 하더라도 finetuning한 데이터가 뉴스 양식이기 때문에 결국 ~~~<OO뉴스> 처럼 마무리되는 문장으로 끝맺음 되는 경우가 허다하였다. 이 경우에는 <OO뉴스, 저작권~~><OO뉴스, 저작권~~><OO뉴스, 저작권~~> 처럼 기사의 끝 부분이 반복적으로 등장했다. 이 문제에 대해서는 데이터 전처리가 필요해 보인다.

 

질문에 답하지 못하는 모습

두 번째, 모델이 멍청했다. 학습한 데이터가 의료백과뿐만 아니라 의료'기사'가 포함되어 있기 때문에, 모델이 어떤 양식에 맞추어 결과물을 제출할지 혼동하는 모습이었다. 이 문제를 해결하기 위해 의료기사생성모델을 의료정보 출력모델과 기사 생성 모델로 나누어 각 모듈에 대해 입력 데이터를 나누는 방법을 도입할 계획이다.