0. Intro
인터넷상에 있는 수많은 글, 뉴스 또는 학생이 제출한 과제 등이 ChatGPT, Bard로부터 생성된 글인지 어떻게 판별할 수 있을까요?
당장 생각나는 방법은 글을 N-그램과 같이 통계적 기법으로 분석하여 인간의 글과 생성 AI의 글 사이의 관계를 찾는 것이고
또는 BERT와 같은 모델을 분류기로 사용하여 한 가지 주제 또는 프롬프트에 대하여 인간의 글과 생성 AI의 글을 분류하는 모델을 만드는 것입니다.
이 방법들은 인간의 글과 생성 AI의 글을 학습데이터로 확보해야 하기에 시간과 비용이 들 수밖에 없습니다.
이 글에서 소개해드릴 DetectGPT는 이런 비용 없이 비교적 작은 모델(T5)을 활용하여 생성 AI로부터 만들어졌는지 판단합니다.
1. Introduction
방법은 다음과 같습니다.
- 생성 AI를 사용하여 판별할 글 A의 각 토큰의 로그 확률을 구한다. (OpenAI API를 사용하면 logprob을 얻을 수 있습니다.)
- T5와 같은 언어 모델을 사용하여 글 A에서 몇 개의 토큰을 변경하여 교란(perturb)시킨 후 똑같이 로그 확률을 구한다.
- z스코어를 구한다.((1번에서 구한 로그확률) - (2번에서 구한 로그확률)) / (2번에서 구한 로그확률)
- z스코어가 임계값 이상이면 생성 AI가 만들어낸 글이다.
위 방법은 다음과 같은 가설을 기반으로 합니다.
(왼쪽)과 같이 생성 AI가 생성한 글의 각 토큰은 로그 확률이 높은 순으로 채택되기 때문에 이를 교란시키면 로그 확률이 낮아질 수밖에 없다.(위 2번에서 구한 로그 확률은 낮아진다.)
이를 논문에서는 로그 확률 함수가 음의 곡률을 갖는다 라고 말하기도 합니다.
(negative curvature of the log probability function)
반면에 (오른쪽)과 같이 인간이 작성한 글의 로그 확률 함수는 몇 개의 토큰을 바꿔서 교란시켜도 반드시 낮아지는 건 아니라고 합니다.
위 표와 같이 GPT-2, GPT-Neo, GPT-J, GPT-NeoX가 생성한 글이 모두 인간이 작성한 글보다 로그 확률값의 분포가 큰 것을 예시로 보여줍니다.
2. Experiment
AUROC를 기준으로 평가하였으면,
XSum(가짜 뉴스 탐지), SQuAD(위키피디아), WritingPrompts (레딧 유저 창작 스토리)에서 높은 성능을 보여준다고 합니다.
3. 내 의견
매일 성능을 갱신하는 SOTA LLM이 나오고 AI가 생성한 수많은 블로그와 뉴스에 낚이며 이것들을 감지할 수 있으면 정말 좋을 것 같다는 생각이 들었는데, 학습데이터 없이 그것이 가능하다는 여러 논문을 봐서 흥미로웠습니다.
저와 같은 사람들이 꽤 있어 생성 AI가 만든 창작물을 감지할 수 있는 기술에 대한 수요도 꾸준히 늘 것 같습니다.
https://github.com/eric-mitchell/detect-gpt
'AI/ML > NLP' 카테고리의 다른 글
[NLP] Something of Thoughts 프롬프트 테크닉 (CoT, ToT) (0) | 2023.12.10 |
---|---|
[Paper Review] LoRA: Low-Rank Adaptation of Large Language Models (1) | 2023.05.14 |
[Paper Review] Don’t Stop Pretraining (0) | 2022.10.23 |
[Review] OpenAI의 DALL-E2 공개 (0) | 2022.04.24 |
[Paper Review] RoBERTa: A Robustly Optimized BERT Pretraining Approach (0) | 2022.03.13 |