見出し画像

noteは機械学習をどう活用している?MLチームの開発指針と取り組みまとめ 【2022年版】

本記事ではnoteのMLチームの取り組みについて、機能と概要をそれぞれ紹介します。

紹介する機能はnote全体の一部ではありますが、MLチームの全体像を掴むことができます。

▼この記事でわかること▼

  • MLチームが取り組んでいる内容が全体的に理解できる

  • note内でどのように機械学習が利用されているのかがわかる

  • MLチームの全体的なアーキテクチャと開発指針を知ることができる

前提

noteの取り組みを説明する前に、まずはMLチームの開発とアーキテクチャについて簡単に説明していきます。

現状の開発について

  • 開発の規模 / 現在のアーキテクチャなどの影響もあり、「バックエンドエンジニア」と「MLエンジニア」の開発の垣根が薄い

  • MLエンジニアは機械学習以外にも、バックエンド開発やアーキテクチャのリプレイスなど、多様な開発能力が求められる

アーキテクチャ図

2022年10月時点

アーキテクチャを決定する上での方針

  • 技術スタックをできるだけ薄くする

  • 全員がやりたい理想を詰め込むとアーキテクチャは重くなる

  • 可能な限りシンプルな構成を目指す

    • 「言語はPythonのみ」「可能な限りAmazon SageMakerに載せて開発する」など

開発の方針

  • noteが目指す「だれもが創作をはじめ、続けられるようにする」に紐付かない開発は行わない

    • noteというサービスを使いやすくするための機械学習開発を行う

  • 必ずしも機械学習で解決しない

    • データを調べるだけでわかることや解決できることは多々ある

    • 明確にルールがある事象(スパムメールなど)は機械学習で判断して解決する

機械学習の活用事例

では、ここからnoteで機械学習がどのように活用されているのか、機能概要処理概要をそれぞれ紹介していきます。

トップページに表示される「あなたへのおすすめ」

  • 機能概要

    • トップページで「あなたへのおすすめ」を表示

    • ユーザーの記事閲覧データを元に作成した推薦モデルから提示

  • 処理概要

    • 記事推薦モデルの作成

      • ユーザーの記事の閲覧などのデータと推薦対象のユーザリストのデータを取得

      • SageMaker Trainingでデータの変換とモデルの学習

    • SageMaker BatchTransformで時間ごとの推薦対象ユーザの推薦記事リストを計算

記事のカテゴリ分類

  • 機能概要

    • 記事をカテゴリごとに自動で分類

    • 音楽、ビジネス、マンガ、ゲームなど

  • 処理概要

    • 記事タイトルと本文からカテゴリを推論

      • 推論はSageMaker Endpointで行う

    • データベースには以下を格納してWeb側で利用する

      • 推論した記事のカテゴリ

      • 推論したカテゴリらしさのスコア

      • 単語数や文字数などの記事の情報

あなたにおすすめのクリエイター

  • 機能概要

    • ホームタイムライン(トップページ)で、「あなたにおすすめのクリエイター」を表示

    • 記事の閲覧ログなどを用いて、推薦モデルを学習しユーザに提示

  • 処理概要

    • 記事推薦モデルの構築

      • 記事閲覧などのデータと推薦対象のユーザリストのデータを取得

      • SageMaker Trainingでデータの変換とモデルの学習を行う

    • モデルの学習と推論対象のユーザリストの生成は1日に1回実行

フォロー後に表示されるおすすめクリエイター

  • 機能概要

    • クリエイターページでフォローボタンを押したあとに、「おすすめクリエイター」を表示

    • 記事の閲覧ログなどを用いて、クリエイターのembeddingを学習してユーザを提示

  • 処理概要

    • 学習プロセス

      • ユーザの閲覧履歴からクリエイターの系列データを取得

      • 予測対象のクリエイターを推論プロセスのために生成

      • SageMaker Trainingでクリエイターの系列データからクリエイターembeddingモデルを学習

    • 推論プロセス

      • SageMaker BatchTransformでS3の予測対象クリエイターリストの類似クリエイターリストを生成

記事下におすすめ記事を表示

  • 機能概要

    • 記事下に関連記事として「こちらもおすすめ」を表示

    • ログインしている場合

      • ユーザーの記事閲覧データを元に作成した推薦モデルから提示

    • ログインしていない場合

      • 現在表示されている記事に近しい内容の記事をレコメンド

  • 処理概要

    • ログインしている場合

      • 記事推薦モデルの作成

        • ユーザーの記事の閲覧などのデータと推薦対象のユーザリストのデータを取得

        • SageMaker Trainingでデータの変換とモデルの学習

      • SageMaker BatchTransformで時間ごとの推薦対象ユーザの推薦記事リストを計算

    • ログインしていない場合

      • 記事のembeddingを取得して、記事推薦モデルを学習

      • 類似記事indexを作成

      • 類似記事リストをAPIで提供

画像のカテゴリ分類

  • 機能概要

    • 投稿された画像のカテゴリ分類を行う

  • 処理概要

    • SageMaker Processingで推論対象の画像をコピーする

      • 重い画像の場合は特定の処理を行う

    • 画像に対してSageMaker BatchTransformを使用し、カテゴリを推論する

今日の注目記事の推薦

  • 機能概要

    • noteでは運営事務局が今日の注目記事を手動で選定している

    • 人間の目視だけでは限界があるため、候補を機械学習で推薦

      • 人力では見つけにくい記事などを機械学習で抽出して候補を提供

      • 注目記事は最終的には人力で選定

      • 記事を見つける方法がいくつかあり、機械学習はその手法のうちの一つ

  • 処理概要

    • 直近の記事などの傾向から、学習データや予測対象データを生成

    • 候補抽出モデルを学習し生成

事前学習 / 中間データの生成

コーパスを用いた事前学習を用意し、モデル生成する際の性能を向上させています。

  • GloVe学習

    • 単語分散表現の教師なし学習手法

    • 現在、noteではベータ版として試験中

  • fasttext学習

    • 分散表現を学習するためのライブラリ

    • FacebookのAIリサーチラボによって開発

  • コーパストークナイザー

    • コーパスをトークナイズして必要な品詞のみの単語列に変換する

    • fasttextやGloVeを学習するために日本語のコーパスが必要

  • コーパス生成

    • fasttextやGloVeを学習するために日本語のコーパスが必要

    • Wikipediaやnoteで投稿された文章などをコーパスとして使用

レコメンドの仕組みをさらに詳しく知りたい方

MLチームの取り組みについて、概要を紹介しました。レコメンドのさらに詳しい仕組みについては、上記の記事やマガジンをご覧ください。

また、10月14日〜15日に開催されるPyConJPでnoteはブース出展をします。当日はMLエンジニアもブースにいるので、ぜひ遊びに来てください。

MLチーム募集中

機械学習エンジニア(MLエンジニア) / note株式会社

テクニカルプロダクトマネージャー - 機械学習 / note株式会社

サーバーサイドエンジニア(機械学習/MLOps)

noteでは機械学習にさらなる力を入れるため、MLチームのエンジニア / PdMを募集しています。

今回の記事の中で質問してみたいことがある方は、PyConJPのブースに来ていただくか、カジュアル面談へお気軽にご応募ください。


▼さらにnoteの技術記事を読みたい方はこちら


みんなにも読んでほしいですか?

オススメした記事はフォロワーのタイムラインに表示されます!