機械学習周りのHadoop上のフレームワーク

Hadoop 上の機械学習周りのフレームワークについて調べて簡単にまとめました。

www.slideshare.net

この程度の記事ならもはや Twitter でいい気もしますが……。 こっちのほうが流れないので。

隠れマルコフモデルのスライド(+おまけ)

以前研究室のゼミで作った資料を SlideShare にアップロードしました。

おかしなところなどありましたら、指摘していただけると幸いです。


おまけ

続きを読む

HTM 関連の文献まとめ

概要

HTM (Hierarchical Temporal Memory) は、Jeff Hawkins らが提唱した、大脳新皮質をモデル化したとされるアルゴリズムの総称です。
ベイジアンネットワークの一種である Zeta 1 アルゴリズムと、その後継である Cortical Learning Algorithm があります。 Jeff Hawkins は CLA が Zeta 1 の後継だという主張をしていますが、背後にある理論には結構隔たりがあるように感じます。
なお、ニューラルネットワークの一種らしいですが、Deep Learning とは別物です。

CLA のソースコードこちらで公開されています。

論文

Zeta 1 に関するもの

CLA に関するもの

SDR 関連

Spatical Pooling 関連

Temporal Pooling 関連

応用関連

スライド

  • Real-Time Streaming Data Analysis with HTM
    CLA と LSTM の比較等が行われた "Continuous online sequence learning ..." のスライド版です。論文にない図が追加されていたりもします。

サイト

  • NuPIC Wiki
    CLA の実装が行われている NuPIC の wiki ですが、CLA の理論関係なども載っています。HTM の研究をするなら目を通しておいたほうがよいかもしれません。
  • HTM theory reading list
    Numenta 公式の HTM Forum に載っている、英語のリーディングリストです。随時更新されているようなので、ときどきチェックすることをおすすめします。
  • HTM Cheat Sheet
    CLA の基本的な知識や、実装に関する情報がまとまっています。

書籍

  • On Intelligence
    HTM の生みの親である Jeff Hawkins が記した書籍です。初版は 2005 年と少し古いですが、読んでも損はしないと思います。
    邦訳も出ていますが2016年6月現在絶版になっているらしく、Amazon で中古本の売値が 9000 円を超えるという事態になっています。

動画

  • HTM School
    Numenta 公式が出しているシリーズです。CLA に用いられている SDR や、Encoder 等について、分かりやすく説明してくれています。CLA をこれから勉強しようという人なら、まずはこれから見ることをおすすめします。

おわりに

記事を読んで気になった点や、他に読んでおくべき文献などありましたら、コメントで教えていただけると幸いです。

「ラフスケッチの自動線画化」論文を読んでみた

gigazine.net

ちょっと前にネットを賑わわせたこの論文を読んだので、おもしろいなと思ったところをまとめていこうと思います。


まず、この論文にはアプリケーション(応用)として注目すべき点と、それを可能にした技術的なポイントがあるので、それを整理したいと思います。

アプリケーションとして

  1. 十分実用的な線画化ができているように見える
    • ユーザーテストで商業ソフトによるものを圧倒
  2. 任意のサイズのラスター画像を扱える
    • 既存の線画化技術の多くはベクター画像しか扱えない
    • 一般的な画像認識タスクに用いられる CNN では入力サイズが固定されているものが多い
  3. 閾値を手動で設定する必要がない
    • 商業ソフトのものは閾値を手動で調整する必要があった
  4. 実時間での処理が可能(?)
    •  1024\times1024 の画像に対し、GPU(TITAN X)を使えば 0.4 秒ほど
    • ただし、CPU だと 3.0GHz の 8 コアでも 20 秒程度

技術的な点

  1. All CNN[Springenberg 14] を使い、任意のサイズの画像を扱うことを可能にした
  2. 学習に効果的なデータセットを作成した

思いつく限り並べてみました。

やっぱり、すぐに応用に使えそうなところが目を引きますが、 技術的にも真新しいところがあるようです(でなければ SIGGRAPH に載りませんね……)。

これから、それぞれについて書いていきます。

続きを読む

演習1.6 [PRML]

問題文

2 つの変数  x, y が独立なら,それらの共分散は 0 になることを示せ.

解釈

2 つの変数の共分散は、それぞれの期待値を用いて以下のように定義されます。

{ \displaystyle 
cov[x, y] = \mathbb{E}_{x,y}\left[\left\{x - \mathbb{E}\left[x\right] \right\} \left\{y - \mathbb{E}\left[y\right] \right\} \right] \tag{1.6.1}
}

E の下についた添字は、その確率変数についての期待値を示し、以下のように書けます。

{ \displaystyle 
\mathbb{E}_{x,y}\left[f(x,y)\right] = \mathbb{E}_x \mathbb{E}_y \left[f(x,y)\right] \tag{1.6.2}
}

これを使うと、前問と同様、期待値の線形性から、以下の式が導けます。

{ \displaystyle 
cov[x, y] = \mathbb{E}_{x,y}\left[xy\right] - \mathbb{E}\left[x\right]\mathbb{E}\left[y\right] \tag{1.41}
}

この式から、 x,y の独立性を利用して、共分散 0 を示す問題のようですね。

解いてみる

 x, y 独立より、期待値について以下が成り立つ。

{ \displaystyle 
\mathbb{E}\left[xy\right] = \mathbb{E}\left[x\right]\mathbb{E}\left[y\right] \tag{1.6.3}
}

よって、式(1.41)で表される  x, y の共分散は、

{ \displaystyle 
\begin{eqnarray}
cov[x, y]
& = & \mathbb{E}\left[x\right]\mathbb{E}\left[y\right] - \mathbb{E}\left[x\right]\mathbb{E}\left[y\right] \\
& = & 0 \tag{1.6.4}
\end{eqnarray}
}

よって、題意が示された。

まとめ

みじかいっ。
まぁ、ラクなぶんにはいいんですけど……。

それにしても、共分散って機械学習の文脈ではどんな使われ方をするんでしょう。
独立な変数の共分散が 0 になるということは、相関に関わっていそうですが、 相互情報量っぽく、クラス分類の相関を見るのに使えたりするんでしょうか。
詳しい方がいらっしゃったら、教えてくださるとうれしいです。

たまってた分を記事化できたので、ようやく解くのを再開できそうです。
記事化を面倒くさがって、ボトルネックになってしまっているっぽいのがまずいですね……(なかなか進まないイイワケ)。

またいくつか問題を解き終えたころに記事にしようと思います。

次は某ラフの線画化技術の論文をまとめますよ~。

PRML 演習まとめ

次 -> まだ

演習1.5 [PRML]

問題文

{ \displaystyle 
var[f] = \mathbb{E}\left[\left(f(x) - \mathbb{E}\left[f(x) \right]\right)^2\right] \tag{1.38}
}
{ \displaystyle 
var[f] = \mathbb{E}\left[f(x)^2\right] - \mathbb{E}\left[f(x) \right]^2 \tag{1.39}
}

(1.38)の定義を使って var[f(x)] が(1.39)を満たすことを示せ.

解釈

確率論の基礎問題ですね。

期待値の線形性を用いた、分散の式変形です。
パパッと行きましょう。

解いてみる

式(1.38)の中身を展開して、

{ \displaystyle 
var[f] = \mathbb{E}\left[f(x)^2 - 2 f(x)\mathbb{E}[f(x)] + \mathbb{E}[f(x)]^2) \right] \tag{1.5.1}
}

期待値の線形性より、

{ \displaystyle 
var[f] = \mathbb{E}\left[f(x)^2\right] - 2 \mathbb{E}\left[f(x)\mathbb{E}\left[f(x)\right]\right] + \mathbb{E}\left[\mathbb{E}\left[f(x)\right]^2 \right] \tag{1.5.2}
}

E[f(x)] は定数より、

{ \displaystyle 
\begin{eqnarray}
var[f]
& = & \mathbb{E}\left[f(x)^2\right] - 2 \mathbb{E}\left[f(x)\right]\mathbb{E}\left[f(x)\right] + \mathbb{E}\left[f(x)\right]^2 \\
& = & \mathbb{E}\left[f(x)^2\right] - 2 \mathbb{E}\left[f(x)\right]^2 + \mathbb{E}\left[f(x)\right]^2 \\
& = & \mathbb{E}\left[f(x)^2\right] - \mathbb{E}\left[f(x)\right]^2 \tag{1.5.3}
\end{eqnarray}
}

よって(1.39)が示された。

まとめ

ということで、ヌルゲーでしたね。

……これで間違ってたら恥ずかしいな。

PRML 演習まとめ

次 → 演習1.6 [PRML] - deep moon

演習1.2 [PRML]

問題文

{ \displaystyle 
E(\bf{\omega}) = \frac{1}{2} \sum_{n=1}^N \{ y(x_n, \bf{\omega}) - t_n \}^2 + \frac{\lambda}{2} ||\bf{\omega}||^2 \tag{1.4}
}

正則化された二乗和誤差関数(1.4)を最小にする係数  \omega_i が満たす,(1.122)に類似した線形方程式を書き下せ。

※式(1.122)については前問を参照。


解釈

演習1.1 の関連問題です。

演習1.1 では、ある実数列  \{t_1, t_2, \ldots t_N\}多項式(1.1)で近似するときに、目標値との二乗和誤差を最小にするような係数  \bf{\omega} を考えました。

しかしこの方法には、ある欠点があります。
それは、データの数に対してモデルの表現力が高すぎると、学習データそのものに対して適合しすぎてしまい、汎化能力を失っているのです。これを過学習と呼びます。

極端な例としては、多項式の次数がデータ点の数を超えてしまった場合が考えられます。 この場合、すべての点を通る多項式を立てることができるので、学習データの誤差関数は 0 になります。
しかし、モデルの汎化能力は下がっているため、同じ分布から生成されたテストデータとの誤差を測ってみると、誤差が大きくなってしまうことがあります。

これを避けるテクニックが、誤差関数の正則化です。これは、誤差関数に罰金(penalty)項を付加することによって、係数が大きな値になるのを防ごうとするものです。 たとえば式(1.4)のように、誤差関数に  ||\bf{\omega}||^2 を足すと、モデルの係数が極端な値を取りづらくなります。
このようなテクニックを縮小推定と呼び、特に 2 次の正則化の場合はリッジ回帰と呼ばれます。

今回は、リッジ回帰の問題を解いていきます。


解いてみる

続きを読む