Empezando con las redes neuronales

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








All Articles