আমি মৌলিক গ্রেডিয়েন্ট বংশোদ্ভূতিকে প্রয়োগ করার চেষ্টা করছি এবং আমি এটি হিন্জ লস ফাংশন অর্থাৎ । তবে, কব্জির ক্ষতির lossালু সম্পর্কে আমি বিভ্রান্ত। আমি এটা যে ছাপ অধীন
কিন্তু এই ম্যাট্রিক্সটি return বোল্ডসিম্বল {x as এর মতো একই আকারে ফিরে আসে না ? আমি ভেবেছিলাম আমরা দৈর্ঘ্যের একটি ভেক্টর \ বোল্ডসাইম্বল {ডাব্লু} ফিরিয়ে আনতে চাইছি ? স্পষ্টতই, আমি কোথাও কিছু বিভ্রান্ত হয়ে পড়েছি। কেউ কি এখানে সঠিক দিকে নির্দেশ করতে পারে?
আমি যদি আমার কাজের বিবরণটি পরিষ্কার না করতাম তবে আমি কিছু বেসিক কোড অন্তর্ভুক্ত করেছি
#Run standard gradient descent
gradient_descent<-function(fw, dfw, n, lr=0.01)
{
#Date to be used
x<-t(matrix(c(1,3,6,1,4,2,1,5,4,1,6,1), nrow=3))
y<-c(1,1,-1,-1)
w<-matrix(0, nrow=ncol(x))
print(sprintf("loss: %f,x.w: %s",sum(fw(w,x,y)),paste(x%*%w, collapse=',')))
#update the weights 'n' times
for (i in 1:n)
{
w<-w-lr*dfw(w,x,y)
print(sprintf("loss: %f,x.w: %s",sum(fw(w,x,y)),paste(x%*%w,collapse=',')))
}
}
#Hinge loss
hinge<-function(w,x,y) max(1-y%*%x%*%w, 0)
d_hinge<-function(w,x,y){ dw<-t(-y%*%x); dw[y%*%x%*%w>=1]<-0; dw}
gradient_descent(hinge, d_hinge, 100, lr=0.01)
আপডেট: যদিও নীচের উত্তরটি আমার সমস্যার বোঝার জন্য সহায়তা করেছে, প্রদত্ত ডেটার জন্য এই অ্যালগরিদমের আউটপুট এখনও ভুল। ক্ষতির ফাংশন প্রতিবার 0.25 হ্রাস করে তবে খুব দ্রুত রূপান্তরিত হয় এবং ফলস্বরূপ ওজনগুলি একটি ভাল শ্রেণিবিন্যাসে আসে না। বর্তমানে আউটপুট মত দেখাচ্ছে
#y=1,1,-1,-1
"loss: 1.000000, x.w: 0,0,0,0"
"loss: 0.750000, x.w: 0.06,-0.1,-0.08,-0.21"
"loss: 0.500000, x.w: 0.12,-0.2,-0.16,-0.42"
"loss: 0.250000, x.w: 0.18,-0.3,-0.24,-0.63"
"loss: 0.000000, x.w: 0.24,-0.4,-0.32,-0.84"
"loss: 0.000000, x.w: 0.24,-0.4,-0.32,-0.84"
"loss: 0.000000, x.w: 0.24,-0.4,-0.32,-0.84"
...