PRML輪読1日目

ディープラーニングの話と並行して、週2でPRMLの輪読を始めました。1日で用意は大変だった....


今日の分は、1章の始めから1-2の途中までです。
話の流れとしては、サンプリングデータを多項式でフィッティングし、その多項式の自由度を大きくするとうまくいかなくなるがそれをなんとか解決しよう、というものです。


まずあるサンプリングデータを多項式
{ \displaystyle

f(x) = \sum_{j=1}^M w_j x^j

}
で最小二乗法を用いてフィッティングする。サンプル数に対して項数Mが十分近い数になると本来のカーブを無視してほぼ全ての点をなぞるようなカーブになり、項数がサンプル数-1になったときに全ての点を通るようになる。これは納得できる結果で、方程式において数式の本数-1個の定数を決めることができることを考えると、この場合もデータ点の数だけ w_j の方程式が得られるから、情報量的に係数は一意に定めうるわけです。

以前、某NPOで自由落下実験の教材を作成していたとき、同じ問題に当たりました。簡易で小さい実験装置だったため、8点程度しかデータが取れなかったのですが、空気抵抗の影響を見たいと3次や4次の多項式でフィッティングするわけです。すると、3次や4次の補正項が大きくなって、重力加速度の項である2次の項は0.3とかとても小さな数になり、重力加速度は0.6m/sだった!とわけのわからない結果が出ます。
もちろんこれは期待した結果ではないので、この時は結局空気抵抗を無視して2次でフィッティングして事なきを得ました。(空気抵抗の影響がほとんどなかったため)


脱線してしまったけど、このような過学習をさける為に関数が与える出力は確率的な値を取るという仮定をして、そこに正規分布を導入する。これによりある程度誤差や正則化(この場合における過学習を避けるアプローチ)について分析するというのがこの後の流れとなる。


以上、非常においしいところで終わってしまった。さすがに1日の、始発でジョナサンにいって籠って作業した朝の時間だけで用意するにはこの辺が限界でした。
個人的に面白かった部分としては、確率を考慮しないフィッティングでも、誤差の関数に補正項として係数ベクトルの長さに関する項を導入することである程度対応できるというところでしょうか。苦い思い出があるだけに、なるほどと言わされました。
また、ベイズ確率については情報が増えればそれで確率が変化する、という考えのようですがWikipediaの情報も補足的に加えたところ、つまりこれは観測に必要な情報が足りていないから、情報が増えれば本来の正しい確率に近づく、という考え方のようですね。少し決定論的なほうこうにバランスが悪い感じもしますが、わりとよさそうです。
あとはこの辺の確率論のどれかが、集合論の拡張だ、という記述を本文中のどこかで見かけた気がしたんだけどどこだろう。それが気になる。

ディープラーニング始めました

ディープラーニングについて聞くきっかけがあって、面白そうだなと思っていろいろいろいろ調べ始めたのが先週のこと。
勉強ってことでPRML読もうかとか同期と話しつつ、でもこのパターン、既存の情報収集が足りてないよな、と思い調べたところ、とりあえず数学とか抜きにしてグラボがあれば戦えるらしい。
そんなこんなで最近いろいろマシンを作っているらしいshi3zさんに相談したところおすすめの構成を教えて頂き、気づいたら....
f:id:sora_sakaki:20150628214606j:plain
ばばーんということでそろえてしまった!

構成としては

  • CPU: intel i3-4160
  • RAM: elixir DDR3 8GB 12800 * 4 (32GB)
  • M/B: ASUS H97-PRO
  • GPU: PALiT NE5X98T015JB (GForce GTX 980 Ti)
  • SSD: SanDisk SDSSDXPS480GJ25 (480GB, R/W 550MB/s 515MB/s)
  • POW: Owltech PPA7501407 (750W 80+SILVER)

というかんじ。
グラボはリテールなので他メーカーでも同じだと思うのですが、ドスパラで安かったのでこれを購入した。
他だとこんなかんじ。

これでどこまで行けるか。ひとまずUbuntuのインストールから!

IX2015 をセットアップする

うちで半年くらいほこりかぶっていた IX2015 をセットアップしました。

コンソール環境の準備

今回、 PC から IX2015 を叩くためのソフトとして、 Tera term を使いました。 USB-RS232C のケーブルは秋月で買ったものを持っていたので、コンソールケーブルだけ調達しました。 Amazon で 490 円也。

到着してから接続確認。と、なぜか USB-RS232C のケーブルが動かない・・・。秋月のページを確認すると、なんと Windows 8 非対応の文字が。しかし、

【質問】 windows8でどうしても使いたいです、何とかなりませんか?
[2013/12/02 16:29:32]
【回答】 USBシリアル変換ケーブルに使用しているPL2303Xは、 サポートが終了(EOL)しておりwindows8に対応しておりません。
2013.12.2記 残念ながら下記の手法はwindows アップデートにより使えなくなりました。 ただしWindows8.1では動作したご報告もいただいています。
最新のドライバーソフトでは動作しません。ただし、 動作保証外ですが、v1.5.0以前のドライバーソフトで動作する場合があります。

との記述が。ダメ元で v1417 のドライバを突っ込んだら Windows 8.1 pro で動いたので、なんとか追加購入は回避できました。

起動画面の確認、スーパーリセット

起動画面を確認します。 (買ってから半年、動作チェックすらできてなかった) このとき、まず Tera term を立ち上げて RS232C のデータを読み込める状態にしてから IX2015 の電源を入れないと確認できなくなるので注意が必要です。動作確認としては、すべての項目が Pass になっていて、最終的に Router# が表示されれば大丈夫です。

動作確認を行ったらスーパーリセット、つまり設定をふっとばす作業をやります。これは、起動中の Loading: ####### のところで Ctrl+C を押してコマンドモードに入り、

 >cc
 >dc
 >b

で完了します。それぞれ config clear, default-config clear, boot くらいの意味だとおもいます。

設定の流れ

設定自体は公式のドキュメントを読めばどうにでもなるので、設定を行う流れについて書きます。

  1. enable-config で設定変更モードに入る
  2. 設定を変更する(それぞれの設定は、行ったタイミングで反映される)
  3. write memory で再起動等で起動したときに読み込まれる設定に現在の設定を書きこむ

基本的にはこの流れで設定を行います。

設定に関して

IX2015 の設定には 3 種類あって、

  • running-config
  • config
  • default-config

となっています。 running-config というのが RAM に乗っかっている今まさに動いている設定です。上の write memory では、 running-config を config に書き込むということを行っています。default-config というのは、 config が存在しないときに使用される config らしいです。必要なら copy コマンドで config を default-config にコピーするようです。

設定中に驚いたのが、 show, no です。たとえば、 show config で現在の config が参照できるのですが、同じように show ip dhcp profile で設定した dhcp の設定が見れます。このように show は思いもかけないいろんなところで使えるので、まず叩いてみると大体見れました。また、 no が削除の意味を含むところも驚きです。たとえば、設定した IP アドレスを削除するためには、 no ip address 192.168.0.1/24 のように、 no を頭に付けると消えます。



参考

FAQ詳細 秋月電子通商 電子部品 ネット通販
秋月の USB-RS232C のページ。ドライバ配っているのはいいけど、 Windows 8 について謎が多い。
マニュアル : UNIVERGE IXシリーズ | NEC
公式ドキュメント。ほとんどこれで設定した。
格安NEC業務用ルーターIX2015の導入・設定その2 | 猫ITソリューションズ
Kozupon.com - ルータIX2015を使ってみる!
まず使い始める時に参照した。
100人繋いでも大丈夫!3000円で出来るサクサク社内ネットワーク構築法 | 株式会社インフィニットループ技術ブログ
実際に動かし始めて、動作に引っかかりがあったので参照した。