Open agatan opened 4 years ago
SIGIR 2020から。
FaceBook Marketplaces で、販売者と購入者の両方の体験を向上させたい。通常、購入者側の目的を最適化したランキングを作成する (クリック率・購入率)。しかし、サービスの長期的な成功には、販売者側が良い体験をしていること大切。しかし、販売者側のA/Bテストは、ランキングの変更の影響を計測するのが難しい。そのため、新しいフレームワークを提案する。
販売者側のA/Bテストを行うとする。販売者の1%をTreatment グループ(mB)、別の 1%をcontrol グループ(mA)とする。
mBは「新規販売者のアイテムをブーストさせる」という処理が入る。Treatment グループの新規販売者のアイテム(図3でいうとitem4)は高ランクになる。リリース時は全新規販売者のアイテムがブーストするので、A/Bテストで高ランクであったitem4のランクが低くなりうる。
因果関係における仮定、stable unit treatment value assumption (SUTVA : 該当個人の結果は、他者の結果や露出率に影響を受けないという仮定) に反しているので、A/Bテストが正しくできていない。
販売者が受け取るメッセージ数の影響を最小化し、Pre-test(青)とBack-test(オレンジ)の両方で、販売率を約2.5%、統計的有意に改善された。SUTVAに反しておらず、テスト中とリリース後の販売者側の指標の結果は一貫する。
このフレームワークで購入者側のA/Bも行うことができる。Treatment 購入者グループに、ルール(多分 Pre-test)を適応し、 Control 購入者グループには適応しない。メッセージ送信数を比べる。
Treatment2,3は新規販売者のアイテムをよりアグレッシブにブーストするランキング。 購入者のメッセージ送信数のA/Bの差 (青)と、販売者側のメッセージ受信数のA/Bの差 (オレンジ) がTreatmentごとにほぼ同じ結果である。販売者側のA/Bテストが信頼できることを表している。
爆速 Network Embedding 手法。 ちょっと試して感動したので共有します。
whose single-thread version is 10–400× faster than efficient network embedding benchmarks with 20 threads, including LINE, DeepWalk, node2vec, GraRep, and HOPE.
とか
the single-thread ProNE requires only 29 hours to embed a network of hundreds of millions of nodes while it takes LINE weeks and DeepWalk months by using 20 threads.
とあってかなり激しい。
まず、Negative Sampling ベースの Network Embedding 学習方法を、Sparse Matrix Factorization に落とし込む。 SMF は、randomized truncated SVD で高速に解くことができるので、これによって爆速でそれなりに良い Embedding を得ることができる。
さらに、上記のプロセスによって得た Embedding は局所的な特徴しか捉えられていないため、Spectral Propagation によって帯域的な特徴を加味した Embedding になるよう、先の Embedding を Enhance する手法を提案している。 (こちらは既存の NE に追加で適用可能で、実験では DeepWalk や LINE に Spectral Propagation を行うことで性能が向上することを確かめている。)
SMF の計算量は O(|V|d^2 + |E|)
で、 Spectral Propagation の計算量は O(|V|d ^ 2 + k|E|)
なので、全体の計算量は O(|V|d ^ 2 + k|E|)
となる。
空間計算量は O(|V|d + |E|)
らしい(こっちは論文中では詳細が省かれているが、まぁ確かにそうかなという感じ)
実際に動かしてみたところ、数千万エッジ & 数百万ノードのグラフに対して、32 次元ベクトルを学習させるくらいなら 3 分で終わる(ノードを連番 ID に変換する処理の方がボトルネックになるくらいでビビる) 性能は PBG で 8h くらいかけて育てた Embedding と同等かやや良いくらい。 パッと試すには十分すぎる性能なので、積極的に使ってみても良いかも?
著者実装が https://github.com/THUDM/ProNE にある。 ↓データの読み込み部分が Networkx 経由で、手元のデータだとメモリがしんどすぎたので、直接 csr_matrix に読むように書き換えてちょっと utility 足した版
速くて安くて directed グラフにも強くて Link Prediction にも強い Homogeneous Network Embedding 手法を提案している論文。 Approximate Personalized PageRank を使い、高速に良い Embedding を作っている。 forward/backward の 2 embeddings を各ノードに割り当てられるので、有向グラフに強く Link Prediction のようなタスクにも強いという性質を持つ(上に紹介した ProNE はこの性質を持たないため、Node Classification には強かったが Link Prediction の性能はいまいちだった)
Why
Machine Learning 輪講は最新の技術や論文を追うことで、エンジニアが「技術で解決できること」のレベルをあげていくことを目的にした会です。
prev. #59
What
話したいことがある人はここにコメントしましょう! 面白いものを見つけた時点でとりあえず話すという宣言だけでもしましょう!