2018年11月6日火曜日

DNNクラウド


一般的な関数、それもごく単純な、例えばy=xといったような関数を現すのに深層学習(DNN)を使うことは、可能か不可能かと言えば可能だ。もちろんそれは計算機資源の大いなる無駄なのだが、できないわけではない。

資源の無駄と言うが、今のコンピュータだって無駄だらけだ。最適化しようとすれば幾らでもできるのだが、それよりもプログラミングの楽さ加減、資源の抽象化によって汎用化することを優先し、その代償として資源を無駄に使ってきた。そう思えば、いっそうの楽ができるのなら、無駄にも価値がある。

DNNには、層数とノード数の最適化、といった課題があるのだが、脳の層数とノード数は決まっていて変えられない。つまりy=xにしても、そういう無駄な覚え方をしているはずなのだが、人間はそれで何とかなっている。むしろ問題に合わせてあれこれ最適化をする工夫こそが無駄なのかもしれない、という考えもある。

こうすると、プログラミングが簡単になるのだ。どう簡単になるかというと、学習データ(正解のリスト)を作って投げ込み、待って(学習させ)、検証して、バグがあればリストを修正してまた投げる、という操作になる。

プログラミングとは違ったスキルにはなるが、複雑なアルゴリズムの知識は必要ない。入力と出力を睨み、正解かどうかが判断できれば良いわけなので、ある種裾野は広がるし、外注にも掛けやすいだろう。

プログラム全体でいきなりこれをするのは無理だから、モジュールに分けてある程度学習させ、各々が進んできたら全体を結合して再度学習させる。このとき中央制御的なDNNを真ん中に置く、あるいは階層構造をとるようにするのも良い。こうして進め、完成させる。

ここで重要なのは、個々のDNNは、Amazon AWSのように規格化されていて、細かい調整は不要だ、というところだ。少々効率が悪くても構わないから正解が出るように学習させる。これが最優先だ。また、接続も大雑把でよく、細かい調整は不要だ。調整すると、都度再学習となってしまうからだ。

ベースとなるアーキテクチャは、DNNをPaaSで提供するクラウドである。大体正しく動くようになったらチューニングを始めるが、これは個々のモジュールを、より小さいDNNで動くように再学習させることになる。

全てのプログラムがこういったDNNベースになったら、PCにもDNNクラウドが搭載されるようになり、これがPC/ATのような標準的なアーキテクチャに取って代わるかもしれない。

0 件のコメント:

コメントを投稿

注目の投稿:

砂の船

  免震構造については過去いくつか提案しているが、これの新しい版である。 以前、難燃性の油の上に浮かべた船の構造を提案したことがある。あれの砂版である。つまり、砂のプールを作っておいて、その上に浮かべるというものだ。砂が抵抗となって振動を軽減する。 ただし、油や水と違って砂の...

人気の投稿: