パラメータと呼びます。aとxが決まればyも決定されます。世の中にたくさん存在するするので、そのxからyを予測しようというのが、人工知能の基本です。この記事は、PYTHONのkarasパッケージを参考にして記述します。Documentationを参照してください。説明変数xは、人工知能が学習するために多くのデータを必要とします。説明変数xは、プログラムコードで配列という形を取ります。説明変数xを使って、パラメータaを後述する方法によって求めます。説明変数は、別名入力変数などと呼ばれます。目的変数yは、予測値になります。目的変数yは、説明変数xと対になります。目的変数yは、基本的に1次元の配列になります。目的変数yは、あらかじめ設定されるか、パラメータaが決定しないと求められません。目的変数yは、別名出力変数などと呼ばれます。現在の人工知能は、第3次ブームと一般的に言われています。第3次ブームの根幹は、ディープラーニングです。人工知能の目的は、既存のデータから未知のデータを予測することです。人工知能は、後述する損失関数の戻り値をできるだけゼロに近づけるように学習します。量子コンピュータ人工知能と量子コンピュータの違いは次の通りです。理論の根底が違います。実用化の点で人工知能の方が圧倒的に進んでいます。量子コンピュータの方が指数的な違いで高速です(実用化された時の期待値)。人間の思考に近いのは人工知能です。5類似点は双方とも確率的に解を算出するところです。6将来的に、厳密解の手法が発見されるかもしれません。次の3つに分類されます。教師あり学習:実値として、説明変数と目的変数を与えて学習させます。教師なし学習:実値として、説明変数しか持ちません。強化学習:詳しいことは分かりませんが、将棋や囲碁のAIソフトとして実現されています。強いAIとは、人間と同等の知能を持つAIです。第3次ブームの人工知能の技術では実現されていません。弱いAIとは、何らかの学習能力を持つAIです。コンピュータに既知のデータを学習させる手法のことです。多くの処理方法があります。基になる数学理論は「最小二乗法」です。決定木などのアルゴリズムによる学習手法もあります。ニューラルネットワーク(CNN)そのものも機械学習の1つです。この記事は、3だけを記述します。ニューラルネットワーク1説明変数に特徴量を設定します。2活性化関数で学習を収束させます。3第2次ブームから、層(レイヤ)の手法ができて、入力層⇨隠れ層⇨出力層の順で処理されるようになりました。次のように理解しています。1説明変数から決定できる方程式(y=axより複雑な式)が分かれば、微分によって極小値(あるいは極大値)が求められます。2しかしながら、現実世界に無数にあるデータの種類ごとに方程式を決定することはできません。3そこで、微分と同じ結果となる「損失関数」(後述します)の戻り値を最小になるように目的変数を求めるパラメータをトライ&エラーで収束させます。4そのトライ&エラーの手法を活性化関数と呼んでいます。5筆者の理解が間違っていたら後ほど修正します。6筆者が学習していく過程で上述の理解は、あまりあたっていない様ですが、現段階では特に問題なさそうです。7そもそも研究途中のようです。ニューラルネットワークを多層(マルチレイヤ)構造にしたものをディープラーニングと呼びます。2つまり、ニューラルネットワークの隠れ層が複数あるものと考えて良さそうです。32によって、ニューラルネットワークだけの時代、説明変数として入力していた特徴量をコンピュータが自分で導き出せるようになりました。モデルなどの設定方法が、たくさんあり、その組み合わせは膨大なものになります。この記事では、できるだけ一般的な設定方法を選んで、設定を固定して組み合わせの数を減らします。筆者が概念的に理解できない部分もあるのでご容赦ください。ディープラーニングの種類1ディープラーニングは、次のような種類と特性をもちます。・DNN(ディープニューラルネットワーク)>隠れ層(レイヤ)を2層以上持つディープラーニングの基本形です。・CNN(畳み込みニューラルネットワーク)>畳み込み層(レイヤ)とプーリング層(レイヤ)を含みます。画像認識に強いとされます。既知のデータのパターン化が得意です。・GAN(敵対性生成ネットワーク)>2つのネットワークを競わせることにより、学習を強化します。将棋や囲碁ソフトなどで、使用されます。21より、実質的にディープラーニングは大別してCNN、RNN、GANの3種類に分類されるようです。kerasには、CNN・RNNが実装されています。3ディープラーニングは、上記の派生型として、他にも種類が存在します。派生型が2以外にも実装されています。損失関数と評価関数によって学習の確からしさを判断します。理論的な注意、あるいは多くの試行実験が必要です。損失関数(loss)教師あり学習の場合だけ記述します。正解値(実値)と予測値の差(の二乗の平均)を示す関数です。パラメータaを求めて、それぞれのxをy=axに代入したyが予測値です。正解値は学習用にあらかじめ設定した値です。使われるので、本サイトもそれに倣います。平均二乗誤差以外にもありますので、1通りの学習の後に試してみることをお勧めします。6値がゼロに近いほど誤差が小さいことを示します。)loss='mean_squared_error'が、平均二乗誤差の指定です。「acc」を使います。「acc」は、精度や確からしさを示し、%で値を返します。100%に近い方が精度が高いことを示します。「過学習」を起こしている可能性があります。「学習不足」の可能性があります。その他、以下の2例のようなケースも存在します。1つの同じデータを数万回コピーしたデータで学習した場合を考えます。損失関数の戻り値は限りなくゼロに近く、評価関数の戻り値は限りなく100%に近くなることが、予測されます。この学習内容に学習の外部から持ってきたデータ(説明変数)を与えても期待通りの予測値(目的変数)は得られません。1〜3から学習用のデータに正し過ぎるデータばかりを与えても人工知能は有益な学習をしないことが予測されます。三角測量30年以上前の筆者の専門分野「測量」からの例です。「3辺の長さが与えられれば1つの三角形が決定される。」という法則が存在します。1から3辺だけを観測(現地で測量する)すれば、誤差無しで、3頂点の位置が求まります。4辺を観測すると三角形が2個できて観測値(実測値)に誤差ができます。この時、三角形の頂点を決定する計算に最小二乗法を使います。観測値は、信頼度を持ちます。信頼度は、計算には使われませんが、再観測が必要になった時、どの辺を再観測すれば良いのかの指標になります。信頼度は三角形の形によって決まります。正三角形が最も信頼度が高いとされ、狭角を含む三角形の信頼度は低いとされています。人工知能に学習させるデータにこの信頼度が応用できないかと考えています(人工知能への応用として学習させるデータの形というイメージになります。学習データの形とはどんなものでしょうか?今後の課題です。蛇足ですが、GPSも三角測量の技法を使っています。)モデルを使用します。パラメータは、適当です。詳細は、オプティマイザ(最適化アルゴリズム)の利用方法を参照してください。