¿Por qué la función de costo de las redes neuronales no es convexa?

22

Hay un hilo similar aquí (¿ La función de costo de la red neuronal no es convexa? ) Pero no pude entender los puntos en las respuestas allí y mi razón para preguntar nuevamente con la esperanza de que esto aclare algunos problemas:

Si estoy usando la función de suma de costo de diferencia al cuadrado, finalmente estoy optimizando algo de la forma donde es el valor real de la etiqueta durante el entrenamiento fase y es el valor de etiqueta predicho. Como tiene una forma cuadrada, debería ser una función de costo convexa. Entonces, ¿qué es lo que podría hacerlo no convexo en un NN? y yΣi=1N(yiyi^)2yy^

Luca
fuente
77
trivialmente, es porque , y en general no hay garantías de que una función arbitraria sea convexay^=f(x)
generic_user

Respuestas:

35

i(yiy^i)2 es efectivamente convexo en . Pero si puede no ser convexo en , que es la situación con la mayoría de los modelos no lineales, y en realidad nos importa la convexidad en \ theta porque eso es lo que estamos optimizando. función de costo terminada. y i=f(xi;θ)θθy^iy^i=f(xi;θ)θθ

Por ejemplo, consideremos una red con 1 capa oculta de N unidades y una capa de salida lineal: nuestra función de costo es

g(α,W)=i(yiαiσ(Wxi))2
donde xiRp y WRN×p (y estoy omitiendo los términos de sesgo por simplicidad). Esto no es necesariamente convexo cuando se ve como una función de (α,W) (dependiendo de σ : si se usa una función de activación lineal, entonces todavía puede ser convexo). Y cuanto más se profundiza nuestra red, menos convexas son las cosas.

Ahora defina una función por donde es con establecido en y establecido en . Esto nos permite visualizar la función de costo ya que estos dos pesos varían. h ( u , v ) = g ( α , W ( u , v ) ) W ( u , v ) W W 11 u W 12 vh:R×RRh(u,v)=g(α,W(u,v))W(u,v)WW11uW12v

La figura siguiente muestra esto para la función de activación sigmoidea con , y (por lo que es una arquitectura extremadamente simple). Todos los datos (tanto como ) son iid , al igual que los pesos que no varían en la función de trazado. Puedes ver la falta de convexidad aquí.p = 3 N = 1 x y N ( 0 , 1 )n=50p=3N=1xyN(0,1)

superficie de pérdida

Aquí está el código R que usé para hacer esta figura (aunque algunos de los parámetros están en valores ligeramente diferentes ahora que cuando lo hice para que no sean idénticos):

costfunc <- function(u, v, W, a, x, y, afunc) {
  W[1,1] <- u; W[1,2] <- v
  preds <- t(a) %*% afunc(W %*% t(x))
  sum((y - preds)^2)
}

set.seed(1)
n <- 75  # number of observations
p <- 3   # number of predictors
N <- 1   # number of hidden units


x <- matrix(rnorm(n * p), n, p)
y <- rnorm(n)  # all noise
a <- matrix(rnorm(N), N)
W <- matrix(rnorm(N * p), N, p)

afunc <- function(z) 1 / (1 + exp(-z))  # sigmoid

l = 400  # dim of matrix of cost evaluations
wvals <- seq(-50, 50, length = l)  # where we evaluate costfunc
fmtx <- matrix(0, l, l)
for(i in 1:l) {
  for(j in 1:l) {
    fmtx[i,j] = costfunc(wvals[i], wvals[j], W, a, x, y, afunc)
  }
}

filled.contour(wvals, wvals, fmtx,plot.axes = { contour(wvals, wvals, fmtx, nlevels = 25, 
                                           drawlabels = F, axes = FALSE, 
                                           frame.plot = FALSE, add = TRUE); axis(1); axis(2) },
               main = 'NN loss surface', xlab = expression(paste('W'[11])), ylab = expression(paste('W'[12])))
jld
fuente
Fantástica respuesta; Creo que, independientemente de las funciones de activación, siempre podemos encontrar alguna permutación de los pesos / unidades ocultas, lo que generalmente significa no convexidad
información
1
@information_interchange gracias, y creo que tienes toda la razón, la respuesta que OP también relacionó con las conversaciones sobre ese enfoque
jld
gran respuesta, pero si usamos MAE en lugar de MSE, no entiendo por qué será no convexo, la composición de una función convexa y no decreciente es convexa, por lo que si tenemos MAE, aún deberíamos tener una función convexa con respecto a W.
Panda