ラベル

AI Forecast 8306MUFG (243) Social (76) life (73) Financial (64) IT (60) Proposal (56) idea (50) Fund Management (49) Trading (43) economics (42) AI (40) Covid-19 (40) Hedge Fund (37) Risk (36) Culture (31) BOJ (29) Science (27) hobby (24) accounting (17) Apps (16) Travel (14) career (11) job (7) Hiking (5) emotion (5) music (3) Statarb (2) piano (2)

2019年5月27日月曜日

最近「はやり」のAI の現実・AIはあなたの仕事を奪えない The Reality of Booming AI / AI can NOT take your JOB

最近「はやり」のAI の現実

English Follows

一昨年ぐらい前からどこもかしこも、AIが人の仕事を奪うなどという記事が多く出回ったが、現実のAIの発展段階ははるかに及ばない。

2019年5月の時点で、最近はやりのAIについて過去の経緯をざっくりまとめると、

1980年代 論理を数多く集積してAIを作ろうとしたが、うまくいかなかった。
1990年代 神経回路をまねたニューラルネットが登場したが、計算機の能力が低すぎ、シンプルな問題にしか対応できず、実用とはならなかった。
2000年代 計算機の能力が1000倍以上になり、ニューラルネットが複雑な問題にも適用可能となり、実用的になりだした。
2010年代 ルールを与えただけのAI同士の対局学習で、世界最強の囲碁AIが誕生。

今回のAI騒動は、最後のニューラルネットを用いた囲碁AIの成功に始まる。中国3千年の歴史の囲碁を、ゼロから始めて3日間の学習で凌駕した。なので、人間の仕事もすぐに取ってしまう、という論理だ。

しかし、実際にニューラルネットを動かしてみると、まだまだ程遠いということが実感できる。現在主流の開発環境であるKeras/Tensorflowは、啓蒙目的で、ニューラルネット環境を一般に公開している。

ニューラルネットは、簡単に言うと、補間関数の推定(近似)機能である。下図は2次元の分類問題の関数の例である。平面を二分する関数を推定(学習)中である。


ニューラルネットでは、入力層(下図左側)と出力層(下図右側)を、多数のノード(ニューロン)を重みづけをもって結合させている(下図は3つの中間層)。ポイントは、このネットワークを多ノード、多層にし複雑化させていくと(ディープラーニング)、だいたいどんな関数でも近似的に表すことができるようになるということだ。


さまざまな「問題」には入力があって、なんらかの処理を行って(関数を通して)、結果が出力される。

一般的によくある問題は、まず、処理方法(関数)がすでに分かっていて、

  出力が分かっている場合、入力は何だった?
  入力が分かっている場合、出力は?

というものだ。

ニューラルネットでは、

  入力と出力が分かっている場合、どのような処理(関数)を行ったか?

を、ニューラルネットで作られる関数で「模倣」する。ニューラルネットでは、求めたい処理関数そのものは表せないが、制約条件内で、できる限り近い動きをする関数を作ることができる。高次の処理関数を近似するには、ニューラルネットも多ノード、多中間層にする(自分で実験したい人はここ)

式で書くと、

Y = F(X) ここで Yは出力ベクトル、Xは入力ベクトル、Fは関数の行列(テンソル)である。

出力ベクトルYとは、答えのデータのベクトル、入力ベクトルXとは、答えを出すための条件のベクトル、関数行列Fとは入力から出力を計算するなんらかの関数であり、学習とは、このFを、入力に対し期待される結果(近似値)を出力するように調整することである。

Fの調整(学習)は、ニューラルネットからの出力と、実際の出力データとの誤差を目的関数とした最急降下法により、ニューラルネットの層ごとに出力層から入力層に向けて後ろ向きに段階的に伝播する(Back Propagate)ように行われる。調整するものは、ノードを結ぶ結合の重みである。

最急降下法とは、平たく言えば、多次元ニュートンラプソン法のことである。段階的に伝播するように調整していくのは、計算負荷を少なくするためで、計算機能力に問題がなければ、全体を同時に収束計算すればよい。

1990年代はコンピュータの処理速度の限界から、シンプルなニューラルネットしか扱えず、結果、近似可能な関数もシンプルで、実用的な問題で出現する複雑な関数の推定(近似)は不可能であった。このため、ニューラルネットの1次ブームは立ち消えになってしまった。

計算能力が1000倍を超え、ニューラルネットはやっと実用になってきた。しかし、その本質は、関数の補間であり、脳の部品ができた段階に過ぎず、まことしやかに書かれた取って代わられる仕事リストの1/1000も実際には対応できないのが現実である。

The Reality of Booming AI


Since one year back, we started seeing lots of articles everywhere telling that AI will soon take over human jobs however, current level of AI is far from it.

Let's wrap the history of AI at the point of May 2019.

1980's Tried to build AI by integrating lots of logic but it did not work.
1990's Neural net was invented mimicking brain structure however, due to poor computer performance, it could handle only simple problem then not really practical. 
2000's Computer performance advanced 1000 times, the neural net then could handle complex problems, then its practicality increased.
2010's World strongest GO AI was build by giving only rule of GO but not strategy.

AI disturbance this time started from the success of neutral net on AI GO. Three days study made AI surpassed GO history over 3000 years in China. Many then thought, why not AI will take over human job very soon?

However, if you actually run neural net, you will see that will be far away in future that such job takeover will happen. Currently, major development environment Keras/Tensorflow is open for all for education purpose.

Neural network, in nutshell, is an interpolation(estimation) function. Below shows function of two dimensional classification. Estimating(Learning) function to classify two dimensional space into two area.


In neural net, input layer(left in below diagram) and output layer(right in below diagram) is connected with weights between many neurons( 3 hidden layer in below diagram). The point is, the more complex the network becomes with lots more nodes and layers(deep learning), then it can emulate most of functions.


In general, lots of `problems` have input and output processed by some function.

In most of cases, the process(function) is known, then questioned,

  What is the input when out put is known?
    What is the output when input is known?

In neural net, the question will be,

  What is the process(function), when input and output is known.

Neural net only approximately emulate original function, i.e., it cannot solve original process function but can create emulation function that works as best estimate of original functions. If target function is in higher order, then neural net also needs to be multiple layers and many nodes(you can test here).

In equation, 

Y = F(X) where Y is an output vector、X is an input vector、F is a function matrix(tensor).

Output vector(Y) is a vector of results. Input vector(Y) is the condition to get results, then function matrix F is function to transform input into output, finally, learning is to adjust F to generate approximate result expected for the input.

Adjustment(learning) of F is done through steepest gradient descent method by setting objective function as difference between output and target result, from output layer to input layer one by one as if back propagating. Adjustment is done for the weight connecting nodes.

Steepest gradient descent method is, in nutshell, a multi dimensional Newton-Raphson  method.  The reason for using layer by layer iteration(back propagation) is to reduce calculation workload for low profile computer, hence if computer is fast enough, convergence iteration can be done all at once.

In 1990's, due to limitation of computer process speed, only simple neural network was realistic implementation, hence as a result, approximation was made only for simple function but not for complex function that come across for practical problem.  This is the reason why neural net boom phase-I faded away.

Now calculation speed is 1000 times faster and neural network finally became practical however, it's real nature remains as function interpolation, only as a part of brain function. Hence "plausible" article listing jobs taken by AI will be real only for less than 1/1000 of jobs listed.