요약: 카카오페이는 FDS(Fraud Detection System)에 지속 성장하는 ML 모델을 도입하여 빠르게 변화하는 사고 패턴에 효과적으로 대응하고 있습니다. 끊임없이 발생하는 새로운 유형의 사고에 신속하게 대응하기 위해, ML 모델을 지속적으로 학습하고, 데이터 변화에 스스로 적응하는 동적 피처를 활용하여 모델의 성능을 향상시켰습니다. 이러한 여정을 사고 사례와 함께 만나볼 수 있는 글입니다.
💡 리뷰어 한줄평
aiden.ys 지금도 성장하고 있는 카카오페이 FDS ML 모델의 실제 적용 사례를 생생하게 잘 전달하고 있는 글입니다. 빠르게 변화하는 패턴들 속에서 ML 모델을 개발하셔야 하는 분들께 도움 되리라 생각합니다.
시작하며
안녕하세요. 리스크관리플랫폼팀 리아, 크리입니다. 이번 글에서는 if(kakaoAI)2024에서 발표한 “FDS의 지속 성장하는 ML 모델 적용 이야기”에서 소개한 내용을 조금 더 자세히 공유드리려고 합니다. 끊임없이 변화하는 사고를 막기 위해 카카오페이 FDS는 지속 성장하는 ML 모델을 도입하여 새로운 패턴의 사고를 빠르게 방지하고 있습니다. 카카오페이 FDS가 ML을 활용하여 새로운 유형의 사고를 어떻게 탐지하고 빠르게 대응했는지 실제 사고 사례를 통해 소개해 드리겠습니다. ML 모델 운영 시 예상치 못한 데이터 변화에 빠르고 효과적인 대응을 고민하는 분들에게 카카오페이 FDS ML 사례가 도움이 되길 바랍니다.
빠르게 변화하는 사고 트렌드와 FDS
FDS(Fraud Detection System)는 사고나 이상 거래를 탐지하는 시스템으로, 카카오페이와 같은 금융 서비스에서 필수적인 역할을 합니다. 카카오페이는 하루 1,300만 건의 거래가 이루어지고, 한달에는 무려 4억 건 이상의 거래가 이루어집니다. FDS는 카카오페이 내에서 발생하는 수많은 거래를 안전하게 보호하기 위해 매우 필수적인 시스템입니다.
유저가 카카오페이로 송금이나 결제를 할 때 FDS는 이 거래가 정상적인지, 아니면 사고 위험이 있는지 판단합니다. 만약 사고 위험이 발견되면 계정이 일시 정지되거나 거래가 거절되는 등의 조치를 취하여 유저의 자산을 보호합니다.
카카오페이 FDS는 어떻게 사고를 탐지할까요? 카카오페이는 고객의 소중한 자산을 지키기 위해 다양한 방법으로 사고를 탐지하고 있습니다. 먼저 규칙(Rule) 기반 탐지를 통해 일반적인 사고 패턴을 찾아냅니다. 짧은 시간 안에 대량의 송금이 발생하거나 비정상적인 IP 주소에서 로그인 시도가 있을 경우 의심스러운 거래로 판단합니다.
하지만 사고 패턴은 날이 갈수록 정교해지고 다양해지기 때문에, 규칙 기반 탐지만으로는 모든 사고를 막기 어렵습니다. 특히 새로운 유형의 사고나 정상 거래와 유사한 사고는 규칙 기반 탐지를 우회할 수 있습니다. 이러한 경우 정상 거래를 사고로 오인하여 고객에게 불편을 초래할 수도 있습니다.
이러한 문제를 해결하기 위해 카카오페이는 ML 기반 탐지를 추가했습니다. ML 모델은 방대한 양의 데이터를 분석하여 사고 패턴을 학습하고 탐지합니다. 마치 숙련된 형사가 범죄 현장의 흔적을 분석하여 범인을 찾아내듯이 ML 모델은 데이터 속에 숨겨진 사고의 흔적을 찾아냅니다.
변화하는 사고 트렌드를 실제 차트로 확인해 보겠습니다. 아래 차트는 온라인 결제에서 사고가 발생하는 일부 아이템들의 일자별 사고 비율을 나타냅니다.
가장 왼쪽 차트는 일반적으로 사고가 꾸준히 발생하는 아이템의 추이를 보여줍니다. 하지만 다른 아이템들은 강력한 탐지 도입 후 사고가 줄어들거나, 일시적으로 증가했다가 다시 줄어드는 등 다양한 패턴을 보입니다. 심지어 그동안 사고가 없었던 아이템에서도 갑자기 사고가 발생하는 경우도 있습니다.
사고 트렌드가 변하는 경우 규칙 기반 탐지는 새로운 사고 패턴에 맞는 조건을 추가한 룰을 추가 등록하거나, 불필요한 탐지를 완화하는 작업이 필요합니다. ML 기반 탐지에서는 새로운 사고를 학습한 ML 모델을 추가 개발하는 등의 작업이 필요합니다.
이처럼 사고 발생과 탐지는 계속해서 변화하며 서로 영향을 주고받기 때문에, FDS는 이러한 변화에 유연하게 대응할 수 있어야 합니다. 카카오페이 FDS는 이러한 필요성을 인식하고, 지속 성장하는 ML을 도입하게 되었습니다.
지속 성장하는 ML이란?
지속 성장하는 ML은 끊임없이 발전하는 모델이라는 의미에서 적응형(Adaptive) ML이라고 할 수 있습니다. 이는 정적(Static) ML과는 대비되는 개념입니다. 적응형 ML과 정적 ML의 가장 큰 차이점은 모델의 지속적 학습(Continuous Train) 및 피처의 자가 적응(Self Adaptation) 측면입니다.
정적 ML은 한번 학습된 모델을 고정적으로 사용하여 이상 거래를 탐지하는 반면, 적응형 ML은 지속적으로 새로운 데이터를 학습하여 모델을 개선하고 변화하는 데이터 환경에 스스로 적응합니다. 또한 적응형 ML은 데이터의 변화(Data Drift)를 자동으로 감지하고 모델에 반영하는 동적 피처를 통해 새로운 유형의 이상 거래까지 탐지할 수 있습니다.
아래 표는 정적 ML 기반 사고 탐지와 적응형 ML 기반 사고 탐지의 차이점을 요약한 것입니다. 정적 ML은 반복적인 패턴의 이상 거래를 정확하게 탐지하는 데 강점이 있는 반면, 적응형 ML은 새로운 패턴의 이상 거래까지 효과적으로 탐지할 수 있다는 장점이 있습니다.
정적 ML 기반 탐지 | 적응형 ML 기반 탐지 | |
---|---|---|
학습 방식 | 잘 만들어진 학습 데이터셋 기반 학습 | 최신 데이터를 업데이트한 지속적 학습 변화에 스스로 적응 가능한 구조 |
유연성 & 자동성 | 명확하고 반복적인 사고 패턴에 대한 예측에 강함 | 변화된 환경에 실시간 적응 가능 수동 개입 최소화 |
적응 시나리오 | 자주 반복되는 사고 패턴에 대한 정교한 탐지 가능 | 새로운 사고 패턴 탐지 가능 |
그렇다면 모델의 지속적 학습(Continuous Train)과 피처의 자가 적응(Self Adaptation)이 카카오페이 FDS에 어떻게 적용되었는지 자세히 소개드리겠습니다.
모델의 지속적 학습(Continuous Train)
모델의 지속적 학습에서 가장 중요한 포인트는 최근 데이터를 포함하여 주기적으로 학습을 진행하고 더 좋은 성능의 모델을 바로 배포하는 구조라고 할 수 있습니다.
정적 ML 모델은 피처 개발 및 모델을 학습하고 평가한 후 배포합니다. 이렇게 배포된 모델은 모델의 성능이 유지되는 동안 계속 활용하며, 모델의 성능이 하락하는 경우 다시 학습하거나 새로운 모델을 개발합니다. 정적 ML은 한 번 학습된 모델을 반복적으로 사용하기 때문에, 시스템 환경이 안정적이고 데이터 분포가 크게 변하지 않는 경우 효율적입니다. 하지만 시스템 환경이 변화하거나 새로운 데이터가 생성될 경우 모델의 성능이 저하될 수 있다는 단점이 있습니다.
적응형 ML은 여기에서 한걸음 더 나아갑니다. 현재 운영 중인 모델의 성능을 평가하는 것과 더불어, 최신의 데이터를 활용하여 모델을 다시 학습하고 성능을 비교합니다. 이 결과는 바로 확인 가능하고, 유의미한 성능 개선이 있다면 새로운 모델을 즉시 배포할 수 있습니다.
적응형 ML에서 모델의 지속적 학습이란 이런 자동화된 MLOps 시스템을 통하여, 최신 데이터로 모델을 다시 학습하고, 현재 운영 중인 모델과의 성능을 평가하여, 배포하여 모델의 성능을 최대한 유지하는 것을 의미합니다.
카카오페이에서는 Airflow를 사용해서 지속적 학습을 진행하고 있습니다. 정해진 주기에 따라 최근 데이터를 활용해서 모델을 학습합니다. 이때 사용하는 데이터는 하둡과 피처 스토어에 적재되어 있습니다. 하둡에는 주로 배치성 데이터가 적재되어 있고, 피처 스토어로 사용하는 HBase, Redis에는 준 실시간 데이터(직전 결제 금액, 최근 N일 결제 금액 등)가 적재되어 있습니다. 이렇게 학습된 모델은 Mlflow로 업로드되고 현재 운영 중인 모델의 성능(Recall, Precision, FP 등)과 비교하여 알려줍니다. 이때 성능이 개선된 모델이라면 바로 배포하여 모델 서빙 서버인 Triton Inference Server에 적용할 수 있습니다.
다음으로는 “결제 사고 탐지 모델”의 실제 사례를 통해 모델의 지속적 학습이 어떻게 변화하는 사고 탐지를 개선했는지 확인해 봅시다.
결제 사고를 예측하는 모델에서의 지속적 학습은 다음과 같이 이루어집니다. 해당 모델에서 중요한 피처 중 하나는 “결제 아이템 종류”입니다. 학습 과정에서 사고를 경험한 결제 아이템에 대한 모델의 사고 탐지 확률은 당연히 일반 아이템에 비해 사고에 가깝게 예측할 확률이 높습니다.
그러나 모델이 운영하는 중간에 신규 출시된 게임에서 사고가 발생한다면 어떻게 될까요? 기존 모델은 해당 결제에 대한 사고 탐지가 어려울 수 있습니다. 이럴 때 모델이 지속적 학습을 통해 새로운 사고를 포함한 최신 데이터를 반영하여 변화하는 사고 유형에 대해서 탐지할 수 있게 됩니다.
피처의 자가 적응(Self Adaptation)
피처의 자가 적응 또한 적응형 ML의 중요한 요소입니다. 피처의 자가 적응이란 Data Drift에 스스로 적응하는 동적 피처를 의미합니다. 이는 피처 설계 시 모델 타깃 데이터에 스스로 적응할 수 있는 구조로 만드는 것입니다.
앞서 소개해드렸던 “결제 사고 탐지 모델”에서는 “결제 아이템 종류”가 모델에서 중요한 피처입니다. 하지만 Data Drift가 발생했을 때 해당 피처는 그 변화를 반영할 수 없습니다. 만약 “결제 아이템 종류” 외에도 “결제 아이템 종류별 최근 사고 비율”을 피처로 사용한다면 Data Drift가 발생하여 사고가 주로 발생하는 아이템의 종류가 바뀌더라도, 최근의 사고 트렌드를 반영할 수 있게 됩니다. 따라서 자가 적응이 가능한 동적 피처란 모델 타깃(사고)이 지속적으로 피처 값에 반영될 수 있게 구성한 피처입니다.
조금 더 자세히 살펴봅시다. “결제 아이템 종류별 최근 사고 비율” 피처는 결제 아이템별로 최근 기간 동안 전체 결제 건수 대비 사고 건수를 비율을 피처로 만들어서 최근 발생 사고를 자연스럽게 수치화하는 구조입니다.
사고 비율 피처는 특정 시간 t
에서 h
기간 동안 발생한 사고 건수를 전체 건수로 나눈 값으로 정의됩니다.
t
: 특정 시간h
: 윈도우 기간
아래를 보면 첫 번째 주기에서는 C 상품의 사고 확률은 1인데 반해, Z 상품의 사고 확률은 0입니다. 시간이 흘러 C 상품이 더 이상 사고가 발생하지 않고 Z 상품에서 사고가 주로 발생하게 된다면, 기존에 결제 아이템 종류만을 학습했을 때는 그 변화된 사고 패턴을 모르지만 “결제 아이템 종류별 최근 사고 비율”은 그 변화를 반영할 수 있게 됩니다.
FDS 모델에서 자가 적응 피처는 모델 타깃의 변화에 따라 동적으로 사고 리스크를 반영한다는 의미로, Dynamic Risk Feature라고도 할 수 있습니다. 이는 새로운 사고 유형이 발생했을 때 모델 지속적 학습 이전에 피처 측면에서 자연스럽게 사고비율피처 값이 높아지면서 사고를 탐지할 수 있게 됩니다.
FDS에서 자가 적응 피처의 핵심은 사고 데이터를 기반으로 합니다. 아래를 보면 금융 안심 센터로 유입된 사고가 FDS Admin에 등록되고, 이 사고 데이터는 하둡에 적재됩니다. 피처는 Airflow를 통해 매일 생성되고 피처 스토어(HBase, Redis)에 적재되어 모델에서 사용됩니다.
실제 적용 효과
지속 성장하는 ML을 구글 플레이스토어와 애플 앱스토어의 카카오페이 결제 사고 탐지에 도입한 사례를 소개해 드리겠습니다.
구글 플레이스토어와 애플 앱스토어 결제에서는 신규 게임 출시, 결제 이벤트 등으로 인하여 새로운 유형의 사고가 자주 발생하곤 합니다. 적응형 ML 모델과 정적 ML 모델이 처음 배포되었을 때는 두 모델이 동일하게 작동합니다.
하지만 새로운 유형의 사고가 발생하면 정적 ML과 적응형 ML의 차이가 생기기 시작합니다.
- D+0 시점에 새로운 유형의 사고가 발생했을 때, ML 모델의 성능은 하락합니다.
- D+2까지 탐지율이 하락하는 것을 볼 수 있습니다. 이때 적응형 ML의 탐지율이 정적 ML보다 조금 더 높은 이유는 자가 적응 피처를 활용했기 때문입니다. 자가 적응 피처는 최근 사고 정보를 반영하여 신규 유형 사고 탐지에 도움을 주게 됩니다.
- D+3 시점부터는 적응형 ML의 탐지율이 다시 상승하는 것을 볼 수 있습니다. 사고 데이터가 어느 정도 쌓이고 지속적 학습 후 업데이트 된 모델 성능이 보장되었을 때 이를 배포하고, 따라서 신규 사고를 잘 탐지하게 됩니다.
적응형 ML을 통하여 신규 유형의 사고 발생 후 정적 ML 대비 약 30%의 탐지율 개선을 확인할 수 있었습니다. 위 사례에서 볼 수 있듯, 정적 ML에 비하여 적응형 ML이 새로운 유형의 사고에 보다 유연하게 대응할 수 있다는 사실을 알 수 있습니다.
마치며
사고가 발생했을 때, FDS는 사고를 막아서 줄이는 역할을 합니다. 하지만 사고 트렌드가 급격하게 변하여 다시 커지면, 지속 성장하는 ML을 이용하여 다시 사고를 막고 있습니다. 이렇듯 사고와 탐지란 무엇이든 꿰뚫는 창과 방패의 싸움과도 같습니다.
여기까지 “FDS에 지속 성장하는 ML 모델 적용 이야기”를 소개해드렸습니다. 이 글을 읽고 계신 여러분들도 예기치 못하게 발생할 수 있는 사고와 데이터의 변화에 대해서 지속 성장하는 ML을 적용해 보시는 것은 어떨까요?
저희는 앞으로도 금융 안전을 위해 최선을 다하겠습니다. 감사합니다.