Warum ist die Kostenfunktion von neuronalen Netzen nicht konvex?

22

Es gibt hier einen ähnlichen Thread ( Kostenfunktion des neuronalen Netzwerks ist nicht konvex? ), Aber ich konnte die Punkte in den Antworten dort nicht verstehen und mein Grund für die erneute Frage, in der Hoffnung, dass dies einige Probleme klären wird:

Wenn ich die Funktion für die Summe der quadrierten Differenzkosten verwende, optimiere ich letztendlich etwas in der Form wobei der tatsächliche Etikettenwert während des Trainings ist Phase und ist der vorhergesagte Labelwert. Da dies eine quadratische Form hat, sollte dies eine konvexe Kostenfunktion sein. Also, was ist es, was es in einem NN nicht-konvex machen könnte?Σi=1N(yiyi^)2yy^

Luca
quelle
7
trivialerweise liegt es daran, dass , und im Allgemeinen gibt es keine Garantien dafür, dass eine beliebige Funktion konvex isty^=f(x)
generic_user

Antworten:

35

i(yiy^i)2 ist tatsächlich konvex in . Aber wenn , kann es sein, dass es in nicht konvex ist , was bei den meisten nichtlinearen Modellen der Fall ist, und wir kümmern uns tatsächlich um die Konvexität in weil wir das optimieren Kostenfunktion über.y^iy^i=f(xi;θ)θθ

Betrachten wir zum Beispiel ein Netzwerk mit einer verborgenen Schicht von Einheiten und einer linearen Ausgabeschicht: Unsere Kostenfunktion ist wobei und (und ich der Einfachheit halber keine Voreingenommenheitsbegriffe). Dies ist nicht unbedingt konvex, wenn es als eine Funktion von (abhängig von : Wenn eine lineare Aktivierungsfunktion verwendet wird, kann diese immer noch konvex sein). Und je tiefer unser Netzwerk wird, desto weniger konvex sind die Dinge.N

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

Jetzt eine Funktion definieren von , wobei ist mit auf und auf . Dies ermöglicht es uns, die Kostenfunktion zu visualisieren, da diese beiden Gewichte variieren.h:R×RRh(u,v)=g(α,W(u,v))W(u,v)WW11uW12v

Die folgende Abbildung zeigt dies für die Sigma-Aktivierungsfunktion mitn=50p=3N=1xyN(0,1)

Verlustfläche

Hier ist der R-Code, mit dem ich diese Zahl erstellt habe (obwohl einige der Parameter jetzt etwas andere Werte haben als zu dem Zeitpunkt, als ich sie erstellt habe, damit sie nicht identisch sind):

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
quelle
Fantastische Antwort; Ich denke, unabhängig von den Aktivierungsfunktionen können wir immer eine gewisse Permutation der Gewichte / verborgenen Einheiten finden, was im Allgemeinen Nicht-Konvexität bedeutet
information_interchange
1
@information_interchange Dank, und ich glaube , Sie haben völlig Recht, die Antwort , den OP als auch die Gespräche über diesen Ansatz verknüpft
jld
Gute Antwort, aber wenn wir MAE anstelle von MSE verwenden, verstehe ich nicht, warum es nicht konvex sein wird. Die Zusammensetzung einer konvexen und nicht abnehmenden Funktion ist konvex. Wenn wir also MAE haben, sollten wir immer noch eine konvexe Funktion haben bezüglich W.
Panda