NLP 분야에서 사회적 문제, 특히 언어 순화(Language Detoxification)를 다루는 연구들이 많이 있습니다. Mask-fiiling, Text-sytyle Transfer 등 기존에 많은 연구가 이루어져왔지만 이러한 연구들은 한계점을 가지고 있습니다.
low-resource language에 대한 연구 부족: 기존의 연구는 주로 영어에 대해서만 이루어져, 다른 언어의 데이터셋이나 해당 언어 특성은 반영한 연구가 부족합니다.큰 데이터 의존성: 지금까지의 연구는 명확한 Ground Truth가 있고, 이것에 포함되면 순화를 하는 식으로 모델이 학습하였기 때문에, 초성만 사용한 욕설, 음운을 비슷한 기호로 대체한 욕설(e.g., ㅅㅂ, ㅅ1발, ^^ㅣ발), 커뮤니티 용어를 모두 정답으로 주어야 효과적인 순화가 이루어집니다. 또한, 새로 생기는 욕설을 지속적으로 업데이트 해줘야 하기 때문에 사실상 순화 모델을 위한 편향 없는 완벽한 데이터셋을 만들기란 사실상 불가능합니다.저희는 이러한 문제점을 해결하기 위해 DPO 기반의 욕설 및 혐오 표현 순화 LLM을 제안하였고, 이를 위한 편향이 적은 한국어 욕설-순화-순화(+이모지) 데이터셋을 구축하였습니다. 또한 이 과정에서 프롬프트 엔지니어링만으로 humman annotation 없이 빠른 시간으로 양질의 데이터셋을 생성할 수 있는 방법을 제시하였습니다.
koAlpaca SFT: 욕설 - 순화(+이모지) 데이터셋으로 파인튜닝하며, 일차적으로 모델이 욕설을 순화하는 역할을 배우도록 하였습니다.DPO 학습: RLHF에서 발전하여 인간의 선호도를 reward model 없이 배우게 할 수 있는 DPO 알고리즘을 이용하였습니다. 위에서 다루었듯이, 욕설 순화는 명확한 하나의 Ground Truth가 있는 task가 아니기에 적은 데이터셋으로도 다양한 욕설 및 혐오 표현의 변형을 탐지할 수 있어야 합니다. DPO에서 명확한 Ground Truth 대신 rank를 이용하여 인간의 선호도를 학습시킨 것을 착안하여, 욕설을 가장 rank가 낮은, 즉 가장 선호하지 않는 rank 2로 설정하였고, 순화 문장을 rank 1, 순화(+이모지) 문장을 가장 정답에 가까운 rank 0으로 설정하고 이를 배우도록 학습하였습니다.
Human annotation 없이 편향 적은 욕설 데이터셋 구축: 기존 Rule-based 논문은 Ground Truth를 사람이 직접 만드는 방식을 선택했습니다. 이렇게 할 경우 시간과 비용이 많이 들며, labeler에 따라 욕설 및 혐오 표현으로 생각하는 기준이 달라 데이터셋에 편향이 생길 수 있습니다. GPT3.5, Claude는 사람과 유사한 혹은 그 이상의 성능의 evaluation이 가능하다는 것에서 착안하여 LLM을 이용하여 편향 적은 데이터셋을 구축하는 방식을 채택했습니다. 이 방법에는 크게 다음과 같은 두 가지 방향이 존재합니다.
이를 통해 39000 쌍의 욕설 - 순화 - 순화(+욕설) 데이터셋을 구축하였습니다.
conda env create -f environment.yaml
conda activate komo
___ SFT ___ SFT_koalpaca.ipynb (koAlpaca fine-tuning, inference)
|
___ W_DPO ___ config
| | ___ dataset
| | ___ model
| | ___ scripts
| | ___ inference.py, train.py
|
___ PPO ___ PPO.ipynb (PPO training)
| | ___ RM.ipynb (RM training, inference)
|
|___ data ___ dataset_generation_profanity.ipynb (dataset augmentation using Claude API prompts & codes)
| | ___ korean_detoxification_test.json (our dataset - test)
|___ komo.yaml (conda env)
We demonstrated how to generate our custom dataset.It's okay to use your own prepared dataset. Please refer and follow the dataset preparation from here.
cd SFT
You can follow instructions in SFT_koalpaca.ipynb
This is our main methodology.
cd W_DPO
bash scripts/train.sh
We also provide code for training LLMs with PPO methodology.
cd PPO
You can follow instructions in PPO.ipynb
We also provide code for training reward model in case you want to customize reward model depending on your own datasets.
cd PPO
You can follow instructions in RM.ipynb
If you've trained your model, you will get checkpoints in each folder. We are not prepared with our own checkpoints yet. Full checkpoints will be released soon!
cd W_DPO
bash scripts/inference.sh
We also provide code for producing inference results with PPO methodology.
cd PPO
You can follow instructions in PPO.ipynb
We also provide code for producing inference results with reward model.
cd PPO
You can follow instructions in RM.ipynb
(주의: 공격적인 표현이나 욕설이 포함되어 있습니다.) 차례대로, 저희의 모델과 선행 연구 중 Text-style Transfer 방법을 이용하여 파인튜닝한 koBART, koAlpaca의 순화 결과입니다. 데이터셋은 동일하게 저희가 구축한 데이터셋 중 train 부분만 사용하였습니다.
'존ㅇ나'와 같이 욕설을 변형하여 사용한 표현을 koBART는 인식하지 못한 반면, 저희의 모델은 이를 인식하여 순화하였습니다.
또한 부정적 어감의 '꼴볼견'을 저희 모델에서는 단어를 이해하고 이를 이모지를 이용하여 완곡하게 표현하였습니다.
KoBART는 단어를 너무 많이 삭제하는 과정에서 문법이 파괴되고 부자연스러운 문장을 생성하였고, koAlpaca는 '노쳐녀'와 같은 단어를 인식하지 못하였습니다.
저희 모델은 여성 혐오 표현을 이해하고 단어 삭제 및 이모지를 통해 완곡한 표현으로 대체하였습니다.
직전 예시와 비슷하게, koBART는 단어를 인식하지 못했고, koAlpaca는 순화 과정에서 원문장의 의미에서 벗어나게 되었습니다.
반면, 저희 모델은 '쉰김치'가 음식 이름이 아닌, 비하 발언이라는 것을 인식하고 그 의미를 이해하여 순화하였습니다.
이를 통해 적은 데이터셋으로 파인튜닝되었음에도 불구하고 모델은 다양한 욕설의 변형 및 커뮤니티 용어, 성차별, 지역 비하 발언까지 이해하여, 문법 파괴 없이 이를 순화하고 이모지를 덧붙여 부드러운 말투로 바꾼 것을 확인할 수 있습니다.
4 commits
Jupyter Notebook
91.8%
Python
8.1%
NLP 분야에서 사회적 문제, 특히 언어 순화(Language Detoxification)를 다루는 연구들이 많이 있습니다. Mask-fiiling, Text-sytyle Transfer 등 기존에 많은 연구가 이루어져왔지만 이러한 연구들은 한계점을 가지고 있습니다.
low-resource language에 대한 연구 부족: 기존의 연구는 주로 영어에 대해서만 이루어져, 다른 언어의 데이터셋이나 해당 언어 특성은 반영한 연구가 부족합니다.큰 데이터 의존성: 지금까지의 연구는 명확한 Ground Truth가 있고, 이것에 포함되면 순화를 하는 식으로 모델이 학습하였기 때문에, 초성만 사용한 욕설, 음운을 비슷한 기호로 대체한 욕설(e.g., ㅅㅂ, ㅅ1발, ^^ㅣ발), 커뮤니티 용어를 모두 정답으로 주어야 효과적인 순화가 이루어집니다. 또한, 새로 생기는 욕설을 지속적으로 업데이트 해줘야 하기 때문에 사실상 순화 모델을 위한 편향 없는 완벽한 데이터셋을 만들기란 사실상 불가능합니다.저희는 이러한 문제점을 해결하기 위해 DPO 기반의 욕설 및 혐오 표현 순화 LLM을 제안하였고, 이를 위한 편향이 적은 한국어 욕설-순화-순화(+이모지) 데이터셋을 구축하였습니다. 또한 이 과정에서 프롬프트 엔지니어링만으로 humman annotation 없이 빠른 시간으로 양질의 데이터셋을 생성할 수 있는 방법을 제시하였습니다.
koAlpaca SFT: 욕설 - 순화(+이모지) 데이터셋으로 파인튜닝하며, 일차적으로 모델이 욕설을 순화하는 역할을 배우도록 하였습니다.DPO 학습: RLHF에서 발전하여 인간의 선호도를 reward model 없이 배우게 할 수 있는 DPO 알고리즘을 이용하였습니다. 위에서 다루었듯이, 욕설 순화는 명확한 하나의 Ground Truth가 있는 task가 아니기에 적은 데이터셋으로도 다양한 욕설 및 혐오 표현의 변형을 탐지할 수 있어야 합니다. DPO에서 명확한 Ground Truth 대신 rank를 이용하여 인간의 선호도를 학습시킨 것을 착안하여, 욕설을 가장 rank가 낮은, 즉 가장 선호하지 않는 rank 2로 설정하였고, 순화 문장을 rank 1, 순화(+이모지) 문장을 가장 정답에 가까운 rank 0으로 설정하고 이를 배우도록 학습하였습니다.
Human annotation 없이 편향 적은 욕설 데이터셋 구축: 기존 Rule-based 논문은 Ground Truth를 사람이 직접 만드는 방식을 선택했습니다. 이렇게 할 경우 시간과 비용이 많이 들며, labeler에 따라 욕설 및 혐오 표현으로 생각하는 기준이 달라 데이터셋에 편향이 생길 수 있습니다. GPT3.5, Claude는 사람과 유사한 혹은 그 이상의 성능의 evaluation이 가능하다는 것에서 착안하여 LLM을 이용하여 편향 적은 데이터셋을 구축하는 방식을 채택했습니다. 이 방법에는 크게 다음과 같은 두 가지 방향이 존재합니다.
이를 통해 39000 쌍의 욕설 - 순화 - 순화(+욕설) 데이터셋을 구축하였습니다.
conda env create -f environment.yaml
conda activate komo
___ SFT ___ SFT_koalpaca.ipynb (koAlpaca fine-tuning, inference)
|
___ W_DPO ___ config
| | ___ dataset
| | ___ model
| | ___ scripts
| | ___ inference.py, train.py
|
___ PPO ___ PPO.ipynb (PPO training)
| | ___ RM.ipynb (RM training, inference)
|
|___ data ___ dataset_generation_profanity.ipynb (dataset augmentation using Claude API prompts & codes)
| | ___ korean_detoxification_test.json (our dataset - test)
|___ komo.yaml (conda env)
We demonstrated how to generate our custom dataset.It's okay to use your own prepared dataset. Please refer and follow the dataset preparation from here.
cd SFT
You can follow instructions in SFT_koalpaca.ipynb
This is our main methodology.
cd W_DPO
bash scripts/train.sh
We also provide code for training LLMs with PPO methodology.
cd PPO
You can follow instructions in PPO.ipynb
We also provide code for training reward model in case you want to customize reward model depending on your own datasets.
cd PPO
You can follow instructions in RM.ipynb
If you've trained your model, you will get checkpoints in each folder. We are not prepared with our own checkpoints yet. Full checkpoints will be released soon!
cd W_DPO
bash scripts/inference.sh
We also provide code for producing inference results with PPO methodology.
cd PPO
You can follow instructions in PPO.ipynb
We also provide code for producing inference results with reward model.
cd PPO
You can follow instructions in RM.ipynb
(주의: 공격적인 표현이나 욕설이 포함되어 있습니다.) 차례대로, 저희의 모델과 선행 연구 중 Text-style Transfer 방법을 이용하여 파인튜닝한 koBART, koAlpaca의 순화 결과입니다. 데이터셋은 동일하게 저희가 구축한 데이터셋 중 train 부분만 사용하였습니다.
'존ㅇ나'와 같이 욕설을 변형하여 사용한 표현을 koBART는 인식하지 못한 반면, 저희의 모델은 이를 인식하여 순화하였습니다.
또한 부정적 어감의 '꼴볼견'을 저희 모델에서는 단어를 이해하고 이를 이모지를 이용하여 완곡하게 표현하였습니다.
KoBART는 단어를 너무 많이 삭제하는 과정에서 문법이 파괴되고 부자연스러운 문장을 생성하였고, koAlpaca는 '노쳐녀'와 같은 단어를 인식하지 못하였습니다.
저희 모델은 여성 혐오 표현을 이해하고 단어 삭제 및 이모지를 통해 완곡한 표현으로 대체하였습니다.
직전 예시와 비슷하게, koBART는 단어를 인식하지 못했고, koAlpaca는 순화 과정에서 원문장의 의미에서 벗어나게 되었습니다.
반면, 저희 모델은 '쉰김치'가 음식 이름이 아닌, 비하 발언이라는 것을 인식하고 그 의미를 이해하여 순화하였습니다.
이를 통해 적은 데이터셋으로 파인튜닝되었음에도 불구하고 모델은 다양한 욕설의 변형 및 커뮤니티 용어, 성차별, 지역 비하 발언까지 이해하여, 문법 파괴 없이 이를 순화하고 이모지를 덧붙여 부드러운 말투로 바꾼 것을 확인할 수 있습니다.
4 commits
Jupyter Notebook
91.8%
Python
8.1%