投稿

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

【振り返り】2019年10月~12月

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 僕は修論と論文執筆とスプラで忙しい年末ですが、いかがお過ごしでしょうか。 四半期ごとの振り返り記事です。 一年を振り返って、という記事でもいいのですが、今年は三ヶ月ごとに書いてきたので少なくとも今年まではこのスタイルで書き切りたいと思います。 一応記事の最後の方に一年を振り返る部分も設けたいと思います。 10月~12月はこんな感じでした。 * IBISで発表 * 統計検定受けたけど落ちた * 国際会議に投稿した論文がrejectに * 2つのアドベントカレンダーに参加 なんかあまりいい文字列が並んでいませんが、ちゃんと振り返ります。。。 ## IBISで発表してきた 名古屋で行われたIBISに発表参加してきました。 今まであまり研究を対外的に発表できるぐらいまとまったネタが作れてこなかったので、ワークショップや学会など、参加したことがないという状態でした(発表とかではなく参加自体も初でした)。 教授からM1のときから「来年IBISで発表できたらいいね〜」と言われていて、自分もその頃までに成果をだしておけば修論も書きやすくなるだろう、と思って一つの目標にしていたので、無事ここは達成できてよかったです。査読とかはないので質は担保できてはいないですが、一応進捗的には自分としてはokです。 教授曰く、こういう発表の場はお祭りらしいので、楽しみにしていましたが、本当にお祭りでした。 いろんな方の発表やチュートリアルを聞いたり、懇親会や知り合いの知り合いの方と飲みに行ったりしてお話しすることができて楽しかったです。 M1の頃に参加したサマーインターンの同期などに再会したり、飲みの場であった研究者が知り合いの知り合いでびっくり、など、世界は狭いですね。 ポスターやセッション、チュートリアルでは、機械学習の説明可能性や、広告配信評価のバイアス除去系の話が面白かったです。あまり自分が詳しくない分野の話が楽しめないので、こういう場を楽しむためにはもっと広く浅く知識を持っておく必要があるんだなあ、と実感しました。と同時に、自分が何に興味を持っているのかが浮き彫りになるという一面もある

【論文紹介】Improving Ad Click Prediction by Considering Non-displayed

イメージ
## はじめに こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 本記事はアドベントカレンダー「<a href="https://adventar.org/calendars/4489">#今年読んだ一番好きな論文2019</a>」の21日目の記事です。 本ブログでのアドベントカレンダー参加は初めてなので、頑張りたいと思います。 普段はM2の学生をやっていて、機械学習やプログラミングを勉強しています。 機械学習における公平性や、レコメンド、因果推論、アドテクなどが興味のある分野です。 今回はWeb広告配信の最適化についての論文を紹介していきます!よろしくお願いします。 ## 紹介論文 本記事は、以下の論文の紹介記事となっています。 題名 : Improving Ad Click Prediction by Considering Non-displayed([pdf](https://www.csie.ntu.edu.tw/~cjlin/papers/occtr/ctr_oc.pdf)) 著者 : Bowen Yuan, Hong Zhu, Jui-Yang Hsia, Chih-Yao Chang, Meng-Yuan Yang, Zhenhua Dong, Chih-Jen Lin 出典 : CIKM'19 Proceedings of the 28th ACM International Conference on Information and Knowledge Management Pages 329-338 本記事はこの分野に明るくない方も多く見ていただくことになると思うので、厳密にというよりかは簡潔にして書いていきたいと思います。詳しい方でもっと知りたい!となった方はぜひ論文を読んでみてください。 (また、本記事の画像は上記論文からの引用になります。) ## 論文概要 Web広告配信の最適化を行う際、過去に配信した広告とクリックされたかどうかのフィードバックを元に学習したモデルを用いてWebページ閲覧者にクリックされそうな広告を予測するという

Factorization MachinesのPython実装pyFM, fastFMをMovielensで試してみる

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はFactorization Machines(FM)のPython実装の二大巨頭であるpyFM, fastFMをMovielensデータセットに使ってみた、という記事になります。 ## fastFMの使い方 * <a href="https://github.com/ibayer/fastFM">GitHub - ibayer/fastFM: fastFM: A Library for Factorization Machines</a> regressionやclassificationだけでなくBPR lossを用いてランキングの予測もできるとのことですが、<a href="https://repose.hatenadiary.jp/entry/20170524/1495552930">他の方による記事</a>ではBPRがうまくいかないとのことでした。 自分も今回の記事とは別でBPR lossを試してみたのですがうまく学習してくれませんでした。 今回の記事ではMovielensでrating予測なのでregression modelだけ使って学習してみます。 入力の与え方はpyFMと同様で、scipyの疎行列として与えます。 結果はpyFMの方のみ載せることとして、こちらでは書き方だけ載せます。 普通に初期化して、fitするだけです。 ```python from fastFM import als,sgd model = als.FMRegression(n_iter=100, l2_reg_w=0.1, l2_reg_V=0.1, rank=10) model.fit(X_train,y_train) ``` ですが、デフォルトだと学習履歴を全く表示してくれず、学習曲線とかもかけないので学習が進んでいるのかどうかもよくわかりません。 調べてみると、 [Guide — fastFM 0.2.10 documentation](https://ibayer.gith

LightFMを使ってギターのおすすめカポ位置推薦してみた

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今日は最近やっていた自由研究の記事です。 ## 概要 ギターを弾く際に、押さえるのが難しいコードがありますが、 カポタスト(カポ、と呼んだりします)をギターに装着することで難しいコードが出現するのを避け、演奏しやすくしたりします。 今回はこのカポの装着する位置をLightFMというライブラリを用いて推薦するプログラムを書いてみました。 ## ギターのカポとは ギターのコードには押さえるのが比較的難しいコードがあるので、カポをつけてキーを変えることでそのコードが出ないようにします。 例えば、Fコードを鳴らさなければいけない曲を弾きたいが、Fコードがどうしても押さえられない、という時にカポを1フレット目につけると、Eコードの手の形(Fコードよりは簡単)で押さえて弾くと音としてはFコードが鳴る、という優れものです。 このようにして、カポをつけると出てくるコードが変わるので、つける位置をうまく選べば自分の苦手なコードを回避することができます。(もちろんちゃんと練習しないとダメですが!ある程度簡単なコードを選べるということです。) (参考)カポはこんな感じで、ギターに挟んで使います。 <div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-HSdUXXRtRoo/XfCT3yKhn4I/AAAAAAAADKA/qWeTtbyqV30uS7DIRn6Q4FWCjZzU1NvJwCLcBGAsYHQ/s1600/capo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-HSdUXXRtRoo/X

【論文紹介】WSABIE: Scaling Up To Large Vocabulary Image Annotation (IJCAI 2011)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、WSABIE: Scaling Up To Large Vocabulary Image Annotation という論文を読んだのでメモします。 手法のところ、特に損失関数をメインに解説します。 <a href="https://dl.acm.org/citation.cfm?id=2283856">論文リンク</a> ## 3行まとめ 大きなimage annotationデータセットに対して、画像とタグを同一空間上に埋め込んで内積をとるJoint Word-Image Modelと、Precisionを近似したWARP lossを組み合わせたWSABIEを提案。 ## 問題設定 image annotationタスクは、画像に対して適切なタグ(単語)をつけるというタスクで、今回は与えられたタグリストの中からどれが近いかをランキングにして表示する、みたいな状況を想定している。 評価指標は[email protected]としている。 ## Joint Word-Image Model こちらは単純で、modelと呼ぶほどのこともなくて、単純に画像とtagのembeddingを得て、内積をとることで類似度を計算している。 同じ長さのembeddingをとるので同じ空間上にtagとimageがembedされる。 ## WARP loss 今回の目玉(だと個人的に思っている)。 Precisionの近似になっているlossらしい。 与えられるデータセットには正解のtagが与えられているので、これをrank=1だと思って、この画像に対して予測したランクが1位から離れていれば離れているほどlossが大きくなるように設計している。 予測した順位が$rank_y(f(x))$と表記されている。 <div class="separator" style="clear: both; text-align: center;"><a href="https

統計検定一級受検体験記

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 統計検定一級を受けました。 合格不合格がわかってから記事にしようかとも思ったのですが、とりあえず受検した際の感想を忘れないように書き留めておこうと思います。 これくらいの勉強をしてこれくらいの完成度だった、という事例として活用してもらえればと思います。と同時に自分が不合格だった場合に未来に受け直す際に思い出すためという意味も込めて。 (というか多分午後の応用は不合格なので) ## スペック 参考程度に、どのぐらい統計を勉強したことがあったかを載せておきます。 * 学科は数理を学ぶところで、数理統計学は授業で学んだくらい * B2の時に統計検定2級を取得(ちなみに優秀者合格?とかいうのだった) * 今M2 ## 受検までにやったこと 11月の下旬の受検でしたが、10月の頭ぐらいに申し込みをしました。 申し込みをした次の日にラボの教授にIBISに行って研究発表しましょうと言われ、統計検定の前日まで5日ほど名古屋で過ごし、帰ってきて翌朝受検、というスケジュールになってしまったのが辛かったです。 統計検定一級の範囲のうち、数理的な部分は一度授業で学んだことがあったので、まず復習から入りました。 参考書は<a href="https://www.amazon.co.jp/%E7%8F%BE%E4%BB%A3%E6%95%B0%E7%90%86%E7%B5%B1%E8%A8%88%E5%AD%A6%E3%81%AE%E5%9F%BA%E7%A4%8E-%E5%85%B1%E7%AB%8B%E8%AC%9B%E5%BA%A7-%E6%95%B0%E5%AD%A6%E3%81%AE%E9%AD%85%E5%8A%9B-%E4%B9%85%E4%BF%9D%E5%B7%9D-%E9%81%94%E4%B9%9F/dp/4320111664">現代数理統計学の基礎</a>という本を使いました。 結局参考書はこれ一冊しか読んでいません。 この本は少なくとも午前の統計数理の範囲はしっかりカバーできていてわかりやすいのでオススメです。(第1

【論文紹介】Sampler Design for Bayesian Personalized Ranking by Leveraging View Data

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は Sampler Design for Bayesian Personalized Ranking by Leveraging View Data という論文を読んだので要点をまとめます。 ## 3行まとめ implicit feedbackでランキング学習を行うBayesian Personalized Ranking(BPR)のnegative samplingが非効率的であることを実験的に示し、itemがviewされたかどうかの情報を用いたsamplingやlossの設計を行うことで改善した。 ## 論文リンク 今回読んだ論文のリンクがこちら。 <a href="https://arxiv.org/abs/1809.08162">arXiv</a> IEEE Transactions on Knowledge and Data Engineeringの論文です。 Date of publication : 29 July 2019だそうです。 WWW2018にshortバージョンがありました。 WWW2018の方 <a href="https://dl.acm.org/citation.cfm?id=3186905">An Improved Sampler for Bayesian Personalized Ranking by Leveraging View Data</a> これに加筆したものがarXivに上がっているみたいですね。一応目を通しましたがarXivの方に全て書かれている内容でした。 ## Bayesian Personalized Ranking(BPR) implicit feedbackでは、広告がクリックされたり商品が購入されたりといった正例のみがログとして観測され、いわゆる負例が観測されないという問題設定を考えます。 観測されていないuserとitemの組み合わせは、 * userがitemを好んでいない(認知している上で購入し

【論文紹介】CFM: Convolutional Factorization Machines for Context-Aware Recommendation (IJCAI2019)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、CFM: Convolutional Factorization Machines for Context-Aware Recommendation (IJCAI2019)を読んだのでまとめてみます。 ## 3行まとめ FMのembeddingの各次元同士の作用を考えつつ、高次の交互作用をexplicitに扱うモデルとして3D CNNとFMを組み合わせたConvolutional FMを提案。BPR lossを最適化してtop-k推薦を行なった。 ## 背景 CFMに至る研究のポイントとしては * Factorization Machines(FM)は交互作用をembeddingの内積で表すので、各次元同士の作用は考えていない * FMは二次の交互作用までしか考えていない * 高次の交互作用をexplicitに考えるモデルがない という現状がある。なので、embeddingの各次元同士の相互作用を扱い、また高次の交互作用をexplicitに扱うモデルを作ろう、という流れだった。 本論文のConvolutional Factorization Machines (CFM)では、 * embeddingの内積ではなくouter product operationを用いて次元間の作用を計算 * 3D CNNを用いてexplicitに高次の交互作用を扱う としている。 ## 疑問 ## 一点目 外積を使ってembeddingの各次元の相互作用を扱う、というのは他にもPNN(<a href="https://arxiv.org/abs/1611.00144">Product-based Neural Networks for User Response Prediction</a>) とかで扱っていたように思えるが、related workには載っていない。 related workには、Matrix Factorizationに外積をつけた研究として <a href="https://arxiv

【論文紹介】ViTOR: Learning to Rank Webpages Based on Visual Features (WWW2019)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、 WWW2019の ViTOR: Learning to Rank Webpages Based on Visual Featuresの紹介記事です。 ## 3行まとめ Web文書検索において、従来の特徴量に加えてページの画像情報を用いてランキングを学習するモデルとしてViTORモデルを提案。事前学習したCNNベースのモデルを利用し、入力にはsaliency heatmapや検索クエリをハイライトしたスクリーンショットを用いている。作成したデータセットを公開している。 ## 問題設定と貢献 検索エンジンに入力されたクエリを受け取って、関連するwebページを返すタスクに、webページの画像情報(スクリーンショットのようなもの)も使おう、という研究。 関連研究として一番近いのが <a href="https://arxiv.org/abs/1710.06997">Learning Visual Features from Snapshots for Web Search (CIKM2017)</a> だが、これはGOV2というデータセットを用いていて、画像情報の多様性が小さいこと、スクリーンショットに画像やスタイル(多分CSSみたいなこと?)が含まれていないことなどが問題点として指摘されている。 今回はこの画像情報を用いたLearning to rank、すなわちVisual learning to rank (ViTOR)と呼んで、これ用のいい感じのデータセットを作りました、という研究。 もちろん自分たちでモデルも作って、既存のもの(ViPと呼ばれている)よりもいい結果が出ている。 貢献をまとめると * 画像情報を用いたランキング学習ViTORデータセットをつくった * ViTORモデルを作って既存モデルViPに勝利 ## モデル ## 全体の構成 初めてだからか、そこまで工夫しているかんじでもなかった。 画像とcontent feature(TF-IDFとかPageRankとか、古典的な特

【論文紹介】Visually-Aware Fashion Recommendation and Design with Generative Image Models (ICDM 2017)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、アイテムの画像情報を取り入れたimplicit feedbackでのranking学習を、end-to-endで行う手法の論文を読んだので、まとめます。 論文リンクはこちら <a href="https://arxiv.org/abs/1711.02231">Visually-Aware Fashion Recommendation and Design with Generative Image Models</a> ## 3行まとめ 画像情報を取り入れたimplicit feedbackでのranking学習を、end-to-endで行うDVBPRを提案した。 またGANと組み合わせることによってuserの好みのitemの画像の生成を行う機構も提案した。 ## 先行研究からの差分 一番近いのが、AAAI2016のVBPR: Visual Bayesian Personalized Ranking from Implicit Feedbackである。 画像の情報を取り入れてimplicit feedbackからランキング学習を行うモデル。lossにはBPR(Bayesian Personalized Ranking)を用いる。 提案モデルであるDVBPRのVBPRからの差分は * 画像情報をpre-trainしたCNNで抽出していたVBPRとは違い、DVBPRはend-to-endに学習することで、画像の特徴ベクトルがfashion recomendationに適したものになる * GANを用いることで、userが好みそうなitemの画像(服とか)を生成する。これにより、デザインの手助けになったりする。 細かいモデルの差分として、itemに関するembeddingをVBPRでは画像に関連するものとそうでないものにexplicitに分けてモデリングしていたが、今回DVBPRではitemに関するembeddingをCNNベースのものにまとめた、という部分もある。(これは試したらこれが良かったからこうした、と書い

【論文紹介】Adversarial Personalized Ranking for Recommendation (SIGIR2018)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今日は、敵対的学習をBPRに加えたAdversarial Personalized ranking (APR)の論文を読んだのでまとめてみます。 最近はBPR関連の論文をよく読んでいます。 BPRについてはこちらの記事で書いています。 【論文紹介】BPR: Bayesian Personalized Ranking from Implicit Feedback (UAI 2009) ## 3行まとめ BPRに敵対的学習を加えてロバストなモデルにしたAdversarial Personalized ranking (APR)を提案し、汎化性能を向上させた。 recomendationだとuserやitemに摂動を加えると全く異なるデータになる(one hotだから)ので、摂動はモデルのパラメータに与えるようにしている。 BPR+MFと比較して、APR+MF(この場合embeddingにlossが大きくなるような摂動を加える。)がより汎化性能が高いことを実験で示した。 ## 背景と仮説 画像とかで敵対的学習を使うのは研究されているけど、IR(information retrieval)ではあまりされていないから、組み合わせてみよう. BPRはpairを受け取って分類を行っているようなモデルだから、敵対的学習を使ってロバストにすれば汎化性能が向上するかも? ## 前実験 学習したBPR+MFのembeddingにランダムな摂動と敵対的な摂動(lossを小さくするような)摂動を与える。 それぞれtestデータおけるモデルの性能がどれだけ悪化するか? 結果 <div class="separator" style="clear: both; text-align: center;"><a href="https://2.bp.blogspot.com/-naDwP1Hrt7Q/XZaZXIQoQBI/AAAAAAAACkU/wkMDBNNUir4wQMsbz7z_sUpT9lu2Ogghg