- Published on
2024.05.17
[우아한 개발] - 04. 인공지능으로 한 단계 업그레이드하기
머신러닝으로 배민 앱 리뷰 품질 높이기
리뷰 조작 업체를 탐지하기 위한 머신러닝 모델 소개
이상 탐지 접근 방법
이상 탐지는 정상적인 패턴과 다른 패턴, 행동 또는 이벤트를 탐지하는 기술
어뷰징 행위를 탐지하는 방법(크게 2가지)
- 규칙 기반 이상 탐지
- 머신러닝 기반 이상 탐지
규칙 기반 이상 탐지
주요 특징과 조건을 규칙화하여 필터링하는 방식
간단한 조건들로 구성되어 쉽고 빠르게 서비스에 적용할 수 있다. 탐지된 항목에 대해 명확한 이해가 가능하다는 장점으로 현업에서 자주 사용되지만, 사전 설정된 조건 외에는 탐지가 어렵고, 설정된 임곗값이나 조건 변화에 민감한 단점이 있다.
머신러닝 기반 이상 탐지
머신러닝 알고리즘을 활용하는 방식, 학습 데이터 사용 방식에 따라 학습을 분류한다.
지도 학습
정상 또는 이상 여부에 대한 라벨 데이터를 가지고 학습하는 방법,SVM
,LightGBM
,ANN
등의 알고리즘이 있다.
장점: 타 방식에 비해 높은 정확도, 분류 결과에 대한 패턴이 쉽게 구분 가능
단점: 학습을 위한 많은 양의 라벨 데이터 필요 , 많은 비용 발생, 학습되지 않은 새 패턴은 탐지 어려움비지도 학습
라벨 데이터 없이 주어진 입력 데이터를 비슷한 데이터끼리 묶어주는 클러스터링 방식을 사용하는 방식K-평균
,DBSCAN
,오토인코더
,아이솔레이션 포레스트
등의 알고리즘이 있다.
장점: 라벨 데이터가 없어도 사용 가능, 알려지지 않은 새로운 패턴 탐지 가능
단점: 지도 학습에 비해 상대적으로 낮은 정확도, 탐지 결과가 모호할 수 있다.준지도 학습
적은 수의 라벨 데이터와 많은 수의 라벨링되지 않은 데이터를 모두 사용하는 방식
라벨된 데이터가 적을 때, 라벨이 없는 데이터를 함께 사용해 학습 모델의 성능을 향상시키는 방식
장점: 라벨된 데이터가 소량만 있어도 사용할 수 있어 비용과 시간을 절약 가능
단점: 라벨이 없는 데이터로 학습하므로 해당 데이터의 특성에 따라 이상치를 오판하거나 성능 차이가 발생할 수 있음
배민 측은 준지도 학습 알고리즘을 도입해 소량의 라벨 데이터로 정확도를 높였고, 주기적으로 학습하는 프로세스를 구축해 어떤 패턴에도 대응 가능하도록 하였다.
배민의 AI 서비스와 MLOps 도입기
왜 MLOps를 도입했는가?
MLOps
머신러닝 시스템 개발과 시스템 운영을 통합해 머신러닝 개발 관리의 전 과정을 더욱 빠르고 효율적으로 만드는 것이 목표
데이터 준비
모델 생성
서비스에 모델을 적용
의 과정을 통해 AI 서비스 등을 준비, 그러나 문제가 발생모델의 품질
서비스에 적용한 후 시간이 지나면 모델이 최신 데이터를 예측할 능력이 부족해 품질이 낮아짐, 품질 유지를 위한 머신러닝 라이프사이클을 관리하고 워크플로를 관리하는 플랫폼 도입, 자동화 프로세스 구축이 필요모델의 재현성과 추적성
모델이 예상대로 동작하지 않는 경우, 모델 내부 동작을 분석하기 위해 소스 코드, 데이터, 파라미터 등을 확인하고, 확인을 위해 개발과 운영 환경에서 모델을 재현하고 추적하는 기능 필요.
MLOps를 도입할 때 고민한 흔적들
MLOps를 도입 전 고려할 사항
- 명확한 문제 정의 : 모델을 개발 환경과 동일하게 운영 환경으로 배포하기, 파이프라인 테스트 자동화 CI/CD 파이프라인 구축
- 협업을 통해 도움을 받기
- 운영 정책 정하기 : AI 서비스 개발자가 모든 개발을 진행하고, 어려운 부분은 엔지니어가 지원, MLOps 컴포넌트 개발에 집중할 수 있도록 운영 정책 설정
다음과 같은 작업을 초기 MLOps 도입 시 진행
- MLOps 각 레벨별로 필요한 기능 나열
- 문제를 명확하게 정의
- 각 작업의 우선순위 결정
레벨 0 : 수동 프로세스로, 데이터 과학자가 모델을 빌드하고 배포하는 과정이 완전히 수동으로 이루어진다.
레벨 1 : 머신러닝 파이프라인 자동화
레벨 2 : CI/CD 파이프라인 자동화
개발 환경과 운영 환경의 갭 줄이기
- AI 관련 소스 코드 저장소인 ML Projects를 도입
- 클라이언트 도커 이미지 개발
- 프로젝트별 개발 환경 구성
효율적으로 파이프라인 구성하기파이프라인
: 여러 단계의 작업을 순차적으로 연결하여 자동화하는 프로세스. 데이터 수집, 전처리, 특성 추출, 모델 훈련, 평가 및 모델 배포 단계 등으로 구성. 파이프라인은 배포 단위가 되며, 배포된 파이프라인은 지속적으로 설정된 스케줄로 실행된다. Pipeline Builder를 사용해 파이프라인을 구성했을 때, 다음과 같은 장점이 있다.
- 코드 재사용성 : 동적으로 생성되는 파이프라인을 재사용할 수 있다.
- 확장성 : 동적으로 생성되는 파이프라인은 특정 이벤트나 조건에 따라 파이프라인을 추가하거나 제거한다.
- 코드 관리 용이성 : 파이프라인 생성 코드를 수정하면 모든 파이프라인을 동시에 변경할 수 있어 파이프라인 코드를 한곳에서 관리할 수 있다.
- 코드 유연성 : 파이프라인 생성 코드에서 변수나 조건 등을 수정하여 파이프라인의 동작을 변경할 수 있다.
- 자동화 가능성 : 자동화된 프로세스를 구현할 수 있다.
실제 AI 서비스를 개발하기 위해 공통으로 개발하는 기능들
- 데이터 업로드/다운로드 기능
- 실험 설정 및 기록
- 전처리(데이터 정제/변환/스케일링 등)
- 대규모 데이터 입력 파이프라인
- 피처 스토어 연동
- 각종 환경별 설정값 관리
슬랙에 ChatGPT를 연결하여 업무에 활용해보기
Support 채널에 ChatGPT 적용하기
- Support 채널 요청
- ChatGPT로 키워드 추출 요청
- 추출된 키워드를 스프레드시트에서 받아오고 다시 슬랙으로 답변 전달