Cómo crear una red neuronal con PyBrain que tenga un número diferente de valores de salida objetivo para cada entrada

Las redes neuronales suelen tener una arquitectura y una topología fijas. Eso significa esencialmente que tienen un número fijo de entradas y un número fijo de salidas.

Si entendí tu pregunta correctamente, dices que tienes un conjunto de vectores de entrada (miembros de un conjunto de entrenamiento, supongo) y el número de salidas objetivo es diferente para cada una (o, al menos, para algunas). Si es así, lo que debe hacer es fusionar todas las salidas en un vector de salida más grande.

Por ejemplo, supongamos que tiene el vector de entrada I1 con un vector de destino con miembros (o1, o5, o7) , I2 con destino (o1, o3, o7, o8) e I3 con (o2, o3, o4, o6, o8) . Supongamos ahora que todos los miembros que no se mencionan en cada objetivo son 0 (o cualquier otro valor único y distinguido que usted reserve como señal de “no me importa” o “nada”): usemos X para ese valor. Tu conjunto de entrenamiento es ahora:

I1 -> (o1, X, X, X, o5, X, o7, X)
I2 -> (o1, X, o3, X, X, X, o7, o8)
I3 -> (X, o2, o3, o4, X, o6, X, o8)

Ahora tiene un vector de entrada de tamaño fijo y un vector de salida de tamaño fijo. Las redes neuronales pueden lidiar trivialmente con eso. Lo único importante es que debe poder distinguir las X de las o , ya que su salida de red neuronal contiene todos los componentes de salida individuales amalgamados. Es por eso que debe reservar un valor que no sea válido para todas las o ‘s, o al menos uno para las o ‘ s en cada columna. Por ejemplo, si sus o son binarias 0/1, deje que su X sea ​​-1; o mejor aún, reasigna tu binario 0/1 a -1/1 y deja que tu X sea ​​0 (ya que 0 está en el medio de una función de transferencia neural típica).

Sea creativo, elija una X sensible (o un conjunto de X ) que no se confunda con o válidas, y que no causará estragos en el entrenamiento y la convergencia, por ejemplo, por ser un valor atípico estadístico.

Otra posibilidad es agregar “columnas de bandera” a aquellas columnas donde no se puede usar una X sensible. Para cada columna de salida donde no puede usar una X distinguida, agregue una columna paralela que tenga 0 donde la otra columna tenga X y 1 en todas partes. Por ejemplo, agreguemos columnas de bandera a las columnas o5 y o6 en el ejemplo anterior:

I1 -> (o1, X, X, X, o5, 1, A, 0, o7, X)
I2 -> (o1, X, o3, X, A, 0, A, 0, o7, o8)
I3 -> (X, o2, o3, o4, A, 0, o6, 1, X, o8)

Donde reemplacé las X en esas dos columnas por otro valor A que no afectará las estadísticas de la columna ( A para “promedio” , por ejemplo). Al usar columnas de marca, “presta atención” o “usa” la salida de una columna marcada solo si el valor correspondiente en la columna de marca es 1; de lo contrario lo ignoras. Incluso puede ir más allá, y cuando entrena establece en 0 el error incurrido en una salida que no está marcada, después de todo, ese valor debe ser ignorado, y también debería ser un error, pero calcula el error en la bandera columna, y aprende de ese error!

More Interesting

¿Cuánto tiempo se detiene una computadora cuando juega contra un humano durante una partida de ajedrez?

¿Qué es la prueba de Turing?

¿Cómo ordena el nuevo algoritmo de Instagram el feed?

¿Cuáles son las principales razones por las que todavía no existe una superinteligencia artificial?

¿Cuál es la función de paso de unidad en la red neuronal artificial?

Cómo entrenar una red neuronal que aprende una operación de mapeo particular

¿Cuáles son algunos problemas interesantes que se pueden resolver utilizando redes multineurales?

¿Cómo se crea una red neuronal capaz de razonamiento abstracto?

Las tareas de aprendizaje automático de Andrew Ng's Coursera se implementan utilizando MATLAB / Octave. ¿Está desactualizado? Porque ahora usamos principalmente Python para implementar algoritmos de aprendizaje automático.

¿Podría alguien usar la inteligencia artificial para alterar la Ley de Atracción para sí mismo como una máquina de deseos?

¿Cuánto tecnología avanzada de ML necesitamos para generar subtítulos sobre la marcha en videos para cualquier idioma elegido?

¿Qué lenguaje de programación debería aprender para la IA que será predominante en el futuro cercano?

Inteligencia artificial: ¿Qué tan difícil sería crear una criatura robot de la vida real con la IA y la capacidad de entrenamiento de la criatura Blanco y Negro?

¿Debo comenzar como principiante en el aprendizaje automático mediante tareas de aprendizaje supervisadas o no supervisadas y por qué?

¿Cómo construirías un robot para responder preguntas sobre Quora?