For Your ISHIO Blog

データ分析や機械学習やスクラムや組織とか、色々つぶやくブログです。

Mercari Tech Meetupに参加してきたメモ - 後半

機械学習技術についてトークするMercari Tech Meetupに参加しましたので、その振り返り後半部を記載します。前半部は以下の記事を参照ください。

ishitonton.hatenablog.com

前半部は、メルカリが簡単な売買を実現するための機械学習の活用を中心に記載しました。後半は安全な売買の実現のための違反検知について記載します。また、運用面やインフラ面についても少しだけ記載しています。 なお、conpassに一部発表資料も公開されました↓↓

Mercari ML Meetup

メルカリ出品数は10億点

これは2018年7月末の数字です。1日に数10万出品がされる計算になります。ビッグデータですね。この中から違反出品を探し出すことが求められます。CtoCビジネスに登場するアイテムは本当に未知らしく、海岸の砂と甲子園の砂も売れるかもと思って出品するユーザがいるようです。

違反検知に機械学習を活用

1万円札がメルカリ上で1万円以上の値段で出品されていたニュースは記憶に新しいところ。出品されるものに対して「OKかNGか」を判断しルールにしていくことが求められます。安全にお客様に売買してもらうために、機械学習を利用しています。

大量多カテゴリの不均衡データから違反出品を探し出すために、当初は多値分類に挑戦していたが、課題が見えてきたそう。その1つとして、商品ごとの検知容易さや検知後の対応が異なることが挙げられます。例えば、画像で検知しやすい出品もあれば、文章で検知しやすい出品もあります。これは商品によって異なります。

また、対応の緊急度が異なれば、対応内容も異なることも挙げられます。仮に1万円札が出品されていたら表示されないようにするが、他の商品はアラートを出力するだけのものもある。

このように、商品によって違反検知への考え方が異なる中で、特定のカテゴリに特化したバイナリ分類に分解することで解決を行ったそうです。ここで問題になるのは、1つのモデルだったら、それだけ運用すればよいが、モデルによって異なる運用があり、目的があり、デプロイ方法があるということ。

モデルの運用をプラットフォームで解決する

大量のモデルに対して、評価・ReTrainingを自動化できる業務設計やシステム設計に取組んでいるのがメルカリです。例えば、katibを利用してハイパーパラメータのチューニングを行っています。Katibはスケーリングにも優れるし、k8sとの相性が良いとのこと。 また、モデルのパフォーマンス維持には正しい教師データの蓄積が必要。これはモデルはやってくれないので、自分たちでこの出品は「違反である」とpushする。実際に一万円札をNGかどうか判断して違反のデータテーブルを作り、再学習に回していくライフサイクルを作ることが非常に大事のようです。聞いた感触では、違反かどうかを判断するプロの目利きであるスタッフがいるようですので、人間も一部介したシステム・業務設計により、うまく鮮度の高い学習データを作っている印象を受けました。

その他のお話

その他にも運用面でためになる話をたくさん聞けました。

  • 全モデルがVersion管理されイメージ化されている。全ての実行時のイメージをコンテナレジストリで管理、いつでも再実行できるようになっている。
  • モデルはメモリを使う。数GB使うのは当たり前。プロセス毎にモデルをロードする必要があるとつらい。Copy on Write (Cow)を活かす工夫が必要。
  • ヒトの行動を予測するようなモデルが多い。基準や傾向はすぐに変わってしまうので、そこに追従するためにハイパーパラメータをReTrainingすることが大事。そして、モデル評価とReTrainingの自動化が重要。
  • 多くのモデルをビジネス側から求められている。とても間に合わないので、「民主化」となる仕組みを用意してMLエンジニア以外でも簡単にできるように準備を進めている。

簡単ですが、以上です。