人工ニューラルネットワーク
ニューラルネットワーク(ANN、Artificial Neural Networkとも呼ばれる)は、生物の神経細胞から着想を得た一種のコンピュータ・ソフトウェアである。生物の脳は難しい問題を解決する能力がありますが、それぞれのニューロンは問題のごく一部しか解決することができません。同様に、ニューラルネットワークは、個々の細胞は問題のごく一部を解決することにしか責任を負わないが、望ましい結果を生み出すために協力し合う細胞で構成されている。これは、人工的に知的なプログラムを作るための一つの方法である。
ニューラルネットワークは、機械学習の一種で、学習によってプログラムが変化し、問題を解決していくものである。しかし、ニューラルネットワークの規模が大きくなればなるほど、より多くの例題が必要となり、ディープラーニングの場合、数百万から数十億の例題が必要になる。
概要
ニューラルネットワークには、2つの考え方があります。1つ目は、人間の脳のようなもの。2つ目は、数学の方程式のようなものです。
ネットワークは、感覚器官のような入力から始まります。その後、情報はニューロンの層を通って流れ、各ニューロンは他の多くのニューロンと接続される。あるニューロンが十分な刺激を受けると、その軸索を通じてつながっている他のニューロンへメッセージを送ります。同様に、人工ニューラルネットワークは、データの入力層、分類器の1つ以上の隠れ層、および出力層を有する。各隠れ層の各ノードは、次の層のノードに接続されています。ノードは情報を受け取ると、その情報を接続されているノードにいくらかの量だけ送る。その量は、シグモイドやタンフなどの活性化関数と呼ばれる数学的関数で決定される。
ニューラルネットワークを数式のように考えると、ニューラルネットワークは、入力に適用する数学的演算のリストに過ぎない。各演算の入力と出力はテンソル(より具体的にはベクトルまたは行列)である。各層のペアは重みのリストによって接続されている。各層はいくつかのテンソルを蓄えている。層内の個々のテンソルはノードと呼ばれる。各ノードは次の層のノードの一部または全部と重みで接続されている。各ノードはまたバイアスと呼ばれる値のリストを持っている。そして、各層の値は、現在の層の値(Xと呼ばれる)の活性化関数に重みを掛けたものの外側になる。
A c t i v a t i o n ( W ( e i g h t s ) ∗ X + b ( i a s ) ) )。{displaystyle Activation(W(eights)*X+b(ias))} - {displaystyle Activation(W(eights)*X+b(ias))
ネットワークには、コスト関数が定義されている。損失関数は、ニューラルネットワークが割り当てられたタスクに対してどの程度うまく機能しているかを推定しようとするものである。最後に、ネットワークの重みとバイアスを変えてコスト関数の出力を最小化する最適化手法が適用される。このプロセスは「トレーニング」と呼ばれる。学習は小さなステップを1回ずつ行う。何千ものステップを経て、ネットワークは通常、割り当てられたタスクをかなりうまくこなすことができるようになる。
例
人が生きているかどうかをチェックするプログラムを考えてみましょう。脈拍と呼吸の2つをチェックし、脈拍と呼吸のどちらかがあれば「生きている」と出力し、なければ「死んでいる」と出力します。時間をかけて学習しないプログラムでは、これは次のように書かれる。
同じ問題を解く、たった1つのニューロンからなる非常にシンプルなニューラルネットワークは、次のようになります。
pulse、breathing、aliveの値は0か1のどちらかになり、falseとtrueを表す。したがって、もしこのニューロンに(0,1), (1,0), または (1,1)という値が与えられたら1を出力し、(0,0)が与えられたら0を出力しなければならない。ニューロンは入力に対して簡単な数学的操作を行うことによってこれを行う - 与えられた値をすべて足し合わせて、それから「バイアス」と呼ばれる自身の隠れた値を追加するのである。最初に、この隠れた値はランダムであり、もしニューロンが望ましい出力をしないなら、時間の経過とともに調整する。
(1,1)のような値を足し合わせると、1より大きい数字になってしまうかもしれませんが、出力は0と1の間にしたいのです!これを解決するには、ニューロンの計算結果がその範囲内でなくても、実際の出力を0か1に制限するような関数を適用すればよい。より複雑なニューラルネットワークでは、ニューロンに関数(シグモイドなど)を適用して、その値が0と1の間になるようにし(例えば0.66)、この値を出力が必要になるまでずっと次のニューロンに渡します。
学習方法
ニューラルネットワークの学習方法には、教師あり学習、教師なし学習、強化学習の3つがある。これらの方法はすべて、コスト関数を最小化または最大化することで機能しますが、それぞれ特定のタスクに優れています。
最近、イギリスのハートフォードシャー大学の研究チームは、強化学習を用いて、人型ロボット「iCub」に喃語で簡単な言葉を覚えさせることに成功しました。
質問と回答
Q:ニューラルネットワークとは何ですか?
A:ニューラルネットワーク(ANNまたは人工ニューラルネットワークとも呼ばれる)は、生物学的なニューロンから着想を得た一種のコンピュータ・ソフトウェアです。個々の細胞は問題のごく一部を解決するだけですが、望ましい結果を得るために協力し合う細胞で構成されています。
Q:ニューラルネットワークは、生物の脳と比べてどうなのでしょうか?
A:生物の脳は難しい問題を解決することができますが、それぞれの神経細胞は問題のごく一部しか解決することができません。同様に、ニューラルネットワークは、個々の細胞は問題のごく一部を解決することにしか責任を負わないが、望ましい結果を生み出すために協力する細胞で構成されている。
Q:人工的に知的なプログラムを作ることができるのは、どのような種類のプログラムですか?
A:ニューラルネットワークは、機械学習の一例であり、プログラムが問題を解決するために学習しながら変化することができます。
Q:ディープラーニングを使うには、どのように訓練し、例題ごとに改良していけばよいのでしょうか?
A:ニューラルネットワークは、例ごとに学習・改善することができますが、ニューラルネットワークが大きくなればなるほど、より多くの例を必要とし、ディープラーニングの場合、数百万から数十億の例が必要になることもあります。
Q:ディープラーニングを成功させるために必要なものは何ですか?
A:ディープラーニングを成功させるためには、ニューラルネットワークの規模にもよりますが、数百万から数十億の例が必要です。
Q:機械学習は、人工知能プログラムの作成とどのような関係があるのですか?
A:機械学習は、プログラムが問題を解決する方法を学習しながら変化することを可能にするので、人工知能プログラムの作成と関係があります。