En la mayoría de los ejemplos que he visto hasta ahora de las redes neuronales, la red se usa para la clasificación y los nodos se transforman con una función sigmoidea. Sin embargo, me gustaría usar una red neuronal para generar un valor real continuo (de manera realista, la salida generalmente estaría en el rango de -5 a +5).
Mis preguntas son:
1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?
Estoy buscando implementar inicialmente PyBrain, que describe estos tipos de capas .
Entonces, ¿estoy pensando que debería tener 3 capas para comenzar (una capa de entrada, oculta y de salida) que son todas capas lineales? ¿Es esa una forma razonable? O alternativamente, ¿podría "estirar" la función sigmoidea en el rango de -5 a 5?
regression
neural-networks
Usuario
fuente
fuente
Respuestas:
1 . ¿Debo seguir escalando las características de entrada usando el escalado de características? Que rango
Escalar no empeora nada. Lea esta respuesta de la red neuronal de Sarle Preguntas frecuentes: Asunto: ¿Debería normalizar / estandarizar / reescalar los datos?.
2 . ¿Qué función de transformación debo usar en lugar del sigmoide?
fuente
Descargo de responsabilidad: el enfoque presentado no es factible para valores continuos, pero creo que tiene algo de peso en la toma de decisiones para el proyecto Smarty77 presenta un buen punto sobre el uso de una función sigmoide reescalada. Inherentemente, la función sigmoidea produce una probabilidad, que describe una tasa de éxito de muestreo (es decir, 95 de cada 100 fotos con estas características son exitosamente 'perro'). El resultado final descrito es binario, y el entrenamiento, que usa 'entropía cruzada binaria' describe un proceso de separación de resultados diametralmente opuestos, que inherentemente desalienta los resultados en el rango medio. El continuo de la salida está simplemente allí para escalar en función del número de muestras (es decir, un resultado de 0.9761 significa que 9761 de cada 10000 muestras que muestran esos o triats similares son 'dog'), pero cada resultado en sí debe considerarse binario y no granular arbitrariamente. Como tal, no debe confundirse y aplicarse como se haría con números reales y puede no ser aplicable aquí. Aunque no estoy seguro de la utilización de la red, normalizaría el vector de salida wrt. Esto se puede hacer con softmax. Esto también requerirá que haya 11 salidas lineales (bins) de la red (una para cada salida -5 a +5), una para cada clase. Proporcionará un valor de garantía para cualquier 'bin' que sea la respuesta correcta. Esta arquitectura sería entrenable con una codificación de uno en caliente, con el 1 indicando el bin correcto. El resultado se puede interpretar de alguna manera, como una estrategia codiciosa o un muestreo probabilístico. Sin embargo, para refundirlo en una variable continua, la seguridad de cada índice puede usarse como un peso para colocar un marcador en una línea numérica (similar al comportamiento de la unidad sigmoidea), pero esto también resalta el problema principal: si la red está bastante segura de que el resultado es -2 o +3, pero absolutamente seguro de que no es otra cosa, ¿es +1 un resultado viable? Gracias por su consideración. Buena suerte en tu proyecto.
fuente