Как нейросеть помогает нам проверять клиентов и ловить мошенников

Перед тем как клиент сможет делать денежные переводы в ePayments, ему придётся пройти верификацию. Он предоставляет нам свои персональные данные и загружает документы для подтверждения личности и адреса. А мы проверяем, соответствуют ли они требованиям нашего регулятора.

Поток заявок на верификацию становился всё больше, нам стало сложно обрабатывать такой поток документов. Мы боялись, что процедура будет занимать много времени и превысит все разумные сроки для клиентов. Тогда мы решили сделать систему верификации на основе deep learning.

Ликбез о регуляторах и их требованиях

Чтобы выпускать электронные деньги, нужно получить лицензию регулятора. Если вы открываете платёжную систему, например, в России, вашим регулятором станет Центробанк РФ. ePayments — английская платёжная система, наш регулятор — Financial Conduct Authority (FCA), орган, подотчётный Минфину Великобритании. FCA следит, чтобы мы соблюдали политику Anti-money laundering (борьба с отмыванием денежных средств, AML), частью которой является набор процедур Know Your Customer («Знай своего клиента», KYC).

Согласно KYC, мы обязуемся проверять, кто наш клиент и не связан ли он с общественно опасными группами. Поэтому у нас два обязательства:

  1. Определение и подтверждение личности клиента.
  2. Сверка его данных с различными списками: террористов, лиц под санкциями, членов правительства и многими другими.

С каждым годом требования по KYC становятся строже и подробнее. В начале 2017 года клиенты ePayments без верификации ещё могли получать оплату или совершать переводы. Теперь это невозможно, пока они не подтвердят личность.

Ручная верификация

Несколько лет назад мы справлялись своими силами. Россияне для подтверждения личности присылали скан определённых страниц паспорта, для подтверждения адреса – скан договора аренды, квитанции об оплате услуг ЖКХ. Помните игру Papers, please? В ней вы, играя за таможенника, проверяете документы по всё более усложняющимся требованиям правительства. Наш клиентский отдел играл в неё на работе каждый день.

2.jpg

Клиенты верифицируются удалённо, без визита в офис. Чтобы процедура проходила быстрее, мы нанимали новых сотрудников, но это тупиковый путь. Тогда и появилась мысль поручить часть работы нейронной сети. Если она хорошо справляется с распознаванием лиц, значит, совладает и с нашими задачами. С точки зрения бизнеса, система быстрой верификации должна уметь следующее:

  1. Классифицировать документ. Нам присылают удостоверение личности и подтверждение адреса проживания. Система должна ответить, что она получила на вход: паспорт гражданина РФ, договор аренды или что-то другое.
  2. Сравнить лицо на фотографии и документе. Мы просим клиентов прислать селфи с удостоверением личности, чтобы убедиться, что они сами регистрируются в платёжной системе.
  3. Извлечь текст. Заполнять десятки полей со смартфона не очень удобно. Гораздо проще, если приложение всё само сделало за тебя.
  4. Проверить файлы изображений на фотомонтаж. Нельзя забывать о мошенниках, которые хотят попасть в систему обманным путём.

На выходе система должна указывать определённый уровень доверия к клиенту: высокий, средний или низкий. Ориентируясь на такую градацию, мы будем быстрее верифицировать и не злить клиентов затянутыми сроками.

Классификатор документов

Задача этого модуля — удостовериться, что пользователь отправляет валидный документ и дать ответ, что конкретно он загрузил: паспорт гражданина Казахстана, договор аренды или квитанцию для оплаты ЖКХ.

Классификатор получает входные данные:

  • Фотографию или скан документа
  • Страну проживания
  • Тип документа, указанный клиентом (удостоверение личности или подтверждение адреса проживания)
  • Извлеченный текст (об этом чуть ниже)

На выходе классификатор сообщает, что он получил (паспорт, водительское удостоверение и так далее) и насколько он уверен в правильности ответа.

3.jpg

Сейчас решение работает на архитектуре Wide Residual Network. Мы пришли к ней не сразу. Первая версия системы быстрой верификации работала на базе архитектуры, на которую нас вдохновила VGG. У неё было 2 очевидные проблемы: большое количество параметров (около 130 миллионов) и неустойчивость к положению документа. Чем больше параметров, тем труднее обучить такую нейронную сеть — она плохо обобщает знания. Документ на фотографии должен быть расположен по центру, иначе классификатор пришлось бы обучать на выборках, в которых он находится в разных частях фотографии. В итоге мы отказались от VGG и решили перейти на другую архитектуру.

Residual Network (ResNet) была круче, чем VGG. Благодаря skip connections можно создать большое количество слоёв и добиться высокой точности работы. У ResNet всего около 1 млн параметров и ей было безразлично положение документа. Неважно, где он находится на изображении, решение на этой архитектуре справлялось с классификацией.

Пока мы дорабатывали решение напильником, вышла новая модификация архитектуры, Wide Residual Network (WRN). Главное отличие от ResNet — шаг назад в плане глубины. У WRN меньше слоёв, но больше сверточных фильтров. Сейчас это лучшая архитектура нейронной сети для большинства задач и наше решение работает на ней.

Несколько полезных решений

Проблема № 1. Классификатор нужно было обучить. Мы должны были загрузить много русских, казахстанских и белорусских паспортов и водительских удостоверений. Но брать документы клиентов, разумеется, нельзя. В сети лежат образцы, но их слишком мало для успешного обучения нейросети.

Решение. Наш технический отдел сгенерировал выборку из 8000+ образцов каждого вида. Мы создаём шаблон документа и размножаем на много рандомных образцов. Затем генерируем случайное положение документа в пространстве относительно камеры, учитывая её математическую модель и характеристики: фокусное расстояние, разрешение матрицы и так далее. При генерации искусственной фотографии в качестве фона выбирается случайное изображение из готового набора данных. После этого документ с перспективными искажениями размещается на изображении случайным образом. На такой выборке наша нейросеть хорошо обучилась и прекрасно определяла документ «на бою». Результаты — в конце статьи.

Проблема № 2. Банальное ограничение на вычислительные ресурсы и память. Нет смысла подавать глубокой нейронной сети на вход изображения больших размеров. А фотографии с современных смартфонов именно такие.

Решение. Перед подачей на вход фотография сжимается до размера примерно 300х300 пикселей. По изображению такого разрешения можно легко отличить один документ, удостоверяющий личность, от другого. Для решения этой задачи мы можем использовать стандартную архитектуру Wide ResNet.

Проблема № 3. С документами, подтверждающими адрес проживания, всё сложнее. Договор аренды или банковскую выписку можно отличить только по тексту на листе. После уменьшения размера изображения до тех самых 300х300 пикселей любой из этих документов выглядит одинаково – как лист формата А4 с неразборчивым текстом.

Решение. Для классификации произвольных документов мы внесли изменения в саму архитектуру нейронной сети. В ней появился дополнительный входной слой нейронов, который связан с выходным слоем. Нейроны этого входного слоя получают на вход вектор, описывающий предварительно распознанный текст с помощью модели Bag-of-Words.

Сначала мы обучали нейронную сеть для классификации документов, удостоверяющих личность. Веса обученной сети мы использовали при инициализации другой сети с дополнительным слоем для классификации произвольных документов. У этого решения была высокая точность, но распознавание текста требовало определённое время. Разницу в скорости обработки разными модулями и точность классификации можно посмотреть в таблице №2.

Распознавание лиц

Как обмануть платёжную систему, которая проверяет документы? Можно позаимствовать чужой паспорт и зарегистрироваться с помощью него. Чтобы убедиться, что клиент регистрируется сам, мы просим сделать селфи с удостоверением личности. И модуль распознавания должен сличить лицо на документе и лицо на селфи и ответить, это один человек или два разных.

Как сравнить 2 лица, если ты машина и мыслишь как машина? Превратить фотографию в набор параметров и сравнить между собой их значения. Так работают нейросети, распознающие лица. Они принимают изображение и превращают его в 128-мерный (например) вектор. Когда вы подаёте на вход другое изображение лица и просите их сравнить, нейросеть превратит второе лицо в вектор и вычислит расстояние между ними.

4.jpgТаблица 1. Пример вычисления разницы между векторами при распознавании лиц. Стив Бушеми отличается от себя на разных фотографиях на 0.44. А от Дженнифер Энистон – в среднем на 1.33.

Разумеется, есть отличия между тем как человек выглядит в жизни и на паспорте. Мы также подбирали значение расстояния между векторами и тестировали на реальных людях, чтобы добиться результата. В любом случае сейчас окончательное решение будет принимать человек, а замечание от системы будет только рекомендацией.

Распознавание текста

На документах есть текстовые поля, которые помогают классификатору понять, что перед ним находится. Пользователю будет удобно, если текст с того же паспорта будет перенесён автоматически и не придётся набирать вручную, кем и когда он выдан. Для этого мы сделали следующий модуль — распознавание и извлечение текста.

На некоторых документах, например, новых паспортах РФ есть Machine-readable zone (MRZ). С её помощью легко снимать информацию — это легко читаемый чёрный текст на белом фоне, который просто распознать. К тому же MRZ имеет известный формат, благодаря которому проще получить необходимые данные.

5.jpg

Если в задаче есть документы с MRZ, то нам становится проще. Весь процесс лежит в области компьютерного зрения. Если этой зоны нет, то после распознавания текста нужно решить одну интересную задачу — понять, а какую информацию мы распознали? Например, «15.05.1999» — это дата рождения или дата выдачи? На этом этапе тоже можно совершить ошибку. MRZ хорош тем, что декодируется однозначным образом. Мы всегда знаем, какую информацию и в какой части MRZ искать. Это очень удобно для нас. Но MRZ не было на самом популярном документе, с которым будет работать сеть — паспорте РФ.

Для распознавания текста нам нужно было очень эффективное решение. Текст придётся снимать с изображения, сделанного камерой телефона и не самыми профессиональными фотографами. Мы протестировали Google Tesseract и несколько платных решений. Не подошло ничего — или плохо работало, или стоило неоправданно дорого. В итоге мы стали разрабатывать собственное решение. Сейчас мы заканчиваем его тестирование. Решение показывает приличные результаты — о них можно прочитать ниже. О модуле проверки на фотомонтаж мы расскажем чуть позже, когда будут точные результаты исследований на тестовых выборках и на «бою».

Результат

Система на данный момент тестируется на сегменте заявок на верификацию из России. Сегмент определяется случайной выборкой, результаты сохраняются и сверяются с решениями оператора клиентского отдела по конкретному клиенту.

6.jpgТаблица 2. Точность классификатора документов (корректная классификация документа по сравнению с оценкой оператора).

Один из огромных плюсов машинного обучения заключается в том, что нейросеть действительно учится и делает всё меньше ошибок. Вскоре мы закончим тестирование на сегменте и запустим систему верификации в «боевом» режиме. 30% заявок на верификацию приходят в ePayments из России, Казахстана и Беларуси. По нашим прикидкам, запуск поможет снизить нагрузку на клиентский отдел на 20–25%. В дальнейшем, решение можно масштабировать на страны Европы.

Автор: Михаил Левин

Пожалуйста, оцените статью:
Ваша оценка: None Средняя: 5 (1 vote)
Источник(и):

Хабр