機械学習界隈の情報収集方法
こんにちは.Machine Learning Advent Calendar (MLAC) 2013の14日目を担当します,[twitter:@kisa12012]です.普段は博士学生として,各地を放浪しながら機械学習の研究をしてます.今回の記事はボストンで執筆しています.現地時間(EST)での締切は守ったのでセーフ…ですよね?
本日は機械学習の技術的な内容の話ではなく,筆者が実践している機械学習関連の情報収集方法について纏めます*1.大きく分けて,学会情報の管理・論文情報の収集・その他の三種について述べたいと思います.今回のトピックの多くは他の分野にも通用する話になっているかと思います.他の分野の方がどのように情報収集されているのかも気になるところです.
学会情報の管理
- まずは学会情報の管理についてです.機械学習に関連するカンファレンスは(特に近年乱立気味で)非常に沢山あります.全てをチェックして回るのは,極一部の超人を除く通常の人型生物には不可能なタスクです.代表的な学会を個人的な印象とともに,以下に簡単に記載すると*2,
- ICML/NIPS/AISTATS/ECMLPKDD は機械学習系の最先端の論文が集まるカンファレンス.最新の動向を見るために,必ず採択論文のチェックが必要.
- UAI/ICLR/COLT は会議毎にクセが強い.機械学習の中の一分野のみを対象としている事が多いが,総じて質は高いため自身が関連する学会はチェックが必須.
- KDD/IJCAI/AAAI/SDM/ICDM/WWW では上の機械学習手法の実応用への拡張が豊富.WSDM/CIKMも見逃せない.
- ACL/EMNLP/ICCV/ECCV/CVPR/ICASSP は言語処理・画像処理・音声処理それぞれの分野に適応した手法の提案が多数.ここでのアイデアや手法が機械学習系へ逆輸入されることも多々.
- VLDB/SIGMOD などのデータベース系でもたまに機械学習系の論文がちらほら.
- JMLR/MLJ/TPAMIなど,ジャーナルも多数.
- があります.とても全部は追いきれないため,学会の開催情報や締切情報の効率的な管理が必須です.以前は色々試していましたが,一年程で更新が止まるサービスが多く持続的な管理には不向きな事が多かったです.最近は,自分でWikicfpのリストを管理する方法に落ち着いています.
- Wikicfp http://www.wikicfp.com/cfp/
論文収集
- 自分の研究と良く似た既存研究を偶然発見してしまい,数ヶ月間の努力が無駄になった経験のある方こんにちはこんにちは.
- 既存研究サーベイも効率的に出来れば大幅な時間の節約になります.興味のある論文を網羅的に探すための方法として,筆者が実践している方法を以下に纏めます.
- Arxiv RSS購読 http://arxiv.org/
- Arxivには毎日のように新しい論文が投稿されています.毎日投稿されている論文のタイトルを斜め読みするだけでも,最近の研究トレンドをおぼろげにつかむことが可能です.
- 最近はカンファレンスより先にArxivに論文が掲載されることが多いため,Arxiv論文のチェックは必須です.今年のNIPS論文の30%位は採択前にArxivに公開されていたのではないか,というのが個人的な感覚です.[要検証]
- タイトルが刺さったらアブストを斜め読み,アブストも強烈に刺さったら内容を読む位の心持ち.もしこのフィルタで重要な論文を見逃してしまっても,良い論文ならそのうちカンファレンスやジャーナルに載るはずなので,precisionを優先しています.
- 機械学習の場合はこちら.
- 筆者は,stat.ML (機械学習) / cs.AI (人工知能) / cs.CE (計算機工学) / cs.CL (計算機言語学) / cs.GT (ゲーム理論) の五つを購読しています.
- 企業論文
- 多くの企業研究所は機械学習関連の論文をカテゴリ分けしているため,RSSで取得可能です.こちらもタイトルを流し読みしておくと,各企業のトレンドや興味対象が少しイメージ出来るのでオススメです.以下が代表例です.
- Microsoft Research Publications http://research.microsoft.com/apps/catalog/default.aspx?t=publications&ra=47200
- Google Research Publications http://research.google.com/pubs/ArtificialIntelligenceandMachineLearning.html
- Yahoo! Labs http://labs.yahoo.com/publication/?area=machine-learning
- Google Scholar http://scholar.google.com/
- 機械学習をせっかく学んでいるのだから,論文サーベイにも機械学習の力を利用して楽をしたい.ということで,Google Scholarの論文リコメンド機能を利用しています.
- 基本的には,自分がこれまでに執筆した論文を基に読むべき論文をリコメンドしてくれます.
- まずは,Google Scholar Citationsに自身の書いた論文を登録しましょう.
- すると,My Updatesに論文がリコメンドされます.
- 執筆論文のみでなくGoogle Scholarの論文アクセスデータもレコメンドに反映されている気がします.[要検証]
- そのため,学習データとしてGoogle Scholar経由で面白かった論文のクリックデータを与えておくと,それらに似た論文を自動的に集めてくれるようになる……気がします.気のせいかもしれません.
その他情報の収集
- ブログやニュース記事でも収集したい機械学習関連情報は沢山あります.こちらも筆者が実践している方法を簡単に紹介します.
- タグ指定はてなブックマーク
- はてなブックマークではタグやキーワード・ブクマ数を指定して,該当する記事をRSSで引き抜く事が可能です.試しに「機械学習」タグの付いたエントリを全部RSSで引き抜いてみると,機械学習関連の日本語記事が簡単に見つかります.
- 日本語のブログ・ニュース記事やslideshareのプレゼン資料はこの方法でほぼ網羅出来る印象を持っています.意外なことにノイズもあまり無く一日あたりの分量も多くないため,非常に重宝しています.
- 筆者は他にも「自然言語処理」などのキーワードでRSS登録をしています.他におすすめのキーワード等を知っている/見つけた方がいれば,是非是非教えて頂けると幸いです.
- 海外ブログの情報は上の方法ではあまり集められません.筆者がチェックしている海外ブログの一部を抜粋して以下に紹介します.筆者が購読しているブログは他にもたくさんありますが,個人的興味に強く影響を受けているため割愛します.ブログ間でそれぞれの記事を紹介しあう事も多いため,自身の収集対象を少しずつ広げていくのが良いかと思います.
- Machine Learning (Theory) http://hunch.net/
- Machined Learnings http://www.machinedlearnings.com/
- MicrosoftのResearch/Engineer.大規模データ解析技術の話題が中心.スタートアップエンジニア等も経験されており,論文の解説を超えた実用視点からのコメントが多く,非常に勉強になります.個人的には,データサイエンティストとはこのような人を指す言葉であると思っています.
- I’m a bandit https://blogs.princeton.edu/imabandit/
- 確率的最適化やバンディットの記事が多数.Guest Postも多く,それぞれの分野の専門家による機械学習記事を読むことが出来ます.
- 講演ビデオ
- Videolecturesが定番です.ICMLやCVPRはtechtalk.tvで公開されていますが,スライドと映像のマッチングがとれていないビデオが多いなど,問題が多いためあまり好きではありません.カンファレンス講演を見るのも良いですが,オススメなのはMLSSなどのチュートリアルの映像資料です.
- Machine Learning Summer School (MLSS), La Palma 2012 - VideoLectures - VideoLectures.NET http://videolectures.net/mlss2012_lapalma/
- Machine Learning Summer School (MLSS), Bordeaux 2011 - VideoLectures - VideoLectures.NET http://videolectures.net/mlss2011_bordeaux/
- Machine Learning Summer School (MLSS), Cambridge 2009 - VideoLectures - VideoLectures.NET http://videolectures.net/mlss09uk_cambridge/
- Videolectures以外にも良い講演ビデオは様々な場所に転がっています.例えば,Simon instituteのBig Data Programでは,最先端の研究成果発表やチュートリアル資料が大量に転がっています.
- Big Data Boot Campのビデオを少し眺めるだけでも,相当に力がつきます.このような機械学習イベントが多く開催されている所を見ると,日本との環境の違いを思い知らされますね.講義資料やチュートリアル映像等の探し方は未だこれといった方法が見つけられておらず,アンテナを高く張り続けるしかないというのが現状です.もし良い方法があれば教えて頂ければ幸いです.
- 書籍
筆者が実践している情報収集方法について,ここまでだらだらとまとめてきました.日々これらの情報を通して基礎体力をつけつつ,自分のタスクに繋げるための勉強として,近年のD論のサーベイ部分あるいは書籍を読む→引用論文で重要なものをピックアップして読む→これらの知識を土台に最近の論文に当たる,のプロセスを回すのが最短経路であると思います.
おそらく2・3年後には,今とはまったく異なる情報収集方法に変わっているものと想像します.日々改良を重ねてより良い方法を探索していきたいです,とありきたりな言葉で本日のMLACを締めさせていただきます.
*1:NIPS2013参加報告を書こうかとも考えたのですが,I'm a banditのブログ記事で筆者が重要だと思ったことの半分程度は既に解説されてしまいました.確率的最適化や近接勾配法まわりの今年のブレークスルーは,こちらの記事を参照すれば大雑把に把握できると思います.それ以外の分野で面白いと思った話については別の機会があれば後日紹介したいと思います. NIPS読み会などでしょうか?
*2:機械学習の「朱鷺の社Wiki」でも機械学習関連の学会情報を簡単に纏められています.
確率的勾配降下法+α の話をしました
先日PFIセミナーにて,「SGD+α: 確率的勾配降下法の現在と未来」というタイトルで発表をしました!発表の機会を設定して頂いたPFIの皆様,ありがとうございます.スライドは以下になります.
確率的勾配降下法(SGD)はシンプルで大規模データから”そこそこの”解を得るには非常に有効なアルゴリズムです.一度自分で実装してSGDを回してみたことのある人も多いと思います.
一方で
- 結局ステップ幅の設定が大変
- 正規化とか前処理しないとそれほど上手く動いてくれない
などなどSGDには欠点も多く,たくさんの人が使う際に苦しめられてきた現実もあるのではないでしょうか.
今回の発表では,SGDの欠点を克服するため,およびさらなる長所を加えるための,最新の+α拡張研究について紹介しました.
内容は,
- ステップ幅設定に今後悩まされないための +α手法
- 前処理なし,オンラインで自動正規化を行うための +α手法
- バッチデータから厳密解を高速に得るための +α手法
の3つを紹介しています.
もちろん今回紹介した+α手法以外にも,省メモリ化拡張手法 (こちらは前回のICML2013読み会で紹介しました)等様々な+αが考案されています.過去の単純なSGDでは満足に使えなかった場合も,SGD+αであれば上手く動くケースも多々あるのではないかと思います.そんな未来を夢見つつ,今回の発表をしました.ご参考となれば幸いです.
ICML読み会2013 で発表してきました
- 先日行われたICML読み会2013で発表してきました.主催者の @sla さん,会場提供をして頂いた中川先生,および読み会を盛り上げて頂いた他発表者・参加者の皆様ありがとうございました!やはり論文読み会は刺激的で非常に楽しいひとときが過ごせました.
- これからも定期的に論文読み会が開催されるとの事なので,これからも楽しみですね.(KDD読み会とかNIPS読み会とか?)
- 自分は"Large-Scale Learning with Less RAM via Randomization"という論文の紹介を行いました.発表資料を以下に載せておきます.
- 論文の概要は,
- "そもそも重みベクトルの値を格納するのにfloat型が本当に必要なの?もっとビット数減らしても精度変わらないんじゃないの?ビット数減らせれば,GPUやL1cacheに載せる事も考えられるようになるよね."というモチベーションから出発.
- Regret等の理論保証のある形での学習/予測時のビット数削減方法を提案.
- という話になっています.
- 発表資料中に誤りや訂正すべき点などあれば,コメント等でご報告頂ければ幸いです.
研究の参考にしているサイト集
- 自分のメモ書きとして,たびたび論文執筆やプレゼン時に参考にしているサイトを以下にまとめてみました.
- 自身の研究分野である,コンピュータサイエンスや人工知能分野に関連する資料が多めです.
- 他に参考となる有用なサイトをご存知の方がいらっしゃれば,コメント等で教えて頂けると筆者が喜びます!
English Check Manual
- 東大,牧島先生の作成した英字論文執筆/校正のためのチェックマニュアル.
- 英字論文を書く際に,(特に日本人が)誤りやすい文法や単語を修正例とともに示したもの.
- 自分が英文を書く時はもちろん,校正時もこのチェックマニュアルに従って,誤り箇所に番号を振る形で修正しています.
英語論文の書き方
- 東大,松尾先生の作成した英語論文の作成マニュアル.
- 論文の完成度を高めるために何をすれば良いか,論文執筆の全体像・心構え・Tips集等盛り沢山
- 毎回新しい論文を書くたび,参拝する気持ちで読み直しています.
How to write a good research paper and give a good research talk
- Dr. Simon Peyton Jonesによる,良い研究論文の書き方,良い研究トークの仕方に関するスライド資料.
- 研究の進め方・研究発表の仕方を逐次見直す時に該当部を確認しています.
- 発表のビデオもあり,リンクや参考資料も豊富.
On Presenation at International Conferences
- Dr. Yu Zhengによる,国際会議発表を成功させるためのプレゼン資料.
- 特に,英語非ネイティブがプレゼン資料を作成,発表する際に気をつけるべき事項が盛り沢山.
- 英語のプレゼン資料を作成する際に必ず参考にしています.
How to Succeed in Graduate School
- Dr. Marie desJardinsによる,大学院(博士課程)で成功するための多くの注意事項を書いた論文.
- 研究そのものの話だけでなく,研究仲間の話,お金・健康・生活の話,そして遊びの話まで包括.
- 一度通して読んだことで血肉となり,その後の研究生活に非常に役立ちました.
Volume Regularization for Binary Classification
概要
分類問題を多次元空間の「点(重みベクトル)」ではなく「箱(重みベクトルの集合)」の形で最適化する.ここで「箱」の形で最適化する,とは「箱」中の重みベクトル集合の中で最悪性能を示す重みベクトルで最適化問題を評価した場合の値を最大化する事.さらに,理論的にはPAC-Bayesian Boundを求めており,ノイズ環境下ではAROWやSVMよりも非常に高い性能を示すことを確認している.
背景
- 既存の線形モデルは,信頼度や代替となる重みベクトルの情報を持たせる事が困難
- Bayesian Classifierは,計算量やメモリ制約の問題から近似手法が必要
- これまた中庸を取る
- 重みベクトル集合,つまり「箱」の最適化を行う
- 高速かつ省メモリでパラメータ更新が可能かつパラメータとして信頼できる重みベクトル集合が得られる
A Stochastic Gradient Method with an Exponential Convergence Rate with Finite Training Sets
概要
データが事前に固定されていれば,ある種の一般的条件設定のもとで,データ数に対して定数オーダーの計算コストで線形収束を実現するSGDを提案.確率的最適化手法であるSGDと全データの勾配を毎ステップ計算して最適化するGDのハイブリッド(良いとこ取り)手法を提案し,こちらも理論的・実験的に非常に高速に最適解へ収束する事を示した.
貢献
アルゴリズム
- 1. データを1つランダムに選択し,現在の重みベクトルで勾配を計算
- 2. 各データの「最後に」算出された勾配を集め,その平均ベクトルを用いて学習器を更新
- 3. 一定の回数反復,あるいは一定の収束基準を満たすまで,1,2ステップを反復
実装上の工夫など
雑感
- 以前も結構話題になっていたので,すでに読んでいる人も多い?
- 以前実装して実験を回してみましたが,実際SGDより遥かに高速に収束してました
- 証明を解釈する会開きましょう(白目)
Learning Multiple Tasks using Shared Hypotheses
概要
複数の関連する分類問題を同時に最適化するマルチタスク分類問題を考える.例として,個々人の受信メールから重要度の高いメールを抽出するタスクはマルチタスク問題として考えられる*1 *2.
上記のようにパーソナライゼーション等のタスクでは,タスク数は非常に多いが一人ひとりのデータ数が少ない場合が考えられる.この条件下では,タスク数より少ない数の学習器のみを用い,タスク間で学習器をシェアしながら学習を行う方が理論的にも実験的にもよりよい結果が得られる事を示した.
背景
- タスク毎のデータ量が少ない場合,十分な汎化性能を持つような学習は困難
- パーソナライゼーション等では一般的な現象
- 全タスクを一つのタスクと思って単一の学習器で学習する場合は,タスク間で異なる特性を捉えられず識別精度が悪化
- 中庸をとりたい,つまり複数のタスクで分類器を共有
- 分類器の学習に,複数タスクのデータを用いることが可能に
貢献
- 本問題設定におけるVC次元の上限・下限を導出
- VC次元を用いた汎化誤差上限を評価
- タスク数:多 仮説数:少 の時,各タスクで分類器を学習した場合より小さい汎化誤差上限で抑えられる
アルゴリズム
- 1. 各タスクのデータを学習用とバリデーション用に分割
- 2. 各タスクが用いる学習器をランダムに割り当て
- 3. 各学習器に割り当てられたタスクの全学習用データでの損失最小化問題を解き,学習器を更新
- 4. 各タスクのバリデーションデータに関して一番予測精度の高い学習器に割り当て直す
- 5. 一定の回数反復,あるいは一定の収束基準を満たすまで,3.4ステップを反復
- 6. 学習用とバリデーション用データを用いて各学習器を更新
雑感
- パーソナライゼーション系のマルチタスク学習には相当強そう
- タスクの分割が大雑把だったとしても上手く動きそうなのが素晴らしい
- 実装は簡単,背後の理論は複雑かつ盤石,と良い研究のお手本