우울증 진단에 관한 프로그램을 만들기에 앞서 누군가는 해보지 않았을까? 싶어서 찾아보았는데
https://www.aitimes.com/news/articleView.html?idxno=156037 여기 기사에 잘 정리가 되어있었다.
그래서 이 기사 관련 git을 찾아보았고 마침 찾아서 내가 원하는 다른 방향으로 응용을 해보려고
이렇게 블로그 내용을 적기 시작했다.
출처:https://arxiv.org/abs/2305.14045
Git: https://github.com/kaistAI/CoT-Collection
정말 이런 연구를 해주는 멋진 사람들에게 감사할 뿐이다.
프로젝트 개요 및 목표
목표: 스마트폰 음성 및 텍스트 데이터를 기반으로 우울증을 진단할 수 있는 AI 프로그램을 개발합니다. 이 프로그램은 개인 정보를 보호하면서도 효과적으로 정신 건강을 모니터링할 수 있는 연합학습(Federated Learning) 기술을 활용합니다.
사용 기술:
- 연합학습 (Federated Learning)
- 자연어 처리 (Natural Language Processing)
- 음성 인식 (Speech Recognition)
- 머신러닝 (Machine Learning)
2. 개발 환경 설정
1. 필요한 라이브러리 설치
pip install transformers datasets torch
2. 데이터셋 불러오기
from datasets import load_dataset
dataset = load_dataset("kaist-ai/CoT-Collection")
print(dataset)
3. 모델과 토크나이저 준비
1. Hugging Face transformers 라이브러리의 AutoTokenizer와 AutoModelForSeq2SeqLM을 사용합니다:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("kaist-ai/CoT-T5-11B")
model = AutoModelForSeq2SeqLM.from_pretrained("kaist-ai/CoT-T5-11B")
4. 데이터 전처리
1. 데이터를 토크나이즈하고 학습을 위해 준비합니다
def preprocess_function(examples):
inputs = examples["prompt"]
targets = examples["completion"]
model_inputs = tokenizer(inputs, max_length=512, truncation=True)
with tokenizer.as_target_tokenizer():
labels = tokenizer(targets, max_length=128, truncation=True)
model_inputs["labels"] = labels["input_ids"]
return model_inputs
tokenized_datasets = dataset.map(preprocess_function, batched=True)
5. 모델 학습
1. 훈련 인자와 트레이너 설정
from transformers import TrainingArguments, Trainer
training_args = TrainingArguments(
output_dir="./results",
evaluation_strategy="epoch",
learning_rate=2e-5,
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=1,
weight_decay=0.01,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized_datasets["train"],
eval_dataset=tokenized_datasets["validation"],
)
trainer.train()
6. 모델 저장 및 추론
미세조정된 모델을 저장하고 로드하여 추론을 수행합니다:
# 모델 저장
model.save_pretrained("./fine-tuned-cot-t5")
tokenizer.save_pretrained("./fine-tuned-cot-t5")
# 모델 로드 및 추론
from transformers import pipeline
model = AutoModelForSeq2SeqLM.from_pretrained("./fine-tuned-cot-t5")
tokenizer = AutoTokenizer.from_pretrained("./fine-tuned-cot-t5")
nlp = pipeline("text2text-generation", model=model, tokenizer=tokenizer)
result = nlp("여기에 입력할 텍스트를 넣으세요")
print(result)
다음 포스트 예고
이제 준비 단계가 완료되었습니다. 다음 포스트에서는 데이터 전처리 및 모델 학습에 대해 자세히 다루겠습니다. 이 프로젝트의 전체 코드는 GitHub 저장소에서 확인할 수 있습니다. 각 단계를 따라 진행하면서 여러분만의 우울증 진단 AI 프로그램을 만들어보세요!
각 단계를 이해하고 따라하는 데 어려움이 있을 경우, 댓글로 질문을 남겨주세요. 다음 포스트에서 뵙겠습니다!