본문으로 건너뛰기

DistilBERT로 AI 텍스트 탐지기 만들기

DistilBERT 기반 분류기로 AI 텍스트 점수화와 로컬 API를 구현하는 종단간 프로젝트다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

Substack의 내장 AI 탐지 기능을 계기로, AI가 작성한 텍스트를 판별하는 시스템을 데이터셋 구성부터 모델 학습과 로컬 배포까지 직접 만드는 교육용 프로젝트가 시작된다. 구현 모델은 DistilBERT classifier를 Fine-tuning해 입력 텍스트를 AI 생성 클래스와 인간 작성 클래스 사이에서 분류하고, AI 클래스 추정값을 0~100 점수와 구간별 UI 결과로 변환한다. 이 점수는 학습 분포에 따른 분류기의 추정값이지 실제 저자 확률이 아니며, 새로운 LLM이 탐지 패턴을 피하거나 인간 글이 AI로 판정되는 False Positive 때문에 지속적인 갱신과 신중한 해석이 필요하다. 결과물은 사람과 agent가 호출할 수 있는 API와 로컬 브라우저 UI로 확장되며, LLM 출력의 품질을 평가하는 verifier 응용 사례로도 이어진다.

섹션별 상세

01
Substack의 UI에 AI 탐지 기능이 추가되고 소형 언어 모델을 활용한 로컬 프로젝트에 대한 관심이 커지면서, AI 탐지기를 처음부터 구축하는 교육용 프로젝트의 배경이 마련됐다. 글의 목표는 단순한 탐지기 구현을 넘어 데이터셋 구성, 모델 학습, 평가, 로컬 배포를 포함한 종단간 LLM 프로젝트의 흐름을 익히는 데 있다. 완성 결과물은 사람과 agent가 호출할 수 있는 AI-detector API와 텍스트 전체 점수 및 구간별 점수를 표시하는 브라우저 UI다.
Substack 게시물 화면에서 AI 텍스트 검사 메뉴와 Pangram 기반 판정 결과를 함께 보여주는 스크린샷이다.
Screenshot이미지에는 Substack UI의 ‘Scan for AI text’ 메뉴와 텍스트 판정 패널이 보이며, 결과가 AI 0%, Human 100%로 표시된다. 본문에서 언급한 Substack의 내장 AI 탐지 기능과 Pangram 기반 접근을 시각적으로 뒷받침하며, 탐지 결과를 문서 전체에 적용하는 사용자 경험을 보여준다.
02
AI 탐지기는 AI가 작성한 문장에서 특정 LLM에 반복적으로 나타나는 패턴을 학습하고, 이후 입력 텍스트를 AI 생성 클래스와 인간 작성 클래스 사이에서 분류하는 방식으로 작동한다. 이 프로젝트는 분류기의 AI 클래스 추정값을 0~100 점수로 바꾸며, 그 값은 학습 데이터 분포에 따른 모델의 판단이지 텍스트가 AI로 작성됐을 실제 확률 자체는 아니다. 따라서 문법 교정 도구가 사람의 글을 과도하게 다듬어 AI 문체처럼 보이게 만드는 상황을 점검하는 용도와 스팸성 콘텐츠 필터링에 활용할 수 있다.
03
글에서 비교하는 탐지 접근은 지도학습 분류기, 텍스트를 변형한 뒤 확률 변화를 확인하는 검사, Perplexity 기반 측정, 워터마킹이다. 구현 단계에서는 이 가운데 DistilBERT를 Fine-tuning한 분류기를 사용해 텍스트를 입력받고 AI 생성 가능성을 나타내는 점수를 출력한다. 이 구조는 일반적인 추론 모델과 달리 LLM의 출력을 평가하는 scorer 또는 verifier로 기능하므로, 생성 모델의 결과를 판정하는 응용으로 확장할 수 있다.
04
AI 탐지와 생성 모델의 관계는 탐지 패턴을 둘러싼 반복적인 고양이와 쥐 게임에 가깝다. 탐지기가 특정 AI 생성 패턴을 학습해도 다음 LLM이 그 패턴을 우연히 또는 의도적으로 드러내지 않으면 판별 성능이 낮아지고, 탐지기는 해당 모델에 맞춰 다시 갱신돼야 한다. 인간이 쓴 글을 AI 생성물로 판정하는 False Positive도 남기 때문에, 탐지 점수를 확정적인 저자 판정으로 사용하기보다 학습 분포와 오류 가능성을 함께 고려해야 한다.

용어 해설

AI 텍스트 탐지기(AI Text Detector)
AI 텍스트 탐지기는 문장의 통계적·언어적 패턴을 학습해 텍스트가 AI로 생성됐을 가능성을 점수로 산출하는 분류 시스템이다. 이 글에서는 학습 데이터의 분포에 기반한 추정값을 0~100 점수로 반환하며, 이를 모든 상황에 적용되는 실제 확률로 해석해서는 안 된다고 설명한다.
지도학습 분류기(Supervised Classifier)
지도학습 분류기는 AI 생성 텍스트와 인간 작성 텍스트처럼 정답 라벨이 붙은 데이터를 사용해 입력을 여러 범주로 나누는 모델이다. 이 프로젝트에서는 텍스트를 AI 생성 클래스와 비AI 생성 클래스로 분류하고, 특정 학습 분포 안에서 AI 클래스에 속할 추정값을 점수로 변환한다.
Perplexity
Perplexity는 언어 모델이 주어진 텍스트의 다음 토큰을 얼마나 예측하기 어려워하는지를 나타내는 지표다. 글의 예측 가능성을 이용해 AI 생성 여부를 추정하는 접근 가운데 하나로 소개되지만, 이 튜토리얼의 주된 구현은 DistilBERT 기반 분류기다.
워터마킹(Watermarking)
워터마킹은 텍스트 생성 과정에 식별 가능한 패턴을 삽입해 이후 생성물 여부를 판별하려는 방식이다. 글에서는 지도학습 분류기, 변형 기반 확률 검사, Perplexity와 함께 AI 작성 텍스트 탐지 방법의 한 범주로 언급되며, 새로운 LLM이 해당 패턴을 피하면 탐지기가 다시 갱신돼야 한다.
오탐(False Positive)
오탐은 실제로는 사람이 작성한 텍스트를 AI 생성물로 잘못 판정하는 경우다. AI 탐지기는 특정 생성 패턴을 학습하는 과정에서 이런 오류를 겪을 수 있으며, 글은 인간 글이 AI로 표시되는 문제를 탐지 시스템의 중요한 한계로 다룬다.

기술

  • Substack
  • Pangram
  • ChatGPT
  • DistilBERT

활용 사례

  • 스팸성 콘텐츠 필터링
  • 문법 교정 뒤 AI 문체로 판정될 가능성 점검
  • LLM 출력 scorer 및 verifier
  • 사람과 agent가 호출하는 로컬 AI-detector API
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 15.수집 2026. 08. 15.출처 타입 RSS

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.