In diesem Kapitel werden wir neuronale Netze vorstellen und herausfinden, wofür sie entwickelt wurden. Dieses Kapitel dient als Grundlage für nachfolgende Kapitel, während dieses die Grundkonzepte neuronaler Netze zeigt. In diesem Kapitel werden die folgenden Themen behandelt:
Künstliche Neuronen
Gewichte und Vorurteile
Aktivierungsfunktionen
Schichten von Neuronen
Implementierung eines neuronalen Netzwerks in Java
Neuronale Netze aufdecken
Erstens kann der Begriff "neuronale Netze" eine Momentaufnahme des Gehirns in Ihrem Kopf erstellen, insbesondere für diejenigen, die sich zuvor damit vertraut gemacht haben. Dies ist tatsächlich wahr, wir betrachten das Gehirn als ein großes und natürliches neuronales Netzwerk. Was können wir jedoch über künstliche neuronale Netze ( ANNs ) sagen ? Nun, es beginnt mit dem Antonyme natürlich und der erste Gedanke, der uns in den Sinn kommt, ist ein Bild eines künstlichen Gehirns oder eines Roboters, das den Begriff „ künstlich “ berücksichtigt". In diesem Fall geht es auch um die Schaffung einer Struktur, die ähnlich und vom menschlichen Gehirn inspiriert ist. deshalb heißt es künstliche Intelligenz. Daher könnte ein Leser, der noch keine Erfahrung mit ANN hat, jetzt denken, dass das Buch lehrt, wie man intelligente Systeme baut, einschließlich eines künstlichen Gehirns, das das menschliche Bewusstsein mit Java-Programmen emulieren kann, oder? Natürlich werden wir uns nicht mit der Schaffung künstlicher Denkmaschinen wie in der Matrix-Trilogie befassen. Dieses Buch erklärt jedoch einige unglaubliche Fähigkeiten und was diese Strukturen leisten können. Wir werden dem Leser Java-Quellcodes mit der Definition und Erstellung der grundlegenden neuronalen Netzwerkstrukturen zur Verfügung stellen und alle Vorteile der Java-Programmiersprache nutzen.
Warum künstliche neuronale Netze?
, . (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();
}
}
, , , . , , :
In diesem Kapitel haben wir eine Einführung in neuronale Netze gesehen, was sie sind, wofür sie verwendet werden und ihre Grundkonzepte. Wir haben auch eine sehr einfache Implementierung eines neuronalen Netzwerks in der Programmiersprache Java gesehen, in der wir die theoretischen Konzepte des neuronalen Netzwerks in der Praxis angewendet haben, indem wir jedes der neuronalen Netzwerkelemente codiert haben. Es ist wichtig, die Grundkonzepte zu verstehen, bevor wir zu fortgeschrittenen Konzepten übergehen. Gleiches gilt für den Java-Code. Im nächsten Kapitel werden wir uns eingehender mit dem Trainingsprozess für neuronale Netze befassen und die verschiedenen Arten von Steigungen anhand einfacher Beispiele untersuchen.
Vom Übersetzer
Originalbuch: Neuronale Netzwerkprogrammierung mit Java