একটি সমঝোতা একটি ওজন ভাগ করে নেওয়ার নীতি নিয়োগ করে যা গণিতকে উল্লেখযোগ্যভাবে জটিল করে তুলবে তবে আসুন আমরা আগাছা পেরোনোর চেষ্টা করি। আমি আমার উত্স থেকে বেশিরভাগ ব্যাখ্যা এই উত্স থেকে আঁকছি ।
ফরোয়ার্ড পাস
আপনি পর্যবেক্ষণ হিসাবে কনভ্যুশনাল স্তর এর এগিয়ে পাস হিসাবে প্রকাশ করা যেতে পারে
xli,j=∑m∑nwlm,nol−1i+m,j+n+bli,j
যেখানে আমাদের ক্ষেত্রে এবং কে 2 আকার, সেখানে আমাদের ক্ষেত্রে । সুতরাং এটি মতো আপনার খুঁজে পাওয়া আউটপুটটির জন্য বলে । এবং কার্নেলের মাত্রা জুড়ে পুনরাবৃত্তি করুন।k1k2k1=k2=2x0,0=0.25mn
Backpropagation
ধরে নিচ্ছি আপনি সংজ্ঞা হিসাবে গড় স্কোয়ার্ড ত্রুটি (এমএসই) ব্যবহার করছেন
E=12∑p(tp−yp)2 ,
আমরা নির্ধারণ করতে চাই
∂E∂wlm′,n′ওজন আপডেট করার জন্য । এবং হ'ল কার্নেল ম্যাট্রিক্সের সূচকগুলি এর পুনরাবৃত্তকারীগুলির সাথে বিভ্রান্ত হবে না। উদাহরণস্বরূপ in আমাদের উদাহরণে। আমরা এটিও দেখতে পারি যে কোনও ইনপুট চিত্রের জন্য এক্স বিভ্রান্তিকর স্তরটির পরে আউটপুট মাত্রা হবেm′n′w10,0=−0.13HK
(H−k1+1) এক্স ।(W−k2+1)
আমাদের ক্ষেত্রে এটি x যেমন আপনি দেখিয়েছেন। আসুন ত্রুটি শব্দটি গণনা করা যাক। আউটপুট স্পেসে পাওয়া প্রতিটি শব্দ কার্নেলের ওজন দ্বারা প্রভাবিত হয়েছে। কার্নেলের ওজন আউটপুট এবং প্রতিটি একক আউটপুট অবদান রাখে । সুতরাং আমরা মোট ত্রুটি হিসাবে তার অবদান প্রকাশ44w10,0=−0.13x10,0=0.25
∂E∂wlm′,n′=∑H−k1i=0∑W−k2j=0∂E∂xli,j∂xli,j∂wlm′,n′।
এটি পুরো আউটপুট স্পেস জুড়ে পুনরাবৃত্তি করে, আউটপুট অবদান রাখছে এমন ত্রুটিটি নির্ধারণ করে এবং তারপরে আউটপুটটির ক্ষেত্রে কর্নেল ওজনের অবদানের উপাদানটি নির্ধারণ করে।
আসুন সরলতার জন্য এবং ব্যাকপ্রোপাগেটেড ত্রুটির উপর নজর রাখার জন্য আউটপুট স্পেস ডেল্টা থেকে ত্রুটিটিকে অবদানের জন্য ডাকি,
∂E∂xli,j=δli,j ।
ওজন থেকে অবদান
সমঝোতা হিসাবে সংজ্ঞায়িত করা হয়
xli,j=∑m∑nwlm,nol−1i+m,j+n+bli,j ,
এভাবে
∂xli,j∂wlm′,n′=∂∂wlm′,n′(∑m∑nwlm,nol−1i+m,j+n+bli,j) ।
সমষ্টিটি প্রসারিত করে আমরা পর্যবেক্ষণ করে শেষ করি যে ডারাইভেটিভ কেবল এবং শূন্য হবে । আমরা তারপর পেতেm=m′n=n′
∂xli,j∂wlm′,n′=ol−1i+m′,j+n′ ।
তারপরে আমাদের ত্রুটি শর্তে ফিরে আসুন
∂E∂wlm′,n′=∑H−k1i=0∑W−k2j=0δli,jol−1i+m′,j+n′ ।
স্টোকাস্টিক গ্রেডিয়েন্ট বংশোদ্ভূত
w(t+1)=w(t)−η∂E∂wlm′,n′
আসুন তাদের কয়েকটি গণনা করা যাক
import numpy as np
from scipy import signal
o = np.array([(0.51, 0.9, 0.88, 0.84, 0.05),
(0.4, 0.62, 0.22, 0.59, 0.1),
(0.11, 0.2, 0.74, 0.33, 0.14),
(0.47, 0.01, 0.85, 0.7, 0.09),
(0.76, 0.19, 0.72, 0.17, 0.57)])
d = np.array([(0, 0, 0.0686, 0),
(0, 0.0364, 0, 0),
(0, 0.0467, 0, 0),
(0, 0, 0, -0.0681)])
gradient = signal.convolve2d(np.rot90(np.rot90(d)), o, 'valid')
অ্যারে ([[0.044606, 0.094061], [0.011262, 0.068288]])
এখন আপনি জায়গায় SGD সমীকরণ মধ্যে যে লাগাতে পারেন ।∂E∂w
অনুপস্থিতিতে ত্রুটি আছে কিনা আমাকে দয়া করে জানান।
আপডেট: সংশোধিত কোড