El documento describe el modelo de neurona de McCulloch-Pitts, que fue el primer modelo de red neuronal moderno. Una neurona de McCulloch-Pitts realiza una suma ponderada de las entradas, seguida de una función no lineal, para determinar su salida. Las redes neuronales de McCulloch-Pitts pueden aprender ajustando los pesos de las conexiones entre neuronas. Aunque simple, este modelo sentó las bases para el desarrollo de redes neuronales más complejas y capacitadas para tareas más avanzadas.
Caldera Recuperadora de químicos en celulosa tipos y funcionamiento
Neurona de Mc culloch
1. Neurona de McCulloch-Pitts
Ms. Ing. Jairo E. Márquez D.
Introducción
Las redes neuronales artificiales son objetos matemáticos o computacionales que
se definen en un intento de simular el cerebro humano en un ordenador.
Computacionalmente suponen un modelo distinto a la tradicional máquina de
Turing o de procesamiento en serie. Una red neuronal artificial permite un
procesamiento altamente paralelo, al menos en teoría (es claro que si se
implementan en un ordenador convencional con su procesamiento en serie, el
procesamiento de la información deja de ser realmente paralelo).
Una red neuronal tiene capacidad para aprender y adaptarse a nuevas
condiciones del entorno, como las redes reales; en nuestro caso, esas condiciones
de contorno vienen dadas por los valores en las señales de entrada de la red. Se
pueden distinguir modelos de redes neuronales con diversos tipos de aprendizaje:
el aprendizaje puede ser no guiado o guiado, y dentro de que sea guiado, el
modelo de “profesor” puede variar.
Como el cerebro humano, un red neuronal artificial ha de ser un sistema robusto,
al que la pérdida de algunas de sus unidades constituyentes (las ‘neuronas’) no
afecte de forma significativa a efectos de resolver los problemas para los que se
diseñe.
2. El primer modelo de neurona, propuesto por McCulloch y Pitts en los años 40, es
un ‘combinador lineal’: la neurona realiza una combinación lineal de las señales de
entrada, cada una de las cuales tiene su peso, fijo o no, y en función del valor
obtenido puede activarse o no (si supera un cierto valor umbral, se activa y
devuelve una salida; si no, devuelve otro). El modelo puede mejorarse aplicando la
salida de la combinación lineal a una cierta función, generalmente diferenciable,
aunque ello no es imprescindible, y comparar el valor que toma la función con el
valor umbral para determinar si la neurona se activa o no.
Una red neuronal se puede representar
mediante un grafo dirigido, donde cada nodo
representa una neurona, y las aristas
representan las conexiones entre las
mismas. Es claro que el grafo es dirigido,
pues las señales que se envían las neuronas
entre sí son siempre en el mismo sentido (y
por tanto, tiene sentido que las aristas sean
dirigidas). Lo que sí puede ocurrir, y de
hecho ocurre en todos los modelos
recurrentes de redes neuronales, es que la
salida de una neurona influya en sus propias
entradas; es decir, una neurona se puede
realimentar.
Una red neuronal puede ser ‘entrenada’ para que realice unas determinadas
tareas. Una de las formas más comunes de realizar dicho entrenamiento es
proporcionar a la red un determinado conjunto de entradas y las correspondientes
salidas que se esperan para esas entradas. De ese modo las neuronas de la red
podrían, si por ejemplo estuviéramos trabajando con una red formada por
neuronas de McCulloch-Pitts, ajustar sus pesos para conseguir obtener los
resultados deseados. Además, si se trabaja previamente sobre el problema a
resolver, se puede diseñar la estructura de la red de forma que resulte más
sencillo el tratamiento del mismo.
En general, se espera de una red neuronal artificial que responda de forma similar
ante entradas parecidas; es decir, que la red tenga capacidad de generalización.
Para comprobar si dos entradas son parecidas se puede medir la distancia
(vectorial) entre ambas, o utilizar cualquier otro tipo de medida que tenga sentido
en el contexto del problema que estemos resolviendo.
El modelo neuronal de McCulloch y Pitts fue el primer modelo neuronal moderno, y
ha servido de inspiración para el desarrollo de otros modelos neuronales. Sin
embargo, en muchos de los estudios en que refieren a este modelo, no se
interpreta correctamente el sentido que quisieron dar originalmente McCulloch y
Pitts, atribuyéndole características o funciones que no fueron descritas por sus
autores, o restándole importancia a la capacidad de procesamiento del modelo.
Por otro lado, el modelo McCulloch-Pitts por sí mismo está retomando importancia
3. debido a que es uno de los pocos modelos digitales en tiempo discreto y, como
para realizar implantaciones electrónicas o computacionales de las neuronas
artificiales en la actualidad se utilizan sistemas digitales, con la mayoría de los
modelos analógicos actuales es necesario realizar ciertas adaptaciones a los
modelos al momento de implantarlos, lo que dificulta y hace imprecisa a dicha
implantación con respecto al comportamiento teórico derivado del modelo.
Definición
En términos generales, la neurona de
McCulloch-Pitts es una unidad de cálculo que
intenta modelar el comportamiento de
una neurona "natural", similares a las que
constituyen del cerebro humano. Ella es la
unidad esencial con la cual se construye una
red neuronal artificial.
El resultado del cálculo en una neurona
consiste en realizar una suma ponderada de
las entradas, seguida de la aplicación de una
función no-lineal, como se ilustra en la
siguiente figura
Esto se expresa matemáticamente como
Donde
es la suma ponderada.
es el valor de la i-ésima entrada (input).
es el peso (weights) de la conexión entre la i-ésima entrada y la
neurona.
4. es el valor umbral (threshold)
o es la salida (output) de la neurona.
s es la función no-lineal conocida como función de activación.
La función de activación que se usa es
La suma ponderada se puede expresar de una manera más compacta usando el
produto de matrices:
Con y .
y son los vectores extendidos de pesos y de entrada, respectivamente.
También se puede simplificar la representación gráfica de la siguiente manera:
La estructura matemática formal en términos de tablas de verdad de este tipo de
neurona son:
5. En este modelo tan
sencillo puede verse
que la activación de la
neurona depende del
valor que tomen los
pesos y las entradas, de
forma que la variación
de éstos originan
distintas salidas para la
misma entrada a la
neurona. En la práctica,
los pesos de las
neuronas se modifican sometiendo a la red a un entrenamiento, permitiendo que la
red realice una función determinada. Esta es la característica que diferencia a una
red neuronal de una máquina algorítmica clásica: una red neuronal no se
programa, se «educa».
6. La red es capaz de retener y asociar el
conocimiento a través de la adaptación de los
pesos de las neuronas siguiendo una regla de
aprendizaje. Estas reglas son ecuaciones
expresadas en función de las entradas y
salidas de las neuronas y describen la forma
de variación de los pesos. En definitiva, son el
instrumento empleado por las neuronas para
adaptarse a la información que se le
presenta.
Usos de las neuronas
Permite hacer funciones lógicas
Primera aproximación a las redes neuronales
Capacidad de computación universal (puede simular cualquier programa
computable)
Autómatas finitos (AF) equivalentes a células
Para cada célula existe un AF equivalente, para ello tenemos que:
1. Que del AF y la célula etiquetada con h = 2y se crea una entrada activadora
externa al circuito.
2. Se añade una rama excitadora para cada célula (a) que contenga h.
3. Añadir célula (a) con h=1 y que recibe 1 única entrada del exterior,
correspondiente al símbolo inicial de la cadena.
4. Se añade una rama excitadora desde la salida de la célula (a) a cada una
de las células cuya etiqueta contenga a h.
5. Se introduce una célula con etiqueta F, con h = 2 y que recibe una única
entrada externa, correspondiente al símbolo final de cadena.
6. Se añade una rama excitadora hacia la célula F desde cada una de las
células del circuito que envíe al menos una rama excitadora hacia cualquier
célula cuya etiqueta contenga uno de los estados finales.
Perceptrón simple
Es un modelo de red neuronal propuesto por Rosemblatt (1959), es una red
monocapa con alimentación hacia adelante. Así que este tipo de red, es una
colección de neuronas similares a McCulloch-Pitts, con entradas continuas [0, 1],
umbral Tj y salida bipolar {−1, 1}.
También, puede entenderse como perceptrón la neurona artificial y unidad básica
de inferencia en forma de discriminador lineal, que constituye este modelo de red
neuronal artificial, esto debido a que el perceptrón puede usarse como neurona
dentro de un perceptrón más grande u otro tipo de red neuronal artificial.
7. El concepto más básico que permite comenzar a entender un perceptrón es
asociarlo a un sensor, ya sea de temperatura, humedad, nivel de líquidos, grado
de acidez, coloración, densidad, etc. Es, en esencia, un dispositivo que, dada la
presencia de uno o varios fenómenos de entrada, permite representarlo(s)
mediante una señal de salida fácilmente reconocible. Ahora bien, si dotamos a
este simple dispositivo de varios canales de entrada (dos o más), le habremos
agregado una notable mejoría ya que podrá discriminar o diferenciar entre
distintos fenómenos de entrada variables y entregarnos una salida que
representará el criterio diferenciador o resultado de la interacción entre las
entradas.
El modelo biológico más simple de un perceptrón es una neurona y vice versa. Es
decir, el modelo matemático más simple de una neurona es un perceptrón, La
neurona es una célula especializada y caracterizada por poseer una cantidad
indefinida de canales de entrada llamados dendritas y un canal de salida llamado
axón. Las dendritas operan como sensores que recogen información de la región
8. donde se hallan y la derivan hacia el cuerpo de la neurona que reacciona
mediante una sinapsis que envía una respuesta hacia el cerebro, esto en el caso
de los seres vivos.
Este tipo de red es capaz de aprender a clasificar patrones linealmente
separables.
• Salida +1 si pertenece a la clase, −1 si no pertenece
• Pesos determinan zonas de clasificación separadas por un hiperplano (en el
caso de 2 entradas, la separación sería una línea)
• Ejemplo: con dos entradas:
Minsky y Papert (1969) mostraron esta limitación del perceptrón para
representar/aprender funciones no separables linealmente (ejemplo: XOR no
separable linealmente, necesita más de 1 capa).
Código de perceptrón en java para correrlo y probarlo, es sólo una muestra, no es
general, está hecho para dos características, lo que deben hacer es ajustarlo y/o
completarlo.
import java.text.DecimalFormat;
public class Perceptron {
/** Vector de Pesos */
private double weights[] = {0.5,-0.1,0.2};
/**
* Patrones aumentados de nuestra Muestra de Entrenamiento:
* {Característica #1, Característica #2, Bias}
*
* */
private double entries[][] = {{1.5,3,1},{3.5,4,1},{1,2,1},
{4,2,1}};
/** Clases a las que pertenecen los vectores de la variable
entries*/
private double outputs[] = {0,1,0,1};
/** Razón de aprendizaje */
private double learningRate = 0.9;
9. public double[] getWeights(){
return weights;
}
public double[][] getEntries(){
return entries;
}
public double[] getOutputs(){
return outputs;
}
/** Función para calcular el net */
public double computeNet(double[] entrie){
double net = 0;
for(int i = 0; i < entrie.length; i++)
net += entrie[i] * weights[i];
if(net > 0)
return 1;
else
return 0;
}
/** Función para corregir pesos */
public void adjustWeights(double[] entrie,double net, double
output){
double e = (output - net) * learningRate;
for(int i=0; i < entrie.length; i++){
weights[i] = roundTwoDecimals(entrie[i] * e +
weights[i]);
}
}
/** Función para entrenar */
public void train(){
boolean mistake;
do{
mistake = false;
for(int i = 0; i < entries.length; i++){
double net = computeNet(entries[i]);
if(net != outputs[i]){
mistake = true;
adjustWeights(entries[i],net,outputs[i]);
}
}
10. }while(mistake);
}
public void outputFinalWeights(){
for(int i = 0; i< weights.length; i++){
System.out.println("Peso " + (i+1) + "=" +
weights[i]);
}
}
public double roundTwoDecimals(double d) {
DecimalFormat twoDForm = new DecimalFormat("#.##");
return Double.valueOf(twoDForm.format(d));
}
public Perceptron(){
}
public static void main(String args[]){
Perceptron p = new Perceptron();
p.train();
p.outputFinalWeights();
}
}
Referencias
1. D. Michie, D.J. Spiegelhalter, C.C. Taylor (eds). Machine Learning, Neural
and Statistical Classification, 1994. [1]
2. R. Rojas. Neural Networks: A Systematic Introduction, Springer, 1996 .ISBN
3-540-60505-3.
3. Freund, Y. and Schapire, R. E. 1998. Large margin classification using the
perceptron algorithm. In Proceedings of the 11th Annual Conference on
Computational Learning Theory (COLT' 98). ACM Press.
4. Gallant, S. I. (1990). Perceptron-based learning algorithms. IEEE
Transactions on Neural Networks, vol. 1, no. 2, pp. 179-191.
5. Rosenblatt, Frank (1958), The Perceptron: A Probabilistic Model for
Information Storage and Organization in the Brain, Cornell Aeronautical
Laboratory, Psychological Review, v65, No. 6, pp. 386-408.
6. Minsky M L and Papert S A 1969 Perceptrons (Cambridge, MA: MIT Press)
7. Novikoff, A. B. (1962). On convergence proofs on perceptrons. Symposium
on the Mathematical Theory of Automata, 12, 615-622. Polytechnic Institute
of Brooklyn.
11. 8. Widrow, B., Lehr, M.A., "30 years of Adaptive Neural Networks: Peceptron,
Madaline, and Backpropagation," Proc. IEEE, vol 78, no 9, pp. 1415-1442,
(1990).