Primero matemos algunas suposiciones malas. Necesita una función de costo para entrenar su red neuronal, por lo que una red neuronal no puede “funcionar bien” sin una. En segundo lugar, no existe una forma específica de “derivar” una función de costo, sea lo que sea que eso signifique. De hecho, puede experimentar con diferentes funciones de costo. Comencemos tratando de entender qué es una función de costo.
Una función de costo puede ser cualquier función que genere un escalar que cuantifique el error del rendimiento de su red neuronal. Por ejemplo, suponga que está tratando de construir una red neuronal para clasificar las imágenes del conjunto de datos MNIST. Su capa final tendría 10 unidades, cada una de las cuales representa la probabilidad de que la imagen sea 0, 1, 2, y así sucesivamente, por lo que puede considerar la salida de la red neuronal como un vector en [math] \ mathbb {R} ^ {10 }[/matemáticas].
Ahora imagine cómo se vería una salida ideal . Supongamos que estamos clasificando esta imagen
- ¿Cuál es la diferencia (o relación) entre el aprendizaje profundo y un sistema inteligente?
- ¿Cuáles son las relaciones entre el aprendizaje de representación y los modelos generativos en el campo de aprendizaje profundo?
- ¿Qué es el mecanizado en caliente?
- ¿Es la tasa de falso rechazo (FRR) similar a la tasa de falsos positivos (FPR)? Entonces, si es similar, ¿por qué hay disponibles diferentes definiciones para cada una de ellas?
- ¿Cuáles son las diferencias entre big data, hadoop y colmena? ¿Son solo jergas con el mismo significado? ¿Puedes resumir en detalle?
y la red neuronal genera un vector [matemática] (0.1,0.05,0.5,0.1,0,0.03,0.02,0,0.1,0.1) [/ matemática]. La mejor respuesta posible sería un vector de esta forma: [matemática] (0,0,1,0,…, 0) [/ matemática], donde la probabilidad de que el dígito sea un 2 es exactamente 1, y la probabilidad de siendo cualquier otro dígito es 0. Esto se conoce como codificación de “uno en caliente”.
Cualquier cosa que cuantifique la diferencia entre los resultados obtenidos y los ideales podría utilizarse potencialmente como una función de costo. Por ejemplo, la longitud de la diferencia de estos dos vectores. Entonces, para un montón de imágenes de entrada [math] x \ in \ mathbb {R} ^ {28 \ times 28} [/ math] con etiquetas one-hot [math] l (x) [/ math] y una red neuronal que genera [math] y (x) \ in \ mathbb {R} ^ {10} [/ math], una posible función de costo podría ser:
[matemáticas] C = \ sum_ {x} || y (x) – l (x) || [/ matemáticas].
La idea clave es que cuanto menor sea [matemática] C [/ matemática], mejor será el rendimiento de la red neuronal. Hemos reducido la tarea de clasificar estas imágenes simplemente tratando de minimizar la función de costo . Siempre que su elección de [matemática] C [/ matemática] cuantifique el rendimiento de su red neuronal de esta manera, puede ser una función de costo potencial. Con suerte, en este punto, está claro por qué necesitamos una función de costo: lo único que hace el descenso de gradiente es proporcionar los medios para minimizar [matemáticas] C [/ matemáticas], y el resultado de esto es que la red neuronal aprende.
Sin embargo, para minimizar con éxito esto, necesitamos algunas otras restricciones sobre lo que puede ser [math] C [/ math]. Una de las más importantes es hacer que [math] C [/ math] sea diferenciable con respecto a todas las salidas (las y ‘s). Esto es necesario para que funcione el descenso de gradiente, y es la razón por la cual una función como [matemáticas] C = \ sum_ {x} || y (x) – l (x) || [/ math] probablemente no sea una buena idea (los valores absolutos no son diferenciables en todas partes). Otra buena restricción es hacer que el costo de muchos insumos sea el promedio del costo de los insumos individuales.
Sin embargo, tenga en cuenta que todavía podemos encontrar más de una función de costo que podríamos usar. Por ejemplo, el error cuadrático medio:
[matemáticas] C = \ frac {1} {2n} \ sum_ {x} ^ {n} || y (x) – l (x) || ^ 2 [/ matemáticas]
Una función de costo ampliamente utilizada, que de hecho es la que usted proporcionó, es la entropía cruzada:
[matemáticas] C = – \ frac {1} {n} \ sum_ {x} ^ {n} \ sum_ {i = 1} ^ {10} [l_i \ ln y_i + (1-l_i) \ ln (1- y_i)] [/ matemáticas]
En su ejemplo, hay un término adicional a la derecha llamado regularización L2, pero no es necesario. Es un detalle penalizar grandes pesos. Por lo general, la entropía cruzada es una mejor opción que el error cuadrático medio, pero esto también se debe a razones que están fuera de tema. Sin embargo, lo que quiero decir es que no existe una función de costo única. Puede usar cualquier cosa siempre que (1) cuantifique el error de su red neuronal de modo que se haga más pequeño a medida que los y se acerquen a sus respectivos l ‘s, y (2) sea explícito y diferenciable con respecto a la salida de la red neuronal .
Recomiendo este libro de Michael Nielsen; hace un gran trabajo explicando todas las cosas que omití y es un buen punto de partida para cualquiera que quiera comenzar con el aprendizaje profundo.