AI(Artificial Intelligence:人工知能)の基礎1

1 基本構造は「入力」と「処理」と「出力」

 人が営業活動を行うことを考えると、上司から命令を受けて(例えば商品を売ってこい)、外回りをして飛び込み営業などの営業活動を行うことで処理を行い、成果物として締結された契約が残ることになります。コンピュータとの対比で考えると、命令の入力、途中過程の処理、成果物の出力があります。
 AIを考えたときにも基本的には同じ構造で、人が何かを入力すると、コンピュータがこれを処理して、人の意図に沿った出力がなされるとうれしいわけです。
 最近のコンピュータはいろいろなことができますが、基本的には「計算機」ですので、AI的なことをやらせるにはいろいろな工夫が必要になってくるわけです。

2 簡単な計算→複雑な処理(できるとうれしい処理)へ

 コンピュータが得意なのは計算です。例えば、「入力された商品の消費税を計算せよ」という入力について考えると、処理過程は「商品の金額×税率」の計算だけすれば成果物(出力)を得ることができます。少し数学的に言えば、(出力)y=(入力)x×0.1なわけで、これがコンピュータの行う「処理」です。
 コンピュータは計算が得意なので、入力形式を定義した上で、処理過程のプログラムを組めば、成果物を出力してくれます。
 もし入力と処理過程がうまく定義できるならば、それを利用して某X社の明日の株価が出せるわけです。これが実現すれば、お金持ち…。
 でも、実際にこれでお金持ちになった人は聞きません(言わないだけでいるかもしれないけれども)

3 処理過程を構築するにはモデル化が大切(多分)

 こんなことを考えたことないでしょうか(特に理系の人)?もし、現時点の地球上の事象を全て数値化して表現することができ、単位時間経過後(例えば1秒後)の地球上の事象を求める処理が関数化できれば、これを繰り返し適用することで、将来が分かる。つまり、明日の某X社の株価が分かってお金持ちになれるわけです。Happy!
 おいおい、でもどうやって地球上の事象を数値化するんだ?Aさんが、(x,y,z)座標にいて、αの上着を着てβのパンツを履いて、γの思考をしていて…、はい無限にパラメータがあって無理ゲーです。仮にすべての事象を数値化して入力を作れても、どうやって処理を関数化すればよいのでしょうか…。これも無理ゲーです。
 例えば明日のX社の株価を知りたいだけであれば、地球上のすべての事象のパラメータのほとんどは影響を与えず、意味があり影響力の強い入力は、大株主(有力な投資家)の動向、政府や中央銀行の政策発表、X社のプレスリリース、経済指標などのニュースなどではないでしょうか?そうすると、工学的な「コストがかかるところは近似して省エネ化し実用に耐えうるモノを作る」という発想でいくと、その事象を表現できそうな仮定を何か置いて、それがうまく動くといいよね、ということになります。つまり、うまく動くモデルを作って、それに従って処理するわけです。工学の分野だけでなく、経済学の分野でもこんな分析しますよね!

4 モデルとはなんぞや?

 例えば経済学では、費用関数なんてものがあって、xを生産量としたときの費用yは三次関数で表されます。生産量0でも固定費用(設備投資)がかかって、そのあと少し作ると単位当たりの可変費用は大きいけど、だんだんそれが少なくなっていく。一方で一定規模を超えるとまた単位当たりの可変費用が大きくなっていくようなモデルです。経済学には詳しくないのですが、きっと実際の生産の現場では、およそこんな感じで生産量と費用の関係が表現できるのでしょう…これは、生産費用を三次関数を使って予想するモデルです。
 他の例で、認知工学の分野では、以前は統計的モデルというものが使われることがありました(今はニューラルネットワークブームなのですっかりその座をディープラーニングに奪われているようですが)。正規分布は、コブが一つある関数ですが、このコブは、関数の曲線部分を表現できます。つまり、正規分布を何個も重ね合わせると、微妙な曲線表現が可能になり、理論的には無限に正規分布を組み合わせればどんな関数も表現できるわけです。そうすると、例えば音声認識では、人間が発生する細かい単位の音(母音や子音レベルの音素)ごとにモデルを用意しておいて、入力された音がどの音に一番近いのかな?ということの確率計算をすることで、コンピュータに最も近い音を判定させることができます。これも、音声認識をコンピュータにおいて処理しやすいように、モデル化した一例です。
 最近流行のニューラルネットワークも、人間の神経伝達と同じような動作をコンピュータが処理できるようにモデル化したものになります。

5 まとめ

 AIについての導入を示しましたが、今流行っている深層学習(Deep Learning)というのは、ニューラルネットワーク(Neural Network)というモデルを使ったコンピュータの処理のモデルの一つです。