2013年のまとめ

去年の年末に記事を書いて今年は一度もブログを書いていませんでした。
今年は今までと違う方向でテクノロジを模索をした一年でもあり、あまりブログを書くネタもモチベーションもありませんでした。
ただ今年もいくつか新しいチャレンジをしたのと来年に向けてやりたいことがあるのでそれらの技術トピックを棚卸をかねて書いてみたいと思います。

統計・機械学習

ビッグデータなどの流行もあるのと、もともと機械学習に興味があり、勉強がてらいろいろ調べてみました。
年がばれるかもしれませんが、僕が大学生のころに人工知能がはやっていて、記号処理がニューラルネットワーク、ボルツマンマシンなどいろいろ興味を持っていました。その応用として、麻雀の打ち癖をバックプロパゲーションで学習させるような麻雀ゲームをアルバイトで作ったりもしました。この時の経験ではパラメータを強化するような学習方式はなかなか思ったような学習をさせるのが難しい記憶があります。
最近の機械学習も方式そのものはそのころからそれ程変わっていないように感じていますが((最先端の世界はしりませんが本屋でおいている本レベルではそのように感じました))、確率的・統計的なアプローチを計算パワーにものを言わせるような力技の方法が実用的になって、それらを利用しているように感じました。

HDInsight

Azure上のHadoop実装です。こちらの方を実際に触っています。
ビッグデータの実行基盤であるHadoopですが、Azure上で本当に簡単に環境を構築できるようになりました。Hadoopの本番運用をするためには本当はいろいろ知らないといけないのでしょうが、余りにも簡単に使えてしまい勉強する機会がない状態です。
Hadoop Streamingを使えばC#のプログラムをMapReduceとしても実行できます。もちろんHDFSのアクセスなどもC#でできるため、Job投入やHIVEのアクセスも含めたツールを作って利用しています。
MapReduceについてはかなり前から理論的な面については知っていたのですが、実際に実装シナリオを考えると案外難しいと感じました。Hadoopが世間で騒がれて久しいですが、特定の処理をMapReduceに合うアルゴリズムにして実装できるエンジニアはかなり少ないのではないかなと感じました。HIVEやPig、Mahoutなど上位レイヤをを使うのが主かもしれませんが、どのくらい効率性に実行できるかを頭に描きながら使わないといけない技術だと感じました。

infer.net

最初の統計・機械学習に関係しますが、ベイジアンネットワークを利用した推論ができるDSLというかエンジンの.NET実装です。最近調べ始めたばかりなので来年に向けてのテーマになりますが、現在一番興味を持っています。将来的には、ベイジアンネットワークの学習モデルを作成してそれをMapReduceで実行してニアリアルタイムな仕組みを作成できるようになりたいと思っています。
何を言っているかわからいかもしれませんが、例えば、株価の変動のモデル*1を作成して、現在までの株価のデータを利用してベイジアンネットワークで学習させ、明日以降の株価を推論させるような仕組みです。顧客の行動なども同じようにモデル化することができるので応用範囲は広く、このモデリングと実装を提供していくような仕事ができたら良いなと思っています。

戯言

今年はいろいろな面で悩みが多い年でした。技術的な興味がいままでは次から次へとあったのですが、少し減ってきてしまいました。このことがかなりショックで技術一本で最後まで進もうと思っていたのですが、挫折してしまうかもと思うようになりました。ま、マネージメントの器でもないので、新しい技術に対してチャレンジを続けていくしか無いのですが、来年はこれらを吹っ切って前に進めれるようにしたいと思います。

みなさん、よいお年を!!

*1:HMM 隠れマルコフモデルが良いのかな