Rのneuralnetパッケージを、Haskellからインラインで使ってみる。
inline-rというHaskellパッケージを使えば、
RコードをHaskellのQuasiQuotes内に埋め込める。
Haskell->Rであれば、Haskellでの変数名に
末尾_hs
を付けた変数がRで自動的に使えるので、かなり楽。
浮動小数点数や、文字列、
それらのリストも特に問題なし
(Haskellのリストは、Rのベクターに対応)。
R->Haskellに値を戻す方法は後日。
ただ、Mac OSでは、なぜかCヘッダがinline-rと相性が良くないらしく、
このプログラムはコンパイルが通らない。
Mint Linux上ではうまく行ったので、さしあたりそれで。
また、このHaskellプログラムでは
パッケージのインストールまではやらないので、
R側で事前にinstall.packages("neuralnet")
しておく必要がある。
Rの利用例としては、
XORをニューラルネットに学習させてみた。
neuralnet()
でニューラルネットのモデルを作り、
学習まで一度にやる。
パラメータはかなり大事。
それ次第で、それなりに発展的なこともできるらしい。
また、良くないパラメータを与えると
残念なモデルができる(hidden=2
を与えるとか…)。
compute()
で、学習させたモデルに入力を与えて、予測させる。
inline-rは最初いくらか手間がかかるが、 Rのこういう専門的な関数や描画機能が さらっと使えるのはそれなりに便利そうである。