タグ

ブックマーク / echizen-tm.hatenadiary.org (63)

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

    社内の有志で機械学習数学の勉強会をいくつかやっています(私以外の方が主催しているものもある)。とくに理系ではない方も参加されていますが、きちんと頑張ればだんだん機械学習ができるようになるということがわかってきたのでメモしておきます。 なお、機械学習をとりあえず実装するだけだったらもっと簡単に学ぶ方法もいろいろあり、今回はあくまで正攻法で機械学習を勉強する、という観点での書籍の選択となっています。急がば回れという言葉もあるように、焦って成果を求めないのであれば地道に頑張るほうが後々応用が効いて良いということもあります。 高専の数学 おそらく数学ができないという方は高校の数学あたりから理解が怪しいことになっていると思います。「高専の数学」は中学数学までの前提知識で読める教科書で、わかりやすい例題や理解の助けになる練習問題が多数用意されているため、きちんと問題を解いていけば無理なく高専の数学(

    文系でも機械学習がわかるようになる教科書 - EchizenBlog-Zwei
  • 社会は厳しい - EchizenBlog-Zwei

    社会が厳しいのでメモしておきます。 勤怠について 前職がブラックだったので精神状態があまりよくないです。毎日最低8時間は寝たいところです。充分な睡眠をとるためには定時帰宅が何より大切です。 今の環境では(ホワイトではあるのですが、何故か)残業が推奨されているのであまりよくないです。定時帰宅が徹底されているか、定時出社が要求されないか、そもそも勤怠管理がないような環境に興味があります。 とにかく安定した睡眠時間の確保は以降のあらゆることに優先します。 外出がつらい 外出すると疲れるので休日は家から一歩も出ない生活がしたいです。 興味があることについて 機械学習と簡潔データ構造に興味があります。ほかにもデータ構造とアルゴリズムまわりのことは大体好きです。今の環境ではあんまりこういう話ができる人がいないので悲しい限りです。(話せるよ、というひと一緒に勉強会しましょう) 論文読んだり実装したりする

    社会は厳しい - EchizenBlog-Zwei
    yuiseki
    yuiseki 2015/11/11
  • 実装が簡単で高性能な線形識別器、AdaGrad+RDAの解説 - EchizenBlog-Zwei

    機械学習では、データがどのクラスに属するかを識別するという問題が基的です。 この識別問題は線形識別器というモデルを使うことで解くことができます。 この記事では、実装が簡単で高性能な線形識別器、AdaGrad+RDAの解説を行います。 AdaGrad+RDAの詳細な解説は以下の論文を参考にしてください。 http://www.magicbroom.info/Papers/DuchiHaSi10.pdf こちらはAdaGrad+RDAの実装例です。 http://d.hatena.ne.jp/echizen_tm/20140726/1406376207 識別問題は、通常データを2つのクラスに分類します。どうやって分類するかというと、線形識別器が正の値を返したか、負の値を返したかでクラスを分けます。 具体的には、線形識別器は以下の形式をしています。 y = Σ(x_i * w_i) データを表

    実装が簡単で高性能な線形識別器、AdaGrad+RDAの解説 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2014/09/15
  • 大学の微積を復習したい人は"基礎からの微分積分(コロナ社)"が良さそう - EchizenBlog-Zwei

    "基礎からの微分積分"という教科書を読んでいたのですが、良さそうだったので紹介しておきます。 書は高校の数学がわかっている人であれば問題なく読める微分積分の教科書です。大学できちんと数学の授業を受けなかった人の自習用に、または応用上微分積分の知識が必要な人の復習用に良い教科書であると思います。 書の良い点は以下のとおりです。 必要最小限の内容に絞って記述されているので、通読しやすい。 例題が多いため定理の意味を具体例で確認できる。 練習問題・章末問題全てに解説が付いている(全180ページの内40ページが解説に割かれている)。 前の章で示された事実を用いて、後の章の問題を解くようになっているので身につけた内容がすぐに生かせてモチベーションを維持しやすい。 ニュートン法やラグランジュの未定乗数法、ヤコビ行列など工学系で重要な内容を例題として用いている。 上に挙げた部分でピンときた人にオスス

    大学の微積を復習したい人は"基礎からの微分積分(コロナ社)"が良さそう - EchizenBlog-Zwei
    yuiseki
    yuiseki 2014/07/13
  • 基礎から深層学習まで。おそらく初心者向けな「フリーソフトではじめる機械学習入門」を読んだ - EchizenBlog-Zwei

    おそらく初心者向けな「フリーソフトではじめる機械学習入門」を読んだ。 おそらく、というのは多少説明が足りない箇所があるなので、そのへんが受け入れられない人もいるかなあ、と思ったので。 以下、読んだ感想を書いておくので購入を検討している人は参考にどうぞ。 書の扱う範囲 "データマイニングの基礎"と"はじめてのパターン認識"の内容を合わせたような感じ。決定木やルール学習などの古典的な手法からはじまって識別関数・識別モデル・生成モデルと一通り扱っている。またグラフィカルモデルや系列ラベリングなども少々。さらに多腕バンディット問題、POMDP、深層学習など。新しめの話題も扱っている。 書の特色 1章あたり10-20ページと少なく、有名どころの手法に絞って解説してあるので最初から通して読むのが苦にならない。"はじめてのパターン認識"も良い入門書だけど、あれを通して読むのは重い、というひとはこち

    基礎から深層学習まで。おそらく初心者向けな「フリーソフトではじめる機械学習入門」を読んだ - EchizenBlog-Zwei
    yuiseki
    yuiseki 2014/04/03
  • 手元に置いておくと安心できる、情報系の人向けな日本語の本のリスト - EchizenBlog-Zwei

    最近、人にを薦める事が多くなった。とりあえずこの辺を読むといいですよ的なリストを作っておくと便利だと思ったので作ることにした。 以下、「事前知識のいらない入門」「事前知識はいらないけど格的な」「事前知識がないと何言ってるかわからないけど有益な情報が満載な」の3つにわけて列挙する。 事前知識のいらない入門 数式少なめ、脳負荷の小さめなをいくつか。何をやるにしてもデータ構造、アルゴリズム、数学はやっておくと幸せになれるよ。 情報検索と言語処理 データマイニングとか自然言語処理とかやりたい人にはとりあえずこれ。さすがに古い話が多くなってきたのでそろそろ新しい入門用情報検索がでないかなあと思っている。 図解・ベイズ統計「超」入門 伝説のベイジアン先生がベイズの基礎を教えてくれる。ベイズやりたい人はこれ。 珠玉のプログラミング データ構造とかアルゴリズムとかの考え方の基礎を教えてく

    手元に置いておくと安心できる、情報系の人向けな日本語の本のリスト - EchizenBlog-Zwei
    yuiseki
    yuiseki 2014/02/24
  • 固有値について理解を深めるために「基礎線形代数と固有値問題」を読んだ - EchizenBlog-Zwei

    @uchumikさんから「基礎線形代数と固有値問題」がいけているという情報を得たので速攻で購入して読んでいた。ざっと読み終えた(6章除く)ので感想を書いておく。 全6章で構成されている。1章がベクトル。2,3章が行列。4,5章が固有値。6章が適用事例集。5章まで読むとSVD(特異値分解)が何をやっているのかが理解できる。そして6章はラグランジュの未定乗数法や主成分分析、マルコフ過程など固有値・固有ベクトルの応用例が豊富に解説されている。私は5章まで一通り読んで6章は興味あるところだけ拾い読みした(弾性体とかはとりあえずは興味の範囲外なので・・・)。 6章に限らずそれぞれの概念に具体的な適用例が添えてあるので「結局これ何に使うの?」という感じにならないのが最大の特徴。応用中心だが定理の証明もきちんと書いてあるし、式変形に用いた既出の事項がある場合はカッコでどこを参照すればよいか書いてある。

    固有値について理解を深めるために「基礎線形代数と固有値問題」を読んだ - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/12/30
  • 伝説のベイジアン先生にベイズの基礎を教えてもらえる「図解・ベイズ統計「超」入門」を読んだ - EchizenBlog-Zwei

    「図解・ベイズ統計「超」入門 あいまいなデータから未来を予測する技術」というを読んだ。 社会人のアヤとケンが社内研修で伝説のベイジアン先生からベイズの基礎を教わる、という設定の会話形式でベイズについて書かれた入門書。社内研修でベイズのプロから指導を受けるとかどんだけ恵まれてるんだ。 アヤさんは大学で統計をやったが数学は詳しくないという設定。ただ時々鋭い質問をする。また統計に詳しいイケメン兄がいる。 ケンくんは知識は全くなく最後まで「わかりません」を連発する。彼女持ちのリア充。 伝説のベイジアン先生は社内研修の講師。ベイズの基礎を豊富な具体例で教えてくれるまじぱない先生。あまりにもいけてるので数カ月後に転職しそうな感じ。 内容は1章が導入、2章が同時確率・条件付き確率、3章がベイズの定理、4章がベイズの定理を用いた事後確率計算の具体例、5章が事例の追加による事前確率の更新(具体例としてナイ

    伝説のベイジアン先生にベイズの基礎を教えてもらえる「図解・ベイズ統計「超」入門」を読んだ - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/12/27
  • まったく最小二乗法は最高だぜ!な「イラストで学ぶ機械学習」を読み終えた。 - EchizenBlog-Zwei

    イラストで学ぶ機械学習」という機械学習を読んだので感想を書いておく。 なお書にはMatlabのコードが書いてある場合があるけど、Matlabに詳しくないので読み飛ばした。 対象となる読者 あくまで私の主観だけど、以下のような人が読むと良さそうな感じ。 ・機械学習の基礎は知っている(パーセプトロンくらいは実装できる) ・機械学習の論文に出てくる用語が理解できる ・確率の基礎は知っている(条件付き確率とか、周辺確率とか) ・最適化の基礎は知っている(ラグランジュの未定乗数法がわかる) ・行列の演算がわかる(これはわからなくても適当に読み飛ばせば大丈夫かも) ・機械学習で知っておいたほうが良いことを手早く把握したい ・まったく識別関数は最高だぜ!と思っている ・損失関数について理解を深めたい ・正則化について理解を深めたい ・次元削減について理解を深めたい ・転移学習について理解を深めた

    まったく最小二乗法は最高だぜ!な「イラストで学ぶ機械学習」を読み終えた。 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/10/14
  • 多変量(多次元)正規分布のKLダイバージェンスの求め方 - EchizenBlog-Zwei

    機械学習界隈では多変量正規分布のKLダイバージェンスの導出は自明らしく、とくに説明もなく「はいこうなりますね〜簡単ですね〜ははは〜」みたいな感じで軽く流されて死にそうになる。 軽く流されると私のように死んでしまう人もいるかもしれないので導出方法をメモしておく。 前準備 KLダイバージェンスは分布Pに対して分布Qがどれだけ近いかを表し、定義は以下のとおり。 KL(P(x) || Q(x)) = ∫P(x) log(P(x) / Q(x)) dx = ∫P(x) log(P(x)) dx - ∫P(x) log(Q(x)) dxまた多変量正規分布の定義は以下のとおり。 P(x | μ, Σ) = ((2π)^d * |Σ|)^(-1/2) * exp(-1/2 * (x - μ)T Σ^-1 (x - μ)) μ: 平均(d次元(縦)ベクトル) Σ: 共分散行列(d次正方行列) x: データ点

    多変量(多次元)正規分布のKLダイバージェンスの求め方 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/06/01
  • エントロピーレート(確率過程におけるエントロピーの増加の割合) - EchizenBlog-Zwei

    情報理論でエントロピーといえば確率変数が持つ情報量の期待値のこと。例えば 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ビットでこの分布から生成されたデータを表現できる。 では確率変数の列を表現するには平均何ビット必要だろうか。言い換えると確率変数の列にデータを追加するには平均何ビット必要だろうか。これはエントロピーレートという概念で説明できる。 実はエントロピーレートをよくわかっていなかったのだけど、最近になって理解したのでメモしておく。 エントロピーレートとは確率変数列に確率変数を1つ追加したときに増える情報量の期待値のこと。 まず前提として確率過程として、定

    エントロピーレート(確率過程におけるエントロピーの増加の割合) - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/04/22
  • Googleの新しい圧縮アルゴリズムZopfliについて調べた。 - EchizenBlog-Zwei

    Googleの新しい圧縮アルゴリズムZopfliについて調べたのでメモしておく。 Compress data more densely with Zopfli - Google Developers Blog deflateアルゴリズム zopfliはdeflateアルゴリズムに基づいた圧縮ライブラリ。deflateアルゴリズムはデータをLZSSというLZ77を改良した圧縮法で圧縮し、その後ハフマン符号で符号化したもの。 deflateアルゴリズムの実装としてはzlibやgzipがある。zlibとgzipの違いはヘッダとフッタの持っている情報。 使ってみる googlecode(http://code.google.com/p/zopfli/)から取ってくる。 $$ git clone https://code.google.com/p/zopfli/ $$ cd zopfli $$ ma

    Googleの新しい圧縮アルゴリズムZopfliについて調べた。 - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/03/03
  • 「入門 機械学習」を献本していただきました - EchizenBlog-Zwei

    「入門機械学習」を献していただきました。ありがとうございました。 というわけで早速読み終わったので感想を書いておく。 機械学習の入門書ではない 書はタイトルから連想されるような機械学習に入門するような内容は書かれていない。一切数式は登場せずアルゴリズムはすべてブラックボックス化されている。では書はダメななのかというとそんなことは全くない。少なくとも「入門 機械学習」というタイトルに興味をもって書を手にとった人にとっては大変有益なだと思う。 大きなデータを扱って何かしたい人が最初に読むべき 繰り返すが書は機械学習の仕組みについては書いていない。仕組みはブラックボックスとして割り切ることで従来の機械学習の入門書が触れていない部分を非常に大きく扱っている。それは何かというと「汚いデータからどうやって機械学習の入力データを作るか」「機械学習の手法をどのように選択するか」「機械学習

    「入門 機械学習」を献本していただきました - EchizenBlog-Zwei
  • 「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei

    「高速文字列解析の世界」という大変すばらしいが発売された。わりと敷居が高いではあるので読む前に知っておくとよさそうなことを書いておく。 「高速文字列解析」とは 書でいう高速文字列解析というのは主に2つのことを指している。ひとつはデータを圧縮して小さくしてディスクよりメモリ、メモリよりキャッシュというようにより高速な記憶装置で扱いましょう、という話。もうひとつはデータ構造を工夫することで複雑な操作もそこそこ高速に扱えますよ、という話。つまり「圧縮」の話と「効率的なデータ構造」の話があると考えておくと良い。 キーワードは3つ オビにも書いてあるけれど、書が主に扱うのは「BWT」「簡潔データ構造」「ウェーブレット木」の3つ。具体的には「BWT」が「圧縮」に関わっていて「ウェーブレット木」が「効率的なデータ構造」に関わっている。「簡潔データ構造」は基的な道具として書の色々なところで出て

    「高速文字列解析の世界」を読む前に知っておくと良いこと - EchizenBlog-Zwei
    yuiseki
    yuiseki 2013/01/09
  • 入門確率過程を読み直し - EchizenBlog-Zwei

    「ルベーグ積分30講」を15講まで読んだのでルベーグ測度について概観することができた。理解の程度を把握するため松原望先生の「入門確率過程」を読み直してみた。 まずは書そのものの感想。「入門確率過程」はわりと説明がふわっとしているので雰囲気は掴みやすいが細かいことが気になる人には向かない気がする。 で内容。以前読んだときは第7章「極限定理の基礎」で詰まってしまったが、今回は第7章を読みきることができた。通常の測度空間X(B,μ)に対してμ(B)=1という縛りを入れたものが確率空間とのこと。測度空間の枠組みで確率を捉えておくと極限が扱えるのが良い点。第7章後半ではいろいろな収束について証明などがあって、そこで早速、測度論的な極限の考えが使われていた。というか収束にいろいろ種類がある事自体初耳。概収束とか、確率収束とか。。 「ルベーグ積分30講」でいうと11講の内容が特に重要な気がした。ボレル

    入門確率過程を読み直し - EchizenBlog-Zwei
  • 十分統計量(sufficient statistics) - EchizenBlog-Zwei

    最尤推定やEMアルゴリズムでは十分統計量(sufficient statistics)という概念が出てくる。特にEMアルゴリズムを実装する場合には十分統計量という考えを知っておいた方が良い。というわけで十分統計量についてメモしておく。 例えば入力データの平均値を計算する場合、perlで以下のように書ける。 my @a; while (<>) { push(@a, int($_)); } my $s = 0; foreach (@a) { $s += $_; } print $s / @a;このコードは非効率な点がある。何故なら平均値を計算するには入力データの合計値があれば十分なので、入力データが与えられる度に$sに値を足し込んでいけばよく、一度全データを配列@aに持たせる必要はない。つまり my $s = 0; my $z = 0; while (<>) { $s += int($_);

    十分統計量(sufficient statistics) - EchizenBlog-Zwei
  • オンラインEM(OnlineEM)論文 - EchizenBlog-Zwei

    オンラインEMアルゴリズムの論文を読んだ。というか結構前に読んでいたのだが、何かと忙しくて記事にするのを忘れていた。そろそろ私の頭からも消えかかっていたので忘れないうちにメモ。 Online EM for Unsupervised Models オンラインEM(OnlineEM)はEMアルゴリズムのオンライン版。オンラインアルゴリズムとはデータ全体をメモリに乗せずに、データを一件ずつ使ってパラメータを順次更新していく方法。なので一般にオンラインアルゴリズムではメモリ効率が良くなる。 しかしオンラインEMの場合は状況が異なる。EMアルゴリズムではパラメータ推定の際に十分統計量とよばれる値を保持しておけばよく、そもそもデータ全体を保持する必要がない。 では何が嬉しいのか、というとオンラインEMは通常のEMに比べて収束が早いという点。ただ論文の実験結果をみると、精度では来のEMには及ばないみた

    オンラインEM(OnlineEM)論文 - EchizenBlog-Zwei
  • EMアルゴリズム - EchizenBlog-Zwei

    EMアルゴリズムについてメモ。 最尤推定とは対数尤度Σ_x logP(x;θ) をパラメータθについて微分し ∂Σ_x logP(x;θ)/∂θ = 0を満たすθを見つけること。 データに観測できない変数(潜在変数)がある場合はEMアルゴリズムを使う。例えばcを潜在変数とすると対数尤度は Σ_x E[logP(x, c;θ)] = Σ_x { Σ_c P(c|x;θ')logP(x, c;θ) }というように期待値を使って表現される。この期待値を使った対数尤度はQ(θ, θ')関数と呼ばれる。 EMアルゴリズムはEステップとMステップからなり、E、M、E、M・・・というように繰り返して適用していく。 EステップではP(c|x;θ')を計算する。この計算に必要なθ'は一つ前のMステップで求めた値を使う。初回は適当に決めた初期値を使うが、初期値によっては局所解に収束してしまうので注意。 Mステ

    EMアルゴリズム - EchizenBlog-Zwei
  • ウェーブレット木の効率的で簡単な実装 "The Wavelet Matrix" - EchizenBlog-Zwei

    久しぶりに論文を読んだ。 http://www.dcc.uchile.cl/~gnavarro/publ.html The Wavelet Matrix Claude & Navarro; SPIRE2012 "The Wavelet Matrix"はSPIRE2012のNavarro無双のうちの一。タイトルからするとウェーブレット木の拡張のように思える。 機能としてはウェーブレット木と同一でデータ列に対するaccess,rank,selectを提供する。しかし実装は既存手法と比べて効率的でしかも簡単になっている。 これまでにウェーブレット木の実装としてはノードをポインタでつないだ普通の木として実装する方法(Standard Wavelet Tree. 論文のAlgorithm 1)と、木の階層ごとにノードをつなげた配列で表現する方法(Levelwise Wavelet Tree. 論文

    ウェーブレット木の効率的で簡単な実装 "The Wavelet Matrix" - EchizenBlog-Zwei
  • 「4人のロシア人の方法」で編集距離を高速化する - EchizenBlog-Zwei

    ちょっと前に「4人のロシア人の方法(Method of Four Russians)」というのを論文で見かけて面白かったので紹介しておく。 簡単に言ってしまうと、ある処理を高速化したい時にデータ全体を小さなブロックに分割してブロック単位での結果を事前に計算したテーブルで持っておくよ、というアルゴリズム。 名前は知らなくてもアルゴリズム自体は知ってる人は多いかもしれない。 Method of Four Russians - Wikipedia, the free encyclopedia アルゴリズム自体は汎用的なものだが編集距離の高速化を例として説明するのが一般的なようなのでそれに倣う。 文章で書くとごちゃごちゃするのでスライドで。もっふる。 http://www.scribd.com/doc/94190119/MoFR ※追記:↑のスライド、正直自分でもわかりやすいとは思えないので余裕が

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