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]
- ¿Dónde aplicarías algoritmos de aprendizaje automático en tu vida diaria? ¿Por qué?
- ¿Cómo funciona el algoritmo EM para un modelo mixto que factoriza según un modelo Naive-Bayes?
- ¿Cuál es el propósito de AdaGrad para la formación decente de la red neuronal de gradiente estocástico?
- Cómo explicar las diferencias entre IBM Watson y Google DeepMind a personas no técnicas
- ¿Qué métodos de aprendizaje automático lo llevarán al top 10 de las competencias de kaggle?
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.
- Transforma tus etiquetas
- Incluya esas condiciones en su función de pérdida.
- 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