Мошенническое поведение по снятию отпечатков пальцев
Использование нейронных сетей, чтобы проглотить следы хлебных крошек, оставленных мошенниками
Вы водитель Lyft и только что согласились на поездку. Вы начинаете свой путь к месту получения, и вдруг вам звонят.
«Привет, Алекс, мне звонит Трейси из штаб-квартиры Lyft. В этом месяце мы присуждаем 200 долларов всем водителям с рейтингом 4,7 звезды и выше, и я просто хотел поздравить вас с тем, что вы стали отличным водителем с рейтингом 4,9 звезды! »
«Привет, Трейси, спасибо!»
«Нет проблем! А поскольку мы видим, что вы едете, мы отправим другого водителя, чтобы вы могли припарковаться в безопасном месте ... Хорошо, о вашем пассажире позаботится другой водитель. Прежде чем мы сможем присвоить вам награду, нам просто нужно быстро подтвердить вашу личность. Мы отправим вам проверочное текстовое сообщение. Не могли бы вы рассказать нам, что это за числа?… »
На данный момент вы только что отказались от полного доступа к каждому последнему центу в вашей учетной записи водителя, даже не осознавая этого.
Отпечатки пальцев поведения
Представившись службой поддержки Lyft, мошенник особого рода запрашивал трансфер и звонил водителю, который соглашается на поездку. Вежливый и профессиональный мошенник представлялся представителем штаб-квартиры Lyft, а затем поздравлял водителя с тем, что он был выбран для денежного вознаграждения, якобы за то, что он выдающийся водитель. Чтобы зачислить вознаграждение на свою учетную запись, водитель должен будет подтвердить свою личность и предоставить учетные данные. Для дополнительного эффекта мошенник заявлял, что это важный звонок, и перенаправлял поездку для пассажира. Эта очевидная административная привилегия возможна, поскольку мошенник на самом деле является пассажиром и может просто отменить поездку. К сожалению, для непосвященного водителя эта тщательно продуманная демонстрация авторитета поверх хорошо отрепетированного сценария часто бывает очень убедительной. После этого мошенники будут иметь доступ ко всем с трудом заработанным деньгам, которые не были обналичены со счета. Дальнейшее не удивит тех, кто знаком с понятиями социальная инженерия и захват аккаунта.
Аналитически мы быстро научились определять подозрительные учетные записи по контрольным признакам их пользовательской активности. Например, учетные записи мошенников будут показывать необычно высокий уровень контактов с водителями и отказов пассажиров при небольшом количестве совершенных поездок. Конечно, было много вариантов точной истории активности пользователей, поскольку со временем эти мошенники меняли свою тактику. Их разнообразное поведение затрудняло систематизацию их пользовательской активности в более простые, структурированные функции, которые четко отличают хороших пользователей от плохих. Однако для опытного аналитика рисков закономерности очевидны. Существуют «отпечатки пальцев», возникшие в результате их методов работы, которые не изменились - а, возможно, и не смогли - фундаментально измениться.
В этом посте мы раскрываем практические мотивы смены парадигмы в работе по исследованию мошенничества с чистой, жестко запрограммированной разработки функций на подход, более ориентированный на модели, за последний год. Этот новый подход ориентирован на современные методы машинного обучения, такие как глубокое обучение, которое расширяет типы источников, с которыми мы можем работать, и помогает нам лучше улавливать прогностические свойства наших сигналов. Затем мы погружаемся в одну из наших последних производственных моделей машинного обучения, которая обнаруживает поведенческие отпечатки в действиях мошеннических пользователей с учетными записями. В конце мы набросаем некоторые из текущих направлений работы с Lyft Fraud.
(Ручной) труд любви
В Lyft процесс принятия решений о мошенничестве разделен между бизнес-правилами, разработанными аналитиками вручную, и моделями машинного обучения, разработанными учеными-исследователями. Эти бизнес-правила и модели машинного обучения составляют основу нашей системы обнаружения, которая запускает предварительную авторизацию и идентификационные вызовы, нацеленные на блокировку мошенников. Чтобы использовать эти инструменты для принятия решений, наша команда прилагает много усилий для анализа поведения пользователей-мошенников и преобразования сигналов, которые они оставляют, в созданные вручную функции. Но ручная инженерия сложна.
Если быть точным, то сложно не создавать кучу функций. Скорее всего, что сложнее, так это ручная разработка надежных функций: прогнозирования не только в краткосрочной, но и в среднесрочной и долгосрочной перспективе. Как и в случае с болезнями, часто бывает проще разработать функции, которые обнаруживают симптомы, а не причину симптомов. Например, необычно большое количество обращений с водителями и количество отказов могут вместе сформировать хорошее бизнес-правило, которое изначально выявляет счета многих мошенников, как описано во введении. Но в нашем случае эти мошенники быстро научились звонить по телефонным номерам, назначенным нашим водителям, используя альтернативные номера телефонов, чтобы избежать обнаружения. Чтобы эффективно противостоять адаптивному злоумышленнику, важно разработать надежные функции, которые смотрят на вещи, которые мошенникам трудно контролировать или изменять.
По сути, любая стоящая мера по борьбе с мошенничеством предназначена для безвозвратного увеличения операционных расходов мошенника до точки, когда вектор мошенничества становится экономически неприемлемым. В приведенном выше примере функции с высокой частотой контактов с водителями не привели бы к увеличению эксплуатационных расходов, потому что они просто перешли на использование записывающего телефона отдельно от тех, которые использовались для создания учетных записей пассажиров для звонков водителям. Нам был нужен способ зафиксировать последовательность действий, которая выявляет повторяющуюся схему отмен после отправки запрошенных поездок среди всех других действий учетной записи. Правильно спроектированные функции должны быть надежными, не зависящими от различий в общей схеме мошенничества, поскольку методы работы мошенников остаются прежними. Чтобы избежать обнаружения, мошенникам придется предпринять какие-то радикальные меры, например, фактически завершить поездку без отмены. Хотя приходит на ум несколько очевидных методов, таких как использование украденных кредитных карт или мошенничество с купонами, оба потребуют гораздо больших затрат.
Но легче сказать, чем сделать. Для надежных функций требуются богатые источники сигналов, которые фиксируют поведенческие модели, которые нелегко победить. «Классический способ» сделать это - использовать как можно более разнообразный набор источников в нечто вроде модели логистической регрессии с некоторыми задействованными условиями взаимодействия. Пример такого рода разработки функций намечен выше: мы можем взять, скажем, гармоническое среднее значений отмены, контакта и (для хорошей оценки) показателей незавершенности поездки. Возможно, мы даже можем добавить временное скользящее окно, чтобы убедиться, что мы не подвержены «инкубируемым учетным записям» с хорошей историей поездок. Если еще не очевидно, что разработать надежные функции сложно, осознайте, что это всего лишь один вектор мошенничества из сотен десятков высокоадаптивных мошеннических сетей, которые активно нацелены на различные линейки продуктов Lyft.
Переключение внимания
Чтобы улучшить принятие решений о мошенничестве, мы начали уделять больше внимания более современным и мощным методам моделирования в прошлом году. Например, мы отправили модели ансамбля деревьев решений с градиентным усилением (GBDT), которые значительно улучшили нашу производительность благодаря присущей дереву решений способности захватывать интерактивные эффекты между несколькими функциями. Это означало, что мы могли тратить больше времени на изучение источников функций, которые не позволяли напрямую прогнозировать мошенничество, но улучшали наши модели в соответствии с нашим существующим набором функций. Функции ручной инженерии, которые были независимо коррелированы с нашими ярлыками для мошенничества - необходимые, скажем, для наивного байесовского классификатора - таким образом стали менее важными, чем поиск правильной комбинации функций. Наш успех и переход на модели GBDT стали началом нашего стремления к совершенствованию подходов к моделированию машинного обучения, которые максимально использовали предлагаемые нами сигналы.
Совсем недавно мы переключили наше внимание на нейронные сети, которые были еще более мощными и могли изящно работать с гораздо более богатыми источниками потоковых данных. Дело не в том, что мы не знали об этих источниках данных - часто наши аналитики рисков уже тщательно изучали такие вещи, как журналы активности пользователей и истории финансовых транзакций, при проверке счетов вручную. Мы даже создали на их основе несколько хороших функций прогнозирования для наших ГБДТ. Проблема заключалась в том, что с большинством методов «поверхностного обучения» нам приходилось идти на компромисс, теряя часть информации при преобразовании их в структурированные функции, которые работают с этими методами. Например, несмотря на то, что GBDT может фиксировать взаимодействие между показателями отмены, контакта и незавершенности поездки без необходимости в чем-то вроде гармонического среднего, мы не могли выразить временную взаимосвязь между этими событиями. Частично перспективы нейронных сетей заключались в их способности извлекать еще больше информации, присущей этим сигналам, работая напрямую с «менее обработанными» функциями в их более естественных, последовательных формах.
Автоматизация проектирования функций посредством проектирования архитектуры
Чтобы обрабатывать сложные последовательные сигналы, мы исследовали различные архитектуры нейронных сетей, которые дали модели динамическое временное поведение для временной последовательности. Другими словами, нам нужна была модель глубокого обучения, которая могла бы обновлять его представления о пользователе по мере поступления большего количества информации. И хотя изначально мы думали об альтернативных методах, таких как n-граммы для захвата определенных подпоследовательностей действий и скрытых марковских моделях (HMMs), они не казались подходящими. В первом случае количество n-граммов для захвата важных подпоследовательностей было бы перестановочной сложностью всех последовательностей - слишком дорого и сложно поддерживать, поскольку мы постоянно совершенствуем наш продукт. В последнем случае нет очевидного способа обойти немарковский характер активности пользователей в отношении того, является ли пользователь мошенничеством. Например, если пользователь проявляет подозрительную активность при входе на раннем этапе, что не является строго признаком мошенничества, не очевидно, как сохранить эту информацию, поскольку мы наблюдаем рост активности пользователей.
Обзор литературы о моделировании последовательных данных быстро указал нам на глубокое обучение как на современный метод. В то время это также казалось наиболее практичным способом сочетать последовательные функции с нашими существующими структурированными функциями, учитывая нашу предыдущую работу над задачами обработки естественного языка (NLP) с нашей командой поддержки. Практически было также проще сериализовать и т. Д. Например, запустить HMM поверх модели GBDT. Наша существующая инфраструктура обслуживания моделей должна быть существенно изменена, чтобы приспособиться к произвольным стекам моделей машинного обучения.
Чтобы интуитивно понять, как работают нейронные сети, и понять, как мы работаем с нейронными сетями, мы подробно рассмотрим, как мы используем один из самых богатых источников сигналов для мошеннических шаблонов: журнал активности пользователя. В частности, журнал активности представляет собой упорядоченную во времени последовательность действий пользователя, выполненных в нашем приложении, вместе с их различными метаданными. Эти действия пользователя варьируются от нажатия кнопки запроса поездки до зажатия увеличивающего карту экрана. Метаданные действия включают продолжительность действия, время, прошедшее с момента предыдущего действия, и силу, применяемую пользователем к экрану телефона. Поскольку Lyft является одним из самых объемных событийных потоков, брать из него классический подход ручной работы нецелесообразно, и нам пришлось обратиться к подходу глубокого обучения, который выигрывал от масштаба доступных данных. А это означало найти лучшую архитектуру нейронной сети для нашего случая использования; т.е., архитектурное проектирование.
Алхимия нейронных сетей
Как и в случае с большинством приложений глубокого обучения, наш подход был в значительной степени эмпирическим. Чтобы найти наиболее эффективную модель, мы черпали вдохновение из опросов и недавних статей о методах глубокого обучения для НЛП и просмотрели тысячи архитектур нейронных сетей с использованием автоматизированных заданий перекрестной проверки. Поиск состоял из небольших изменений, таких как конкретные функции активации и встраивания измерений в более крупные, таких как порядок сетевых уровней и предлагаемые конкретные архитектуры. В конце концов, мы остановились на нейронной сети, которая сопоставляет действия пользователя с встраиваемыми функциями, и сверточно-повторяющейся архитектуре с механизмом внимания. Изысканный. 😎
Слой внедрения действий пользователя
Встраивание действий пользователя - это плотные векторы, которые кодируют семантику каждого конкретного действия пользователя. В основе нашего использования лежат вложения слов, обычно используемые в приложениях НЛП, такие как вложения GloVe и word2vec. Как и вложения слов, каждое измерение в пространстве встраивания кодирует некоторое свойство набора всех действий пользователя. Например, одно измерение может кодировать, насколько вероятно действие связано с входом пользователя в систему, а другое может кодировать, сколько нажатий клавиш необходимо для действия. В нашем случае мы заметили, что похожие взаимодействия, связанные с отменой поездки, сгруппированы вместе, помимо запроса на поездку, при выполнении визуализации t-SNE для 50 наших основных действий пользователя. Эти семантические кластеры также выступали в качестве проверки работоспособности нашего обучающего конвейера.
Сверточная сеть
1D сверточная сеть (ConvNet) образует второй компонент нашей нейронной сети. Верная своему тезке, 1D ConvNet построена на идее одномерных сверток, где обучаемые фильтры сворачиваются с последовательностью встроенных действий пользователя.
Сверточные фильтры с обучаемыми параметрами помогают извлекать аналогичные локальные особенности в нескольких местах и кодировать подпоследовательности действий пользователя, которые вместе образуют более значимые локальные взаимодействия. Например, одно действие с запросом на поездку само по себе мало что значит. Но если рассматривать вместе с повторяющимися отменами поездки и предшествующими ей запросами, последовательность повторяющихся действий пользователя рисует гораздо более подозрительную картину пользователя. Можно подумать об этой идее: подпоследовательности действий пользователя относятся к журналам активности пользователей, как словосочетания относятся к предложениям.
Другой способ интуитивно понять ConvNets о действиях пользователя - это то, как они работают, если мы изучили встраивания n-грамм действий пользователя, где n - размер аналогичного фильтра свертки. Оба они пытаются кодировать семантику последовательных действий пользователя. Но по сравнению с встраиванием n-грамм, обработка одиночного действия пользователя (1-грамм) с помощью сверточного слоя с n-фильтрами уменьшает размер параметра. Это сокращение связано с тем, что нам не нужно изучать вложение для каждой уникальной n-граммы, что также означает, что нам нужно достаточно наблюдений за всеми возможными n-граммами. Рассмотрение взаимодействия небольшого количества n-фильтров, скажем, с полносвязными слоями может помочь нам захватить тот же объем информации, что и сопоставление встраивания «один-к-одному» без высокой сложности выборки.
Чтобы еще больше повысить эффективность нашей выборки, мы складываем несколько сверточных слоев, так что каждый изучает абстракции подпоследовательностей действий пользователя в иерархическом порядке. Этот подход позволяет нашей сети быть еще более выразительной с меньшим количеством параметров, чем просто использование большого сверточного слоя после слоя встраивания.
Рекуррентная сеть
В традиционных моделях анализа последовательностей (подумайте о HMM) вероятность обычно зависит от окна предшествующих элементов. Чтобы сделать обучение модели послушным, в этих моделях часто используются упрощающие предположения, такие как предположение Маркова.
Эти модели обычно обеспечивают лучшую производительность с n-граммами более высокого порядка, некоторым сглаживанием Лапласа и откатом к n-граммам более низкого порядка, когда не наблюдаются граммы более высокого порядка. Этот классический подход обычно требует много n-граммов и огромных ресурсов памяти. Например, в Современной работе Хеафилда и др. Для приложений НЛП [u] спев одну машину со 140 ГБ ОЗУ в течение 2,8 дней, [они] построили необработанную модель на 126 миллиардах токенов. Такой подход был бы для нас непрактичным. 😅
Рекуррентные нейронные сети (RNN) - это один из способов обусловить вероятность всех предыдущих элементов в последовательности с помощью параметрической (и отчасти похожей на черный ящик) функции. Очень (очень) примерно, RNN «запоминает» последовательность действий пользователя, наблюдаемых до сих пор, и сохраняет ее как скрытое состояние в «ячейке памяти». Поскольку новые действия последовательно загружаются, ячейка рассматривает скрытое состояние вместе с текущим действием пользователя, чтобы обновить свою «память». Чтобы получить «вероятность», ячейка рассматривает скрытое состояние вместе с текущим действием пользователя и выводит оценку.
Интуитивно понятно, что когда входные данные из предыдущей ConvNet передаются в RNN в нашей нейронной сети, она определяет, какая часть информации о подпоследовательностях действий пользователя должна быть сохранена для дальнейшего рассмотрения. Это позволяет нам эффективно кодировать временные отношения между более ранними вложениями подпоследовательностей и более поздними. Для дальнейшего улучшения компонента RNN мы поэкспериментировали с несколькими идеями и дополнили его механизмом внимания.
Собираем все вместе
Наша нейронная сеть для снятия отпечатков пальцев реализована как стек уровня внедрения, ConvNet и RNN в этом порядке в Tensorflow через интерфейс Keras. Мы объединяем вывод RNN со структурированными функциями и пропускаем его через полносвязные уровни, которые возвращают многоклассовый вывод softmax, который определяет вероятность, присвоенную каждому возможному сегменту пользователей мошенничества. Для каждой модели мы обнаружили, что добавление модуля отслеживания поведения к нашей производственной структурированной нейронной сети только для функций привело к относительному увеличению отзыва более чем на 40% при той же точности по отношению ко всем мошенническим пользователям.
Создание крупных GAN
Исторически сложилось так, что нам всегда приходилось сначала идентифицировать схему мошенничества и, в свою очередь, использовать ее для обучения наших моделей. Сегодня мы не только снимаем отпечатки пальцев на мошеннических действиях, но и работаем над обучением правильному поведению пользователей, чтобы определять, когда кто-то отклоняется от него. С этой целью мы разрабатываем модели, в которых используется полууправляемая версия алгоритма генеративных состязательных сетей для обнаружения аномальных пользовательских встраиваний.
На высоком уровне мы ищем способы автоматически кодировать человеческую интуицию о том, что не является мошенничеством в учетной записи пользователя. В отличие от нашего старого подхода, основанного на простом построении дискриминационных моделей, мы работаем над генеративной моделью хорошего распределения пользователей. Мы косвенно отбираем мошенников из дополнения к хорошему распределению пользователей и используем его для обучения отличительной модели с нашими существующими истинными целями мошенничества. Этот подход аналогичен тому, что описано в Дай и др., Работа над BadGAN. Есть надежда, что лучшее понимание хорошего поведения поможет нам использовать его для защиты и даже вознаграждения хороших пользователей.
дальнейшее чтение
Если вам понравился этот пост, подписывайтесь и рекомендуйте! И хотя мы большие поклонники глубокого обучения (в правильном контексте), это еще не все, чем мы занимаемся. Чтобы узнать больше, ознакомьтесь с другими нашими публикациями о научных исследованиях и Lyft Fraud!
- Взаимодействие в экспериментах по мошенничеству: пример многомерного тестирования
- Остановить мошенников путем смены продуктов
- "Что в имени? Семантика науки в Lyft »
- От поверхностного к глубокому обучению: путешествие ученого-исследователя через запрограммированные вручную регрессоры, маринованные деревья и внимательные нейронные сети
Как всегда, Lyft нанимает! Если вы увлечены разработкой современных моделей машинного обучения или построением инфраструктуры, которая их поддерживает, узнайте больше о наших ролях Исследования, Наука и Инженерия и свяжитесь со мной!
Этот пост был бы невозможен без помощи Янива Голденберга, Винсона Ли, Патрика Лавиктуара, Кэма Брюггемана, Джоша Черри, Райана Лейна, Элейн Чоу и Уилла Мегсона. Большое спасибо!