¿Cómo obtener una salida continua de valor real de la red neuronal?

13

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?

Usuario
fuente
1
Claro que puede usar un sigmoide . Por ejemplo, comenzar desde la función logística, multiplicar por 10, restar 5 ...[,][5,5]
cbeleites admite Monica
¿Hay alguna razón particular por la que evitas usar dos capas ocultas? Esa parece ser la forma más fácil de lograr obtener una salida continua de valores reales de una red neuronal. "Una red con dos capas ocultas puede aproximar cualquier función a una precisión arbitraria" (mencionado en las notas de la diapositiva 26 del texto de aprendizaje automático de Mitchell: cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Chris Simokat
@ChrisSimokat: No, pero la mayor parte de lo que he leído hasta ahora sugiere una sola capa oculta como punto de partida razonable. ¿Puede una sola red de capa oculta no aproximarse a ninguna función?
Usuario
1
@ChrisSimokat: Tal vez me estoy perdiendo algo, pero pensé que una sola capa oculta no es igual a "perceptrón de una sola capa", ¿no?
Usuario
1
No, no te estás perdiendo nada que aparentemente no estaba leyendo lo suficientemente cerca, lo siento.
Chris Simokat

Respuestas:

12

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?

[0,1][1,1][5,5]

esparto
fuente
¿Cuál es la forma correcta de escalar la salida de la red neuronal al rango [-5,5]?
Usuario
3
e[a,b][c,d]eaba(dc)+c
2
Pero dado que sigmoide no es lineal, con una distribución uniforme que muestrea el valor de sigmoide probablemente obtendríamos algo cercano a 1 o cercano a 0. Lo que significa que tenemos que aprender nuestra red para elegir valores en el medio con más cuidado. ¿Sigmoid + scaling es realmente una buena opción?
Smarty77
0

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.

Robert Hildreth
fuente