Google+ Seguidores

lunes, 16 de julio de 2018

Introducción a las Redes Neuronales: Parte #1 - Métodos de Aprendizaje

En este articulo nos centraremos en conocer los métodos de aprendizaje para el entrenamiento de las redes neuronales.

Como siempre, trata de explicarlo de manera clara  sencilla, sin tantas expresiones matemáticas. Claro, es inevitable tener que colocar más de 3 formulas, ya que es muy importante conocer los procesos matemáticos de las redes neuronales. Sabes que si tienes alguna duda, puedes dejar un comentario, y con gusto responderé.

Imagen relacionada

1.3 Métodos de Aprendizaje

Ya hemos vistos cual es la estructura de una red neuronal, vimos cuales eran sus capas y las funciones que realiza una neurona para recibir y transmitir información.

Las redes neuronales buscan imitar el proceso por el que pasa nuestro cerebro para aprender e interpretar los datos que se le den como entrada.

Igual que en el mundo físico, hay diferentes maneras en la que una red neuronal puede aprender. 

Una red neuronal debe aprender a calcular la salida correcta para un vector de entrada de un conjunto de ejemplos. Este proceso de aprendizaje los denominamos "proceso de entrenamiento o acondicionamiento". 

El aprendizaje de una red neuronal significa "adaptación de los pesos". Por lo tanto podemos decir que el aprendizaje es el proceso por el cual una red neuronal modifica sus pesos en respuesta a una información de entrada. Los cambios que se producen durante el mismo se reducen a la destrucción, modificación y creación de conexiones entre las neuronas. En los modelos de redes neuronales artificiales, la creación de una nueva conexión implica que el peso de la misma pasa a tener un valor distinto de cero. De la misma manera, una conexión se destruye cuando su peso pasa a ser cero.

Cuando la red neuronal esta en proceso de aprendizaje, los pesos de las conexiones de la red sufren modificaciones, por lo tanto, se puede afirmar que este proceso ha terminado (la red ha aprendido) cuando los valores de los pesos permanecen estables.

Una generalización de la fórmula o regla para decir los cambios en los pesos es
la siguiente:

Peso Nuevo = Peso Viejo + Cambio de Peso

Matemáticamente esto es:

wij(t+1) = wij(t) + Δwij(t)

donde t hace referencia a la etapa de aprendizaje, wij(t+1) al peso nuevo y wij(t) al peso
viejo.

Hay dos métodos de aprendizaje los cuales son los más importantes:
  • Aprendizaje Supervisado
  • Aprendizaje no supervisado

1.3.1 Aprendizaje Supervisado

El aprendizaje supervisado se caracteriza porque el proceso de aprendizaje se
realiza mediante un entrenamiento controlado por un agente externo (supervisor,
maestro) que determina la respuesta que debería generar la red a partir de una entrada
determinada. El supervisor controla la salida de la red y en caso de que ésta no coincida
con la deseada, se procederá a modificar los pesos de las conexiones, con el fin de
conseguir que la salida obtenida se aproxime a la deseada.

En este tipo de aprendizaje se suelen considerar, a su vez, tres formas de llevarlo
a cabo, que dan lugar a los siguientes aprendizajes supervisados:

  1. Aprendizaje por corrección de error
  2. Aprendizaje por refuerzo
  3. Aprendizaje estocástico

1.3.1.1 Aprendizaje por corrección de error 

Consiste en ajustar los pesos de las conexiones de la red en función de la
diferencia entre los valores deseados y los obtenidos a la salida de la red, es decir, en
función del error cometido en la salida.

Un ejemplo de este tipo de algoritmos lo constituye la regla de aprendizaje del
Perceptron, utilizada en el entrenamiento de la red del mismo nombre que desarrolló
Rosenblatt en 1958 [Rosenblatt 58]. Esta es una regla muy simple, para cada neurona en
la capa de salida se le calcula la desviación a la salida objetivo como el error, δ. El cual
luego se utiliza para cambiar los pesos sobre la conexión de la neurona precedente. El
cambio de los pesos por medio de la regla de aprendizaje del Perceptron se realiza
según la siguiente regla:

Δwij = σ*outj*(aqi – outi);

donde: aqi es la salida deseada/objetivo de la neurona de salida Ni, δi = (aqi – outi) la
desviación objetivo de la neurona Ni y σ el aprendizaje.

La salida de la neurona Nj (outj) se utiliza, porque este valor influye en la entrada
global y, por ende, en la activación y luego en la salida de la neurona Ni. Esto es
semejante a un “efecto en cadena”.

Otro algoritmo muy conocido y que pertenece a esta clasificación es la regla de
aprendizaje Delta o regla del mínimo error cuadrado (LMS Error: Least Mean Squared
Error), que también utiliza la desviación a la salida objetivo, pero toma en consideración
a todas las neuronas predecesoras que tiene la neurona de salida. Esto permite
cuantificar el error global cometido en cualquier momento durante el proceso de
entrenamiento de la red, lo cual es importante, ya que cuanto más información se tenga
sobre el error cometido, más rápido se puede aprender. Luego el error calculado (δ) es
igualmente repartido entre las conexiones de las neuronas predecesoras.

Por último se debe mencionar la regla de aprendizaje de propagación hacia
atrás o de backpropagation, también conocido como regla LMS multicapa, la cual es
una generalización de la regla de aprendizaje Delta. Esta es la primer regla de
aprendizaje que permitió realizar cambios sobre los pesos en las conexiones de la capa
oculta.

1.3.1.2 Aprendizaje por refuerzo

Se trata de un aprendizaje supervisado, más lento que el anterior, que se basa en
la idea de no disponer de un ejemplo completo del comportamiento deseado, es decir, de
no indicar durante el entrenamiento exactamente la salida que se desea que proporcione
la red ante una determinada entrada.

En el aprendizaje por refuerzo la función del supervisor se reduce a indicar
mediante una señal de refuerzo si la salida obtenida en la red se ajusta a la deseada
(éxito = +1 o fracaso = -1), y en función de ello se ajustan los pesos basándose en un
mecanismo de probabilidades. Se podría decir que en este tipo de aprendizaje la función
del supervisor se asemeja más a la de un crítico (que opina sobre la respuesta de la red)
que a la de un maestro (que indica a la red la respuesta concreta que debe generar),
como ocurría en el caso de supervisión por corrección del error.

1.3.1.3 Aprendizaje estocástico

Consiste básicamente en realizar cambios aleatorios en los valores de los pesos
de las conexiones de la red y evaluar su efecto a partir del objetivo deseado y de
distribuciones de probabilidad.

En el aprendizaje estocástico se suele hacer una analogía en términos
termodinámicos, asociando a la red neuronal con un sólido físico que tiene cierto estado
energético. En el caso de la red, la energía de la misma representaría el grado de
estabilidad de la red, de tal forma que el estado de mínima energía correspondería a una
situación en la que los pesos de las conexiones consiguen que su funcionamiento sea el
que más se ajusta al objetivo deseado.

Según lo anterior, el aprendizaje consistiría en realizar un cambio aleatorio de
los valores de los pesos y determinar la energía de la red (habitualmente la función
energía es una función de Liapunov). Si la energía es menor después del cambio, es
decir, si el comportamiento de la red se acerca al deseado, se acepta el cambio; si, por el
contrario, la energía no es menor, se aceptaría el cambio en función de una determinada
y preestablecida distribución de probabilidades.

1.3.2 Aprendizaje no supervisado

Las redes con aprendizaje no supervisado (también conocido como
autosupervisado) no requieren influencia externa para ajustar los pesos de las
conexiones entre sus neuronas. La red no recibe ninguna información por parte del
entorno que le indique si la salida generada en respuesta a una determinada entrada es o
no correcta.

Estas redes deben encontrar las características, regularidades, correlaciones o
categorías que se puedan establecer entre los datos que se presenten en su entrada.
Existen varias posibilidades en cuanto a la interpretación de la salida de estas redes, que
dependen de su estructura y del algoritmo de aprendizaje empleado.

En algunos casos, la salida representa el grado de familiaridad o similitud entre
la información que se le está presentando en la entrada y las informaciones que se le han
mostrado hasta entonces (en el pasado). En otro caso, podría realizar una clusterización
(clustering) o establecimiento de categorías, indicando la red a la salida a qué categoría
pertenece la información presentada a la entrada, siendo la propia red quien debe
encontrar las categorías apropiadas a partir de las correlaciones entre las informaciones
presentadas.

En cuanto a los algoritmos de aprendizaje no supervisado, en general se suelen
considerar dos tipos, que dan lugar a los siguientes aprendizajes:
  1. Aprendizaje hebbiano.
  2. Aprendizaje competitivo y comparativo.

1.3.1.1 Aprendizaje hebbiano

Esta regla de aprendizaje es la base de muchas otras, la cual pretende medir la
familiaridad o extraer características de los datos de entrada. El fundamento es una
suposición bastante simple: si dos neuronas Ni y Nj toman el mismo estado
simultáneamente (ambas activas o ambas inactivas), el peso de la conexión entre ambas
se incrementa.

Las entradas y salidas permitidas a la neurona son: {-1, 1} o {0, 1} (neuronas
binarias). Esto puede explicarse porque la regla de aprendizaje de Hebb se originó a
partir de la neurona biológica clásica, que solamente puede tener dos estados: activa o
inactiva.

1.3.1.2 Aprendizaje competitivo y comparativo

Se orienta a la clusterización o clasificación de los datos de entrada. Como
característica principal del aprendizaje competitivo se puede decir que, si un patrón
nuevo se determina que pertenece a una clase reconocida previamente, entonces la
inclusión de este nuevo patrón a esta clase matizará la representación de la misma. Si el
patrón de entrada se determinó que no pertenece a ninguna de las clases reconocidas
anteriormente, entonces la estructura y los pesos de la red neuronal serán ajustados para
reconocer la nueva clase.

3 comentarios :
Write comentarios
  1. Umm. Lo leere mas tarde con calma. Podrías hacer según esto un mayordomo o algo así?. Ejemplo alguien virtual que responda cosas coherentes en una sala de chat?
    Y que aprenda de las preguntas que se le hagan.? Umm eso es inteligencia Artificial. Plis muestrenme un pequeño código en python que haga algo parecido ...

    ResponderEliminar
    Respuestas
    1. Hola. Por supuesto, nada es imposible. Claro, para crear un bot capaz de interpretar las preguntas y puede retornar respuestas coherentes, es un complicado ya implica muchos procesos incluyendo procesamiento del lenguaje natural que es otro tema amplio, en un futuro espero poder realizar un proyecto como ese y compartirlo. Pero si necesitas un bot como el que describes, te recomiendo https://dialogflow.com/ es una API mantenida por Google, es muy buena te la recomiendo, tienen implementaciones en diversos lenguajes (incluyendo python) también lo puedes integrar a Telegram, Facebook Messdenger, Google Assistant y mucho más.

      Eliminar
  2. Me encanta que alguien este investigando y realizar una red neural con python te doy mi apoyo esa idea de crear un cerebro virtual que pueda pensar estubo en mis ideas hace ya 2 años pero sigo estudiado un poco mas de lo que ya se.

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Powered by Blogger .