Activation Functions, bend by bend


Activation
Target curve
Neurons
Learn
Dashed gray: the curve to match. Thin colored lines: what each neuron adds (its output times its weight). Thick black line: the network's answer, which is their sum plus a constant. Click or drag on the plot to choose an input x; the shaded columns of the table follow it through the network. Click a neuron in the table to pick out its line.
The network itself. Every neuron gets the same x; each line's thickness shows the size of its weight, and the neuron numbers match the colors in the plot and the table. Under x and y are their values at the chosen x. Click a neuron here or in the table to pick it out.

মূল ধারণা।
এখানকার নেটওয়ার্কটি যতটা ছোট হতে পারে ততটাই: একটি input x, কয়েকটি neuron-এর একটি hidden layer, একটি output। প্রতিটি neuron একটি weighted sum হিসাব করে, z = w·x + b, সেটি activation f-এর মধ্য দিয়ে পাঠায়, আর output সব neuron-এর wout·f(z) যোগ করে, সঙ্গে একটি ধ্রুবক।

activation সরিয়ে নিলে প্রতিটি ধাপ শুধু “গুণ করো, তারপর যোগ করো”। এগুলো একের পর এক সাজালে সব মিলে দাঁড়ায় একটিমাত্র গুণ আর একটিমাত্র যোগ, তাই পুরো নেটওয়ার্কটি একটিই সরলরেখা, তাতে যত neuron-ই থাকুক। readout সেই রেখাটি দেখায়, weight থেকে হিসাব করে। wave-এর ওপর এটি বড়জোর 0.4959 error-এ পৌঁছায়, আর আবার Fit it চাপলে কিছুই বদলায় না।

নেটওয়ার্কে activation-ই একমাত্র জিনিস যা সরলরেখা নয়, তাই কেবল সেটিই output-কে বাঁকাতে পারে। প্রতিটি neuron একটি করে বাঁকানো টুকরো যোগ করে, আর কালো রেখাটি সেগুলোর যোগফল। ReLU-এর প্রতিটি টুকরোয় একটি করে ধারালো কোণ থাকে, আর sigmoid ও tanh-এর টুকরোগুলো মসৃণ ধাপ। বেশি neuron মানে বেশি টুকরো, আর বেশি টুকরো আরও জটিল বক্ররেখা অনুসরণ করতে পারে।

যা চেষ্টা করে দেখার মতো:
1. None, তারপর কয়েকবার Reset। কালো রেখাটি হেলে যায় আর সরে যায়, কিন্তু কখনো বাঁকে না।

2. wave-এর ওপর চারটি neuron নিয়ে ReLU। Fit it-এর পর বিন্দুগুলো দেখায় প্রতিটি neuron output-কে কোথায় বাঁকায়: চারটি neuron, চারটি বাঁক, আর error 0.7104 থেকে নেমে 0.0051 হয়। একটি একটি করে neuron যোগ করুন আর প্রতিবার আবার fit করুন: পাঁচটিতে 0.0042, ছয়টিতে 0.0025, আটটিতে 0.0008।

3. একই wave Sigmoid বা Tanh দিয়ে: চারটি neuron পৌঁছায় 0.0002 ও 0.0001-এ। মসৃণ বক্ররেখা মসৃণ টুকরো দিয়ে গড়া সহজ। তারপর V shape চেষ্টা করুন: ReLU এটি হুবহু মেলায় (error 0.0000), কারণ V হলো একটি কোণসহ মাত্র দুটি সোজা টুকরো, অথচ sigmoid থেমে যায় 0.0010-এ।

4. learning signal কলামটি দেখুন। এটি হলো neuron যেখানে ব্যবহৃত হচ্ছে সেখানে f-এর গড় slope, আর learning কেবল এই slope-এর মধ্য দিয়েই একটি neuron-কে ঠেলতে পারে। sigmoid-এর slope কখনো 0.25-এর বেশি হয় না, আর wave fit করার পর এর neuron-গুলো থাকে 0.06 থেকে 0.15-এর মধ্যে। tanh-এর neuron-গুলো থাকে 0.21 থেকে 0.36-এর মধ্যে। দুটি বক্ররেখাই দুই প্রান্তে চ্যাপ্টা হয়ে যায়, তাই কোনো neuron এক পাশে অনেক দূরে ঠেলে দেওয়া হলে সেটি প্রায় শেখেই না।

5. Dead neurons. কোনো ReLU neuron-এর input যদি প্রতিটি x-এর জন্য ঋণাত্মক হয়ে যায়, তবে তার output আর slope দুটিই 0, তাই কোনো learning signal তার কাছে পৌঁছায় না এবং সেটি আর কখনো সেরে ওঠে না। টেবিল এটিকে dead চিহ্ন দেয়। wave-এর ওপর ReLU নিয়ে সাতবার Reset চাপুন, তারপর Fit it: পথে neuron 1 মরে যায় আর error আটকে থাকে 0.2335-এ। তিনটি বক্ররেখার প্রতিটিতে 50টি এলোমেলো শুরুতে, fit করার পর প্রতি 15টি ReLU neuron-এর মধ্যে প্রায় 1টি dead হয়ে যায়। Leaky ReLU ঋণাত্মক দিকে একটি ছোট slope রেখে দেয় (এখানে 0.1; বেশিরভাগ library-র default 0.01), তাই কোনো neuron কখনো পুরোপুরি বিচ্ছিন্ন হয় না। Leaky ReLU-তে যান, যেটি একই weight থেকে শুরু করে, আর Fit it চাপুন: error পৌঁছায় 0.0047-এ।