NTT技術ジャーナル記事

   

「NTT技術ジャーナル」編集部が注目した
最新トピックや特集インタビュー記事などをご覧いただけます。

PDFダウンロード

2025年10月号

from NTTドコモ

web3データの特徴をとらえたレコメンドエンジンの開発

近年、ブロックチェーンが普及し始め、Bitcoinなどの暗号資産や、NFT(Non-Fungible Token)といったトークンの売買が盛んになっています。さまざまなトークンが爆発的に増える中、ユーザは自分の欲しいトークンを推薦され、探しやすくなることを望んでいます。また、web3の世界では、ブロックチェーンに書き込まれた情報に誰でもアクセスできるため、全マーケットの取引履歴を基にしたレコメンドエンジンの構築が可能となります。そこでNTTドコモは、世界に先駆けて、複数のマーケットに対応できるNFTレコメンドエンジンを開発しました。

はじめに

近年、web3*1技術の進展とともに、トークンを利用した新たな経済圏が形成されつつあります。その中でも、NFT(Non-Fungible Token)*2は特に注目を集めているトークンであり、その取引量も急激に増加しています。NFTは、デジタルアート、音楽、ゲームアイテムなど、さまざまな範囲での応用が進み、NTTドコモでも、「MetaMe NFTマーケット」などのマーケットプレイスを次々と立ち上げています(1)が、この急激なweb3市場の成長の中で2つの課題が生じています。
第1は、膨大なコンテンツの中から本当に欲しいものにユーザがたどり着くことが困難であるという課題です。Web2.0*3と同様、web3市場にも多様なプラットフォームとNFTなどの無数のアイテムが存在するため、人気のあるアイテムばかりが注目され、その背後にあるもっともそのユーザに適した選択肢を当該ユーザが発見することができずに、購買行動を終えることがしばしば起こり得ます。
第2は、web3技術の特性上、従来のWeb2.0におけるレコメンドエンジンがそのままweb3市場に適用できないという課題です。Web2.0におけるレコメンドエンジンは中央集権的に情報収集を行うことを前提としていますが、web3では非中央集権的にデータが管理されており、ユーザの取引データの収集方法やその記録内容が複雑なため、web3データの特性をよく理解したうえでレコメンドの手法を適用していく必要があります。
NTTドコモでは、web3データの抽出、独自の加工処理、そして、グラフニューラルネットワーク(GNN:Graph Neural Network)*4(2) 技術の活用により、web3データを扱い、高い精度でレコメンドが実現可能なエンジンを開発しました。本稿では、このweb3技術を活用したNFTレコメンドエンジンの設計と実装について解説します。

*1 web3:Web1.0、Web2.0*3に続く「第3世代」としてその名が付けられた、ブロックチェーン技術を活用した分散型のネットワークのこと。
*2 NFT:ブロックチェーン技術などを活用しその唯一性が担保される代替不可能なトークンのこと。
*3 Web2.0:従来の情報を共有するだけの時代(Web1.0)と異なり、SNSなどをはじめとする動的で情報の流れが双方向な現代のWebのこと。
*4 グラフニューラルネットワーク:ネットワーク理論を基にした機械学習の一種で、グラフ構造を扱うために設計されたニューラルネットワークのこと。ソーシャルネットワーク分析、化学分子の予測、推薦システムなど多くの応用分野で成功を収めており、グラフデータの複雑な関係をモデル化するための強力なアルゴリズムです。

関連研究

NTTドコモでは、NFTをレコメンドするための技術として、さまざまなレコメンドのタスクで成果を挙げているGNNを採用しました。ここでは、レコメンドにおいて、GNNがなぜ有効なのか、また、NFTとGNNの関係性や親和性についても解説します。

■GNNとレコメンド

GNNは、グラフ構造データの学習に特化したディープラーニングモデルであり、ノード間の関係性やグラフ全体の構造を効果的にとらえることができる手法です。特に、ノード分類やリンク予測、グラフ分類など、多様なタスクにおいて高い性能を示しています。
GNNをアイテムのレコメンドに応用した例として、JODIE(Joint Dynamic Item Embedding)が提案されています(3)。JODIEは、ユーザとアイテムの動的埋込みを学習し、時間的相互作用のシーケンスから未来の埋込みを予測することに特化しています。
従来の動的埋込み手法は、ユーザの行動に基づいて埋込みを生成するものの、アイテムの現在の状態を考慮せず、ユーザの埋込みのみを動的に更新するという問題がありました。これに対し、JODIEは2つのリカレントニューラルネットワーク(RNN:Recurrent Neural Network)*5を用いて、ユーザとアイテムの埋込みを相互に更新することで、両者の依存関係を明示的にモデル化しています。
具体的には、JODIEではユーザの埋込みを更新する際に、相互作用したアイテムの埋込みを利用し、反対にアイテムの埋込みもユーザの埋込みを基に更新します。このアプローチにより、従来の手法が抱えていた「アイテムの状態を無視する」という問題に対応し、より正確な埋込みを生成することを可能にしています。
また実験結果において、JODIEではMRR(Mean Reciprocal Rank)*6やRecall@10*7の指標で、従来手法に対して20%以上の改善を達成しており、その有効性が示されています。
このように、GNNをアイテムのレコメンドに応用することで、その高精度化が期待されます。

*5 リカレントニューラルネットワーク:時系列的なデータを用いて将来のデータの予測を行うディープラーニングモデルの1つ。
*6 MRR:各クエリに対し、最上位の正解アイテムの順位の逆数を求め、全クエリで平均した評価指標。
*7 Recall@10:正解アイテムのうち、推薦結果の上位10件に含まれる割合を示す評価指標。

■GNNを用いたweb3データの表現

NFT取引のレコメンドにおいてもグラフ表現は有効です。
NFT取引では、NFTやWallet間でさまざまなスマートコントラクト*8が実行され、トランザクション*9履歴としてブロックチェーンに記録されます。スマートコントラクトには、ERC(Ethereum Request for Comments)*101155(4)の場合、データのNFT化に使われるMint*11やNFTの権利移譲・購買に使われるTransferAll*12などがあります。
NFT・Walletをノードとし、トランザクション関係をエッジとすることで、NFT取引をグラフとして表現することができます。ここで、ノードが複数種類(NFTとWallet)、エッジも複数種類(MintやTransferAllなど)有するグラフを異種グラフと呼びます。
実際に、web3の分野でもGNNが使われています。NFT取引においては、フィッシング詐欺などの不正取引への対策がweb3の重要な課題となっており、参考文献(5)の研究においても、暗号通貨における不正取引を検出するための技術として、ノードの種類や関係性を考慮したGNNを採用しています。さらにこの研究では、いくつかのGNN手法を比較した結果、R-GCN(Relational Graph Convolutional Network)がもっとも精度が高かったと報告しています。R-GCNは上記の異種グラフを扱えるGNN手法で、GCNを複数種類のノードおよびそれによる複数種類のエッジに対応するように拡張したものです。本研究は、NTTドコモの取り組みとはタスクが異なりますが、NFT取引を捕捉するという意味では親和性があると考え、レコメンドエンジンの開発にあたって、研究報告においてもっとも精度の高かったR-GCNを採用しました。

*8 スマートコントラクト:条件が満たされると契約の履行が自動実行されるブロックチェーン上のプログラム。
*9 トランザクション:ブロックチェーン上で記録・承認される資産移動や契約実行などの取引情報の単位。
*11 Mint:NFTや新しいトークンをブロックチェーン上に発行する処理。
*12 TransferAll:保有するすべてのトークンを特定のアカウントに一括送信する処理。

提案手法

NTTドコモでは、NFTレコメンドエンジンとして以下の3つの機能を実装し、ブロックチェーンデータの取得から必要なデータの抽出、レコメンドリストの計算、リストのマーケットへの出力までを実現しました(図)。
① ETL(Extract、Transform、Load)*13/Indexer部
② R-GCNによる学習・推論部
③ ベクトルDB部
以降では、各部の機能について解説します。

*13 ETL:データを収集し、必要なデータを編集したうえで、情報を格納する一連の処理。

■ETL/Indexer部

ETL/Indexer部では、レコメンドのために必要になるデータの収集や変換、加工を行います。現在のレコメンドエンジンは、EthereumとPolygonを対象のブロックチェーンとしています。
EthereumはNFTを使用する際に、標準的に利用されているブロックチェーンです。仕組みとしてスマートコントラクトを持つことが特徴であり、これを利用してNFTの所有などの契約状態をブロックチェーンに記録しています。Polygonは、Ethereumと互換性を持つブロックチェーンであり、Ethereumをスケールさせる目的で開発されています。
ブロックチェーン上のデータは、NFTの情報などを基にした検索が不可能であるために、レコメンドエンジン上でデータの収集をまず行う必要があります。このため、ETL/Indexer部はブロックチェーンのノードに接続し、トランザクションの情報を収集します。トランザクションのデータは、そのままでは利用できないため、変換が必要です。一般的にはERC721(6)、ERC1155などの一定の規格に従って記録がなされているため、それらに従って変換を行い、所有者や移転者、NFT自体の情報を抽出します。これらをデータベース(DB)上に記録をすることで、R-GCNの学習に必要なデータをそろえることができます。また、ETL/Indexer部では、規格が増えた場合にはそれに対応可能なように、拡張可能性をもたせた実装を行っています。

■R-GCNによる学習・推論部

学習・推論部では、ETL/Indexer部で収集・変換されたNFTの購買データを用いてグラフ構築を行いました。グラフ構成としてはNFTとWalletの2種類のノードを用意し、NFTの購買(Transfer)があったWalletにエッジを定義しました。ここで、Walletにはユーザが紐付いています。このように複数種類のノード種別を含む異種グラフに対応するGNNとして、NTTドコモではR-GCNを利用しました。
学習にあたり、ノードごとに特徴量を設定します。設定には、ランダムなベクトルを設定する方法と、それぞれのノードを特徴付けるベクトルを設定する方法の2パターンがあります。今回は簡易に実装を進めるため、前者の方法を用いています。一方、後者の方法では、例えばNFT自体のメタデータやWalletの利用傾向などの特徴量を取り入れることにより、さらなる精度改善も見込めます。
R-GCNでは、上記で定義したNFT-Wallet間のグラフと各ノードの特徴量を用いてR-GCNへの入力とします。推論時には、NFTノードとWalletノード間で購買関係がありそうか否か(すなわち、エッジが定義できそうか否か)を予測します。このようにノード間のエッジの有無を推定するタスクはリンク予測と呼ばれ、GNNのレコメンド向けのタスクとして知られています。
各ノードの間のエッジ有無は、ノードそれぞれが持つベクトルどうしの演算で定義されます。ここではDistmultと呼ばれる手法(7)を用いて0から1の間のスコアを算出し、より値が大きいものはエッジが定義できそうなものとしてWalletへのレコメンド対象のNFTとします。
R-GCNでは、各ノードの特徴量に対して、隣接するノードの特徴量を、エッジを通じて重み付け集約させることで、特徴量の更新を行います。
エッジがあるノードどうしのDistmultの結果が、エッジがないノードどうしの結果より大きい値になるように、重みの更新を実施し学習を行います。この処理は、グラフのサンプリングによって取得した部分グラフに対して繰り返されます。
この部分グラフで学習を行ったR-GCNモデルをグラフ全体に適用することで、学習・推論部はすべてのノードが更新された特徴量を得ます。このノード特徴量はグラフ構造を考慮したものになり、購買関係が発生しそうなWallet-NFTのペアはDistmultの結果の値も大きく、反対に購買関係が発生しなさそうなペアはDistmultの結果の値も小さくなります。実際のレコメンドにおいては、Walletごとに各NFTとのDistmultの出力値を計算することで、そのNFTを推薦すべきかを決定します。

■ベクトルDB部

ベクトルDB部では、R-GCNモデルを用いて学習・推論部で抽出したWalletとNFTそれぞれのベクトル情報をDBに格納します。レコメンドを実施する際には、この情報を基に、各Walletに対するレコメンドリストを計算します。具体的にはレコメンド対象となるWalletのベクトルと各NFTのベクトルとのDistmult値を計算し、その結果を降順にレコメンドリストとして出力します。
ここで、距離計算に際しては、近似最近傍探索という技術を用います。近似最近傍探索は、大量のデータから対象のベクトルに近いベクトルを効率的に見つける技術です。これを用いることで、すべてのWalletとNFTのDistmult値の計算を行わずとも、効率良くレコメンドすべきNFTのリストを抽出することができます。
NTTドコモでは、これらの技術の組合せにより、高い精度を保ちつつ、効率的にレコメンドを実現可能なエンジンを開発しました。

検証と結果

■オフライン検証と結果

(1) 概要
NTTドコモでは、実装したレコメンドエンジンの効果を検証するため、人気のFPS(First Person Shooting)*14ゲーム「Matr1x Fire」(8)のゲームアイテムのNFTを用いてオフライン検証を実施しました。具体的には、ERC721規格のトランザクション情報から、Transferが行われた際のログを収集しました。データセットとして約1カ月間のTransferログを使用し、前半3週間を訓練データ、最終週のデータをテストデータとしました。この訓練データを学習したレコメンドエンジンによってユーザが購入するであろうと推論されたアイテムと、テストデータにおいて実際に購入されたアイテムとの一致度合を評価しました。これにより、実際のマーケット環境に近いかたちでの評価が可能となります。
評価指標として、ランキング評価に適したMAP(Mean Average Precision)*15を採用しました。MAPは、レコメンドリストのうち、実際に選択(購入、クリックなど)されたアイテムが上位にあるほど高いスコアとなる指標であり、ユーザが上位のアイテムを優先的に閲覧する実際の行動パターンと整合性が高いため、本検証に採用されました。本稿では、実際にユーザがNFTを購入したことを示すスマートコントラクトであるTransferをした場合に、購入したとみなしMAPを算出しました。
比較対象として、訓練データ期間中の取引数に基づく人気ランキングを用意しました。人気ランキングは全ユーザに同じレコメンドリストを提供するのに対し、提案手法のGNNモデルに基づくレコメンドエンジンは、ユーザごとの過去の取引履歴から個別のレコメンドリストを生成し提供します。これら2つの手法を用いた際の結果を比較しました。
(2) 結果
提案手法の有効性を検証するため、定量的評価と定性的評価を実施しました。
定量評価では、提案手法のMAPスコアは比較手法の人気ランキングに比べ、有意性のある13%の性能向上を達成しました。この結果は、GNNモデルがユーザの個別の嗜好を適切に学習できていることを示しています。
定性評価では、特定のユーザのレコメンド結果を分析しました。人気ランキングでは、同種のゲームアイテムが推薦されていたのに対し、提案手法に基づくレコメンドでは、ユーザの購入履歴に見られるさまざまなデザインや種類を反映した推薦を行えていることが確認されました。
これらの結果では、取引データを活用したNFTレコメンドエンジンの実現可能性が示されました。特に、GNNモデルによる取引ネットワークの学習が、個々のユーザの嗜好を反映した効果的な推薦を可能にすることが明らかになりました。

*14 FPS:プレイヤ視点で銃火器を使用し戦闘を行うシューティングゲームの一種。
*15 MAP:推薦結果の各クエリに対する平均適合率を算出し、全クエリで平均した評価指標。

■オンライン検証と結果

また、実ユーザへのレコメンド効果を確認するため、音楽NFTマーケット「Sound Desert」(9)においてオンライン検証を実施しました。具体的には、Sound DesertのNFT購入画面上に本技術で算出したNFTを表示させた場合と、Sound Desertの運営が設定した人気ランキングを表示した場合との効果の差を確認しました。検証の期間は1カ月間とし、ERC1155規格のトランザクション情報から、TransferSingle*16が行われた際のログを収集し検証に用いました。検証における学習方法やアルゴリズムは前述したオフライン検証と同様です。評価指標としてはクリック率を使用しました。
検証結果としては、運営が設定した人気ランキングと比較して、レコメンドを表示した際のクリック率が3倍以上であったことを確認しました。この結果から、オフラインでの結果のみならず、実際のマーケット上においても本技術の有効性が示されました。

*16 TransferSingle:1つのトークンを特定のアカウントに送信する処理。

おわりに

本稿では、GNNを応用したNFTレコメンド手法について解説しました。各検証では、比較手法と比べて精度向上が確認でき、本技術の有効性が示唆されました。
今後の展望として、多様なブロックチェーンやERC規格、またデータの大規模化などへ対応できるよう、本技術の改良を検討していく予定です。

■参考文献
(1) https://nft.metame.ne.jp/ja
(2) F. Scarselli, M. Gori, A. C. Tsoi, M. Hagenbuchner, and G. Monfardini: “The Graph Neural Network Model,” IEEE Transactions on Neural Networks, Vol.20, No.1, pp.61-80, Jan. 2009.
(3) S. Kumar, X. Zhang, and J. Leskovec: “Predicting Dynamic Embedding Trajectory in Temporal Interaction Networks,” Proc. of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp.1269-1278, July 2019.
(4) https://eips.ethereum.org/EIPS/eip-1155
(5) H. Kanezashi, T. Suzumura, X. Liu, and T. Hirofuchi: “Ethereum Fraud Detection with Heterogeneous Graph Neural Networks,” arXiv preprint arXiv:2203.12363, July 2022.
(6) https://eips.ethereum.org/EIPS/eip-721
(7) B. Yang, W.-t. Yih, X. He, J. Gao, and L. Deng: “Embedding Entities and Relations for Learning and Inference in Knowledge Bases,” arXiv preprint arXiv:1412.6575, Aug. 2015.
(8) https://fire.matr1x.io/
(9) https://sound-desert.com

NTTドコモ
サービスイノベーション部

DOI
クリップボードにコピーしました