2024-03-21 機械学習勉強会

 

How we built it: Stripe Rader

  • 著者
    • Ryan Drapeau
    • 執筆時はPayment Fraudチーム
    • 現在はPrincipal ML Engineer
 

Stripe Raderとは

  • 決済・カード利用の不正検知ツール
  • stripeを決済で利用していなくてもAPI経由で不正検知してくれるぽい
  • 2020年なのでちょっと古いけど日本語だとこの資料がわかりやすい
 

イントロ

  • Stripe Raderとは
    • 良い取引を通過させ、リスクの高い取引をブロックするか追加のセキュリティチェックに回す
    • 1,000以上の特徴からその取引が詐欺である可能性を判断している
    • この判断は、100ミリ秒未満で正確に行われ、Stripeで行われる数十億もの正当な支払いの中で、Radarが誤ってブロックするのはわずか0.1%(偽陽性)
  • オンライン決済の不正検知は難しい
    • 高い正確性とパフォーマンスが求めらる
    • さらに大量のトランザクションを評価するためコスト面の要件も厳しい。偽陽性(ブロックされた正当な支払い)のバランスを取る必要がある。
    • また、不正利用は頻繁に起きるものでもないことが、この課題はさらに複雑にさせる
    • 不正利用の発生率は約1,000支払いに1回のオーダー
 

Lesson 1: Don’t get too comfortable with your ML architecture

  • 初期はシンプルなMLモデル(ロジスティク回帰)から始め改善のイテレーションを回しやすくし、次第に複雑なもの(DNN)へと移行していくという戦略
  • Wide & Deep
    • 2022年に大きな変化があり、XGBoost model と deep neural network (DNN)をアンサンブルしたWide & Deep modelから、ピュアなDNNのみのmodelに移行した
    • Beforeのアーキテクチャは、記憶力(XGBoostによって動かされるwideな部分)と一般化(DNNによって動かされるdeepな部分)の組み合わせで構成されていてうまく機能していたが、XGBoostは進んだML技術(e.g., transfer learning, embeddings, long training times)と互換性が乏しく、また並列化が非常に難しいため、モデルを再訓練する速度も遅くなり開発速度のボトルネックになっていた
    • 単純にXGBoostの部分を切り離してしまえばこれらの問題を解決することはできたが、recallが1.5%下がってしまい体験に大きな悪化をもたらすためその意思決定はできなかった
    • XGBoostはディープラーニングのメソッドでもないし、最新の技術でもないが我々のモデルに必要なユニークな価値を発揮していたのは間違いなく、現にStripeの他のMLモデルで今も使われ続けている(2023/05時点)
    • ここからXGBoostから得ていた記憶力を損なうことなく、またDNNの一般化能力を妨げずに、DNNのみのアーキテクチャを構築する方法を模索した
  • Pure DNN
    • 記憶力と一般化能力を向上させる単純な手法としてはDNNのサイズ(深さと幅)を大きくすることが考えられる
    • モデルのサイズを増やすことでモデルの能力がすぐに向上し、抽象レベル(例:支払いの速度や「カード上の異常な取引量」)と細かいレベル(例:特徴間の相関関係)の両方の特徴を捉えることができました
    • しかし、深さを過度に増やすと、過学習のリスクが生じ、モデルが特徴のランダムノイズを記憶してしまう危険が高まるため、DNNのみのアーキテクチャを構築するには、さまざまなレベルを学習する表現能力を最大化しつつ、過学習に対して抵抗力を持つ絶妙なバランス点を見つける必要があった
    • DNN系の研究を調査した末、ResNeXtにインスパイアを受けたマルチブランチのDNNのみのアーキテクチャを採用
    • ResNeXtのアーキテクチャは「ニューロン内ネットワーク」戦略を採用しており、これは計算を異なるスレッド、またはブランチに分割し、ブランチを小さなネットワークと考えることができる。これらのブランチからの出力が合計され、最終的な出力を生成される。
    • ブランチを集約することには、新しい次元の特徴表現を拡張することで学習された特徴を豊かにする利点があり、単に深さや幅を増やして精度を向上させるよりも効果的だった
      • 深さ(モデルのレイヤー数)や幅(レイヤー内のユニット数)だけでなく、「カーディナリティ」という新しい次元がネットワークの性能にとって重要である。カーディナリティを高めることで、より多様な特徴やパターンを捉え、モデルの分類精度を向上させることができる。このアプローチは、従来の深くまたは広いネットワークよりも、同等の計算コストでより高い性能を達成する新たな道を示しています。
  • 結果
    • XGBoostコンポーネントをアーキテクチャから取り除くことで、モデルのトレーニング時間を85%以上削減し(2時間未満)、以前は夜遅くまで実行が必要だった実験が、今では1日のうちに複数回完了できるようになった
    • この改善は、現在のMLの進め方にあまり安住せず、自問自答する良いきっかけとなった。もし今日からやり直すとしたら、どのようなモデルを構築するだろうか?という問いを常に持つことが重要。
    • これらの質問をすることで、来年の作業に向けてさらに野心的な取り組みに挑戦することができる。今後は転移学習、エンベディング、マルチタスク学習など、より進んだML技術を取り入れることを目指す。

Lesson 2: Never stop searching for new ML features

  • 特徴量エンジニアリング
    • モデル改善のための最大のレバーの一つは、特徴量エンジニアリング
    • 一部の特徴量はモデルの性能に大きな影響を与える可能性がありますが、まずそれらを特定して実装する必要があるため、これを効果的に行うために、MLエンジニアをサポートするいくつかのプロセスを作成した
        1. 過去の攻撃を詳細に検証し、詐欺行為者の心理に迫ろうとする調査レポートを作成
            • 支払いの中から、詐欺行為者が複数のアカウントを迅速に設定するために使用する可能性がある一般的なパターン(例:123test@cactuspractice.comのような使い捨てメール)などのシグナルを探す
        1. 過去の攻撃との関連性を探るためにStripeネットワーク全体でタイミングとシグナルの相関関係を調査する
        1. さらに、Radarチームは、ダークウェブ上の活動に関する研究から新たに出現する詐欺トレンドについて毎週会議を開く
        1. これらの情報を集め、各攻撃の特定の輪郭にターゲットを絞った特徴を考案し、優先順位をつけたリストを作成。各特徴を迅速に実装してプロトタイプを作り、モデルの性能への影響を検証する。
    • これらの取り組みはうまくいくこともあるがうまくいかないことも多い
      • その業者がdistributed fraud attackを受けているかどうかをbool値で持つ特徴量を追加したときは、性能が向上すると思われたが実際はさほど変化をもたらさなかった。これはすでにMLモデルがそのような特徴意図せず汲み取ってたことことが後からわかった。
  • データサイズの増やす
    • 新しい特徴を開発することに加えて、モデルの性能を向上させるもう一つの方法として、トレーニングデータのサイズを増やすことを探求しています。
    • ChatGPTのようなMLモデルや、一般的に大規模言語モデルの成功を受けて、Radarでもトレーニングデータの量を増やすだけで、モデルの性能を大幅に向上させることが検証した
    • これを行う上での主な障害は、トレーニングデータのサイズが増えるにつれて、トレーニングにかかる時間が線形に増加することでしたが、DNNのみのアーキテクチャに切り替えた際に行ったトレーニング速度の改善のおかげで、これはそれほど問題にならなくなった
    • より多くのトランザクションデータを使用した実験を行った結果、トレーニングトランザクションデータを10倍に増やしても、依然としてモデルの大幅な改善が見られました。現在、さらに結果を一般化するために100倍のデータサイズでの実験を行っています。

Lesson 3: Explanation matters as much as detection

  • 良い不正検知システムを作るということは単に不正を正しく検知できれば良いというものではない
  • 偽陽性は加盟店の利益を損ない、顧客をイライラさせるため、ユーザーにはなぜそのような判定がされたかを伝えることが重要であり、長年ここへの研究に投資をしてきた。
  • すべてのMLモデルはブラックボックスであり、DNNは他のタイプのモデルよりもさらにそうであるためこれは非常に難しい。これはDNNを採用することを決定したときに受け入れた別のトレードオフでもあります。
  • Risk insights
    • 2020年には、Risk insights機能を構築し、ユーザーは取引が拒否された理由となった取引の特徴を見ることができるようになりました
    • これには、カード所有者の名前が提供されたメールと一致しているかどうか、IPアドレスに紐づくカードの数などが含まれます。多くのカードが関連付けられていることは、複数の盗まれたクレジットカードを試すような悪意のある行為者がいることを示すかもしれません。
    • しかし、これには正当な理由も存在するかもしれません。これらのシグナルの文脈でこの特徴を評価し、それらの間に存在するかもしれない相関関係を理解して、詐欺的な支払いと良い支払いを正確に区別する必要がある。
    • Risk insightsの最近の改善では、購入と配送の住所の位置を示す地図をユーザーに表示すること、Elasticsearchを使用して関連する取引を迅速に共有することで、ユーザーが特定の取引がなぜ拒否されたかを理解しやすくしています。
  • モデルの理解
    • 判定に関する洞察をユーザーに提供するだけでなく、私たちはMLモデルのより深い理解を得るために、より洗練された技術に取り組んでいます。このツールには、取引の詐欺スコアを上げたり下げたりするのに最も貢献した正確な特徴を表示するシンプルなテーブルビューが含まれます。私たちのエンジニアはこれらのソリューションを内部でアクティブに使用してサポートケースをデバッグしており、これらの洞察をユーザーと共有する計画に取り組んでいます。
    • RadarのML結果をできるだけ明確に説明することで、ユーザーは特定の支払いの相対的なリスク、そのリスクスコアに貢献した可能性のある詐欺シグナル、および特定の支払いが他の支払いとどのように比較されるかを理解するのに役立ちます。その後、より正確な詐欺判断を生成するために送信するデータの質を改善する行動を取るか、またはRadarを特定のビジネスニーズに合わせてカスタマイズするために、カスタムの許可ルールやブロックルールを作成することができます。
      • 単価低いビジネスと単価が高いビジネスで関心が異なる
        • 高いジュエリーとかだと一つの不正利用が大きな損失になるが、100円程度の商品だとグロース重視で多少の不正利用は許容できる
        • raderは両方に対応しなければならない。具体的にはスコアを算出して閾値はカスタムできるようにしている
        • 他にも特定の地域、金額の閾値など項目に対してルールを書くことができる

参考

  • ちょっと古いけどRaderのML部分の全体像がわかる詳しめの記事
  • Rader関係なく不正検知一般の話
  • 動画
  • podcast