【AIお悩み相談】AIの学習の仕組みの謎を解説。AIは自分で自分のプログラムを書き換えているのか?
最近AIがブームですが、AIって何?SF?バーチャルYoutberにいるよね?と、そもそもAIって良く分からないので沢山疑問があると思います。そんな悩みを解決すべく、JDLA G検認定のぴよ猫がAIの疑問にお答えします。
AIはどうやって学習しているの?プログラムを自分で書き換えているの?AIが賢くなるにつれディスクが溢れたりしないの?
AIは自分で自分のプログラムを書き換えているよ。でも、予め決められたディスク領域以上は使わないよ。
あと、恐らく思い描いている様なプログラム言語の書き換えはしてないよ。気になる方は以降の記事を読んでね。
1.AIの学習の仕組み
ディープラーニングについて
前提として今回はAI = ディープラーニング(機械学習)として回答致します。
ディープラーニングとは現在最も主流なAIの実現方法で、人の脳の仕組みを模したニューラルネットワークで構成されます。
まさにThe AIと言うに相応しい仕組みなので、今回はディープラーニングで構築されたAIを前提に回答致します。
なお、AIの実現方法にはディープラーニング以外にSVMなどがあります。
脳の構造(ニューロン)
画像元: http://ipr20.cs.ehime-u.ac.jp/column/neural/chapter2.html
脳の構造を模したニューラルネットワーク
AIの学習の仕組み
プログラミング経験のある方を前提に話をします。
AIの学習方法はプログラムを書き換えるのではなく、設定ファイルを書き換えるイメージに近いものです。
AIは設定ファイルの設定に従い動作するプログラムで、AIは従来のプログラムと違い設定値が膨大なので、設定値を書き換えるだけでプログラムの動きを柔軟に調整出来ます。
なお、設定値の数は予め決められているので、学習をどんなにしてもディスク領域は増加しません。
AIのプログラムについて
次に、AIはプログラムを自分で書き換えているのか?という疑問に回答します。
AIは設定値を自分で書き換えています。プログラム本体は書き換えていません。AIのプログラムは前述のニューラルネットワークを作る作業であり、これは人が行います。設定値はニューラルネットワークのパラメータ(重み)を調整する作業となります。
ニューラルネットワークについて詳しく知りたい方はこちらの記事を参照下さい。
syuuai.hatenablog.com syuuai.hatenablog.com
2.AIに学習させる方法
AIの設定を人が変更するのは不可能
AIの設定値1つ1つは人が見ても意味が分からないニューラルネットワークの重みで、設定値の数も膨大なため人がAIの設定を行うのは不可能です。そのため、AIの設定値はAI自信に学習させるという手段を取ります。
AIに学習させる方法
従来のプログラムはコンピューターに答えを解く手順を教えますが、AIの学習は答えを教えて手順をAIに考えさせます。
従来のプログラム
y = 3*x+1;
if(y > 30){ y=30; }
AIの学習
x = {1, 2, 3, 9, 10 ,12}
y = {4, 7, 10, 28, 30, 30}
をAIに与え、AIがy = f(x) のfを導き出す。
AIの学習方法のメリットとデメリット
デメリット
AIの学習には入力データ(x, y)が大量に必要となります。
上記の例ですと、従来のプログラムの場合は2行のプログラムを書くだけで済みましたが、AIの学習の場合、(x, y)の組み合わせを複数用意する必要がありました。
メリット
AIのメリットは何といっても法則が分からないこともAIが法則を導き出してくれることです。
上記の例の1次方程式であれば人がプログラムすることも容易にできますが、例えば与えられた画像に車が写っているか?という問題を解くプログラムは容易には思いつきません。
AIを使えば、(x, y)の組み合わせ(車が写った画像を見分ける場合は、x = 車が写った画像、写っていない画像、y = 車が写っている、車が写っていない)のデータを複数用意してAIに学習させれば、AIが法則を導きだしてくれます。
3.AIの自己学習
AIの自己学習について
AIは自ら学習して賢くなるとはどういうことかを解説します。
AIが実施していることは入力データと出力データの関係を表すモデルを作り上げることです。
入力データと出力データを増やすことで、モデルの精度は上がります。
例えば、
x = {1, 2, 3, 9, 10 ,12}
y = {4, 7, 10, 28, 30, 30}
を表すモデルf(x)は、
f(x) = x < 30 : 3*x + 1, x >= 30 : 30
の可能性が高いですが、
新しいデータ(x, y) = (-1, 0)、(-2, 0) が与えられた場合、
f(x)を以下の様に書き換えた方が、モデルの精度が上がります。
f(x) = x <=0 : 0, x < 30 : 3*x + 1, x >= 30 : 30
AIの学習とは入力データ、出力データに合わせてニューラルネットの設定値(重み)を書き換えてモデルの精度を上げる作業を言います。
纏め
如何でしたでしょうか?
AIの仕組みを一言で言うと、
- 入力データXと出力データYの関係を表すモデルf(X)がAIであり、
- AIの学習とはf(X)のパラメタを調整すること
となりますが、プログラムに慣れた方だと、逆にAIを難しいと感じるかも知れません。
以下の書籍で漫画で分かり易くAI(機械学習)を解説していますので、AIに少し興味が出たら読んでみるのも良いと思います。
価格:2,376円 |