En este capítulo, presentaremos las redes neuronales y descubriremos para qué fueron diseñadas. Este capítulo sirve como base para los capítulos siguientes, mientras que este muestra los conceptos básicos de las redes neuronales. En este capítulo, cubriremos los siguientes temas:
Neuronas artificiales
Pesos y sesgos
Funciones de activación
Capas de neuronas
Implementando una red neuronal en Java
Descubriendo redes neuronales
Primero, el término "redes neuronales" puede crear una instantánea del cerebro en su mente, en particular para aquellos que ya se han familiarizado con él. Esto es realmente cierto, pensamos en el cerebro como una red neuronal grande y natural. Sin embargo, ¿qué podemos decir sobre las redes neuronales artificiales ( ANN )? Bueno, comienza con el antónimo natural y el primer pensamiento que nos viene a la mente es una imagen de un cerebro artificial o un robot que tiene en cuenta el término “ artificial ”.". En este caso, también se trata de la creación de una estructura similar e inspirada en el cerebro humano; por eso se llama inteligencia artificial. Por lo tanto, un lector que no tenga experiencia previa con ANN puede pensar ahora que el libro enseña cómo construir sistemas inteligentes, incluido un cerebro artificial que puede emular la conciencia humana usando programas Java, ¿verdad? Por supuesto, no cubriremos la creación de máquinas de pensamiento artificial como en la trilogía Matrix; sin embargo, este libro explicará varias habilidades increíbles y lo que pueden hacer estas estructuras. Proporcionaremos al lector los códigos fuente de Java con la definición y creación de las estructuras básicas de la red neuronal, aproveche todas las ventajas del lenguaje de programación Java.
¿Por qué redes neuronales artificiales?
, . (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();
}
}
, , , . , , :
En este capítulo, vimos una introducción a las redes neuronales, qué son, para qué se utilizan y sus conceptos básicos. También vimos una implementación muy simple de una red neuronal en el lenguaje de programación Java, en la que aplicamos los conceptos teóricos de la red neuronal en la práctica codificando cada uno de los elementos de la red neuronal. Es importante comprender los conceptos básicos antes de pasar a los conceptos avanzados. Lo mismo ocurre con el código Java. En el próximo capítulo, profundizaremos en el proceso de entrenamiento de redes neuronales y exploraremos los diferentes tipos de pendientes con ejemplos simples.
Del traductor
Libro original: Programación de redes neuronales con Java