분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
2025 SW중심대학 디지털 경진대회 : AI부문
[정보 공유 및 질문] 데이터 증강 및 탐지 전략에 대해
안녕하세요.
대회 커뮤니티에 정보 공유 글이 아직 많지 않은 것 같아, 다른 분들의 참여를 독려하고 논의의 장을 열고자 용기를 내어 저희 팀의 접근법을 먼저 공유해 봅니다.
저희 팀은 현재 데이터 불균형 문제 해결을 위해 LLM을 활용한 데이터 증강을 주요 과제로 다루고 있습니다.
저희의 접근법을 공유하고, 다른 참가자분들의 의견을 얻고자 합니다.
저희는 사람이 작성한 원본 데이터(generated=0
)를 LLM을 통해 재작성하는 '패러프레이징' 전략을 채택했습니다.
이는 모델이 단순히 특정 주제가 아닌, 문체와 구조적 차이에 집중하여 학습하도록 유도하는 것을 목표로 합니다.
실행 방법:
주요 허들: 초기에는 모델이 주제를 무시하거나, 다른 언어로 답변하는 등의 문제가 발생했으나, 프롬프트를 강화함으로써 대부분 해결
저희는 이 문제가 가장 해결하기 어려운 문제 중 하나로 보고 있습니다.
이에 저희는 아래와 같은 해결법을 시도해보고 있습니다.
언어학적 특징은 KatFish 논문에 나온 쉼표, 형태소 n-gram 분석 입니다.
물론 성능(0.68)은 그렇게 좋지는 않습니다. 딥러닝 모델(0.75)이 가장 효과적이더군요.
성능 낮은 팀이 올라가려고 물어보는 것 아니냐 하실 수 있습니다.
솔직히 맞습니다. 어떻게든 노력해서 개인 목표 90.0을 달성해보고 싶습니다.
그 과정에서 저보다 훨씬 잘하시는 여러분들은 어떻게 하시는지 궁금해서, 의견을 듣고 싶어 글을 남깁니다.
++ 또한 캐글처럼 다양한 분석 코드와 논의가 오가는 대회가 되면 더욱 즐거울 것 같아 글을 남깁니다.
읽어주셔서 감사합니다.
[참고]
KatFish 논문 코드
두 모델이 걸리는 시간이다르긴 하지만 모델당 1시간에 60개정도 나옵니다.
분당 1개씩은 나오네요
시간이 너무 오래걸려서 이 접근법이 아닌가 싶지만 조금이라도 뭔가 해보고싶어서요
안녕하세요, 올려주신 글을 읽다보니 조금 이해가 되지 않는 부분이 있어 글 남깁니다.
[모델 관련]
> 증강에 사용할 모델을 Llama3, Qwen 2.5를 사용하셨고, 속도가 느려 FP8로 바꿀까봐 고민한다고 하셨는데,
> 주요 허들로 모델이 주제를 무시하거나, 다른 언어로 답변하는 등의 문제가 발생하였으나 프롬프트를 강화함으로써 해결하셨다고도 하셨습니다.
<모델 제작 시기>
- 그런데, 일단 왜 작년에 출시된 모델을 사용하시는 것인지 이유가 있을까요?
- 작년까지만 해도, LLM 모델들이 다국어를 원활하게 지원하지 않아 모델이 출시된 이후 한국어로 파인튜닝하는 경우가 많았습니다.
- 그러나 작년 라마 3부터 다국어 지원이 원활해졌고, 이번 년도 모델은 한국어 관련된 문제를 거의 보이지 않는 상태입니다. 이외에 한국 회사들이 제작한 모델도 공개가 되어 있기도 하죠.
- 때문에 다른 언어로 답변하는 등의 문제는 출시된 지 얼마 되지 않은 모델을 사용했다면 발생하지 않았을 문제일 것 같은데, 한국어 모델이나 이번 년도 출시된 모델을 사용하시지 않는 이유가 있을까요?
<프롬프트>
- 또한, 작년 까지도 프롬프트를 따르지 않는 경우가 많긴 했으나 계속된 개선으로 최신 모델들은 완전히 지시사항을 무시하는 정도의 성능 문제를 보이지는 않는데 현재 어떤 문제를 겪고 계신 것인지 잘 모르겠습니다.
- 첨부하신 프롬프트를 살펴보면, '개인적인 의견, 댓글, 웹사이트 UI 요소 등을 절대 포함하지 않습니다' 등의 instruct tuning이 제대로 되지 않은 모델들에서 발생하는 문제를 해결하기 위한 프롬프트가 들어가있는데, 이 정도의 프롬프트가 필요할 정도로 성능 하락이 발생한 모델을 사용하고 계신 것은 아니라고 생각합니다. 심지어 최신 모델들은 프롬프트가 딱히 필요 없는 경우도 많이 있습니다.
- 단 하나의 케이스이긴 하나, 말씀하신 대로 어려움이 발생하는 지 확인하기 위해 트레인셋 0번 데이터에 대해 시도해본 결과, 제가 봤을 때는 아무 문제 없이 잘 생성된 것을 확인할 수 있었습니다. 사진 첨부가 불가능하니, 링크로 남기겠습니다. https://drive.google.com/file/d/1JfvtydNcrkVp2szG_-aRERNJ9F_xGvzg/view?usp=sharing
<컨택스트 길이>
- 최신 모델들의 컨택스트를 넘어갈 만한 인풋은 트레인 셋에 없는 것으로 알고 있습니다.
- 이 부분이 문제가 되지는 않을 것인데, 특정 테이터에서 문제가 발생하는 경우를 확인하신 적이 있나요?
<양자화>
- 생성 속도가 문제가 되는 상황에서, FP8로만 전환하려고 하시는 이유가 있으신가요?
- INT4도 성능 하락이 패러프라이징 정도를 못할 정도로 크지는 않다고 생각합니다. 그리고 코랩에서만 돌리셔야 하는 상황이라면 더더욱 채택해서 나쁠 것이 없다고 생각됩니다. bnb config에서 하나만 바꾸면 되는 정도로 크게 힘들지도 않고요.
[증강 관련]
- 현재 작성해주신 글만 읽었을 때에는 증강이 key solution이라 판단하신 이유에 대해서는 인지하기 힘든데요,
- LLM 생성 텍스트를 탐지해야 하는 상황에서 특정 LLM으로 추가 증강을 진행하는 것이 적절한 지에 대해 어떤 생각을 가지고 계신지 궁금합니다.
- LLM의 텍스트 생성 패턴은 모델마다 다르기 때문에 여러 LLM으로 생성한 글을 하나의 딥러닝 이진 분류 모델로 탐지하는 것은 불가능합니다.
- 이 대회의 데이터 셋이 만들어진 방식에서 테스트와 트레인 모델이 서로 다른 경우, model agnostic solution이 필요할 것이고,
- 서로 같은 경우, 그 모델이 무엇인 지 모르는 상태에서 특정 LLM으로 생성한 글로 증강하는 경우 학습에 방해가 될 것이라고 생각합니다.
- 대회 목적이 정확히 어떤 것인지는 현재 0.9를 넘은 팀들은 제대로 파악하고 있겠지만, 저희 팀도 0.8대를 유지하고 있어 대회의 목적이 model agnostic 탐지인지 한 모델이 생성한 것을 탐지하는 것인지는 아직 모르겠습니다.
- 저희 팀은 0.9 달성 이후 추가 성능 상승이 막힌다면 최후의 수단으로 증강을 고려해보지 않을까 하고 있습니다.
- LLM 증강이라는 선택지는 비용이 매우 큰 선택지이므로, 이에 대해 잘 판단하시길 바라겠습니다.
P.S: 아래는 증강 테스트에 사용한 프롬프트입니다.
https://drive.google.com/file/d/1A0d85xLABfMi6vvzn1xNRpNUJaHAYSjf/view?usp=drive_link
교수님이세요??? 저도 근데 동감입니다. 7b짜리 모델은 너무 무거울것 같습니다. kaggle Pro라고하더라도 컴퓨팅비용과 시간 둘다 엄청 소모될것같아요.
상세한 답글 감사합니다.
글을 읽고나니 초보자 입장에서 무모한 생각이었나 생각이 드네요.
사실 답변해주신 내용에서 생각해보지 못했거나, 몰랐던 사실이 많습니다.
그래도 조언해주신 내용을 바탕으로 더욱 발전시켜나가 보겠습니다.
좋은 결과 있으시길 바랍니다.
저희팀은 문제 접근을 일단 작은 모델에게 해당 글에 AI가 들어있는지 안들어있는지 판단하도록 가르친다음, 각각 문단에 적용했더니 0.6점 정도 나왔네요
오.. 그렇군요..
알려주셔서 감사합니다!
저희도 여러가지를 시도해봐야겠어요.
좋은 결과 있으시길 바랍니다.
현재 접근 방식이 증강인데, 이전 답변해주신 분의 의견처럼 매우 비용이 큰 접근 방식입니다. 증강이 굳이 필요하지 않을 수 있습니다. 데이터 언밸런스 상황이라 하더라도 데이터를 생성하는 것은 신중해야 합니다.
특히, 현재 방식은 생성을 통해 소수 클래스 데이터를 보완하려는 시도로 보이는데, 이 경우 생성된 데이터의 품질이 train/test 데이터와 일관되지 않다면,
오히려 잘못된 방향의 편향(bias) 을 학습시켜 모델 성능을 떨어뜨릴 수 있습니다.
단순 0.9 까지만 노리신다면 적절한 under sampling 과 같은 방향에 초점을 두는것도 방법이라고 생각힙니다.
저희 팀의 경우 기존 베이스라인 모델에 일부 feature engineering을 적용하고, 증강 없이도 최대 0.74 수준까지 성능 향상을 확인한 바 있습니다.
감사합니다.
데이터 불균형을 해결하기 위한 방법을 저는 증강이라고 생각했는데, 윗 분의 글과 이 글을 읽어보니 그게 너무 naive한 생각이었을 수 있겠네요.
적절한 대안까지 알려주셔서 감사합니다.
시도해보고 다음에 또 글 올릴 수 있으면 좋겠습니다.
좋은 결과 있으시길 바랍니다.
아직 증강을 시도하진 않고 있습니다. 잘못된 bias가 걱정 되어 접근 자체가 확실히 조심스럽긴 하네요.
증강이 편향에 영향을 줄 수 있을텐데 마냥 순진하게 생각했나봅니다.
답글 달아주셔서 감사합니다.
좋은 결과 있으시길 바랍니다.
상세히 근거를 들어 알려드리긴 어렵지만, 주어진 데이터셋도 양이 꽤 됩니다. 페러프레이징 증강 없이 성능 향상 많이 올릴 수 있습니다.
증강으로 데이터 개수를 늘리는 것이 이상적으로는 좋겠지만, 테스트셋과 비슷한 특징을 갖도록 변형해줄 지가 의문입니다.
이것을 맞추기 위해 테스트셋을 들여다보는 것은 데이터리키지이기 때문에 이것을 참고하면 안 되고, 모르는 채로 증강한 데이터가 유의미한 결과를 끌어줄 지는 미지수입니다.
그리고 토큰을 하나하나 생성하기 때문에 시간도 너무 오래 걸리기 때문에 양이 충분하단 것을 확인한 후에는 우선 증강은 후순위로 미뤄두고 하고 있습니다.
원본 데이터 자체를 더 분석해보시길 바라고, 사전학습 모델을 쓸 수 있다는 점이 매우 중요하단 것을 알아두시면 도움되실 것 같습니다. 참고로, 데이터 분석은 사람이 직접 AI가 쓴 글의 특성을 파악하도록 특징 잡는 것을 말하는 것은 아닙니다. 인간이 특징을 결정 짓고 전처리하면 인간이 알 수 없는 특징 정보는 소실될 수 있습니다.
마지막으로, 사전학습 모델이면 엄청나게 많은 데이터를 통해 학습하고 파인튜닝까지 됐기 때문에, 우리의 테스크에 맞추도록 조정할 수 있는 정도의 데이터면 충분할 수 있습니다.
상세한 답글 감사합니다.
역시 글을 올려보기 잘 한 것 같습니다.
덕분에 저의 시야가 넓어지는 것 같습니다.
특히 인간이 특징을 결정 짓고 전처리하면 인간이 알 수 없는 특징 정보는 소실될 수 있다고 하신 말씀이 와닫네요.
좋은 결과 있으시길 바랍니다.
저희 팀도 초반에 Paraphrasing이긴 하나 본문의 그것과는 조금 다른 방법론을 시도해보긴 했습니다.
더욱 구체적으로는 BERT와 같은 Black-Box 기반 방법론을 사용하는 것이 아니라,
별도의 (Scoring-)LLM을 통해 입력 문장 내 각 Token의 Log-Probability를 계산하고,
이를 기반으로 별도의 분류 가능도로 변환하는 함수를 정의한 뒤 Thresholding을 통해 예측하는
White-Box 기반 방법론을 사용했습니다. (기반을 둔 논문은 DetectGPT, Fast-DetectGPT 였습니다.
해당 방법론의 핵심적인 Intuition은 AI-Generated Text는 Human-Written Text와 비교했을 때 LLM의
(Log-)Probability Curvature의 Positive Curvature 부근에 위치할 가능성이 높다는 것입니다. 따라서
입력 Text에 Perturbation(본문의 Paraphrasing과 유사한 과정입니다. 의미론적으로 유사하지만 구조적으로 다른 문장으로
만드는 과정입니다.)를 가한 뒤 입력 Text와 Purturbated-Text의 Log-Probability 차를 기반으로 분류를 진행합니다.
Paraphrasing(Perturbation)은 별도의 LLM에 Paraphrasing을 요청하는것이 아닌 일부 Token을 Masking한 뒤
Mask-Filling Model을 통해 이를 복원하여 구현했습니다 (DetectGPT의 철학을 그대로 적용했습니다.).
삭제된 댓글입니다
오.. 그렇게 접근하셨군요.
노력이 느껴지는 경험담이어서 좋습니다.
이렇게 시도하신 방법과 얻으신 insight까지 공유해주셔서 감사합니다.
체계적으로 접근해야한다는걸 간과하고 있었습니다.
참고해서 목표 달성해보겠습니다.
좋은 결과 있으시길 바랍니다.
초반에는 White-Box, Black-Box 팀으로 나누고 White-Box 팀은 BERT와 같은 Black-Box 방법론에 비해
일반화 성능이 뛰어난 위와 같은 White-Box 방법론을 사용하여 프로젝트를 진행했습니다. Black-Box의 경우
Train Dataset과 분포나 Domain이 다른 Text에 대해서는 분류 성능이 크게 떨어지기 때문입니다.
하지만 아쉽게도 White-Box 기반 방법론으로는 0.7 초반대의 점수밖에 얻지 못했습니다.
아무래도 White-Box 기반방법론의 경우 문장을 생성한 LLM과 Scoring Model로 사용한 LLM이 다를 때
성능이 크게 떨어지는 경향이 있고, 어떤 LLM을 통해서 문장이 생성되었는지 모르는 현 상황에서 해당
방법론이 큰 힘을 내지는 못했던것 같습니다. 또한 Train, Test Set간의 분포가 크게 다른 것도 본 방법론이 부진했던 큰 이유인것 같습니다.
Train - AI-Generated: Document 중 일부 Paragraph, Sentence만 AI-Generated
Train - Human-Written: Document 전체가 Human-Written
Test - AI-Generated: 전체 Paragraph가 AI-Generated
Test - Human-Written: Paragraph 전체가 Human-Written
지난주 주말 전까지 White-Box 팀에서는 DetectGPT, Fast-DetectGPT, Ghostbuster과 같은 각종 방법론을
가지고 실험해보다 도저히 각이 안보여서 그냥 다 같이 Black-Box쪽으로 계속 실험중이네요...ㅋㅋㅋ
계속 일반적인 Supervised 방법론을 벗어나려는 시도를 하고 있긴 하지만 아직은 BERT 기반이 가장 성능이 높게 나오는..
열심히 도전하시는 모습이 멋있으십니다.
좋은 결과 있을겁니다.
남은 기간도 힘내세요 :)
감사합니다, 튀겨진감자님도 힘내세요!
저는 train dataset에 대해 문단별로 학습을 시킬 때 우선 데이터의 분포를 보기 위해 문단별로 나눴을 때 하나의 full_text 안에 있는 문단의 최대 갯수, 최소 갯수 등의 분포를 파악해봤는데 문단이 많은건 700개 이상의 문단을 포함하고 있더라구요. 그래서 그런 과도하게 문단 수가 많은 데이터를 관찰해보니 한 문단이 1 문장으로 이루어져있고 그 마저 글이라기보다 사건, 또는 정보의 나열(수상 기록 등도 있었던 것 같아요)인 경우가 있더라구요. 그래서 이러한 노이즈가 많은 학습 데이터셋을 제거하는 것에 초점을 맞추었고 모델은 klue/roberta-large을 사용하여 0.83 정도 나왔습니다!
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
직업정보제공사업 신고번호: J1204020250004
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io |
전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved
llm 로 생성 증강하면 시간은 어느 정도 걸리나요?