토스뱅크가 AI로 보안과 효율도 챙기는 방법
안녕하세요, 토스뱅크 Server Developer 김경윤입니다.
은행 창구에서 본인확인을 위해 뭘 요구할까요? 바로, 신분증입니다! 비대면 은행인 토스뱅크에서도 서비스를 사용하려면 신분증이 가장 먼저 필요해요. 비대면 은행은 스마트폰으로 촬영된 신분증 이미지를 확인해서 위조 신분증인지 아닌지, 혹은 주요한 정보들이 잘 보이는지 확인할 의무가 있는데요. 이 작업은 사람이 모든 건을 일일이 확인하며 판단해야 해요.
토스뱅크는 다양한 곳에서 AI 기술을 활용하고 있어요. 오늘은 신분증 검증 과정에서 ML 모델로 어떻게 수기 작업을 최소화했는지 알려드릴게요.
토스뱅크 ML 모델의 진화
신분증을 제출하면, 신분증을 검증한 다음에 계좌가 개설되는 것이 일반적이에요. 하지만 토스뱅크에서는 빠르고 편리한 고객 경험을 위해 계좌를 먼저 개설하고 그 이후에 신분증을 검사하는 사후 검증 방식을 선택했어요. 하지만 이 방식에는 신분증 위조나 금융 범죄가 일어날 수 있어요. 토스뱅크는 이런 ML 모델을 적극적으로 활용하며 이런 사고를 방지하고 있어요. 사고가 발생하기 전에 미리 이상 케이스를 탐지해서 거래를 막는 것이죠.
앞서 SLASH 23에서 AI와 함께 가짜 신분증 찾아내기 주제로 발표한 적이 있는데요. ‘가짜 신분증 찾기’는 토스뱅크의 신분증 검증에 일부일 뿐이에요. 가짜 신분증을 걸러내는 것뿐만 아니라 신분증의 개인 정보가 잘 보이는지, 증명사진에서 얼굴이 잘 식별되는지 등의 기준도 함께 확인하고 있어요.
이전에는 사람이 신분증을 종합적으로 검증했어요. 하지만 토스뱅크의 고객이 늘어나면서 신분증의 양도 늘어났고, 검증에 소요되는 시간과 비용을 줄이기 위한 방법이 필요했어요. 이에 따라 가짜 신분증을 찾아내는 ML 모델과 더불어, 신분증의 개인 정보를 추출하는 모델, 얼굴을 인식하는 모델 등을 추가했어요. 이렇게 다양한 모델을 활용해 종합적으로 신분증으로 검증하는 “신분증 사본 품질 검사 서비스”를 실제 토스뱅크에 도입하기 시작했고요.
오늘은 해당 서비스가 토스뱅크에 어떻게 활용되고 있는지 알려드릴게요.
기준에 부합하지 않은 신분증 반려
고객이 제출한 신분증이 토스뱅크의 검증 기준에 적합하면 승인되고, 결격 사유가 있다면 반려돼요. 신분증이 반려된 고객은 다시 신분증 사진을 제출할 수 있도록 도와드려요. 신분증 승인은 아직 사람이 최종적으로 검증하지만, 사람이 보는 신분증의 양을 줄이기 위해 신분증 “반려” 과정을 자동화했어요. “신분증 사본 품질 검사 서비스” 모델로 사용자가 제출한 신분증이 토스뱅크의 검증 기준을 만족하는지 확인한 것이죠.
해당 모델에는 이미지 분류 모델, 객체 탐지 모델 등 다양한 모델이 각 검증 기준에 대한 점수를 0과 1 사이의 값을 계산해요. 0에 가까울수록 정상 신분증에 가깝다고 판단한 것이고, 1에 가까울수록 반려해야 할 신분증에 가깝다고 판단한 거죠. 0과 1 사이에 임계값(thershold)을 설정하고, 모델이 예측한 결과가 해당 임계값을 넘으면 신분증을 반려하는 시스템입니다.
임계값 설정하기
하지만 임계값을 어떻게 설정해야 될까요?
먼저 모델을 평가하는 방법을 설명드릴게요. 모델이 기준에 부합하지 않은 신분증 반려하지 않은 경우를 False Negative라고 해요. False Negative가 많으면 사람의 수기 검증을 효율적으로 줄이지 못하죠. 반면 모델은 “검증 기준에 부합하지 않는 잘못된 신분증이야!”라고 판단하여 신분증을 반려했지만, 실제로 정상적인 신분증인 경우를 False Positive라고 해요. False Positive가 많으면 선량한 고객이 불편을 겪어요.
임계값이 너무 낮다면 많은 고객의 신분증이 반려되는 False Positive가 많을 테고, 임계값이 너무 높다면 False Negative가 늘어나요. 즉, False Negative와 False Positive 사이에는 트레이드오프가 존재해요. 따라서 모델의 성능뿐만 아니라 비즈니스 요구사항과 시간, 비용과 같은 자원을 고려해서 적절한 임계값을 설정하는 것이 중요해요.
저희는 고객이 모델의 잘못된 판단으로 신분증을 반려하면 사용자는 신분증 사진을 다시 제출할 때까지 토스뱅크를 이용할 수 없는 불편함을 최소화하는 것을 목표였어요. 신분증 반려 자동화에 False Positive를 최소화하고 싶었어요. 그래서 토스뱅크는 고객의 경험을 위해 False Positive를 0에 가깝게 설정할 수 있는 임계값을 실제 서비스에 사용하기로 결정했어요.
모델 평가하기
하지만 False Positive만 최소화하면 그만큼 수기 검증이 필요한 신분증이 늘어나죠. 그래서 이를 개선하기 위해 False Negative를 최소화하는 또 다른 임계값을 설정했어요. 이 두 번째 임계값은 실제 서비스에서 사용하지 않지만, 모델의 성능과 고객 경험을 측정하는 데 사용하는 것이죠.
해당 임계값보다 모델 점수가 높은 경우에는 관리자 화면에 위와 같이 경고 메시지를 띄워 수기 검증을 보조하고 있어요. 두 번째 임계값에 따라 확실하게 문제가 있다고 판단되는 경우에는 자동으로 반려해서 수기 작업량을 최소화하고, 조금 의심되는 경우에는 관리자에게 경고 메시지를 띄워서 잘못 판단하여 놓치는 경우를 최소화했어요.
최종적으로 사용된 임계치를 도식화하면 위와 같아요. REJECT_THRESHOLD
보다 점수가 높다면, 그 신분증은 즉시 반려가 되고,REJECT_THRESHOLD
보다 낮지만, REJECT_WARNING_THRESHOLD
보다 점수가 높으면, 관리자에게 경고하여 도와줘요. 이외에는 기존과 같이 관리자가 직접 검토해요.
신분증 촬영본 사전검증
앞서 설명드린 사후 검증 과정에서 신분증이 반려된다면, 고객은 또 신분증을 제출하고 검증 승인을 기다려야 돼요. 그동안 토스뱅크 서비스의 일부를 사용할 수 없고요. 이런 불편함을 최소화하기 위해서 검증이 시작되기도 전에 촬영된 신분증 사본이 문제가 있으면 고객에게 미리 알려주는 시스템을 구축했어요.
고객이 신분증을 촬영한 순간, 이미지가 토스뱅크 기준을 만족하는지 확인하고 문제가 있다면 즉각적으로 사용자에게 알려 다시 촬영할 수 있도록 도와주는 것이죠. “신분증 사본 품질 검사 서비스” 모델을 사용해서 고객에게 문제점을 정확히 알려줄 수 있었어요.
A/B 테스트로 검증하기
이 때의 임계치 설정은 2가지 의견이 있었어요.
- 사후 검증처럼 무겁지 않은데, 조금이라도 의심된다면 알려주자.
- 사후 검증처럼 정말 확실한 것만 사용자에게 알려주자.
어떻게 임계치를 설정하지에 대한 의견이 정말 많았지만, 토스의 코어 밸류인 Execution Over Perfection에 맞게 실험을 해보기로 했어요. 토스 사내 서비스 TUBA를 사용해서 빠르게 A/B 테스트를 환경을 세팅할 수 있었고, A/B 테스트 환경은 아래와 같이 설정했어요.
- 성공 지표
- 신분증 촬영 단계 통과율
- 신분증 사후 검증 반려율
- 실험군
- Control - 모델을 사용하지 않음
- Variant A - False Negative를 최소화 한 임계치
- Variant B - False Positive를 최소화 한 임계치 + “문제가 반복되나요” 버튼이 없음
A/B 테스트의 결과
실험의 결과로 Variant A가 Winner로 선정되었어요.
Variant A는 Control에 비해 약 1.5~2% 정도 신분증이 반려되는 비율이 낮았으며, 통과율이 그렇게 차이 나지 않았어요. Variant A와 B 사이에 통과율은 큰 차이가 없었고, A가 B에 비해 반려되는 비율이 더욱 적었어요. 촬영된 신분증에 문제가 있을 때, 정확히 문제점을 짚어서 피드백을 사용자에게 주면, 되도록 이탈하지 않고, 다시 촬영한다 라는 것을 알게 되었어요.
그래서 현재 고객이 최종적으로 사용자가 만나고 있는 화면은 위와 같아요. 사용자가 찍은 신분증 이미지를 보여주고, 어느 부분이 문제인지 정확히 짚어서 설명해줘요. 또한, ML 모델의 지속적인 잘못된 판단으로 인하여 불편을 겪은 고객들은 “문제가 반복되나요?” 버튼을 통해 넘어갈 수 있어요.
마무리
신분증 검증 과정을 통해서 토스뱅크에서 ML 모델을 적극적으로 활용하여 보안과 효율을 챙긴 방법을 소개 드렸는데요. ML 모델을 실제 서비스에 적용하면서 임계값의 중요성을 다시 깨달았습니다. 고객의 편의를 해치지 않으면서도 서비스의 효율을 높이기 위해서는 목표를 정확히 설정하고, 목표에 적합한 임계치를 수차례의 실험을 통해 찾는 것이 중요합니다. 또한, 하나의 모델로 관리자를 위해, 고객을 위해 사용한 것 처럼, 다양한 곳에서 활용할 수 있다는 것을 잊지 마세요.
많은 고객에게 혁신적인 은행 서비스와 신분증 검증과 같은 유연하고 확장 가능한 시스템을 설계하고 싶다면 토스뱅크에 합류하세요.