🤖

CareNet Academiaの裏側: 医学ニュース推薦のしくみ

に公開

こんにちは、AI技術開発室のKazです。
本日は、最近リリースした「CareNet Academia」の裏側をご紹介したいと思います。

https://prtimes.jp/main/html/rd/p/000000009.000125754.html

CareNet Academiaとは

多忙な医師が効率的に専門知識をアップデートできるように、AIが医師一人ひとりに最適な医学ニュースを毎日届けるサービスです。

https://academia.carenet.com/lp.html

主な特長:

  1. AIによる記事生成(ライターAI): 毎日最大5,000件の医学ニュースを自動生成
  2. パーソナライズ配信(レコメンデーションAI): 専門性や関心に応じて最適な情報を選別
  3. スマホで手軽に: 通勤中や隙間時間でも最新情報を効率的にキャッチ

本記事では、上記の「レコメンデーションAI」による医学ニュース推薦のしくみに焦点を当ててご紹介します。

医学ニュース推薦のしくみ

レコメンデーションといえば協調フィルタリングが有名ですが、ニュース推薦には向いていないことが研究で示されています[1]。特に、CareNet Academiaで取り扱う医学ニュースは相性が悪いです。

協調フィルタリングが医学ニュース推薦に向かない理由:

  • ニュースは寿命が短く、常に新しいコンテンツが追加される「コールドスタート問題」が顕著
  • 専門性の高い医学ニュースの閲覧数は限定的で、十分なユーザー間の類似性を見出すことが困難

そこでCareNet Academiaでは、3つの異なる推薦ロジックをハイブリッドした推薦システムを開発しました。

ルールベース推薦

対象疾患や文献種別、掲載ジャーナルなどから独自ルールに基づき推薦スコアを計算します。

特徴:

  • ケアネットが有する医学的な専門知識を活用できる
  • ユーザーの行動ログの有無に関わらず一定品質の推薦が可能

コンテンツベース推薦

医学ニュースの元文献から重要キーワードを抽出し、ユーザーのニュース閲覧履歴から抽出した重要キーワードとの関連度で推薦スコアを計算します。

特徴:

  • 専門用語や疾患名などの医学特有の重要語を重視できる
  • 新規ユーザーでも比較的少量の閲覧履歴が蓄積されれば機能する

処理の流れ:

  1. ニュースの元文献のタイトルやMeSH Termsから重要キーワードを抽出
  2. ユーザーが読んだニュースからも同様に重要キーワードを抽出
  3. ユーザーの重要キーワードをクエリとし、BM25で各ニュースの重要キーワードとの関連度をスコアリングして推薦スコアとする

なお、新着文献にはMeSH Termsが付与されていないことが多いため、WellcomeBertMeshを用いて推定しています。

深層距離学習モデルによる推薦

医学ニュースの元文献の埋め込み表現とユーザーの行動ログから生成した埋め込み表現の類似度で推薦スコアを計算します。

特徴:

  • 文献の「意味」を考慮した高度な類似性判定が可能
  • ユーザーの行動ログから学習し、精度が向上していく

処理の流れ:

  1. ニュースの元文献の文書をLLM(大規模言語モデル)を用いて埋め込みベクトル化(ニュースベクトル)
  2. ユーザーが閲覧したニュースの埋め込みベクトルを統合(ユーザーベクトル)
  3. 統合時に、ユーザーのニュースに対する評価を反映するよう学習・調整
  4. 両ベクトルの類似度を計算して推薦スコアとする

具体的には、ユーザーが「自分好み」と評価したニュースとの距離を近づけ、逆に「興味なし」としたニュースとの距離を遠ざけるように、Contrastive Lossを損失関数とした深層距離学習モデルで学習します。深層距離学習モデルについて詳しく知りたい場合は下記が参考になります。

https://cpp-learning.com/siamese-network/

3つの推薦スコアのハイブリッド

これら3つの推薦スコアを、以下のようにハイブリッドして最終的な推薦スコアを計算します。
コールドスタート問題に対応しつつ、使うほど精度が向上するように工夫しています。

ハイブリッド方法:

  • 初期状態(ユーザーの行動ログなし): ルールベース推薦の重みを100%
  • 行動ログの蓄積に応じて: 徐々にコンテンツベース推薦と深層距離学習モデルの重みを増加

今後の課題

サービスの改善のため、今後は以下の課題に取り組んでいきます:

1. 初期のおすすめニュース表示の待ち時間ゼロ化

ユーザーに診療科と関心疾患を選択してもらってから初期のおすすめニュースを表示するまでに、現在10分程度の待ち時間が発生しており、ユーザー体験を損なってしまっています。関心疾患ごとのおすすめニュースをバッチ処理により事前計算しておくなどの対策を実施し、関心疾患選択後すぐにおすすめニュースを表示できるようにする予定です。

2. パーソナライズ精度の向上

CareNet Academiaの推薦ロジックはまだまだ改善の余地があります。たとえば3つの推薦ロジックをハイブリッドする際の重みは、行動ログの蓄積量のみで決定していますが、ユーザーごとにコンバージョンを最大化する最適な重みを機械学習で求めるなど、精度向上を目指して研究開発を進めたいと考えています。

3. フィルターバブルの防止

フィルターバブルとは、ユーザーの過去の行動や検索履歴に基づきパーソナライズされるアルゴリズムによって、「見たい情報が優先的に表示される」「見たくない情報が遮断される」環境が構築され、情報の偏りが生じ、ユーザーの視野が狭くなっていく、という仕組みです。これまではパーソナライズ精度を高めることに注力してきましたが、今後はフィルターバブルを防止し、多様性を確保していくことも考えていかなければなりません。たとえばセレンディピティ推薦ロジックの追加や、未評価のニュースを意図的に提示していくなどの対策を検討します。

https://staff.persol-xtech.co.jp/hatalabo/it_engineer/586.html

おわりに

医師一人ひとりの専門性や関心に合わせた医学ニュース推薦のため、ルールベース、コンテンツベース、そして深層距離学習モデルという3つの推薦ロジックをハイブリッドした仕組みをご紹介しました。
今後も、「知と情熱と行動力で、医療人を支え、医療の未来を動かす。」というパーパスを実現すべく、技術改善を重ねていきたいと思います。なお、ともにパーパス実現に取り組んでくれるエンジニアを絶賛募集中です。興味のある方は、以下からご応募ください!

https://hrmos.co/pages/carenet5800/jobs/0000020

参考文献

脚注
  1. Karimi, M., Jannach, D., & Jugovac, M. (2018). News recommender systems – Survey and roads ahead. Information Processing & Management, 54(6), 1203-1227. ↩︎

CareNet Engineers

Discussion