機械学習 & Deep Learningを一通り終えて

Pythonと噂のChainerを使いながら一通り機械学習とDeep Learningの勉強を終えた。噂には「とても難しいらしい」とか聞いていたが、シンプルに構築された動的型付け言語、Python氏のおかげでかなりスピーディに理解・実行できた。一ついえばGoogleが2014年に構築したWord2VecをPython/Chainerで計算しようとすると「かなり」時間がかかり計算が終わらなかった。

私は本に「かなり」時間がかかると書いてあった時、せいぜい1時間程度かと思っていたが、甘かった。2時間経っても3時間経っても終わらない。そこでふて寝(というか本睡眠)して朝目覚めたら出来上がっているか、と思いきや、まだ計算していらっしゃる。どういうことかというと、機械学習では通常3日から1週間の学習時間がかかることは普通らしい、と記述があった。ここでも私は文章を読み誤っていた。私がその本を読み終えるのにちょうど3日から1週間ぐらい(つまり私の学習時間)かと思っていたのだ、どうやらシステムの計算時間のことであったらしい。というわけで結果は見れぬまま、プログラムだけかいて終わった。

巷で話題の機械学習・Deep Learningだが、その道の人もいう通り、世間の期待の量及び偏見に反して、この話はそんなに難しくない。ニューラルネットワークは脳システムを模したモデルで簡単にいえば、(入力層)n次元から中間層を経て(出力層)m次元への変換のようなことをしている。そこで中間層が複数になった変種(RNN)など、マイナーチェンジによる変種が少々出てくるが、基本的にはNNの延長線上にある。さらに、Chainer(by Preferred) を用いると、型付けがなされているのでかなり簡単にプログラムが書ける。Pythonは一般理解が可能なように作られた「民主主義的」言語であるので、これにChainer(より記述が簡単になる)を用いると、「もっと簡単になる」というアウトプットが出てくるわけである。

ただの自慢であるがプログラミング初学(前にTeXはコピペレベルにはかじった)にしては、ディープラーニングの基本を終えるまでに1ヶ月で行けた。私は概要だけさらった「雑読み」の特技があるからかもしれないが、それを抜いても高校数学+αがあればこのぐらいで習得可能の技術だと思う。それでも人材不足、というのは一体なぜなのか、全く理由がわからない。ちなみに今はこのNN(ニューラルネットワーク)のさらなる変種を考える人間、及びこのディープラーニングを現実にどのように応用するかという接触面の人間、双方が不足しているらしい。優秀なプログラマなんていっぱいいるだろうから、ささっと引き抜いたらいいんじゃないか、としか言いようがない。人材難の理由はもしかすると他のところにもあるのかもしれない。

それで、この機械学習の欠点は最低限二つあるらしい。一つはもちろん、時間がかかりすぎること。もう一つは過度の一般化である。後者に関してはモデルの改良でなんとかなるのかもしれないが、前者に関してはどうだろう。この先にはどうやら「量子コンピュータ」と言われるような技術が待ち構えていくらしい。私はこのあたりの技術のエキスパートになろうなどという真面目で愚直な人間では決してなく、さらっと概要だけしれればいいというタイプのひどく軽薄な人間であるので、量子コンピュータに関してもちょっと調べてみた。

とあるサイトにこのような概要があった。”量子コンピュータは、原子の「異なる運動が重なり合った状態」を利用して「同時並行」に計算するもの、同時並行に存在する複数の世界で、同時並行に計算するもの”。

正直なところ、私はこの程度のざっくり理解の俯瞰図でいいのである。細かい話はその後である。ようやく物理なのかコンピュータなのか知らないが、その世界にも動的な多元性という概念が出てきたらしいということぐらいはわかった。技術的にこれをいかなるものを使って可能にしているかには多少興味はあるが、例のごとく難解すぎて(それも難しいことをより難しくしたような混乱を招く説明で)挫折しそうなので、このぐらいでいいかとも思う。「わかりやすく説明できる人間」を待つにはもう少し時間が必要なのかもしれない。日本ではおかしいことに「具体的なこと」から入るのが簡単、という認識が成り立っているらしい。しかし私は何が起きたか知らないがその認識が反転していて、まず全体像、そしてそれの位置付け、概要説明、をしてもらわないと、細々説明されても頭痛を引き起こすのである。抽象的な話の方が幾分簡単である。

この記事が気に入ったらサポートをしてみませんか?