스팸메일 대응 전략 (로라)
MIME : 이메일 표준.
스패머들은 어떻게 스팸을 보낼까?
디코딩을 어렵게 : (1) multipart를 사용 (2)
메일 데이터 전송 : 밑도 끝도 없기에, AI 기술 활용 >> 변환 되는 텍스트 탐지하여 모델 학습
스팸 대응 AI 기술 (허쉘) - Dare Mighty Things !
클러스터링 알고리즘 (Approximate KNN)
Inception Resnet V2
Ensemble Model
문제점
라벨링이 극히 일부만 되었다 보니 실제 지표에서는 overfitting 문제를 보였음
과도한 서버비용
쥐적인 모델 갱신 프로세스 이슈 >> 롤백프로세스 , 정책적 이슈
해결 : 횟수 줄이고 성능 좋은 라이브러리 사용
과도한 서버비용을 해결하기 위해서는 효율적인 모델이 필요했음
하지만 속도가 불만.
이미지 다운로드 >> 다운로드 횟수 줄이기 , 캐시(유사도 계산)
더 빠른 HTTP 라이브러리 >> 큰 의미 없었음
이미지 전처리 >> 리사이즈 성능 좋은 라이브러리 , 캐시
그 다음 해결 : 학습 지표와 실제 지표가 다른데. CNN 이 좋은 모델이 맞아?
Swin Transformer >> robust한 결과 얻음 (CNN > ViT > Swin)
(허깅페이스 만난 후에, 데이터만 신경쓰면 돼서 좋았다.)
GPU 도입으로 과도한 서버 비용 해결
Async
Resize는 특정 사이즈 이상만.
GPU는 분류에만 집중. 배치로 처리하는 방식 선택.
주기적인 모델 갱신 프로세스 이슈
정책 수정 (정성평가로 개선)
Active Learning : Query by committee, Random Sampling 사용
여러 모델이 투표하여 결정하는 전략. but 효과는 좋았지만 프로세스 복잡 리소스가 많이 필요했음
Loss를 이용한 대상 선정 >> 더 develop 해볼 예정.
라벨링 할 때. >> Noise Label과 함께 살아가기.
방법 1. cross check : 라벨링 정책 이해의 어려움으로 인해 틀리는 거였음. >>> Query by Committee 를 통해 해결.
개선하기 위한 노력
정상 -> 스팸 정책이 바뀐 경우 : image to text를 활용. 키워드를 이용해 재검토 대상 추출, 라벨링 재진행
word embedding 후 성인 이미지 문장과 유사하면 의심하거나 다시 라벨링
image to image : stable diffusion 활용. but 자동화할 품질은 아니어서 자동화 불가능.
LoRA vs Full Fine Tuning >> 스팸쪽은 후자가 낫더라 . 해외 사례들은 국내와 다른 이슈도 있더라.
주기적인 학습 그리고 배포 >> [오처리, 라벨링, 학습프로세스 유입, 전처리, 진단, 정량평가, 하이퍼파라미터 튜닝, 테스트,
정성평가, 배포 , 평가, 롤백 ]
* 요즘은 하이퍼파라미터 튜닝보다 데이터에 더 신경쓰고 있음. 그게 더 효과가 낫더라.
CLIP을 활용한 다양한 고민
라벨링에 대해 고급 데이터 경계 확인중
Image To Text Fine Tuning
LLM 도입 사례 (조이)
사용자 보호를 위한 스팸 모니터링 : 모니터링 운영자가 분류. 시스템으로 1차 필터링.
ML 기반의 필터링: 분류 모델 but 도배 콘텐츠는 하나만 보면 유해한 내용이 없어 보일 수 있음. 장문의 경우도 모를 수 있음
콘텐츠 스팸 분류 설명을 해준다면 운영자에게 도움이 될 것이라 판단
분류 결과와 분류 사유를 동시에 해결할 수 있는 LLM을 활용하자.
LLM은 2017년 구글 논문의 transformer 개념에서 시작. >> enconder(BERT) , decoder(GPT)
원리는 >> 확률이 높은 단어를 선택.
스팸 도메인의 LLM prompt 활용 예시 >> 너는 스팸 분류 전문가야. 다음 문장을 보고 스팸인지 분류해.
참고 내용을 넣는다면 더 잘 활용 가능. LLM이 카카오의 정책을 잘 알고 있다면 답변 가능.
그러나, 서비스 문제. 비용 문제. 보안 문제. >>> 규제 정책을 잘 아는 스팸 LLM 을 직접 만들기로 결정.
데이터 수집 과정 : 생각보다 어려웠음. 스팸 데이터가 원래 없었음. 카카오의 정책을 포함하는 데이터가
필요했기 때문. 스팸 도메인의 LLM 데이터를 직접 생성하기로 결정.
역할 부여, 지시.
생성형 모델에 적합한 데이터는 없지만 분류(라벨링)된 데이터는 존재. >> 사유를 문장형태로 어떻게?
소량의 데이터 생성 > 파일럿 모델 학습 > 대량 데이터 생성 > 모델 학습(LLM)
1)라벨을 활용한 role base문장
2)라벨과 키워드를 활용한 문장
약점 : 못 본 keyword에 대한 Hallucination
그래서 keyword가 아닌 문장의 목적을 설명하는 문장을 작성해보기로 함.
라벨러(사람)의 도움을 통한 LLM 데이터 수집 과정
샘플을 라벨러한테 주고 이후에 검수하는 방식
수집한 데이터로 LLM 학습 결과 3배 이상의 성능을 보임.
스팸 모니터링 화면(AI 보조 - 스팸인 사유) 으로 연결했음.
불균형 데이터 문제와 해결 방법
LLM의 응답 다양성 높이기 : 다양한 어휘 사용.
오버피팅 방지 가능
instruction 데이터 활용 : 질문에 대해서도 답변 가능
클래스 불균형 문제와 해결 노하우 : 데이터 증강, 언더샘플링