신경망의 비용 함수가 볼록하지 않은 이유는 무엇입니까?


22

여기에는 비슷한 스레드가 있습니다 ( 신경 네트워크의 비용 함수는 볼록하지 않습니까? ). 나는 거기에 대한 답변의 요점을 이해할 수 없었으며 이것을 다시 요구하는 이유는 몇 가지 문제를 분명히 할 것입니다.

제곱 차분 비용 함수의 합계를 사용하는 경우 궁극적으로 형식의 것을 최적화합니다.Σi=1N(yiyi^)2 여기서 는 훈련 중 실제 레이블 값입니다. phase 및 는 예측 된 레이블 값입니다. 이것은 정사각형 형태이므로 볼록한 비용 함수 여야합니다. 그렇다면 NN에서 볼록하지 않은 것은 무엇입니까?y를yy^


7
사소하게, 그것은 때문이며 , 일반적으로 임의의 함수가 볼록하다는 보장은 없습니다와이^=에프(엑스)
generic_user

답변:


35

나는(와이나는와이^나는)2 는 실제로 에서 볼록 합니다. 그러나 경우 에서 볼록하지 않을 수 있습니다 . 이는 대부분의 비선형 모델의 상황 이므로 볼록 함을 실제로 관리 합니다. 비용 함수 이상. Y=F를(X,θ)θθ와이^나는와이^나는=에프(엑스나는;θ)θθ

예를 들어, 개의 숨겨진 레이어 1 선형 출력 레이어가 있는 네트워크를 생각해 보자 . 비용 함수는 여기서 와 (및 I는 편의상 바이어스 조건을 생략하고있어). 이것은 의 함수로 볼 때 반드시 볼록하지는 않습니다 ( 에 따라 : 선형 활성화 함수를 사용하는 경우 여전히 볼록 할 수 있습니다). 네트워크가 깊어 질수록 볼록한 것이 줄어 듭니다.g ( α , W ) = i ( y i - α i σ ( W x i ) ) 2 x iR p W R N × p ( α , W ) σ

g(α,W)=i(yiαiσ(엑스나는))2
엑스나는아르 자형아르 자형×(α,)σ

이제 함수 정의 에 의해 여기서, 인 와 을 설정 하고 를 설정했습니다 . 이 두 가중치가 다양하므로 비용 함수를 시각화 할 수 있습니다.h:아르 자형×아르 자형아르 자형h(,V)=(α,(,V))(,V)1112V

아래 그림은 , , (매우 간단한 아키텍처) 인 S 자형 활성화 함수에 대해이를 보여줍니다 . 플로팅 함수에서 변하지 않는 가중치가 있으므로 모든 데이터 ( 와 모두 )는 iid 입니다. 볼록성이 부족한 것을 여기서 볼 수 있습니다.=50==1엑스와이(0,1)

손실 표면

이 그림을 만드는 데 사용한 R 코드는 다음과 같습니다 (일부 매개 변수는 내가 만들 때와 약간 다른 값을 갖지만 동일하지는 않습니다).

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])))

환상적인 답변; 필자는 활성화 기능에 관계없이 가중치 / 숨김 단위에 대한 순열을 찾을 수 있다고 생각합니다. 이는 일반적으로 비 볼록성을 의미합니다
information_interchange

1
@information_interchange의 덕분에, 나는 당신이 전적으로 옳 영업 이익뿐만 아니라 그 접근 방식에 대한 협상에 연결하는 것이 답이라고 생각
JLD

큰 대답이지만 MSE 대신 MAE를 사용하면 볼록이 아닌 이유, 왜 볼록 및 비 감소 기능의 구성이 볼록한지 이해할 수 없으므로 MAE가 있으면 볼록한 기능이 있어야합니다.
Panda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.