¿Qué algoritmo de optimización debo utilizar para optimizar los pesos de un perceptrón multicapa?

En realidad, estas son 3 preguntas:

¿Qué algoritmo de optimización debería utilizar para optimizar los pesos de un perceptrón multicapa, si supiera ...

1) ¿solo el valor de la función de error? (caja negra)

2) el gradiente? (primera derivada)

3) ¿el degradado y la arpillera? (segunda derivada)

Escuché que CMA-ES debería funcionar muy bien para 1) y BFGS para 2) pero me gustaría saber si hay alguna alternativa y no sé qué algoritmo tomar para 3).

preguntado el 27 de agosto de 11 a las 18:08

¿Tiene un problema en particular que está tratando de resolver? Confieso que no puedo pensar en ningún escenario en el que solo use la función de error, ya que la mayoría de las ANN usan funciones que tienen derivadas fácilmente calculadas. ¿Qué le impide utilizar la propagación inversa? -

Tengo dos categorías diferentes de problemas para resolver: 1) una tarea de aprendizaje supervisado (datos de la interfaz cerebro-computadora) 2) algunas tareas de aprendizaje por refuerzo con ... a) estado de contrinouos y espacio de acción discreto. Aquí tengo una función de error y puedo aplicar retropropagación. b) estado continuo y espacio de acción. Creo que no tendré un error directo en este caso porque la entrada de la ANN es el estado y la salida es la acción y realmente no sé qué acción es óptima. Pero tengo algo así como una función de fitness (retorno). -

2 Respuestas

Ok, esto realmente no responde a la pregunta que hizo inicialmente, pero proporciona una solución al problema que mencionó en los comentarios.

Los problemas como tratar con un espacio de acción continuo normalmente no se resuelven cambiando la medida del error, sino más bien cambiando la arquitectura de la red en general. Esto le permite seguir usando la misma información de error altamente informativa mientras sigue resolviendo el problema que desea resolver.

Algunos posibles cambios arquitectónicos que podrían lograr esto se discuten en las soluciones a este pregunta. En mi opinión, sugeriría usar una técnica de Q-learning modificada donde el estado y los espacios de acción estén representados por mapas autoorganizados, que se discute en un artículo mencionado en el enlace anterior.

Espero que esto ayude.

contestado el 23 de mayo de 17 a las 15:05

Gracias por tu respuesta, pero no quiero cambiar la topología. De hecho, tengo una pequeña modificación para una ANN y quiero probarla con problemas de RL. En caso de que tenga un espacio de estado continuo y un espacio de acción discreto, crearía una ANN que tenga la entrada (s, a) y la salida Q (s, a), para que pueda generar una política (elija la acción que maximiza Q (s, a)) calculando Q (s, a) para todo a. Para un continuo, esto no funciona, porque tuvo que verificar un número infinito de acciones. Por lo tanto, aproximaría pi (s, a) directamente con el regreso de un episodio como aptitud. - alfa

Quedan muy pocos caracteres ... :) Creo que este enlace es genial: homepages.cwi.nl/~hasselt/papers/RL_in_Continuous_Spaces/…. Especialmente la parte sobre "Búsqueda de políticas con estrategias evolutivas". - alfa

Finalmente resolví este problema: existen algunos algoritmos eficientes para optimizar las redes neuronales en el aprendizaje por refuerzo (con topología fija), por ejemplo, CMA-ES (CMA-NeuroES) o CoSyNE.

El mejor algoritmo de optimización para el aprendizaje supervisado parece ser Levenberg-Marquardt (LMA). Este es un algoritmo diseñado específicamente para problemas de mínimos cuadrados. Cuando hay muchas conexiones y pesos, LMA no funciona muy bien porque el espacio requerido es enorme. En este caso estoy usando Conjugate Gradient (CG).

La matriz de arpillera no acelera la optimización. Los algoritmos que se aproximan a la segunda derivada son más rápidos y eficientes (BFGS, CG, LMA).

editar: Para problemas de aprendizaje a gran escala, a menudo el descenso de gradiente estocástico (SGD) supera a todos los demás algoritmos.

respondido 20 mar '12, 13:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.