投稿

6月, 2019の投稿を表示しています

【論文紹介】Interaction-aware Factorization Machines for Recommender Systems(AAAI2019)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はAAAI2019のInteraction-aware Factorization Machines for Recommender Systemsの論文紹介記事になります。 FM論文読み企画、ついに2019まで来ました!笑 よろしくお願いします。 論文のリンクはこちらです。 <a href="https://arxiv.org/abs/1902.09757#">Interaction-aware Factorization Machines for Recommender Systems</a> ### 3行まとめ FMの交互作用項をfeature levelとfield levelの二つのレベルの予測への重要度で重み付けするように改善したInteraction-aware FM(IFM)を提案。またより高次の交互作用を捉えるInteraction-aware Neural Network(INN)およびDeepIFMを提案。 ### 研究のモチベーション Factorization Machine(FM)にはfeature aspectとfield aspectの二つの改善するべきポイントがあるとしている。 * fature aspectとは 予測に重要なfeature pair interactionとそうでないfeatureの交互作用を同じ重みで扱うのではなく、予測に効きそうなpairの重みを大きくするようにしようよ、というもの。 * field aspectとは 違うfieldとのinteractionはlatent vectorの重要度も違うべき、というもの。 ### 関連研究 #### AFM Attentional FMのこと。 <a href="https://arxiv.org/abs/1708.04617">論文リンク</a> 研究のモチベーションではfeature aspectに対処する研究という位置付け。 featur…

ラプラス正則化(Laplacian Regularization)を用いた半教師あり学習をPythonで実装

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、半教師あり学習の手法の一つであるラプラス正則化について書いてみます。 半教師あり学習とは、データの一部のみラベル(正解データ)がついていて、残りは入力データしか与えられないような状況で、精度の良い予測を行うモデルを学習することを指します。 ラベルがついているデータは少量で、教師なしデータが大量にある、という問題設定はとても現実的です。 ラベルをつけるコストは大きく、簡単に用意できないということがよくあります。 ラプラス正則化に限らず、半教師あり学習では限られたラベルのついた教師ありデータを用いて、大量の教師なしデータを有効活用していくか、というところがポイントになってきます。 (大量の教師なしデータすらない場合はfew shot learningとか、deep learningで研究されているようなまた違った分野になるのだと思います。) まず、ラプラス正則化の説明からはじめて、次に人工データを生成してラプラス正則化をガウスカーネルモデルにつけて最小二乗分類をPythonで実装します。 最後にその実験結果を載せます。 ### ラプラス正則化 ラプラス正則化はどのようにして教師なしデータを有効活用するか、というところが注目ポイントです。 ラプラス正則化では、「近くにある入力データ同士は同じラベルを持つはず」という仮定のもと、lossを設計します。 ラベルのあるデータの近くのデータはそのラベルと同じラベルを持つはず、ということですね。これが全データに伝搬していくことで、存在しないラベルに対しても「まあこのデータはこのラベルがついているはずだろう」みたいなことをモデルが学習してくれる、という気持ちです。 具体的なlossは以下のようになります。 $$ \sum_{i=1}^{N_l}(y_i - f_{\theta}(x_i))^2+\lambda|\theta|^2 + \nu \sum_{i,i'=1}^{N_u+N_l}W_{i,i'}(f_{\theta}(x_i)-f_{\theta}(x_i'))^2…

【振り返り】2019年4月~6月

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 四半期ごとの振り返り記事です。 四月になり、M2になりました。 D進はしないつもりなので、今年が学生最後の年になります。(社会人になってから博士の可能性もなくはないかもしれませんが。。。) M1の後輩も研究室に入ってきて、楽しく研究室生活を送れています。 今回の振り返りの概要はこんなかんじです。 * 研究開発インターン(短期)を終えた * 機械学習の解説&実装記事を複数書いた * Qiitaを始めた * Factorization Machinesの論文紹介記事を複数書いた * 研究室へのコミットが増えた * 読んだ本 * スプラトゥーンにハマった ### 研究開発インターン(短期)を終えた 前回の振り返り記事にかいたのですが、 もともと普段から一つ長期インターンとして研究開発を企業の方でさせてもらっていて、それと並行して春休みに3月から短期の研究開発インターンをしていました。 最初の契約では一ヶ月ということだったのですが、ありがたいことにもう一ヶ月延長しないかと言われて4月もやりました。 結局忙しくなってしまいGWの前にインターンは終了したのですが、割と最後には成果が出て楽しかったです。 詳しく言っていいのかわからないのでざっくりいうと自然言語処理 + Deep Learningという感じで、BERTとかを触っていました。ナウいですね 大学院を受けたときに最初にやりたかったのがNLPだったのもあって、ようやくやりたいことができたなあと感慨深いものがありました。(訳あって最初の研究室はやめることになり、NLPもその時点から触っていなかった) 業務もとてもたのしかったし、待遇も良かったし、メンターのかたも優秀でリモートでしたが上手に面倒見てくれました。 ### 機械学習の解説&実装記事を複数書いた 大学関連で、機械学習関連の数理的な内容やその実装をする機会があり、せっかくなのでプログラムもまとめて記事にしておこうかと思いコツコツ書いています。 4月~6月はそういう点で割とプログラミング記事よりも数学的なものが多くな…

【論文紹介】Field-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertising(WWW2018)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 論文紹介記事です。 今回は、WWW2018のField-weighted Factorization Machines for Click-Through Rate Prediction in Display Advertisingを読みました。 ここ最近Factorization Machinesの論文ばかり読んでいますが、その中でもField-awareなものを中心に読んでいます。 今回読んだField-weighted Factorization Machinesは個人的に結構面白かったので、読んだ勢いですぐまとめました。 何かあればコメントとかTwitterのDMにお願いします! (FM関連のこの論文読まないん??とかそういうのでも歓迎です笑) 例によって自分用のまとめを元に記事にしているので紹介部分は文章が固めです、、、 よろしくお願いします。 ### 概要 Fieldの情報を扱えるようにFactorization Machine(FM)を改良したField-aware FMがあるが,学習するパラメータが多いという問題がある。この研究ではFieldの組ごとにexplicitに重みを考えるField-weighted Factorization Machines(FwFM)というモデルを提案し、FFMより少ないパラメータ数で同程度の性能を実験により示した。 ### 既存研究 Field-aware Factorization Machine(FFM)が本研究のベースになっている。 FFMについては前に書いた記事を参照のこと 【論文紹介】Field-aware Factorization Machines for CTR Prediction (RecSys2016) FFMはいい性能を示していてFM関連の研究の方向としてもホットなトピックである。 FFMはその性能の高さの反面、パラメータ数が多くて過学習しやすいという問題があり、この問題にトライする系の研究がいくつかある。 例えばField-aware Probabilistic Embedding…

【論文紹介】Robust Factorization machines for User Response Prediction(WWW2018)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 WWW2018のRobust Factorization machines for User Response Predictionの紹介記事です。 とはいうものの、今回はあまり細かいところがわかっていないのでとりあえずメモ程度です。ごめんなさい。 ### 概要 FMやFFM(field aware fm)にrobust optimization(RO)のテクニックを適用したRobust FM(FFM)の提案 ### FMをrobustにする意味 たとえば同じユーザが複数のデバイス経由でアクセスしたり,クッキーが消去されたりといった理由で,ある 1 人のユーザに関するデータが複数のユーザに関するものであると解釈されてしまうような場面でも,上手くデータを扱って予測できる ### Robust Optimazation(RO) 最適化の時に動かす変数に誤差を与える。 誤差はgivenなunsertainty setから取り出す。 通常のloss関数に対して、まず誤差をuncertainty setのなかで動かしてlossを最大化する。 そのあと、固定した誤差のもとでモデルの重みを動かしてlossを最小化する。 <div class="separator" style="clear: both; text-align: center;"><a href="https://4.bp.blogspot.com/-R0rx1bvBEaQ/XQenRyXP9NI/AAAAAAAACAs/b6RFKhlq9qQ-sg5Cdqm0X_6NQ6r0KlAQQCLcBGAs/s1600/%25E3%2582%25B9%25E3%2582%25AF%25E3%2583%25AA%25E3%2583%25BC%25E3%2583%25B3%25E3%2582%25B7%25E3%2583%25A7%25E3%2583%2583%25E3%2583%2588%2B2019-06-17%2B23.42.18.pn…

【論文紹介】FAT-DeepFFM: Field Attentive Deep Field-aware Factorization Machine(ICDM2019)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 ICDM2019のFAT-DeepFFM: Field Attentive Deep Field-aware Factorization Machineを読んだので、まとめ記事を書きました。 <a href="https://arxiv.org/abs/1905.06336">論文リンク</a> 例によってFactorization Machines関連の論文です。 Field-aware + FM + Attention + deepというもりもりのモデルであるFAT-DeepFFMを提案した研究になります。 よろしくお願いします。 ### 3行まとめ CV系のAttention機構であるSEnetを改良して交互作用項にする前の段階(embeddingの段階)にAttentionをかけるCENetを考案し、Field-awareなFactorization MachineとDeepを合わせたDeepFFMと組み合わせたField Attentive(FAT) DeepFFMを提案。二つの実データセットで実験を行い精度の向上を示した。 ### 関連研究 #### Field-aware Factorization Machine (FFM) Recsys2016 Factorization machineのembeddingを、fieldごとに異なるembeddingを学習することでfieldを考慮した交互作用をモデリングした研究。 詳しくは以下の記事を参照のこと 【論文紹介】Field-aware Factorization Machines for CTR Prediction (RecSys2016) #### DeepFFM FFMをdeepに組み合わせたもので、もともとYangらがTencent Social Ads competition 2017でレポートしたDeepFFMを使っている。 本論文や詳しい説明が探してもなかったので、この論文中で改めてDeepFFMの説明がなされている。 …

【論文紹介】Field-aware Factorization Machines for CTR Prediction (RecSys2016)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 RecSys2016のField-aware Factorization Machines for CTR Predictionを読みました。 ### 3行まとめ Factorization machinesでは各特徴量につき一つの埋め込みベクトルを学習したが、特徴量をFieldという単位に分けて各特徴量につきField分の埋め込みベクトルを学習するように改善したField-aware Factorization machinesを提案。CTR predictionとそれ以外のタスクについてその性能を実験的に検証した。 ### 関連研究 #### Poly2とFM 線形モデルでは捉えられない特徴量どうしの交互作用を考慮したモデルはいろいろあって この論文中では * poly2 * Factorization Machines(FM) が紹介されています。 poly2は二次の交互項に対応する重みをモデルに組み込むことでexplicitに交互作用をモデル化したものです。 FMより原始的で、以下の理由からFMの方が優れていると考えられています。 * FMの方が汎化する * naiveにpoly2を実装すると重みの個数が爆発する 一つ目は単純で、trainingデータにない組の特徴量がtestに来た時に、poly2だと対応する重みが学習できていないのでうまく予測できないですが、FMだとちょうどその組がtrainに入っていなくても片方が同じ、とかの組みが入っていれば、その学習結果を利用できそうです。 (A,B)という特徴量の組みをテストで予測したいけど(A,B)が学習データには入っていない場合でも、(B,D)と(A,C)などの組が学習されていればFMではBやAの埋め込みベクトルが学習されるので、それらの内積がちゃんとAとBの交互作用を表現できていればうまくいく、という気持ちです。 二つ目は、$N$個の特徴量があったら、それらの2次の交互作用をexplicitに考えるモデルは重みの個数が$O(N^2)$のオーダーになって学習や予測が大変、というこ…

【論文紹介】Field-aware Probabilistic Embedding Neural Network for CTR Prediction(RecSys2018)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はRecSys2018で出ていたField-aware Probabilistic Embedding Neural Network for CTR Predictionを読みました。 自分用にまとめたものを元に記事にアップしているので文調が固めですがご容赦ください。。。 今回はFactorization Machines関連の論文になります。 このブログでは他にもFM関連の論文の記事をあげています。こちらもよければどうぞ! 【論文紹介】Neural Factorization Machines for Sparse Predictive Analytics ### 3行まとめ Field-awareなFactorization machinesとしてFFMがあるが、精度が高いものの過学習しやすいという欠点がある。この研究ではFFMの埋め込みベクトルを点推定する代わりにそのベクトルが従う確率密度分布を推定することでFFMの汎化性能を高めたFPENNを提案。 ### 既存手法 #### FFM 本研究の一番関連の深い既存手法はField-aware Factorization machines(FMM)である。 Field とは、入力する特徴量のを関連する単位で区切ったグループの単位で,カテゴリ変数をonehotにした時のonehot部分などを想像すればいい。 純粋なFMではこのfieldの情報を使わずに各特徴量につき一つのlatent vectorに埋め込んでいたが、FFMでは各特徴量につき自分の属していないfieldに対してそれぞれ異なるlatent vectorに埋め込む。 特徴量$x$の$i$番目の特徴$x_i$に対応するlatent vectorはFMでは$v_i$と一つであるが、 FFMでは$x_i$が属していないfieldの分だけlatent vectorをもつ。特徴量の個数が$d$個、fieldが全部で$f$個あり、$k$次元のlatent vectorに埋め込む場合、全部でlatent vectorは$d \times (f-…

ガウス過程回帰入門

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 最近、機械学習プロフェッショナルシリーズのガウス過程と機械学習を購入してみたのですが、とてもわかりやすくて良い本でした。 Twitterでもいい評判が流れていたのもありずっと気になっていたのですが、時間がなくてすぐには買えず、ようやく買って勉強しています。 最後の方は難しそうで読めていないのですが、とりあえずガウス過程の大枠が学べたので基本的なところを自分の言葉で説明して実装することで定着させようと思います。 勉強し始めたばかりなので間違っているところあればコメントください。 ### ガウス過程 ガウス過程とは、なにか。というところでまず自分は昔つまづいていました。 以前ネットに転がっている記事で勉強しようとした時は「ガウス過程とは無限次元のガウス分布である」とか「ガウス過程は関数上の確率分布だ」とかが最初に書いてあって、よくわかりませんでした。 勉強してみて、ガウス過程とは何かと聞かれれば確かに「ガウス過程とは無限次元のガウス分布である」は理解できるのでそう書かれているのはよく分かるのですが、いきなり書かれてもわからないよ、という気持ちにもなりました。 あと、ガウス過程の過程という単語は時系列の分野から生じたものですが、必ずしもインデックスは時刻を表すものではないので時刻は一旦忘れて考えてみるといいと思います。 今回は導出等の細かい話はせずに、ガウス過程ではどういうことを実際にはやっているのかを書いていきたいと思います。 $x_1,\cdots, x_N$という入力データ点があり、これらに対応するモデルの出力を$f(x_1),\cdots,f(x_N)$とします。 機械学習ではこの関数$f$をいい感じにデータから見つけてこよう、というのが目標になります。 ガウス過程では$f(x_1),\cdots,f(x_N)$がN次元ガウス分布$N(\mu,\Sigma)$に従うとします。 イメージとしては、入力$x_1,\cdots, x_N$が与えられると、それによって決まる$N(\mu,\Sigma)$から出力$f(x_1),\cdot…

Passive-Aggressive学習と適応正則化オンライン学習を解説して実装してみる

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 オンライン学習の手法の一つである適応正則化を解説してPythonで実装してみます。 今回は損失を二乗ヒンジ損失として分類を試してみますが、損失関数を二乗損失とかに変えれば回帰にも使えます。 モデルは線形モデルを考えることにします。 $$ f_\theta(x) = (\theta_1,\theta_2,\theta_3)(1,x_1,x_2)^T $$ ### PA(Passive Aggressive)学習とは PA学習はオンライン学習の手法なので、一部のデータを使ってパラメータを徐々に更新していくという流れになります。 勾配法などでは現在のパラメータの位置で勾配を計算して、lossが小さくなる方向へ固定のステップサイズ(あるいはlearning rate)の分だけ更新する、という方法をとりますが、 PA学習はこの方向やステップサイズを適応的に決めて更新していく手法です。 勾配法ではlearning rateの大小の調整が面倒です。大きすぎれば最適値付近をいったりきたりしてしまうし、かといって小さすぎればなかなか最適値に近づいてくれません。適切なlearning rateを決めることが肝要です。 PA学習は、lossを小さくすることに加えて、パラメータの更新による変化量にペナルティを与えることで適切な分量の更新を行うようにモデルを組んだ手法です。 具体的には次のように更新式を構築します。 現在のパラメータ$\tilde \theta$が与えられたとき、次のパラメータ$\theta$を $$ \min_{\theta} loss(f_\theta(x),y)+ \gamma|\theta-\tilde \theta|^2 $$ の解として更新します。 $\gamma$はハイパーパラメータで、パラメータの更新による変化量のペナルティとlossの重みのバランスを司ります。 上の問題は単純に$\theta$を微分して0とすれば更新式が導出できます。 損失を二乗ヒンジ損失とした場合の更新式は以下のようになります。 $$ \theta \left…