属性推定システムのリニューアルで見えたさまざまな課題

渡辺哲朗氏:それでは「属性推定システムのリニューアルで見えたさまざまな課題とその解決の事例紹介」と題して、Data Scienceセンターの渡辺が発表いたします。どうぞよろしくお願いいたします。

はじめに自己紹介します。私はData Scienceセンター Machine Learning室 Machine Learning Solution2チームの渡辺哲朗と申します。現在は機械学習エンジニアとして、これから本発表で話すユーザーペルソナシステム、つまりLINEユーザーの属性を推定するシステムの開発やFeature Storeのシステム開発・運用に携わっています。

過去の経歴では、ゲーム企業でデータサイエンスティストをしていたり、会計の業界に身を置いていたりしたこともあります。また大学院の博士課程では、主に進化計算とマルチエージェントシミュレーションの研究をして、博士号を取ってポスドクの研究員なんかもしていました。本日は、どうぞよろしくお願いいたします。

はじめに、本日の発表の流れを紹介いたします。まずこのLINEのユーザー属性推定システムについて紹介します。続いて、今回の発表のメインコンテンツとして、このユーザー属性推定システムのリニューアルを経て見えてきたいろいろな改善ポイントについて、その事例をいくつか紹介したいと思います。そして最後に、ユーザー属性推定システムの今後の展望、Future Worksについてお話をいたします。

LINEにおけるユーザー属性推定システム

それでは、まずLINEにおけるユーザー属性推定システムについて、その取り組みを紹介いたします。我々は、LINEのユーザー属性を推定するシステムを開発して運用しています。ここで推定するユーザー属性、ペルソナは、右の図に示した例のようにジェンダーや年齢層といったデモグラフィック属性だけではなくて、興味関心といった心理的な属性も含んでいます。

この属性は、機械学習の手法によって推定されます。その際には、許諾を得たユーザーのサービスログだけが利用されています。こうして推定された属性は、LINEのさまざまなサービスで、LINEユーザーに有用なコンテンツを届けるために活用されています。

推定属性の利用例

さてここで、この推定属性の利用例をいくつか紹介したいと思います。まずLINE広告での利用例を紹介します。LINE広告では、外部の広告オーナーがどのようなユーザーに広告を届けたいか、その配信のターゲットを指定できます。この際に、例えば「40代前半の年齢層に広告を届けたい」といったように、その配信ターゲットとして、この推定属性を指定できるようになっています。

これによって、広告のオーナーさま、あとはLINEユーザーの双方により有用なもの、価値を提供できるという仕組みになっています。

さて推定属性の利用例として、次にLINE公式アカウントを紹介します。LINE公式アカウントでは、アカウントのオーナーさま、お店や企業が友だち登録をしている複数のユーザーに向けて、プッシュメッセージを一気に配信できますが、この配信の際に、どのようなユーザーに向けてメッセージを配信するか、ターゲットを指定できます。

その際に、このデモグラフィック推定属性である性別と年齢層を指定できるようになっています。実際には、LINE公式アカウントの管理画面やLINE Messaging APIから、この配信ターゲットの性別や年齢層を指定します。今ちょっと、Messaging APIのマニュアルにある記載を抜粋して画面上に載せましたが、こういった感じで配信ターゲットをJSON形式で指定可能になっています。

推定属性で利用したLINE公式アカウントも、こうした機能があることによって、アカウントのオーナーさまは適切なユーザーにコンテンツを届けられますし、ユーザー側もより自分に合う情報が得られる可能性を高められます。

さて、LINEにはさまざまなサービスがありますが、新しいサービスをLINEでスタートする際にも、この推定属性が有効に活用されています。一般的に、新しく開始されて間もないサービスは、ログデータの蓄積量が非常に限られています。

よって、あるユーザーに対してその新しく始まったサービスのアイテムをおすすめしたいと思ったとしても、十分なログデータがまだないので、適切なレコメンドを生成できないという課題。一般的には、いわゆるコールドスタート問題と言われますが、こういった課題が存在します。

しかしLINEには、これまで申し上げてきたこの推定属性のデータ、ユーザーデモグラフィックスデータがあるので、ユーザーの属性を推定して、例えばそのユーザーの属性に合うアイテム人気ランキングを表示することによって、各ユーザーに適したアイテムをおすすめ可能になります。このようにして、新規サービス開始時のコールドスタート問題を回避できるのは、このLINEの属性推定システムの強みです。

さて、この属性推定システムの規模ですが、対象のユーザー数とデータの規模という側面から、この表に示したようになっています。LINEの主要なリージョンを対象に推定属性を提供していて、例えば日本ではマンスリーアクティブユーザーは約8,900万人、機械学習に用いる特徴量データの次元数は480万以上ということで、非常に規模の大きいシステムになっています。

機械学習の仕組みで利用されるデータ

次に、この推定属性システムのコアである機械学習の仕組みで利用されるデータについて、お話しします。まず機械学習モデルで入力される特徴量データの部分について紹介すると、今画面に出しているこの図は、我々が開発して運用しているFeature Storeについて、その生成の仕組みを図式化したものです。

属性推定システムでは、主にこの緑色の四角で表したz-featuresと呼ばれるサービス横断型の特徴量データを使用しています。このz-featuresが生成される仕組みを簡単に紹介します。

まずこの左側ですね。許諾を得たユーザーのサービスログだけを抽出してきて、さらにそこにフィルタリング処理を施して利用を許可されているデータだけを、サービスを横断して収集します。

そしてそれらを統合して、Feature Storeとして格納した特徴量データが、このz-featuresです。このz-featuresを利用することで、属性推定システムの機械学習モデルは学習と推論を実施するかたちになっています。

モデル作成時に必要となる正解データ

続きまして、この特徴量データとともに、モデル作成時に必要となる正解データについてお話しします。この属性推定システムでは、主に許諾をしたユーザーを対象に実施されたアンケート結果を正解データとして、学習モデルを行っています。また正解データを用意するために、さらに別のモデルを開発した事例があります。

具体的には、人手でラベル付けされた、アノテーションされた少量の広告のデータから、広告を自動でラベル付けするモデルを開発しまして、その広告を閲覧したユーザーを正解データとする方法です。ちょっと言葉で申し上げましても複雑な仕組みですので、次のスライドから図を交えて紹介いたします。

まず広告データに対して、その広告がどのジャンルに該当するかを人手でラベル付け、アノテーションします。例えばですが、広告に「Game」というジャンルが、人手でラベル付けされたとします。この付与されたラベルを正解データとして、広告の画像データとテキストデータから、その広告のジャンルを予測する広告用の機械学習モデルを学習します。

この学習された広告用のモデルを使って、人手でラベル付けをされていない広告に対しても、自動でジャンルを推定してラベルを付与します。例えばここでは、別の広告が、アノテーションされていないものですね、広告が例えば「Game」のジャンルであると、このモデルから推定されたとします。そしてこの自動でラベル付けされた広告が、クリックあるいはタップされた時に、クリックしたユーザーはそのジャンルに興味・関心があるユーザーとして推定されます。

例えば「Game」と自動でラベル付けされた広告をタップしたユーザーは、ゲームに興味・関心があるユーザーだということで、今度はこのユーザーにGround truth、正解データとして「ゲームに興味あり」というラベルが付与されます。そして今度は、個々のユーザーに与えられたラベルを正解データとして、先ほどのfeatureデータ、z-featuresと合わせて、ユーザーの興味・関心を推定するユーザー用の機械学習モデルを2段階目として学習をします。

そして学習されたユーザー用のモデルを用いて、最終的に広告をクリックしていないすべてのユーザーに対しても「どのようなジャンルに興味・関心があるだろうか」を自動で属性推定可能になります。こういった仕組みによって、アンケート結果だけでなく、こういった広告のクリックデータを正解データとして、ユーザーの属性を推定することもLINEではやっています。

この利点として、広告への少量のアノテーション作業しか必要としないことで、大規模なアンケートの実施もいらない点です。ただ、この図のとおり、2段構えの構造になる分、モデルのチューニングなどの難度は上がるので、より注意深くモデル構築を行う必要が出てきます。

属性推定システムのこれまでの経緯

さてここで、属性推定システムのこれまでの経緯について簡単に紹介をしたいと思います。最初は、ニューラルネットワークのコードをScratchで自力で実装するところからスタートしました。その後、大規模なデータをシステムとして扱うためにMPIによる並列処理の仕組みが導入されました。その後本格的な深層学習や分散処理の仕組みが導入されていきます。次のスライドでここの推移について紹介をいたします。

これまでの属性推定システムがMesosクラスターで動作して、CPUで計算するものでした。モデルはTheanoですね。Theanoをベースにして記述されたものが使用されていました。この稼働そのものは順調だったんですが、時間の経過とともにシステムがだんだん古くなっていって、メンテナンスが難しくなってくる課題が出てきました。

さらに機械学習の分野で、今主流になってきているPyTorchなどのライブラリが適用できなくて、モデルの更新が難しくなっていく問題も出てきました。そこで我々は、2020年の夏にかけて、ここの大規模なリニューアルを敢行いたしました。まずGPUのクラスターを導入してGPUを使えるようにしました。そして先ほどのMesosクラスターだったのを今度はKubernetesクラスターへ移行完了しました。

こうした環境をさらに最大限に活用するために、我々はgheeと呼ばれる分散処理が可能な内製ライブラリを新たに開発して導入しました。これによって、PyTorchなどの主要な深層学習ライブラリをGPUを含めたKubernetes環境で利用可能になりました。しかしながらこの大規模なリニューアルを通じて、属性推定システムのさまざまな改善ポイントが見えてきました。

本日の発表ではこれらの改善ポイントと、それらをどのように解決してきたかについてこれからいくつかの事例を紹介していきたいと思います。

後半へつづく