본문 바로가기
LLM

LLM - ChatGPT로 학습 데이터를 생성하는 방법 - 텍스트 데이터, 프롬프트 엔지니어링

by Tiabet 2024. 3. 27.

요즘은 그야말로 데이터 전쟁이다. 빅테크 기업들의 AI 전문가들을 포함해 많은 사람들이 좋은 AI를 만드려면 양질의 좋은 데이터가 많이 필요함을 끊임없이 언급 중이다.

 

최근에 캐글 대회를 보면 LLM을 이용해 데이터를 자체적으로 생산하여 학습 데이터 수를 늘리는 방식으로 고득점을 노리는 시도들이 많다. 특히 내가 최근에 참여한 텍스트 데이터 분류 대회에서 그랬다.

 

https://www.kaggle.com/datasets/thedrcat/daigt-v2-train-dataset

 

DAIGT V2 Train Dataset

A dataset you can actually train on for the LLM Detect AI Generated Text comp.

www.kaggle.com

위 데이터셋은 공식 데이터셋이 아님에도 불구, 너무나도 엄청난 양의 양질의 텍스트 데이터를 추가로 제공해준 덕분에 대회의 거의 모든 참가자들이 사용했다고 봐도 될 정도로 큰 인기를 끌었다. 공개된 상위 솔루션들 모두 위 데이터셋을 포함, 정말 수많은 소스의 데이터셋을 가져다가 사용했음을 알 수 있다. (물론 최상위권 득점을 위해선 모델에서도 아주 복잡한 앙상블 기법을 사용하지만)

 

그래서 나도 높은 수준의 데이터셋을 직접 만들어보고자 했다. 어려운 기법들 말고 간단하게 ChatGPT의 프롬프트만을 이용해서 생성이 가능한지 시험해보고자 한다.

https://www.kaggle.com/datasets/alejopaullier/daigt-external-dataset

 

DAIGT | External Dataset

External Dataset for the LLM- Detect AI Generated Text competition

www.kaggle.com

위 데이터셋은 위에서 소개한 데이터셋의 일부로, ChatGPT에게 Instruction을 주어 생성한 데이터들로 이루어져있다. 나는 API를 따로 사용하지 않고 웹사이트에서 시도해봤다.

 

 

Prompt Engineering (프롬프트 엔지니어링)



Task: Write a persuasive essay on whether or not classes from home should be offered as an option for students to attend. Describe the advantages and disadvantages of attending classes from home, as well as the effect it may have on learning. Cite examples to support your argument.


위 데이터셋에서 Instruction으로 주어진 문장 하나를 가져와봤다. Task : 를 활용하여 목표를 명확하게 전달하려는 의도가 보이고, 구체적으로 포함되어야 하는 내용이 무엇인지 언급해주고 있다.

 

ChatGPT의 프롬프트 프레임워크를 어느정도 형식화해놓은 그림이다. 이 영역은 프롬프트 엔지니어링의 단계인데, 프롬프트 엔지니어링은 LLM을 활용하는 데에 있어 아주 중요한 영역이다. 프롬프트를 어떻게 작성하냐에 따라서 좋은 대답이 돌아오기도, 나쁜 대답이 돌아오기도 하기 때문이다. Task 를 명확히 명시한 것도 이 프롬프트 엔지니어링의 일종이라고 볼 수 있겠다.

 

나는 우선 여러 방법을 시도해보고 결과를 비교해보고자 한다. Task는 Oil의 가격에 대한 기사를 작성하되, 중립적인 느낌이 나게끔 작성해주게 시켜봤다.

 


You are a journalist writing an article about international news related to oil. There isn't much new news and you want to make your article as neutral as possible. Write a 20-character headline and a 100-character body.


우선 위와 같은 느낌의 프롬프트를 주어보았다. 생성하는 결과는 아래와 같다.

 

제목이 너무 짧은 것 같아서 프롬프트를 약간 수정해봤다.

 


You are a journalist writing an article about international news related to oil. There isn't much new news and you want to make your article as neutral as possible. Write a 10-word headline .


역시나 말을 잘 알아듣는 모습이다.

 

 

이번엔 좀 더 고난이도의 프롬프트를 줘보고 싶었다.


I looked up oil news to study the correlation between the price of oil and related news, but found that there were many days when there were no articles, so you should write what the article would have been about if it had been published. Write a 10-word title for your article.


내 상황을 설명하고 도움을 달라는 느낌으로 프롬프트를 작성해봤는데, 돌아온 결과는 썩 좋지 않다.

ChatGPT가 나에게 이입하여 내 상황을 기사로 작성하는 모습을 볼 수 있다. 이를 통해 ChatGPT한텐 내 상황을 설명하기 보단, ChatGPT에게 명확한 역할을 주어 명령을 수행하는 게 훨씬 도움이 된다는 것을 알 수 있다.

 

마지막으로 다음과 같은 시도도 해보고 마쳤다.

 


You are a journalist writing an article about crude oil in 2003. Using your knowledge of world events and oil prices in 2003, write a 10- to 20-word headline for your article.


ChatGPT가 이미 알고 있는 지식을 활용시켜봤더니 꽤나 좋은 수준의 기사 제목이 생성되는 것을 확인할 수 있었다.