মধ্যে প্রকৃতপক্ষে উত্তল হয় Y আমি । কিন্তু যদি Y আমি = চ ( এক্স আমি ; θ ) এটা উত্তল নাও থাকতে পারেন θ , যা সবচেয়ে অ রৈখিক মডেলের সঙ্গে পরিস্থিতি, এবং আমরা আসলে মধ্যে ন্যুব্জতা যত্নশীল θ কারণ কি আমরা খরচ ফাংশন নিখুঁত করছি যে ওভার।∑i(yi−y^i)2y^iy^i=f(xi;θ)θθ
উদাহরণস্বরূপ, আসুন ইউনিটের 1 টি লুকানো স্তর এবং একটি লিনিয়ার আউটপুট স্তরযুক্ত একটি নেটওয়ার্ক বিবেচনা করুন : আমাদের ব্যয় ফাংশনটি
g ( α , W ) = ∑ i ( y i - α i σ ( W x i ) ) 2
যেখানে x i ∈ আর পি এবং ডব্লিউ ∈ আর এন × পি (এবং সরলতার জন্য আমি পক্ষপাতের শর্ত বাদ দিচ্ছি)। ( Α , ডাব্লু ) এর ফাংশন হিসাবে দেখা গেলে এটি অগত্যা উত্তেজক নয় isN
g(α,W)=∑i(yi−αiσ(Wxi))2
xi∈RpW∈RN×p(α,W)(
উপর নির্ভর করে : যদি একটি লিনিয়ার অ্যাক্টিভেশন ফাংশন ব্যবহার করা হয় তবে এটি এখনও উত্তল হতে পারে)। এবং আমাদের নেটওয়ার্ক যত গভীর হয়, উত্তল জিনিসগুলি তত কম।
σ
h:R×R→Rh(u,v)=g(α,W(u,v))W(u,v)WW11uW12v
n=50p=3N=1xyN(0,1)
আমি এই চিত্রটি তৈরি করতে যে আর কোডটি ব্যবহার করেছি তা এখানে রয়েছে (যদিও কিছু প্যারামিটারগুলি তৈরি করার সময় থেকে এখন কিছুটা আলাদা মান রয়েছে তবে সেগুলি অভিন্ন হবে না):
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])))