Pourquoi la fonction de coût des réseaux de neurones n'est-elle pas convexe?

22

Il y a un fil similaire ici (la fonction de coût du réseau de neurones n'est pas convexe? ) Mais je n'ai pas pu comprendre les points dans les réponses et ma raison de demander à nouveau en espérant que cela clarifiera certains problèmes:

Si j'utilise la fonction de somme des différences de coût au carré, j'optimise finalement quelque chose de la forme où est la valeur réelle de l'étiquette pendant la formation phase et est la valeur de libellé prédite. Comme cela a une forme carrée, cela devrait être une fonction de coût convexe. Alors, qu'est-ce qui pourrait le rendre non convexe dans un NN?y yΣi=1N(yiyi^)2yy^

Luca
la source
7
trivialement, c'est parce que , et en général il n'y a aucune garantie qu'une fonction arbitraire sera convexey^=f(x)
generic_user

Réponses:

35

i(yiy^i)2 est en effet convexe dans . Mais si il peut ne pas être convexe dans , ce qui est le cas avec la plupart des modèles non linéaires, et nous nous soucions en fait de la convexité dans parce que c'est ce que nous optimisons le fonction de coût terminée. y i=f(xi;θ)θθy^iy^i=f(xi;θ)θθ

Par exemple, considérons un réseau avec 1 couche cachée de unités et une couche de sortie linéaire: notre fonction de coût est où et (et j'omets les termes de biais pour plus de simplicité). Ce n'est pas nécessairement convexe lorsqu'il est considéré comme une fonction de (selon : si une fonction d'activation linéaire est utilisée, alors elle peut toujours être convexe). Et plus notre réseau s'approfondit, moins les choses sont convexes.g ( α , W ) = i ( y i - α i σ ( W x i ) ) 2 x iR p W R N × p ( α , W ) σN

g(α,W)=i(yiαiσ(Wxi))2
xiRpWRN×p(α,W)σ

Définissez maintenant une fonction par où est avec réglé sur et réglé sur . Cela nous permet de visualiser la fonction de coût car ces deux poids varient. 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 figure ci-dessous montre cela pour la fonction d'activation sigmoïde avec , et (donc une architecture extrêmement simple). Toutes les données ( et ) sont iid , de même que les pondérations qui ne varient pas dans la fonction de tracé. Vous pouvez voir le manque de convexité ici.p = 3 N = 1 x y N ( 0 , 1 )n=50p=3N=1xyN(0,1)

surface de perte

Voici le code R que j'ai utilisé pour faire cette figure (bien que certains paramètres soient à des valeurs légèrement différentes maintenant que lorsque je l'ai fait, ils ne seront donc pas identiques):

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
la source
Réponse fantastique; Je pense que quelles que soient les fonctions d'activation, nous pouvons toujours trouver une certaine permutation des poids / unités cachées, ce qui signifie généralement la non-convexité
information_interchange
1
@information_interchange merci, et je pense que vous avez absolument raison, la réponse que OP liée aux pourparlers sur cette approche aussi bien
jld
excellente réponse, mais si nous utilisons MAE au lieu de MSE, je ne comprends pas pourquoi ce sera non convexe, la composition d'une fonction convexe et non décroissante est convexe, donc si nous avons MAE, nous devrions toujours avoir une fonction convexe concernant W.
Panda