この章では、ニューラルネットワークを紹介し、それらが何のために設計されたかを調べます。この章は後続の章の基礎として機能し、この章ではニューラルネットワークの基本概念を示します。この章では、次のトピックについて説明します。
人工ニューロン
重みとバイアス
活性化関数
ニューロンの層
Javaでのニューラルネットワークの実装
ニューラルネットワークの発見
まず、「ニューラルネットワーク」という用語は、特に以前に脳に精通している人にとって、頭の中で脳のスナップショットを作成することができます。これは実際には真実です。私たちは脳を大きくて自然なニューラルネットワークと考えています。しかし、人工ニューラルネットワーク(ANN)について何が言えるでしょうか?さて、それは自然な反意から始まり、私たちの頭に浮かぶ最初の考えは、「人工」という用語を考慮に入れた人工脳またはロボットの写真です。"。この場合、私たちは人間の脳に似た、触発された構造の作成にも取り組んでいます。したがって、それは人工知能と呼ばれます。したがって、ANNの過去の経験がない読者は、この本がJavaプログラムを使用して人間の意識をエミュレートできる人工脳を含むインテリジェントシステムを構築する方法を教えていると思うかもしれませんね。もちろん、マトリックス三部作のように人工的な思考機械の作成については説明しません。ただし、この本では、いくつかの驚くべき能力と、これらの構造で何ができるかについて説明します。基本的なニューラルネットワーク構造の定義と作成を含むJavaソースコードを読者に提供し、Javaプログラミング言語のすべての利点を活用します。
なぜ人工ニューラルネットワーク?
, . (NN) ANN , NN ,
. , ANN? .
1940- Warren McCulloch Walter Pits , . , . McCulloch Pits , . , , , , , . , , , .
, McCulloch Pits , . , ; , , , . , , .
, ANN , , , , , . ANN , , .
, |
, |
|
|
, ANN — , . , , . , .
, . ( ), ( ), ( ), :
, .
—
, — , . , (inputs) (output), , . , , :
, , . , .
—
. , , . , , .
:
(Sygmoid)
(Hyberbolic tangent)
(Hard limiting threshold)
(linear)
,
:
— (weights)
, , , , . , , (weights) (output), . , inputs , (weights) . , , , — .
—
, .
—
, ; , , , . , , . , :
, . 3 :
1. Input layer;
2. Hidden layer;
3. Output layer;
,
,
.
/ . , .
, , . . , . , 2 :
1. :
1.1 (monolayer) ;
1.2 (multilayer) ;
2. :
2.1 (Feedforward networks);
2.2 (Feedback networks);
, . . : , Adaline( ), , (Elman) .
, , , :
– . , . , , , , , .
(feedforward networks)
. – feedforward, ; , , , . – feedforward .
(Feedback networks)
, , , , – feedback-. :
– , , , . , , . feedback – , (Elman) (Hopfield), , .
—
, . , . . , , . :
, , (supervised learning), , , ( ). , « », .
!
Java. Java — - , 1990- Sun Microsystems, Oracle 2010-. , Java , . - , Java, . — - , — , , car(, ) my car(, — ). Java ( ), - (). , — . :
: , , .
: , ((public) ), ((private) (protected)), .
: , ; , - . , , .
: , , .
, , , . , , , , , : , . . / , .
, , . , - , / . . , 6 , :
: Neuron |
|
|
|
private ArrayList listOfWeightIn |
ArrayList |
private ArrayList listOfWeightOut |
ArrayList |
|
|
public double initNeuron() |
listOfWeightIn, listOfWeightOut |
: |
|
: |
|
public ArrayList getListOfWeightIn() |
ListOfWeightIn |
: |
|
: , ListOfWeightIn |
|
public void setListOfWeightIn(ArrayList listOfWeightIn) |
ListOfWeightIn |
: , |
|
: |
|
public ArrayList getListOfWeightOut() |
ListOfWeightOut |
: |
|
: , ListOfWeightOut |
|
public void setListOfWeightOut(ArrayList listOfWeightOut) |
ListOfWeightOut |
: , |
|
: |
|
: Neuron.java |
: Layer |
|
: . |
|
|
|
private ArrayList listOfNeurons |
ArrayList Neuron |
private int numberOfNeuronsInLayer |
, . |
|
|
public ArrayList getListOfNeurons() |
listOfNeurons |
: |
|
: listOfNeurons |
|
public void setListOfNeurons(ArrayList listOfNeurons) |
listOfNeurons |
: listOfNeurons |
|
: |
|
public int getNumberOfNeuronsInLayer() |
numberOfNeuronsInLayer |
: |
|
: numberOfNeuronsInLayer |
|
public void setNumberOfNeuronsInLayer(int numberOfNeuronsInLayer) |
numberOfNeuronsInLayer |
: numberOfNeuronsInLayer |
|
: |
|
: Layer.java |
: InputLayer |
|
: Layer |
|
|
|
|
|
|
|
public void initLayer(InputLayer inputLayer) |
|
: InputLayer |
|
: |
|
public void printLayer(InputLayer inputLayer) |
|
: InputLayer |
|
: |
|
: InputLayer.java |
: HiddenLayer |
|
: Layer |
|
|
|
|
|
|
|
public ArrayList initLayer( HiddenLayer hiddenLayer, ArrayList listOfHiddenLayers, InputLayer inputLayer, OutputLayer outputLayer ) |
() |
: HiddenLayer, HiddenLayer, InputLayer, OutputLayer |
|
: |
|
public void printLayer(ArrayList listOfHiddenLayers) |
() |
: HiddenLayer |
|
: |
|
: HiddenLayer.java |
: OutputLayer |
|
: Layer |
|
|
|
|
|
|
|
public void initLayer(OutputLayer outputLayer) |
|
: OutputLayer |
|
: |
|
public void printLayer(OutputLayer outputLayer) |
|
: OutputLayer |
|
: |
|
: OutputLayer.java |
: NeuralNet |
|
: ( , , ). : . |
|
|
|
private InputLayer inputLayer |
InputLayer |
private HiddenLayer hiddenLayer |
HiddenLayer |
private ArrayList listOfHiddenLayer |
ArrayList HiddenLayer. |
private OutputLayer outputLayer |
OutputLayer |
private int numberOfHiddenLayers |
, |
|
|
public void initNet() |
. |
: |
|
: |
|
public void printNet() |
. . |
: |
|
: |
|
: NeuralNet.java |
— (UML). UML , , , , , / . : , .
, NeuralNet, n. n ( ), initNet () printNet () n, , . , :
public class NeuralNetTest {
public static void main(String[] args) {
NeuralNet n = new NeuralNet();
n.initNet();
n.printNet();
}
}
, , , . , , :
この章では、ニューラルネットワークの概要、それらの概要、用途、および基本的な概念について説明しました。また、Javaプログラミング言語でのニューラルネットワークの非常に単純な実装も見ました。そこでは、ニューラルネットワークの各要素をコーディングすることにより、ニューラルネットワークの理論的概念を実際に適用しました。高度な概念に進む前に、基本的な概念を理解することが重要です。同じことがJavaコードにも当てはまります。次の章では、ニューラルネットワークのトレーニングプロセスをさらに深く掘り下げ、簡単な例を使用してさまざまなタイプのスロープを探索します。
翻訳者から
原著:Javaを使用したニューラルネットワークプログラミング