¿Cuáles son las funciones de costo comunes utilizadas en la evaluación del rendimiento de las redes neuronales?
Detalles
(siéntase libre de omitir el resto de esta pregunta, mi intención aquí es simplemente proporcionar una aclaración sobre la notación que las respuestas pueden usar para ayudarlos a ser más comprensibles para el lector general)
Creo que sería útil tener una lista de funciones de costos comunes, junto con algunas formas en que se han utilizado en la práctica. Entonces, si otros están interesados en esto, creo que una wiki comunitaria es probablemente el mejor enfoque, o podemos eliminarlo si está fuera de tema.
Notación
Entonces, para comenzar, me gustaría definir una notación que todos usamos al describirlos, para que las respuestas se ajusten bien entre sí.
Esta notación es del libro de Neilsen .
Una red neuronal Feedforward consiste en muchas capas de neuronas conectadas entre sí. Luego toma una entrada, esa entrada "gotea" a través de la red y luego la red neuronal devuelve un vector de salida.
Más formalmente, llame la activación (también conocida como salida) de la neurona en la capa , donde es el elemento en el vector de entrada.
Luego podemos relacionar la entrada de la siguiente capa con la anterior a través de la siguiente relación:
dónde
es la función de activación,
es el peso desde laneurona k t h en lacapa ( i - 1 ) t h hasta laneurona j t h en lacapa i t h ,
es el sesgo de laneurona j t h en lacapa i t h , y
representa el valor de activación de laneurona j t h en lacapa i t h .
A veces escribimos para representar ∑ k ( w i j k ⋅ a i - 1 k ) + b i j , en otras palabras, el valor de activación de una neurona antes de aplicar la función de activación.
Para una notación más concisa podemos escribir
Introducción
Una función de costo es una medida de "qué tan bueno" hizo una red neuronal con respecto a su muestra de entrenamiento y la salida esperada. También puede depender de variables como pesos y sesgos.
Una función de costo es un valor único, no un vector, porque califica qué tan bien hizo la red neuronal en su conjunto.
Específicamente, una función de costo tiene la forma
Que también se puede escribir como un vector a través de
Proporcionaremos el gradiente de las funciones de costo en términos de la segunda ecuación, pero si uno quiere probar estos resultados por sí mismos, se recomienda usar la primera ecuación porque es más fácil trabajar con ella.
Requisitos de función de costo
Para usarse en la propagación hacia atrás, una función de costo debe satisfacer dos propiedades:
Esto es así, nos permite calcular el gradiente (con respecto a los pesos y sesgos) para un solo ejemplo de entrenamiento, y ejecutar Gradient Descent.
fuente
Respuestas:
Aquí están los que entiendo hasta ahora. La mayoría de estos funcionan mejor cuando se dan valores entre 0 y 1.
Costo cuadrático
También conocido como error cuadrático medio , probabilidad máxima y error cuadrático total , esto se define como:
Costo de entropía cruzada
También conocido como verosimilitud negativa de Bernoulli y entropía cruzada binaria
Costo exponencial
Distancia Hellinger
Kullback – Leibler divergencia
También conocido como divergencia de información , ganancia de información , entropía relativa , KLIC o divergencia de KL (ver aquí ).
donde es una medida de la pérdida de información cuando se utiliza para aproximar . Por lo tanto, queremos establecer y , porque queremos medir cuánta información se pierde cuando usamos para aproximar . Esto nos daDKL(P∥Q) Q P P=Ei Q=aL aij Eij
Las otras divergencias aquí utilizan esta misma idea de crear y .P=Ei Q=aL
El gradiente de esta función de costo con respecto a la salida de una red neuronal y alguna muestra es:r
Divergencia generalizada de Kullback-Leibler
A partir de aquí .
El gradiente de esta función de costo con respecto a la salida de una red neuronal y alguna muestra es:r
Distancia Itakura-Saito
También desde aquí .
El gradiente de esta función de costo con respecto a la salida de una red neuronal y alguna muestra es:r
Donde . En otras palabras, es simplemente igual a la cuadratura cada elemento de .((aL)2)j=aLj⋅aLj (aL)2 aL
fuente
a*(1-a)
noa*(1+a)
No tengo la reputación de comentar, pero hay errores de signos en los últimos 3 gradientes.
En la divergencia KL, Esto El mismo error de signo aparece en la divergencia KL generalizada.
En la distancia Itakura-Saito,
fuente