🧮ML গণিত গুরু
optimizationমাঝারি8 মিনিট

Dropout — র‍্যান্ডম ছুটি

Dropout

🏢

অফিসে র‍্যান্ডম ছুটি

ধর তোর অফিস মতিঝিলে। ১০ জন employee আছে। Boss একটা নিয়ম করল — প্রতিদিন random ৩ জন ছুটি পাইব। আজকে রহিম, করিম, জামাল ছুটিতে। কাল হয়তো সালমা, নাহিদ, ফারুক। এইটা শুনে সবাই panic করল — 'আমি ছুটিতে থাকলে আমার কাজ কে করবে?' তাই প্রত্যেকে নিজের কাজ ছাড়াও পাশের জনের কাজও শিখে রাখল। ফলে কেউ absent থাকলেও অফিস চলে!

Neural network-এও same জিনিস! Training-এর সময় random neurons off করে দেওয়াই Dropout। গুরু বলে — 'Dropout হইল neurons-দের র‍্যান্ডম ছুটি — এইতে কেউ একজনের উপর depend করে না, সবাই নিজে নিজে শিখে। ফলে overfitting কমে!'

সংজ্ঞা

Dropout হইল একটা regularization technique যেখানে training-এর সময় প্রতিটা step-এ randomly কিছু neurons-কে zero করে দেওয়া হয় (deactivate)। এইতে network কোনো particular neuron-এর উপর over-rely করে না, ফলে overfitting কমে।

Dropout — probability p-তে neuron off হয়, mask m দিয়া multiply
\[h_i^{\text{drop}} = h_i \cdot m_i, \quad m_i \sim \text{Bernoulli}(1-p)\]

ব্যাখ্যা

Training vs Inference

Training-এ neurons randomly drop হয়। কিন্তু inference/test-এ সব neuron active থাকে — output-কে (1-p) দিয়া scale করা হয় যাতে expected value same থাকে। PyTorch-এ model.eval() দিলে auto handle করে।

\[\text{Test: } h_i^{\text{test}} = h_i \cdot (1-p)\]

কেন কাজ করে?

Dropout তিনটা কাজ করে: (1) Co-adaptation ভাঙে — neurons একা একা useful feature শেখে। (2) Ensemble effect — প্রতিটা mini-batch-এ different sub-network train হয়, test-এ সব combine হয়। (3) Noise injection — implicit data augmentation।

Dropout Rate কত হওয়া উচিত?

Hidden layers-এ p=0.5 common (50% drop)। Input layer-এ p=0.2 (20% drop)। Convolutional layers-এ Spatial Dropout use হয় — পুরা channel drop হয়। খুব বেশি dropout = underfitting, খুব কম = overfitting।

\[p = 0.5 \text{ (hidden)}, \quad p = 0.2 \text{ (input)}\]

Dropout-এর Numerical Example

Hidden layer output: h = [0.5, 1.2, -0.3, 0.8, -1.0]। Dropout rate p = 0.4। একটা possible dropout mask আর output দেখাও।

Step 1: Random mask generate

p=0.4 মানে 40% neuron drop হইব। Bernoulli(0.6) mask: m = [1, 0, 1, 1, 0]

\[m = [1, 0, 1, 1, 0] \quad \text{(2টা dropped)}\]

Step 2: Mask apply করো

h × m = element-wise multiply

\[h^{\text{drop}} = [0.5, 0, -0.3, 0.8, 0]\]

Step 3: Scale করো (inverted dropout)

Training-এই 1/(1-p) দিয়া scale করো যাতে test-এ কিছু করতে না হয়

\[h^{\text{scaled}} = \frac{h^{\text{drop}}}{1-p} = \frac{[0.5, 0, -0.3, 0.8, 0]}{0.6} = [0.833, 0, -0.5, 1.333, 0]\]
উত্তর:

Dropout-এর পরে neuron 2 আর 5 off আছে (output = 0)। বাকিগুলা scaled up হইছে 1/0.6 = 1.667× দিয়া। প্রতিটা forward pass-এ different neurons off হইব — network different patterns শিখে।

ML-এ কোথায় লাগে?

💡

মনে রাখার ট্রিক

Dropout = অফিসে র‍্যান্ডম ছুটি — কেউ absent থাকলেও কাজ চলে কারণ সবাই সব শিখে রাখছে। Training-এ random neurons off, test-এ সবাই active!

#dropout#regularization#overfitting#mc-dropout#spatial-dropout#dropconnect