セーターの備忘録

大学編入やIT関連の内容を記していく予定です

マッチングAIの特性を考慮したチューリングマシン構築によるマッチングアプリの作業効率化

この記事は 岩手県立大学とか、岩手の人たち Advent Calendar 4日目の記事です。今回は、マッチングアプリに使われているアルゴリズムと、それを踏まえた作業効率化について書いていきたいと思います。

要約

記事の内容をまとめると、こんな感じです。

  • 最近のマッチングアプリには機械学習を含めた優秀なアルゴリズムが使われていて、より最適な相手がレコメンドされるようになっています
  • アルゴリズムが推論しきれない部分について、計算可能レベルまで分解して落とし込んで条件付けすることで、より簡単に最適な相手を見つけられるようになりました
  • 標準化と効率化によって、アプリ疲れが軽減されました

マッチングアプリの仕組み

現在、数多くのマッチングアプリがありますが、中でも国内で利用者数の多い Pairs を例として書いていきたいと思います。

www.pairs.lv

こんなところにマッチングアプリのリンク埋め込むと、いかにも広告が挟まっているみたいですね (笑)

マッチングアプリでは、基本的に以下の手順で異性とマッチングしていくことになります。

  1. プロフィール情報を登録
  2. 検索条件を指定して異性を検索
  3. プロフィールを見て気になった異性に対して「いいね!」ボタンを押す
  4. 相手から「いいね!ありがとう」が返ってきたらマッチング!メッセージのやり取りが出来るようになる

この記事では、2, 3 の異性のレコメンドと「いいね!」を押すべき人について書いていきます。

マッチングAIによるレコメンド最適化の仕組み

条件検索を基にアプリが異性の情報を表示するにあたっては、レコメンドシステムが組み込まれています。
Pairs の場合、シンプルに条件指定したプロフィールの条件に加え、「散歩好き」の男性と「カフェ巡り好き」の女性がマッチングするかもしれない*1、というような推論を含む独自アルゴリズムを構築しているそうです。また、機械学習や深層学習も活用されており、プロフィールや行動データから作成したモデルをスコアリングしたり*2、東京大学大学院の山崎研究室と共同で行動履歴のようなログデータも活用しているようです*1。

*1 「好きかも?」AIで分析 東大と「Pairs」がタッグを組む理由
*2 「検索条件=本当に見つけたい相手」ではない Pairsの検索体験を生み出す工夫と改善

マッチングAIの課題

マッチングアプリに関わらず、様々な場所で使われているマッチングシステムですが、いくつか課題もあります。その中の一つが、カテゴリ化不可データの取り扱いです。
マッチングアプリの場合、得られる情報として主に

① 身長、体型、居住地、趣味、価値観、行動履歴
② 写真

などがあります。
①の情報はカテゴリ化されており、条件検索でもそのままカテゴリ情報として扱うことができます。
一方、②のようなデータの場合、そのままだと「写真」という情報しか得ることができません。特に顔写真は「いいね!」を押す上で重要な判断材料になりますが、検索でも条件でそのまま扱うことはできず、今のところ検索アルゴリズムにも活用されていないようです。

カテゴリ化不可データに対するアプローチの提案

そのままではカテゴリ化ができない画像データに対して、アプローチ方法は2つあると考えています。

深層学習を使う方法 (フィーリング)

1つ目のアプローチは深層学習を活用する方法で、大量の顔写真とそれに「いいね!」を押した人の情報から、利用者が好みそうな顔の人をレコメンドするという方法です。しかしこの方法には2つ課題があります。
1つは利用者目線で考えた際、自分で大量のデータを集めて学習させてそれをマッチングアプリに反映させることは現実的ではないことです。データ収集的にもシステム的にも難しいと思います。
2つ目は深層学習の有名な問題ですが、判断理由がブラックボックス化してしまうため、結局なぜその顔写真の人が「いいね!」を押すべき人として推薦されたのかが分からないということです。これでは、人が直接見て判断するときのフィーリングと変わりません。

条件分岐可能レベルまで分解して条件付け

そこで2つ目のアプローチとして、条件分岐可能なレベルまで分解して条件付けする方法を考えています。
人の顔には複数のパーツ (特徴量) がありますが、自分が最も重要視する (寄与度の高い) 特徴量を選択します。その特徴量に対し、カテゴリ分類をすることによって、条件を策定します。

特に目の形状に関する特徴量は非常に有効と考えています。目の形状の区分には諸説ありますが、例えば12種類に分けることができるため*3、ある程度好みが出ます。また、マッチングアプリに顔写真を載せるときはマスクや手で顔を隠す人が多いですが、目だけは出している人が多いため、使えない (欠損) 特徴量となる確率が低く、有効であると考えています。

*3 目の形の種類をご紹介!丸目・半月目・桃花眼などの特徴は?

チューリングマシンの構築

ここまでの話で、カテゴリ化可能データ・不可データ両方に対する扱う方法をしてきました。まとめると、

  • カテゴリ化可能データ:マッチング AI による処理に任せる
  • カテゴリ化不可データ:条件分岐可能レベルまで分解して条件付け

という形で処理することができます。

また、Pairs の場合、マッチングアルゴリズムに使われていない重要なデータとして被「いいね!」数があります。これは表示されている異性がどれだけ「いいね!」をもらっているかを示すもので、数が多いほどマッチング率が指数関数的に減少していきます。そこで、ここでは被「いいね!」数が300以上の場合、マッチング率は0に近似すると仮定します。

これら3つの処理を合わせて最適化すると、以下のようなチューリングマシン*4を含むフローを構築することができます。

f:id:resweater:20211204155356p:plain

このチューリングマシンにより、自分が行う作業としては表示された異性のプロフィールの一点を見るだけで一瞬で「いいね!」を押すべきかどうかを判定出来るようになります。

*4 チューニングマシン:仮想的な計算機

効率化の成果

今回提案したチューリングマシンでアプリを利用することで、これまでは「写真やプロフィールを読んでいいと思ったから「いいね!」を押す」という作業が必要で、かつフィーリングで選んでいたのが、「顔写真の目だけみて好みの形状とマッチしていたので「いいね!を押す」」というだけの作業に変わり、具体的な根拠を持った選び方に変わりました。
これにより、いちいち考える必要性が無くなって選択基準が標準化されたことから、負担が軽減され、アプリ疲れや脳の疲労による「いいね!」基準のブレが無くなりました。また、確実に自分が好みと思う人を「いいね!」できるようになることで、マッチングした後の「やっぱり好みじゃないかも……」というようなことも低減されました。

まとめ

今回はマッチングアプリアルゴリズムと作業効率化について書いてきました。ただ条件検索で一致している人が出てきてると思われがちなマッチングシステムですが、裏では最新技術がふんだんに使われていて、データ分析の世界が広がっているということを知ってもらえたら嬉しいです。
皆さんによいマッチングがあらんことを!