The First Cry of Atom Today is the first day of the rest of my life.

知識表現のためのデータ構造

知識表現 http://ja.wikipedia.org/wiki/%E7%9F%A5%E8%AD%98%E8%A1%A8%E7%8F%BE 知識表現(ちしきひょうげん)、KR(Knowledge Representation)は、推論を導けるような知識の表現、およびその方法を開発する人工知能研究の領域である。 人工知能って何って考えたときにぼんやりと、何かの入力に対して何らかの”知識”を使って出力を行う機械というふうに考えていた。そもそも漠然とはしている答えではあるものの、じゃあ”知識”って何?どうやって得ればいいの?どうやって持っていればいいの?という考えになる。それに答えを与えるのが知識表現(Knowledge Representation)だ。 この知識のデータ構造は推... Read more

バイアス-バリアンス分解

今回はモデルのバイアスとバリアンスを前回までの正則化最小二乗法のモデルを使って計算してみたよ。線形回帰モデルのバイアスとバリアンスはトレードオフの関係にあって、表現力の高いモデルを用いるとバイアスは小さくなるがバリアンスは大きくなってしまう。逆にバリアンスの小さいモデルを用いるとデータによる差が小さくなる代わりに全ての予測値の平均が理想的な回帰関数から離れていってしまう。 20通りの異なる訓練データ集合に対して正則化パラメータを調整して、訓練させてみた。 λ=1.1の場合 正則化パラメータが大きい場合は複雑なモデルに対するペナルティが大きくなるので、このようにバリアンスが小さく抑えられる。けれども表現力の豊かなモデルが抑えられるのでそもそも訓練データから理想的な曲線を表現でき... Read more

Scalaでロジスティクス回帰

PRMLをの勉強も兼ねて線形回帰モデルの構築をやってみたよ。 PRML本の内容とここを参考に書いてみたのでぜひ参考に。 リポジトリはこちら 最尤推定 基本的にはsin関数にガウスノイズを足した20個の訓練データからもとのsin関数が復元できるかということをやった。 1次元の多項式フィッティングの場合には最尤推定は最小二乗法でとけばいいだけなのでコードはこんな感じ。 package com.PhysicsEngine.cpistats import breeze.linalg._ object LeastSquares { // モデルパラメータの数 あとで正則化項を加えて計算したMAP推定と比較したいので割りとデカイ。over fittingしやすい val M = 20... Read more

ScalaNLPのチュートリアル

ScalaNLPを触ってみたので、その時のチュートリアル。 ScalaNLPは基本的にはSBTの依存解決でライブラリをダウンロードできるのでそのとおりに行う。 build.sbtファイルに以下のように書いてupdateを行う libraryDependencies ++= Seq( // other dependencies here // pick and choose: "org.scalanlp" % "breeze-math_2.10" % "0.4", "org.scalanlp" % "breeze-learn_2.10" % "0.4", "org.... Read more

SBTとEclipseでScala開発環境

SBTの使い方がなんとなくわかってきたので、今度はEclipseにSBTプロジェクトを導入してみる。 Eclipse plubin for SBTのinstall プロジェクトに必要なプラグインをインストールする。この場合はproject/plubins.sbtに以下のように記述する。 resolvers += Classpaths.typesafeResolver addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.2") ここで以下のコマンドを打てばこのプラグインがインストールされ、Eclipseプロジェクトに必要な.projectファイルができあがる $ sbt eclipse これ... Read more