タグ

ブックマーク / hillbig.cocolog-nifty.com (8)

  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
  • 博士生活振り返り - DO++

    ずっとドタバタしていたのですが、ようやく新しい生活のリズムがでてきました。 無事、情報理工学の博士号を取得して卒業し、4月からPreferred Infrastructureでフルタイムで働いています。 研究方面からのお誘いもいろいろあったのですが、会社一に専念しております。 ただ、研究活動はこれからも会社のバックアップのもとしていきます。 また、3月に結婚もしました。 年明けから博士卒業、結婚の二柱に加えてNLPチュートリアル、会社の仕事とテンパってました。 なんとか体を壊さず乗り越えられたのはみなさんの助けです。 しかし、喉元過ぎると熱さ忘れるという言葉通り、「これはもうだめだろう」と追い詰められていた時の気持ちを既に忘れつつあります。 誰かの参考になるかもしれませんので、この時の気持ちも含め博士3年過ごして感じたことや、研究の話とかを思い出せる範囲で書いてみます。 --- 私が修

    博士生活振り返り - DO++
  • NLP2010 言語処理学会チュートリアル - DO++

    今日から開催されている言語処理学会のチュートリアルで ”超高速テキスト処理のためのアルゴリズムとデータ構造” というタイトルで発表させていただきました。 チュートリアル資料はこちら(pdf)です。(出典などは適宜追加します) 今までいろいろなところで話してきた、オンライン学習、文字列、疎ベクトルデータ構造を最新の話を追加して、さらに乱択化(Hash Kernel, 乱択化SVD)を解説しています。 発表自体は途中でブルースクリーンが出るということもありましたが、なんとか終えられてよかったです。 これに付随していろいろツールを公開する予定だったがまにあわなかった。そのうち公開します

    NLP2010 言語処理学会チュートリアル - DO++
  • Top-k文書列挙問題 - DO++

    いろいろとありまして去年読んだ論文で面白かったものランキングとか書けなかったのが残念ですが、もしあげるとしたら次の論文は入れると思います(知ったのは年明けだったけど)。 "Space-Efficient Framework for Top-k String Retrieval Problems", FOCS 2009, Wing Kai Hon, Rahul Shah and Jeffrey Scott Vitter (pdf) 扱っているのは次のような問題です(説明のため来のと言い換えています) n個の葉からなる木が入力として与えられ,各葉には色(1以上d以下の整数とします)が与えられています. この時、木中の任意の節点と正整数kがクエリとして与えられたときに、その節点の子孫の中で出現回数が大きい色を順にk個答えよという問題です。 簡単に思いつくのは,各節点に適当な個数(d)の答えをあ

    Top-k文書列挙問題 - DO++
  • トーナメントと多値分類 - DO++

    今やってる研究で、トーナメント問題を調べる機会がありました。 トーナメントは私も知らなかったのですが、勝者や順位を決める方式のことを指し、いわゆる二人ずつ戦って生き残っていく方式はノックアウトトーナメントといわれるそうです(wikipedia)。 #10000人戦う時にノックアウトトーナメントでは何回試合が行われるかというのはよくある質問ですね。 で、このトーナメント方式というのは調べてみると非常に様々なものがあります 例えばスイス式トーナメントは、最初はランダムな組み合わせで対戦、次は勝者同士と敗者同士、その次は全勝・1勝1敗・2戦全敗のそれぞれが・・というふうに同じ成績の人同士で戦う方式です。レーティングを計算して、レーティングが近いもの同士を戦わせるような拡張もあります。近いのは将棋でやってるようなものですね。 利点は全ての人が同じ試合数で戦い、また厳密な順位が決めやすいことがありま

    トーナメントと多値分類 - DO++
  • 全文検索エンジン Miniseをリリース + WEB+DBで全文検索の特集記事 - DO++

    全文検索エンジンの Minise: MIni Search Engineをリリースしました. このエンジンは全文検索の基的な機能をサポートしたもので,索引手法は逐次検索(索引無),N-gram,転置ファイル,接尾辞配列をサポートしており,そこそこ最適化を行ってます.Wikipedia語版を実験で使ったもので20万文書で構築時間が500秒前後,検索時間が一クエリあたり数msとなっています. BSDライセンスで公開しています. 割りきって,機能を絞ってシンプルな構成にしていますので改造したりしやすいようになっています。まだ、ドキュメントはないですが、C++ APIとして利用しやすいようにもなっていますので、研究用途などで新しい索引やランキングとかでの利用も想定しています(実際に研究用で使ってます). --- 今回の全文検索ライブラリを開発する機会になったのが,私が担当した今月号のWEB+

    全文検索エンジン Miniseをリリース + WEB+DBで全文検索の特集記事 - DO++
  • オンラインEMアルゴリズム - DO++

    EMアルゴリズム(Expectation Maximizationアルゴリズム、期待値最大化法、以下EMと呼ぶ)は、データに観測できない隠れ変数(潜在変数)がある場合のパラメータ推定を行う時に有用な手法である。 EMは何それという人のために簡単な説明を下の方に書いたので読んでみてください。 EMのきちんとした説明なら持橋さんによる解説「自然言語処理のための変分ベイズ法」や「計算統計 I―確率計算の新しい手法 統計科学のフロンティア 11」が丁寧でわかりやすい。 EMは教師無学習では中心的な手法であり、何か観測できない変数を含めた確率モデルを作ってその確率モデルの尤度を最大化するという枠組みで、観測できなかった変数はなんだったのかを推定する場合に用いられる。 例えば自然言語処理に限っていえば文書や単語クラスタリングから、文法推定、形態素解析、機械翻訳における単語アライメントなどで使われる。

    オンラインEMアルゴリズム - DO++
  • 大規模データを基にした自然言語処理 - DO++

    人工知能問題研究会 (SIG-FPAI)でタイトルの題目で一時間ほど話してきました。 発表資料 [pptx] [pdf] 話した内容は - 自然言語処理における特徴ベクトルの作り方と、性質 - オンライン学習, Perceptron, Passive Agressive (PA), Confidence Weighted Learning (CW) 確率的勾配降下法 (SGD) - L1正則化, FOLOS - 索引を用いた効率化, 全ての部分文字列を利用した文書分類 で、スライドで70枚ぐらい。今までの発表とかぶっていないのはPA CW SGD FOLOSあたりでしょうか オンライン学習、L1正則化の話がメインになっていて、その両方の最終形の 確率的勾配降下法 + FOLOSの組み合わせは任意の損失関数に対してL1/L2正則化をかけながらオンライン学習をとても簡単にできるという一昔前

    大規模データを基にした自然言語処理 - DO++
  • 1