技術的貯金

鳴かぬなら 作ってしまおう ホトトギス

Federated Learningのレコメンデーション(行列分解)をやってみる

Federated Learningとは、自分が認識した範囲では、分散学習でエッジ側で訓練し、訓練結果の重みだけ(入力や出力そのものは送らず)を中央のサーバーに送って中央のサーバーのモデルを更新し、それをまたエッジに配信していくというアプローチである。入力や出力そのものは送らないため、プライバシー配慮ができていることで近年注目されているそうだ。 参考 - Microsoft PowerPoint - KCCS200423_Kashima_federated.pptx - https://hkashima.github.io/introductionFederatedLearning.pdf

しかし、ネットで検索してもレコメンデーションの分野でやってみた例や記事があまりなく、出てくるものは論文がほとんどである。 英語記事ではなんとかあったのが下記。

blog.openmined.org

今回、この記事を書いているopenmined社が開発している github.com

を使って、下記記事を参考にpytorchのmatrix factorizationを実装した。(記事ありがとうございます!)

takuti.me

成果物は下記。 github.com

pysyftは0.29系と0.3系で記述方法がだいぶ違っており、最初0.29で実装しようとしたが、EmbeddingLayerがなく0.3系に切り替える。

ライブラリのインストールで依存関係がうまく解消できずこけまくったが、なんとか解消できたのでライブラリのバージョンも成果物に含めた。

poetryで公式のflのexampleが動かなかったのでひとまずissueたてた。 github.com

オープンソースにコミットしてみたい欲求があったので、英語でreadme書くなどしてPR作ってみた。 特に欲せられてない気もするので、すぐリジェクトされそうではありますが....

github.com

最近、資格勉強などでgithubの草が生えてなかったが、本日統計検定準1級終わった(二重の意味で)ので、夏にもなったし草生やし活動していきたい。