計算機科学

効率的に論文を読む力を得るための方法、あるいはラノベの有益性について。

研究に直接関係ないタイプの労働をしていると、先端の研究を追いかけるのが困難になってきます。 なんといっても論文を読む時間がとれないので有識者の記事やらスライドやら書籍やらに頼ることになるのですが、とはいえ1次ソースであるところの論文を確認し…

個人的に参照することの多い機械学習の本

機械学習の本をおすすめする記事をいろいろ書いてきたけど、純粋に自分が活用している本について書いたことがなかった気がしたので書いておきます。必ずしもおすすめではないかもしれません。ベイズ1冊、DL1冊、凸2冊の計4冊。

文系でも機械学習がわかるようになる教科書

社内の有志で機械学習や数学の勉強会をいくつかやっています(私以外の方が主催しているものもある)。とくに理系ではない方も参加されていますが、きちんと頑張ればだんだん機械学習ができるようになるということがわかってきたのでメモしておきます。 なお…

"トピックモデルによる統計的潜在意味解析"を読んでLDA(Latent Dirichlet Allocation)を実装しました

"トピックモデルによる統計的潜在意味解析"という有益な書物が発売されたので読んでみました。 それなりに高度な話題を簡潔に解説した素晴らしい本で、これを読んだことでよくわかっていなかったCollapsed Gibbs Sampling版のLDAを実装することができました。…

AdaGradよりもいけていると噂のオンライン学習器Adamを実装しました

AdaGradよりもいけていると噂のオンライン学習器Adamを実装しました。 実装がとても簡単で、ハイパーパラメータも論文に推奨値が書いてあるのが良いですね。 持っておかないといけないパラメータの数は(たぶん)AdaGradと同じです。https://github.com/echize…

実装が簡単で高性能な線形識別器、AdaGrad+RDAの解説

機械学習では、データがどのクラスに属するかを識別するという問題が基本的です。 この識別問題は線形識別器というモデルを使うことで解くことができます。 この記事では、実装が簡単で高性能な線形識別器、AdaGrad+RDAの解説を行います。AdaGrad+RDAの詳細…

AdaGrad+RDAを実装しました。

AdaGrad(Adaptive Gradient)というオンライン学習のアルゴリズムを実装しました。 https://github.com/echizentm/AdaGrad 論文: Adaptive Subgradient Methods for Online Learning and Stochastic Optimization(http://www.magicbroom.info/Papers/DuchiHaS…

簡潔データ構造の入門の入門

最近、簡潔データ構造(Succinct Data Structure)がじわじわ人気が出てきているように感じるので入門の入門、くらいの記事を書いておく。 この記事では簡潔データ構造において最も基本的なデータ構造である完備辞書(Fully Indexable Dictionary)について説明…

文法圧縮を使った完備辞書(簡潔ビットベクトル)を作った

@marugorithmさんの文法圧縮の解説資料(http://research.preferred.jp/2014/03/nlp2014_grammar/)があまりにも有益すぎて感動したので、文法圧縮を使った完備辞書(簡潔ビットベクトル)を作った。 文法圧縮の部分は実装の簡単さからRe-Pairアルゴリズムを使っ…

「木構造と自然数の重複あり集合は等価だよね」というはなし

「木構造と自然数の重複あり集合は等価だよね」というはなしをする。簡潔データ構造な人向けに言うとLOUDSの話。 とはいえこの記事は特に簡潔データ構造の知識を要求しない。データ構造とか情報量とかに興味がある人全般を対象としている。 ※簡潔勢にとって…

jumbled pattern matchingというのを知った

Binary Jumbled Pattern Matching via All-Pairs Shortest Paths(http://arxiv.org/pdf/1401.2065v1.pdf)という論文がLOUDS論文をreferしていて興味があったので読んでいた。jumbled pattern matchingという問題の時間計算量を改善したよ、という話だった。 …

ウェーブレット行列のrankを2倍高速化する案について著者からコメントをいただいた

一年くらい前にウェーブレット行列のrank計算を2倍高速化する方法を思いついた。 詳細はDSIRNLP発表資料(http://ja.scribd.com/doc/102636443/Wavelet-Matrix)のP.56以降。 本当にイケているのか自信がなかったのでウェーブレット行列論文のfirst authorであ…

多変量(多次元)正規分布のKLダイバージェンスの求め方

機械学習界隈では多変量正規分布のKLダイバージェンスの導出は自明らしく、とくに説明もなく「はいこうなりますね〜簡単ですね〜ははは〜」みたいな感じで軽く流されて死にそうになる。 軽く流されると私のように死んでしまう人もいるかもしれないので導出方…

エントロピーレート(確率過程におけるエントロピーの増加の割合)

情報理論でエントロピーといえば確率変数が持つ情報量の期待値のこと。例えば P(x1) = 1/2, P(x2) = 1/4, P(x3) = 1/4という分布があったらエントロピーは 1/2 * lg2 + 1/4 * lg4 + 1/4 * lg4 = 1/2 * 1 + 1/4 * 2 + 1/4 * 2 = 3/2 = 1.5なので平均1.5ビット…

Googleの新しい圧縮アルゴリズムZopfliについて調べた。

Googleの新しい圧縮アルゴリズムZopfliについて調べたのでメモしておく。 Compress data more densely with Zopfli - Google Developers Blog

Perlで完備辞書(Fully Indexable Dictionary)のモジュールを書いた

ウェーブレット木/行列など「高速文字列解析の世界」で扱っているデータ構造やアルゴリズムは完備辞書(Fully Indexable Dictionary)を基本的な道具として用いるものが多い。 とはいえ実用的な完備辞書を一から作るのは大変なので、高速文字列本を読んで「ち…

「入門 機械学習」を献本していただきました

「入門機械学習」を献本していただきました。ありがとうございました。 というわけで早速読み終わったので感想を書いておく。

「高速文字列解析の世界」を読む前に知っておくと良いこと

「高速文字列解析の世界」という大変すばらしい本が発売された。わりと敷居が高い本ではあるので読む前に知っておくとよさそうなことを書いておく。

DSIRNLP#03 「ウェーブレット行列 最速攻略」発表しました。

DSIRNLP#03 で「ウェーブレット行列 最速攻略」の発表をしました。 詳しくは資料を見ていただけると良いです。 台風にぶつかってしまいどうなることかと思いましたが、@overlastさんの配慮で無事発表できました。ありがとうございました。 それから準備あま…

DSIRNLP#03 ウェーブレット行列 最速攻略~予告編~

9/30(日)に開催予定のDSIRNLP#03で発表予定の「ウェーブレット行列 最速攻略」の予告編資料を作成したので公開しておきます。 ウェーブレット行列とはそもそもどんなものなのかを解説した資料です。この資料によってウェーブレット行列に関心をもつ人が増え…

DSIRNLP#03でウェーブレット木について発表しません!

9/30(日)に開催予定のDSIRNLP#03でウェーブレット木について発表しません。

話題のウェーブレット行列を組み込んだ検索ライブラリShellinfordのPerlモジュールを作った

ごく一部で話題沸騰中のまじぱないデータ構造、ウェーブレット行列を用いた検索アルゴリズムであるFM-Index。このFM-Indexは以前私が実装したShellinfordというライブラリから利用可能になっている。さらにここで用いたウェーブレット行列にはオリジナルには…

ウェーブレット行列を用いたFM-Indexを大幅に高速化した

なんかすごい高速化できた気がする。

ウェーブレット行列とウェーブレット木の性能比較をしてみた

FM-Indexで用いる簡潔データ列としてウェーブレット行列とウェーブレット木のどちらがいけてるのかを調べてみた。

ウェーブレット行列(Wavelet Matrix)を用いたFM-Indexを実装しました

話題のウェーブレット行列(Wavelet Matrix)を自作のFM-Indexライブラリ、shellinfordに組み込んでみた。 ウェーブレット行列はウェーブレット木と互換性があるので、ウェーブレット木の代表的な適用例であるFM-Indexでも当然利用可能。 というわけでとりいそ…

ウェーブレット木の効率的で簡単な実装 "The Wavelet Matrix"

久しぶりに論文を読んだ。 http://www.dcc.uchile.cl/~gnavarro/publ.html The Wavelet Matrix Claude & Navarro; SPIRE2012 "The Wavelet Matrix"はSPIRE2012のNavarro無双のうちの一本。タイトルからするとウェーブレット木の拡張のように思える。 機能と…

「4人のロシア人の方法」で編集距離を高速化する

ちょっと前に「4人のロシア人の方法(Method of Four Russians)」というのを論文で見かけて面白かったので紹介しておく。 簡単に言ってしまうと、ある処理を高速化したい時にデータ全体を小さなブロックに分割してブロック単位での結果を事前に計算したテーブ…

【たのしい自然言語処理シリーズ】サザエさんにじゃんけんで50%勝つ方法

最近サザエさんとキュアピースのじゃんけん対決が話題になっている。 じゃんけんポンで日曜日 またこれに関連して「サザエさん ジャンケン学」というサイトが注目を集めている様子。 サザエさん ジャンケン学 このサイトによるこれまでの予測的中率は44.7%…

FM-Indexによる文書検索ライブラリShellinfordにAutotoolsを導入してみた

先日公開したShellinfordという文書検索ライブラリにAutotoolsを導入してみた。 ShellinfordはFM-Indexというデータ構造を採用している。このデータ構造は文書をBurrows-Wheeler変換してウェーブレット木でインデックスすることでSuffixArrayと同等の機能を…

たぶん30分でよくわかるLOUDS入門

IME本の効果でLOUDSの認知度が高まってきた気がする。が、一方で難しいという意見もチラホラある様子。 というわけでLOUDSをどこまでわかりやすく説明できるか?ということに挑戦したくなったので記事を書いてみるよ。