Brief #19 · Machine Learning
Neural Network from Scratch
Easy⏱ 10-14 ঘণ্টাশীঘ্রই
শুধু NumPy দিয়ে একটা neural network লেখো: forward pass, backpropagation, gradient checking আর training, তারপর PyTorch এ আবার বানিয়ে তুলনা করো।
Outline free · tracking সহ বানাতে Pro লাগবে
NBriefTeam এর পক্ষ থেকে
আমাদের নতুন ML কর্মীরা model.fit() call করতে পারে, কিন্তু loss হঠাৎ NaN হয়ে গেলে বা কমা থেমে গেলে আটকে যায়। Production model ছোঁয়ার আগে আমরা চাই প্রত্যেকে নিজের হাতে একটা network বানাক আর এর ভেতরের প্রতিটা সংখ্যা বুঝুক। এটা সেই অনুশীলন, ঠিকভাবে করা।
যা বানাবে
- 1MNIST load করো, normalise করো, আর একটা validation অংশ আলাদা রাখো।
- 2NumPy তে একটা দুই-layer network লেখো: linear layer, ReLU, softmax আর cross-entropy loss।
- 3Backpropagation বের করো আর code করো, আর প্রতিটা gradient numerical gradient check দিয়ে check করো।
- 4Mini-batch SGD দিয়ে train করো, loss আর accuracy plot করো, আর ইচ্ছা করে ভেঙে দেখো: খুব বড় learning rate, খারাপ weight initialisation।
- 5একই network PyTorch এ আবার বানাও, আর দেখো একই seed এ দুটো একই ফল দেয় কিনা।
ধাপে ধাপে walkthrough
Walkthrough শীঘ্রই আসছে
এই project এর ধাপে ধাপে walkthrough, প্রতিটা ধাপে আসল output সহ, এখনো লেখা হচ্ছে। ততক্ষণ brief পড়ে নিজে চেষ্টা করতে পারো; walkthrough তৈরি হলে tracking চালু হবে।
শেষ হবে যখন
- প্রতিটা parameter এর gradient check pass করে, relative error 1e-6 এর নিচে।
- NumPy network অন্তত ৯৭% test accuracy তে পৌঁছায়।
- Plot, যেটা দেখায় খুব বড় learning rate আর খারাপ initialisation loss এ কী করে।
- একটা weight এর জন্য backpropagation নিজের ভাষায় ব্যাখ্যা করা ছোট একটা লেখা।
আরো এগোতে চাইলে
- Momentum আর Adam যোগ করো, আর কোনটা কত দ্রুত train করে তুলনা করো।
- Dropout যোগ করো, আর training আর validation accuracy র ব্যবধানে এর প্রভাব দেখাও।