さまこばのひとりごと

普段思っていることをつらつら書いていきます。

AI世代は何を学ぼうか?

 AI世代は自分のことでなくて、娘(1才)の将来の時代を考えてみたときに何を学んだらいいかなと考えてみたポエムです。

 世間で恐れられているシンギュラリティですが、シンギュラリティがおきれば人間が働かなくていいだけで、それはそれでダラダラ生きればいいんじゃないでしょうか。今回シンギュラリティは置いておいて、もう少し可能性があるディープラーニングが将来だれでも簡単に使えるようになった時代を想定したものになります。

f:id:samacoba:20180718091105p:plain

(Francois Chollet のPythonとKerasによるディープラーニングの最初の方を参考にしてあります。)

 従来は「データ」+「ルール」 を 「コンピュータ」 に入力すると「答え」が出てくるのに対し、 将来は「データ」+「答え」を「 ディープラーニング」 に入力すると「ルール」が出てくる形になるというのが大きな違いになるかもしれません。

 現状、プログラムは人間が作らないといけなくて、ロジックがしっかりしたアルゴリズムを人間が設計しないとコンピュータが動かないのに対し、将来はデータと答えを用意すれば勝手にルールを作ってくれる形に変わってしまうわけです。 ここで人間がするべきことは何が残るのかというと、「データ」と「答え」を用意することは残るわけです。つまり、「何をするか?」は人間が決めないといけません。

注)あくまで「将来」の可能性であって、現時点ではディープラーニングがハイパーパラメータの調整なしにEnd to Endで素人でも簡単に学習させられるようなものはできてないような気がします。。

 さて、ここでコンピュータのない過去の時代を振り返りながら考えて将来の時代を考えてみたいと思います。

f:id:samacoba:20180718091111p:plain

 1970年代に電卓が普及するまでは、商店、経理、銀行などでお金を計算する場合、手計算やそろばんを使って計算するしかなかったはずです。この時代では人間は素早く正確に計算することが大事で、大半の人は、機械的に繰り返す能力が求められていたのではないかと思います。

 これが、電卓やコンピュータが普及してくると、人はそれらの道具を使いこなして、機械に仕事をさせるようになりました。そのため、人間の仕事はルールやプログラムを作って、効率よく機械が自動的に動くようにすることが、自分で早く計算することよりも大事になってきたような気がします。 工場では機械やロボットが自動的に仕事をする工場(ファクトリーオートメーション)となってきましたが、その機械や制御盤の設計、PLCや画像処理のプログラムの作成は人間の仕事となりました。

 自分が小学校の時(1990年代)はそろばんを習っていたのですが、ポケットサイズの電卓は家庭にあった時代なので、なぜ習う必要があるかはよくわからないままやっていたような記憶があります。とはいえ悪影響があったともいえないので特に悪くは思っていません。自分の子供に対する教育というのは自分の過去の経験に基づくものなので、必ずしも将来の時代に合ったものになるとは限らないのが難しいところです。

 将来はデータを答えを用意すれば機械が勝手にルールを学習してくれるはずなので、人間の仕事としては機械に何をやらせたらいいか?を決めることが大事になってくるのではないかと思います。

 これを問題に対する考え方の変化にするとこんな感じになります。 f:id:samacoba:20180718091114p:plain

 昔はひたすら頑張って問題を解くのが大事だったのが、今は効率よくうまい方法を使って解くことが大事に変わってきたような気がします。これが将来、問題の「解き方」よりも良い問題を「見つける」方が大事に変わっていくのでないでしょうか?

 そうなったときのために何を学ぶべきかはとても難しいです。計算問題をひたすら解くわけではなくて、応用問題を解けばいいというわけでもないはずです。

 結局、「よく遊び、よく学べ」的な感じでしょうかね?

イノベーションは「早めた」人がエラいと思う理由

 最初に発明した人がエラいというのは一般的にそんな感じだと思いますが、世界は広く同じ時期に同じようなことを考えている人がいるはずで、別に最初に考えた人がいなくても数週間後に別の人によって発明されていたかもしれないってことはよくある話だと思います。その場合、最初に考えた人はそこまでエラいのかなとか思ったりします。そんなことを考えたときに、その人の偉業をどんな風に考えると個人的に納得がいくかを考えてみた図がこちらです。 f:id:samacoba:20180619145027p:plain

 ある発明(物でもサービスでも)があったとき、社会でそれが使われる量というのは、最初はゆっくり ⇒ 途中で急に広まって ⇒ 最終的に落ち着くという、いわゆるS字カーブを描くのが一般的じゃないかと思います。ここで、仮にAさんがいない場合に、次に同じ発明をBさんがするまでにΔTの時間がかかる(ΔTを測定することは不可能だと思いますが)とします。そうすると、Aさんがいた場合と、Aさんがいない場合でΔT分だけ曲線がシフトします。すると2つの曲線の間の面積SがAさんの貢献量と考えるのが妥当かなと思うわけです。また、この面積は図の右のようにどれだけ早めたかのΔTと最終的にどれだけ使われたかのQ∞の掛け算になるので、例えば1億人の人が年に100円分使うようなサービスを、Aさんによって1か月「早く」発明された仮定したとき、
Q∞=1億人×100円/年 = 100億円/年 ΔT=1/12年 なので、
Aさんの貢献量 S=Q∞ × ΔT = 8.3億円の価値があるってことになります。

 やっぱり最初に発明した人はエラいってことになりますね。

 とはいえ、必ずしも最初に発明した人「だけ」がエラいというわけではないと思います。世の中に認知されないままだと利用者が少ないまま低空飛行することだってあるかもしれません。その発明の良さにいち早く気づいて、解説するような記事を作った人や、お金を集めていち早く製品化した経営者であったり、最初に動くプログラムを作成したエンジニアであったり、ユーザーコミュニティを作って普及・改善に貢献したような人も「早めた」人の一人であると思います。 f:id:samacoba:20180619145036p:plain

 例えばスティーブ・ジョブズiphoneを作る前からPDAというスマホの原型があったわけですが、その時代にハード・ソフト的な技術を集積させてiphoneを作り、大々的にプロモーションを行ったことは、ジョブズスマートフォンというイノベーションを「早める」ことに間違いなく貢献したといえるでしょう。

 なので、発明した人だけでなく、そのイノベーションを「早める」ことに貢献した人はエラいという感じで個人的には納得しております。

 そういったイノベーションを早めるに役立つ世の中の仕組みというのは昔からあるわけで、例えば株式というのはイノベーションを早めるのに役立つ仕組みだと思いますし、ほかには特許などや、最近ではオープンソースもそんな感じかと(ICOとかはまだ未知数という印象)。とはいえ、それぞれ一長一短ある感じで、今の時代により適した新しい「仕組み」があったらな~と思うこの頃です。

10年間働いた会社を辞めて、博士に進学してみる

電気・機械系の学部を出て、化学系の研究で修士を卒業した後、新卒で地元メーカーに就職し、10年間技術者としていろいろ研究開発をしてきました。会社の人間関係はよかったので、特に病むことはなく、平穏に暮くらしてまいりました。

もともといろんな分野をやってみるタイプだったのですが、2015年の秋ごろから当時世間でブームになりつつあった深層学習をやり始めました。プログラムが専門でもなく、cやc++とかしか触ったことがなかったので、pipってなんぞ?とか、型の宣言なしでいきなり変数を書くとかどうゆうこと?という感じの中、Chainerをインストールして動かしてみていました。

深層学習を試してみると、今までやってきた分野と違って、見えない可能性がたくさんある分、面白くなってきたのですが、そのころちょうど家庭を持つようになって、一人の自由な時間が少なくってきました。

元々睡眠時間を削ったりまでしてストイックに生きるタイプじゃなく、仕事と家庭と研究の3つを同時にこなすのは無理だと思ったので、妻に相談したところOKが出たので、研究の時間を確保するために会社を辞めて博士に進学することにしました。

入試を受けて自分はアカデミックというよりはエンジニア側の思想だと感じたので、学位とって卒業するかは正直微妙なところですが、自分なりに深層学習でいろいろやってみて、試した結果をなにかしらの形で発表できればと思ってます。

数年間研究した後については、深層学習関連のエンジニアとしてどこかで働けたらと考えています(氷河期になってなければですが)。東京は新幹線で2時間半かかり、まだ地方に就職先はあまりないと思うので、リモートワークなどできるところを探せていければと思ってます。

この歳でこのような時間を確保できたのは家族の支えはじめ、幸運なことだと思うのですが、この時間を最大限利用して、しばらく深層学習で遊んでみたいと思います。