![見出し画像](https://assets.st-note.com/production/uploads/images/91874950/rectangle_large_type_2_6bbf05c645fde111e10e3ffe05c789c1.png?width=800)
noteは機械学習をどう活用している?MLチームの開発指針と取り組みまとめ 【2022年版】
本記事ではnoteのMLチームの取り組みについて、機能と概要をそれぞれ紹介します。
紹介する機能はnote全体の一部ではありますが、MLチームの全体像を掴むことができます。
▼この記事でわかること▼
MLチームが取り組んでいる内容が全体的に理解できる
note内でどのように機械学習が利用されているのかがわかる
MLチームの全体的なアーキテクチャと開発指針を知ることができる
前提
noteの取り組みを説明する前に、まずはMLチームの開発とアーキテクチャについて簡単に説明していきます。
現状の開発について
開発の規模 / 現在のアーキテクチャなどの影響もあり、「バックエンドエンジニア」と「MLエンジニア」の開発の垣根が薄い
MLエンジニアは機械学習以外にも、バックエンド開発やアーキテクチャのリプレイスなど、多様な開発能力が求められる
アーキテクチャ図
![](https://assets.st-note.com/img/1669279177927-UUtwwlwgho.png?width=800)
アーキテクチャを決定する上での方針
技術スタックをできるだけ薄くする
全員がやりたい理想を詰め込むとアーキテクチャは重くなる
可能な限りシンプルな構成を目指す
「言語はPythonのみ」「可能な限りAmazon SageMakerに載せて開発する」など
開発の方針
noteが目指す「だれもが創作をはじめ、続けられるようにする」に紐付かない開発は行わない
noteというサービスを使いやすくするための機械学習開発を行う
必ずしも機械学習で解決しない
データを調べるだけでわかることや解決できることは多々ある
明確にルールがある事象(スパムメールなど)は機械学習で判断して解決する
機械学習の活用事例
では、ここからnoteで機械学習がどのように活用されているのか、機能概要と処理概要をそれぞれ紹介していきます。
トップページに表示される「あなたへのおすすめ」
![](https://assets.st-note.com/img/1665631848525-HF64MS20em.png?width=800)
機能概要
トップページで「あなたへのおすすめ」を表示
ユーザーの記事閲覧データを元に作成した推薦モデルから提示
処理概要
記事推薦モデルの作成
ユーザーの記事の閲覧などのデータと推薦対象のユーザリストのデータを取得
SageMaker Trainingでデータの変換とモデルの学習
SageMaker BatchTransformで時間ごとの推薦対象ユーザの推薦記事リストを計算
記事のカテゴリ分類
![](https://assets.st-note.com/img/1665643584031-CSYbHsTpGW.png?width=800)
機能概要
記事をカテゴリごとに自動で分類
音楽、ビジネス、マンガ、ゲームなど
処理概要
記事タイトルと本文からカテゴリを推論
推論はSageMaker Endpointで行う
データベースには以下を格納してWeb側で利用する
推論した記事のカテゴリ
推論したカテゴリらしさのスコア
単語数や文字数などの記事の情報
あなたにおすすめのクリエイター
![](https://assets.st-note.com/img/1665631929526-aAKA9gEYdb.png?width=800)
機能概要
ホームタイムライン(トップページ)で、「あなたにおすすめのクリエイター」を表示
記事の閲覧ログなどを用いて、推薦モデルを学習しユーザに提示
処理概要
記事推薦モデルの構築
記事閲覧などのデータと推薦対象のユーザリストのデータを取得
SageMaker Trainingでデータの変換とモデルの学習を行う
モデルの学習と推論対象のユーザリストの生成は1日に1回実行
フォロー後に表示されるおすすめクリエイター
![](https://assets.st-note.com/img/1665631961311-5f9998OFJf.png?width=800)
機能概要
クリエイターページでフォローボタンを押したあとに、「おすすめクリエイター」を表示
記事の閲覧ログなどを用いて、クリエイターのembeddingを学習してユーザを提示
処理概要
学習プロセス
ユーザの閲覧履歴からクリエイターの系列データを取得
予測対象のクリエイターを推論プロセスのために生成
SageMaker Trainingでクリエイターの系列データからクリエイターembeddingモデルを学習
推論プロセス
SageMaker BatchTransformでS3の予測対象クリエイターリストの類似クリエイターリストを生成
記事下におすすめ記事を表示
![](https://assets.st-note.com/img/1665631995902-S9h4w3cYge.png?width=800)
機能概要
記事下に関連記事として「こちらもおすすめ」を表示
ログインしている場合
ユーザーの記事閲覧データを元に作成した推薦モデルから提示
ログインしていない場合
現在表示されている記事に近しい内容の記事をレコメンド
処理概要
ログインしている場合
記事推薦モデルの作成
ユーザーの記事の閲覧などのデータと推薦対象のユーザリストのデータを取得
SageMaker Trainingでデータの変換とモデルの学習
SageMaker BatchTransformで時間ごとの推薦対象ユーザの推薦記事リストを計算
ログインしていない場合
記事のembeddingを取得して、記事推薦モデルを学習
類似記事indexを作成
類似記事リストをAPIで提供
画像のカテゴリ分類
機能概要
投稿された画像のカテゴリ分類を行う
処理概要
SageMaker Processingで推論対象の画像をコピーする
重い画像の場合は特定の処理を行う
画像に対してSageMaker BatchTransformを使用し、カテゴリを推論する
今日の注目記事の推薦
![](https://assets.st-note.com/img/1665632051776-GSdk1jkIE2.png?width=800)
機能概要
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の技術記事を読みたい方はこちら