Tại sao hàm chi phí của mạng nơ ron không lồi?


22

Có một chủ đề tương tự ở đây ( Hàm chi phí của mạng nơ ron không phải là lồi? ) Nhưng tôi không thể hiểu các điểm trong câu trả lời ở đó và lý do của tôi để hỏi lại hy vọng điều này sẽ làm rõ một số vấn đề:

Nếu tôi sử dụng tổng của hàm chi phí chênh lệch bình phương, tôi cuối cùng tối ưu hóa một cái gì đó có dạng nơi y là giá trị nhãn thực tế trong giai đoạn đào tạo và y là nhãn dự đoán giá trị. Vì đây có dạng vuông, nên đây là hàm chi phí lồi. Vì vậy, cái gì có thể làm cho nó không lồi trong NN?Σi=1N(yiyi^)2yy^


7
trivially, đó là vì y = f ( x ) , và nói chung không có đảm bảo rằng một chức năng tùy ý sẽ lồiy^=f(x)
generic_user

Câu trả lời:


35

là thực sự lồi trong y i . Nhưng nếu y i = f ( x i ; θ ) nó có thể không lồi trong θ , đó là tình hình với hầu hết các mô hình phi tuyến tính, và chúng tôi thực sự quan tâm đến lồi trong θ vì đó là những gì chúng tôi đang tối ưu hóa các chức năng chi phí kết thúc.i(yiy^i)2y^iy^i=f(xi;θ)θθ

Ví dụ, chúng ta hãy xem xét một mạng lưới với 1 lớp ẩn của đơn vị và một lớp đầu ra tuyến tính: hàm chi phí của chúng tôi là g ( α , W ) = Σ i ( y i - α i σ ( W x i ) ) 2 nơi x iR pN

g(α,W)=i(yiαiσ(Wxi))2
xiRp (và tôi bỏ qua điều kiện thiên vị vì đơn giản). Điều này không nhất thiết là lồi khi được xem như là một hàm của ( α , W )WRN×p(α,W)(tùy thuộc vào : nếu một chức năng kích hoạt tuyến tính được sử dụng thì đây vẫn có thể lồi). Và mạng lưới của chúng ta càng sâu thì càng ít thứ lồi lõm.σ

Bây giờ hãy xác định hàm bởi h ( u , v ) = g ( α , W ( u , v ) ) trong đó W ( u , v )W với W 11 được đặt thành uW 12 được đặt thành v . Điều này cho phép chúng ta hình dung hàm chi phí vì hai trọng số này khác nhau.h:R×RRh(u,v)=g(α,W(u,v))W(u,v)WW11uW12v

n=50p=3N=1xyN(0,1)

mất bề mặt

Đây là mã R mà tôi đã sử dụng để tạo ra con số này (mặc dù bây giờ một số tham số có giá trị hơi khác so với khi tôi tạo nó để chúng không giống nhau):

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

Câu trả lời tuyệt vời; Tôi nghĩ bất kể các hàm kích hoạt là gì, chúng ta luôn có thể tìm thấy một số hoán vị của các trọng số / đơn vị ẩn có nghĩa là không lồi lõm
information_interchange

1
@in information_interchange cảm ơn, và tôi nghĩ rằng bạn hoàn toàn đúng, câu trả lời mà OP liên kết để nói về cách tiếp cận đó
jld

Câu trả lời tuyệt vời, nhưng nếu chúng ta sử dụng MAE thay vì MSE, tôi không hiểu tại sao nó sẽ không lồi, thành phần của hàm lồi và không giảm là lồi, vì vậy nếu chúng ta có MAE, chúng ta vẫn nên có chức năng lồi liên quan đến W.
Panda
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.