¿Es posible usar la red neuronal para predecir múltiples valores respetando ciertas condiciones?

Probablemente debería agregar algunos detalles sobre exactamente lo que quiere decir, ya que no está del todo claro.

Hasta entonces, aquí hay una respuesta a lo que creo que podría significar.

Suponga que desea predecir [matemáticas] a, b, c [/ matemáticas] con las condiciones que [matemáticas] a> b [/ matemáticas] y [matemáticas] c ^ 2 <9 [/ matemáticas]

Si todos sus datos siguen estas reglas, su red también lo hará la mayor parte del tiempo, suponiendo que esté bien entrenada . Eso es un gran problema y quizás no estés dispuesto a arriesgarte. O tal vez está intentando un enfoque de parada temprana [1] y no es razonable esperar que la red aprenda eso.

Tienes tres opciones en las que puedo pensar de inmediato y estoy seguro de que hay otras.

  1. Transforma tus etiquetas
  2. Incluya esas condiciones en su función de pérdida.
  3. Optimización con restricciones

Transforma tus etiquetas:

[matemáticas] a> b [/ matemáticas] y [matemáticas] b [/ matemáticas] puede ser prácticamente cualquier cosa. Eso significa [matemáticas] ab> 0 [/ matemáticas]. En lugar de entrenar a la red para aprender [matemáticas] a [/ matemáticas] y [matemáticas] b [/ matemáticas], capacítelo para aprender [matemáticas] ab [/ matemáticas] y [matemáticas] b [/ matemáticas]. Pero aún tiene la condición [math] ab> 0 [/ math], así que considere entrenarla para aprender [math] \ ln (ab) [/ math], cuyo dominio es [math] \ mathbb {R} [/ math ]

Del mismo modo, no lo entrenes para aprender [matemáticas] c [/ matemáticas]. Entrénelo para aprender [matemáticas] \ arctan (\ frac {\ pi} {6} c) [/ matemáticas] en su lugar. Nuevamente, el dominio se convierte en [math] \ mathbb {R} [/ math]

Los inconvenientes de este método son

  • Debe cambiar su función de pérdida para transformar las etiquetas de nuevo a su forma original antes de calcular el MSE o cualquier otra función objetivo que esté utilizando. Eso es un poco inconveniente.
  • Más importante aún, los resultados pueden haber estado más relacionados linealmente antes. Probablemente fueron más fáciles de representar como combinaciones lineales individuales de, por ejemplo, 20 salidas de la capa anterior. Ahora puede tomar más.
  • También debe tener cuidado con la tasa de aprendizaje si está usando algo simple como el descenso de gradiente simple porque las transformaciones de las etiquetas pueden hacer que el gradiente se vuelva mucho más pronunciado muy rápidamente en algunas regiones.

Incluyéndolos en su función de pérdida:

Deje que [math] \ theta [/ math] denote los parámetros de su red, [math] L (\ theta) [/ math] denote su función de pérdida y [math] h (\ theta, X) [/ math] denote su red evaluada con las entradas [matemática] X [/ matemática]. [math] h_a [/ math] es solo la salida de [math] a [/ math], [math] h_b [/ math] es la salida de [math] b [/ math], etc.

Cree una nueva función de pérdida, [math] J (\ theta) = L (\ theta) + Q (\ theta) [/ math] donde [math] Q (\ theta) [/ math] es la suma de sus datos de entrenamiento de cuánto viola la salida de su red las restricciones.

Para usar el ejemplo anterior,

[matemática] Q (\ theta, X) = \ lambda (h_a-h_b) ^ 2 [/ matemática] si [matemática] h_a-h_b <0 [/ matemática].

Agregue también un término similar para [matemáticas] c [/ matemáticas].

Optimización con restricciones:

Las redes neuronales se pueden optimizar como cualquier función. Existen algoritmos de optimización restringidos y no hay nada que le impida usar uno … excepto que la optimización restringida es un problema mucho más difícil que la optimización estándar y lleva mucho más tiempo. Las redes neuronales ya tardan un tiempo en entrenarse, por lo que realmente no desea prolongarlo si puede evitar hacerlo.

En general, sugeriría la opción 2, incluidas las violaciones en su función de pérdida.

Ni siquiera garantiza que sus predicciones de datos de entrenamiento satisfagan sus condiciones, pero lo hace bastante probable, dependiendo de su elección de [math] \ lambda [/ math], y es mucho más fácil que las demás.

Notas al pie

[1] Parar temprano – Wikipedia

More Interesting

¿Cuáles son los algoritmos para el resumen automático? ¿Alguien puede explicar los pasos en el resumen automático?

¿Qué cobran por hora los contratistas en aprendizaje automático?

¿Cuál es la diferencia entre las pruebas de heterocedasticidad y las pruebas de normalidad de errores?

¿Cuáles son algunos trabajos de investigación recientes sobre detección de anomalías?

¿Cuál es la diferencia entre el análisis factorial exploratorio (EFA) y el análisis factorial confirmatorio (CFA)?

¿La normalización por lotes ha vuelto obsoleta la inicialización de Xavier al entrenar redes neuronales?

En los campos de redes neuronales o aprendizaje profundo, ¿qué es un "gráfico computacional"?

¿Por qué PCA y LDA se usan juntas en el reconocimiento facial?

¿Cuáles son los métodos actuales o estándar de combinación de datos estructurados y no estructurados en redes neuronales convolucionales?

Cómo usar tanto algoritmos genéticos como redes neuronales artificiales en una simulación de vida artificial

¿Necesita saber la teoría de la medida para hacer investigación de aprendizaje automático?

¿Cuáles son algunos desafíos calificados de aprendizaje automático que se inician cada año?

¿Cómo tratan SVM y ANN los valores atípicos?

¿Cree en los resultados producidos por el análisis de control metabólico (modelado matemático utilizando parámetros cinéticos)?

¿Cuáles son los beneficios de usar unidades lineales rectificadas frente a la función de activación sigmoidea típica?