راه
۴ کیو· سختپیشرفتهPYTHON۴ ثانیه · ۲۵۶ مگابایت

آموزش با کاهش گرادیان تصادفی و کاهش وزن

شبکه‌ی تک‌لایه‌ی ReLU درس‌های قبل را با کاهش گرادیان دسته‌ای (minibatch) و منظم‌سازی ریج (کاهش وزن) آموزش دهید. زیان روی هر دسته‌ی BB نمونه‌ای:

RB(θ)=12∣B∣∑i∈B(yi−f(xi))2+λ2(∑k,j≥1wkj2+∑k≥1βk2)R_B(\theta) = \frac{1}{2|B|}\sum_{i \in B}\big(y_i - f(x_i)\big)^2 + \frac{\lambda}{2}\Big(\sum_{k,j \ge 1}w_{kj}^2 + \sum_{k \ge 1}\beta_k^2\Big)

عرض از مبدأها (wk0w_{k0} و β0\beta_0) جریمه نمی‌شوند. تابع train(X, y, W, beta, lr, epochs, batch, lam) دقیقاً این کار را می‌کند:

  1. برای هر دور (epoch) از ۱ تا epochs: نمونه‌ها را به همان ترتیب و بدون به‌هم‌ریختن به دسته‌های پشت‌سرهم به اندازه‌ی batch تقسیم کنید (range(0, n, batch)؛ دسته‌ی آخر ممکن است کوچک‌تر باشد).
  2. برای هر دسته: گرادیان RBR_B را مثل تمرین پس‌انتشار حساب کنید (روی همان دسته، با ∣B∣|B| به‌جای nn)، جمله‌ی λw\lambda w را به گرادیان وزن‌های غیر عرض از مبدأ اضافه کنید، و همه‌ی پارامترها را هم‌زمان به‌روز کنید: θ←θ−lr⋅∇RB\theta \leftarrow \theta - \text{lr}\cdot\nabla R_B.
  3. در پایان، میانگین مربع خطا روی همه‌ی داده (بدون جریمه)، 1n∑i(yi−f(xi))2\frac{1}{n}\sum_i(y_i - f(x_i))^2، را برگردانید.

نمونه‌ها

ورودی نمونه ۱
[[[1.83, -3.08], [0.96, 0.07], [1.32, 0.39], [1.83, 0.03], [-0.52, 0.58], [0.43, -0.36], [-0.25, 0.72], [0.7, -0.49]], [-0.54, 0.96, 1.18, 0.95, -0.28, 0.21, 0.22, 0.49], [[-0.26, -1.26, 1.18], [-0.16, 0.94, 0.29], [1.36, 1.08, 0.22]], [1.04, -0.67, 0.88, -1.04], 0.1, 1, 4, 0.0]
خروجی نمونه ۱
0.4652
ورودی نمونه ۲
[[[1.83, -3.08], [0.96, 0.07], [1.32, 0.39], [1.83, 0.03], [-0.52, 0.58], [0.43, -0.36], [-0.25, 0.72], [0.7, -0.49]], [-0.54, 0.96, 1.18, 0.95, -0.28, 0.21, 0.22, 0.49], [[-0.26, -1.26, 1.18], [-0.16, 0.94, 0.29], [1.36, 1.08, 0.22]], [1.04, -0.67, 0.88, -1.04], 0.1, 50, 4, 0.0]
خروجی نمونه ۲
0.012

برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.

ورود