본문 바로가기

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

(3) GTP2를 이용한 의료기사생성 AI - 무작성 기사쓰기!

지난 진행상황에서

"의료기사 데이터와 의료지식 데이터를 한번에 학습시킨 모델" 이 원터치로 "의료기사"를 생성하는 것이 무리라고 판단했다. 

 

그리고 다음과 같은 의문이 생겼다

'최신기사를 학습 시켜서 최신기사를 결과물로 내놓을거면, 중간에 GPT는 왜 필요한거지? 그냥 최신기사를 copy+paste하면 되는거 아닌가?'. 

 

그래서 모델생성 팀원과 얘기를 나눠본 결과

 

팀원이 생각한 최종 결과물

팀원이 생각한 최종 결과물은 이런 식이라고 한다.

 

기사 생성 모듈에서도 최신 데이터를 학습시키고, 기사 내용도 최신 지식이 반영되기를 바라는 식이다.

 

.... 우선 처음 이 얘기를 듣고 나는 이 목표를 달성하기 위해선 실시간 크롤링, 실시간 전처리, 실시간 학습모델이 필요하다고 생각이 들었다. 따라서 서버에 크롤링, 전처리, RNN모델을 다 올려놓고 이를 서비스 형식으로 구현하는게 어떻겠냐는 제안을 했는데, 팀원이 뼈를 때렸다. 일단 기사형식의 글을 "써보기라도" 하자는 것.

 

그래서 뇌를 비우고 기사데이터만 학습시켜서, 기사형식의 글을 쓰도록 GPT를 fine tuning 해볼 것이다.

 

기사 데이터 2개만 학습시켜보자

 

 

#MAX_LEN 변수는 pad_sequence에 들어가는 파라미터이다.

해당 값을 500으로 설정했더니 모델이 올바르지 않다고 오류를 뿜었다.

 

500이라는 숫자가 너무 커서 생긴 문제인가 싶어 30~100으로 올리면서 학습한 결과,

 

#MAX_LEN=30

MAX_LEN=30

 

#MAX_LEN=50

MAX_LEN=50

#MAX_LEN=100

MAX_LEN=100

 

오... MAX_LEN이 길어질 수록 점점 기사의 형태를 띄는 것 같다. 기사의 형태가 맞는걸까? 그대로 기사를 복붙하는게 아닐까?

 

Greedy는 형편없다

그리디 방식은 형편없다... 그냥 치워버리자.

 

 

욕심을 내서  MAX_LEN을 100 이상으로 올려보았다.

#MAX_LEN=200

MAX_LEN=200

MAX_LEN이 200일 때 정말 괜찮은 결과가 나왔다.

 

#MAX_LEN=300

MAX_LEN=300

MAX_LEN은 300을 넘기면 오류를 뿜어서 학습할 수가 없었다.

 

그리고 갑자기 300부터 출력 길이가 길어진 이유는, 출력하는 길이 변수인 MAX_STEP을 500까지로 늘렸기 때문이다.

 

 

MAX_STEP을 1000으로 더욱 늘렸더니 다음같은 결과가 나타났다.

 

MAX_LEN=300, MAX_STEP=1000

MAX_STEP은 500이든 1000이든 변화가 없었다.

 

지금까지 파라미터를 수정해가면서 어떻게든 긴 기사를 생성하는데 성공했다. 

 

앞으로 개선할 사항은 다음과 같다.

1. 기사가 중간부터 생성되는 것. Ex) 치매를 치료할 것으로 보인다. 이에 대한 연구는 ~~~~~.

2. 키워드를 시작으로 문단이 생성 될 뿐, 핵심 주제는 키워드와 무관한 경우

3. 문단 단위로 잘라서 생성하기. 지금은 여러 내용을 너무 길게길게 출력한다.