読者です 読者をやめる 読者になる 読者になる

たかきろぐ

「自動運転」「情報系大学」「雑記」をだらだらと書いています

MENU

Qiitaを始める

ブログを書かなくなって早半年程度,自分のアウトプットが足りていない事に気がつく.アウトプットが少ないと,なんか自信が低下する.

そこを補うために,エンジニアとしてのチップスを書き溜めて,なるべくアウトプットを増やそうと思う.

 

話は変わるが,昨今,人口知能(機械学習)を適用する分野が後を立たない.ワトソンが医学論文を読み込み込んで患者の症例を当てたニュースは有名だし,自動走行がセンサで周囲を認識する際にも漏れずに利用されている.AlphaGOによる人間×人口知能の対戦も記憶に新しい.

 

技術者として私も,人口知能技術に手を出しているのだけど,利用するのに手間取る.

手間取る原因は大きく以下4つで,

  1. 利用する前の問題設定をはっきりさせる必要がある
  2. 問題設定を決めた際,人口知能の学習用データセットを準備する必要がある
  3. データセット(が発生したモデル)の複雑さ,手元のデータ量に応じた人口知能の種類を選択する必要がある
  4. 利用する人口知能のAPIの引数の使い方がよくわからない

1〜4の順序は実際に人口知能を利用する際に必要な順番(のつもり)で記述した.これから述べることは順番が前後するが,最後に私が着目したい点を述べる為なので気にしない.

まず3は理論的な,学習するモデルに対する知識が必要である.例えば線形回帰は,学習対象のデータが持つ誤差は正規分布を仮定している.自分の手元のデータが,仮定に合うかどうかを想像する力と,モデルに対する知識が必要で,それらを一致させることが肝要.(まぁ,いわゆる深層学習:ニューラルネットで構築するモデルはアーキテクチャの複雑さでいかなる表現も可能なので,それでやってしまえばいいのかもしれないけれど.データ量とアーキテクチャ設計に妙が出るが...)

4に関しては,パラメータが多い場合困る.全てのモデルを理論的に理解していれば良いのかもしれないけれど,なかなか難しい.例えば,単純な線形分離を行うSVMだけを理解している場合,ソフトマージンやカーネル関数の存在を知らない.この状態でSVMを利用しようとすると,それらの指定が何を意味するのかわからない.(基本,指定しなければデフォルトで動くが,ちゃんと性能を出したい場合,気持ち悪いだろう)

1と2はほぼ同義.帰納的にデータフィッテングをするだけであれば,問題設定が決まると,必要なデータセットは決まるはずである.しかし,ここにかなり重要な点がある.

2番で言う,データセットは自分の求める形でない場合がほとんどだし,異常値処理などが必要になる.「マエショリスト」という言葉もあるそうだ.

つまり,各種パッケージで提供されているデータを利用した機械学習の利用はバカでも(あるていど)できるが,その前段階の1,2を素早く実行できることが重要なのだ.

 

というわけで2を素早く行うために,最近行き着いていることに関してこれからQiitaでまとめていきたいと思う.

 

あんまり頑張らない程度に,これから記事を書いていく.

 

あと,ブログの方もなんとか復帰していく.