ট্রান্সফরমার (Transformer)-এর জন্মকথা: “Attention Is All You Need” কেন এআই-এর পৃথিবী বদলে দিল!
তুমি কি খেয়াল করেছ, আজকাল আমরা প্রায় প্রতিদিন যেসব মডেলের নাম শুনি—ChatGPT, Gemini, Claude, Llama, Mistral—এদের সবার হৃদয়ের গভীরে কিন্তু একই স্থাপত্য বা আর্কিটেকচার লুকিয়ে আছে? সেই জাদুকরী স্থাপত্যের নাম হলো Transformer। আজকের দিনে এআই-এর যে এত বিপ্লব, এই যে বড় বড় ল্যাঙ্গুয়েজ মডেল (LLM), এমনকি আধুনিক মাল্টিমোডাল সিস্টেমগুলো যে এত স্মার্ট হয়ে উঠেছে—সবকিছুর পেছনে যে গবেষণাপত্রটি (Research paper) সবচেয়ে বড় ভূমিকা রেখেছে, সেটি হলো ২০১৭ সালের গুগলের বিখ্যাত পেপার: “Attention Is All You Need”।
শুনতে নামটা একটু নাটকীয় লাগছে, তাই না? “তোমার আর কিছু লাগবে না, attention-ই যথেষ্ট!” কিন্তু মজার ব্যাপার হলো, প্রবলেম সলভার বিজ্ঞানীরা আসলেই প্রায় এই কথাটাই প্রমাণ করে ছেড়েছিলেন! তারা দেখিয়েছিলেন, ভাষা বোঝা বা অনুবাদের মতো জটিল কাজের জন্য বারবার আগের শব্দ মনে রাখার যে পুরোনো পদ্ধতি ছিল, সেটাই শেষ কথা নয়। বরং, যদি মডেলটিকে এমনভাবে ডিজাইন করা যায় যে সে সরাসরি পুরো বাক্যের যেকোনো শব্দের দিকে “মনোযোগ” (Attention) দিতে পারে, তাহলে সেটি শুধু ভালোই করবে না—আরও দ্রুত, একসাথে অনেক কাজ (Parallelly) করতে পারবে।
চলো আজ একজন প্রবলেম সলভারের মতো চিন্তা করে বোঝার চেষ্টা করি এই ট্রান্সফরমার কীভাবে এআই-এর দুনিয়াটাই বদলে দিল!
পুরোনো দুনিয়া: যখন ভাষা মডেলকে লাইন ধরে হাঁটতে হতো
Transformer আসার আগে সিকোয়েন্স মডেলিংয়ের রাজা ছিল RNN (Recurrent Neural Network), LSTM, আর পরে GRU। এদের কাজের ধরনটা অনেকটা এরকম ছিল:
Word 1 → Hidden State 1
↓
Word 2 → Hidden State 2
↓
Word 3 → Hidden State 3
↓
Word 4 → Hidden State 4
এখানে প্রতিটি নতুন শব্দ বোঝার জন্য মডেলকে আগের হিডেন স্টেটের ওপর নির্ভর করতে হয়। অর্থাৎ, ৪ নম্বর শব্দে পৌঁছাতে হলে আগে ১, ২ এবং ৩ নম্বর ধাপ পেরোতে হবে। তুমি চাইলেই হুট করে ৪ নম্বর শব্দটি আগে প্রসেস করতে পারবে না। পুরো ব্যাপারটাই সিকোয়েনশিয়াল বা ধারাবাহিক।
শুরুতে এটি খুব স্বাভাবিক মনে হয়। কারণ আমরা মানুষেরাও তো বাক্য পড়ি একটার পর একটা শব্দ ধরে, তাই না? কিন্তু কম্পিউটারের জন্য, বিশেষ করে জিপিইউ (GPU) এর জন্য, এটি খুব বড় একটি সমস্যা। জিপিইউর আর্কিটেকচার এমনভাবে বানানো যে সে চায় হাজার হাজার ছোট ছোট কাজ একসাথে করতে (Parallel processing)। ঠিক যেমন, Counter-Strike 2 (CS2) খেলার সময় পুরো টিম যদি একটা সরু গলি দিয়ে এক লাইনে যাওয়ার চেষ্টা করে, তবে বিপক্ষের স্নাইপারের হাতে একে একে মারা পড়া ছাড়া গতি নেই। কিন্তু টিম যদি ম্যাপের বিভিন্ন দিক থেকে একসাথে অ্যাটাক (Parallel push) করে, তবে সেটা অনেক বেশি কার্যকর। RNN মডেল জিপিইউকে সেই সরু গলিতে লাইন ধরে হাঁটতে বাধ্য করে।
ঠিক এখানেই তৈরি হয় বটলনেক (bottleneck):
-
প্যারালালাইজেশন (Parallelization) অসম্ভব প্রায়: একটার পর একটা প্রসেস করতে গিয়ে জিপিইউ অলস বসে থাকে।
-
ট্রেনিং (Training) মারাত্মক ধীর গতির: বড় ডেটাসেট ট্রেন করতে মাসের পর মাস লেগে যায়।
-
লং-রেঞ্জ ডিপেন্ডেন্সি (Long-range dependency): বাক্যের শুরুর শব্দের সাথে শেষের শব্দের সম্পর্ক শেখা কঠিন হয়ে যায়, কারণ মাঝখানের ধাপগুলো পেরোতে পেরোতে মডেল পুরোনো কথা "ভুলে" যেতে থাকে।
গবেষকদের মূল প্রশ্ন: “ভাষা বুঝতে কি সত্যিই আগের মতো লাইন ধরে হাঁটা দরকার?”
এটাই ছিল এই পেপারের সবচেয়ে সাহসী প্রশ্ন। গবেষকরা ভাবলেন—ভাষার মধ্যে শব্দগুলোর সম্পর্ক বোঝার জন্য কি সত্যিই চেইনের মতো একটার পর একটা মেমোরি দরকার? নাকি এমন কোনো মেকানিজম বানানো যায় যেখানে প্রতিটি শব্দ বাক্যের অন্য যেকোনো শব্দের দিকে সরাসরি তাকাতে পারবে?
অর্থাৎ ফ্লো-টা হবে এরকম:
Input Sentence → সব শব্দ একে অপরকে একসাথে “দেখতে” পারবে → প্রয়োজনীয় সম্পর্ক শিখবে → রেপ্রেজেন্টেশন তৈরি হবে
এই যে “এক শব্দের অন্য শব্দের দিকে তাকানো” বা গুরুত্ব দেওয়া, এই ধারণাটির নামই হলো Attention।
Attention: বাক্যের ভেতরে কার দিকে কতটা তাকাতে হবে?
ধরো, একটি বাক্য আছে:
"The animal didn’t cross the street because it was too tired."
এখানে “it” শব্দটি কোন জিনিসকে নির্দেশ করছে? animal, নাকি street? একজন মানুষ হিসেবে আমরা সহজেই বুঝি “it” এখানে animal-কে বোঝাচ্ছে, কারণ ক্লান্ত হওয়াটা প্রাণীর বৈশিষ্ট্য, রাস্তার নয়। কিন্তু একটি কম্পিউটার মডেলকে এই সম্পর্কটা শিখতে হবে।
Attention ঠিক এই কাজটাই করে। এটি মূলত মডেলকে বলে দেয়: "এই 'it' শব্দটি বুঝতে হলে বাক্যের আর কোন কোন শব্দের ('animal', 'tired') দিকে বেশি মনোযোগ দিতে হবে?"
Q, K, V: Attention-এর তিন জাদুকর
Transformer পেপারের সবচেয়ে বিখ্যাত অংশগুলোর একটি হলো Query, Key, Value—সংক্ষেপে Q, K, V। শুরুতে শুনতে এগুলো একটু ভয়ের মতো শোনায়। কিন্তু একটু চিন্তা করলেই দেখবে এর পেছনের আইডিয়াটা কত সুন্দর!
ধরো, তুমি কোনো নির্দিষ্ট টপিক নিয়ে পড়াশোনা করতে রাজশাহী বিশ্ববিদ্যালয়ের সেন্ট্রাল লাইব্রেরিতে গেলে।
-
Query (Q) = তুমি কী খুঁজছো (তোমার প্রশ্ন বা ইনটেন্ট)।
-
Key (K) = লাইব্রেরির প্রতিটি বইয়ের ক্যাটালগ বা ইনডেক্স ট্যাগ (বইটা কী সম্পর্কে)।
-
Value (V) = বইয়ের ভেতরের আসল কন্টেন্ট বা জ্ঞান।
এখন তোমার প্রশ্ন (Query) যদি হয়: "আমার ট্রান্সফরমার আর্কিটেকচার নিয়ে বই দরকার", তাহলে তুমি লাইব্রেরির সব বইয়ের ক্যাটালগের (Key) সাথে তোমার প্রশ্নটা মিলিয়ে দেখবে। যেগুলোর মিল (Similarity) সবচেয়ে বেশি, সেগুলোর কন্টেন্ট (Value) তোমার কাছে সবচেয়ে বেশি গুরুত্ব পাবে।
Transformer-এও ঠিক এই কাজটাই হয়! একটি শব্দ বা টোকেন থেকে তিনটি ভেক্টর তৈরি হয়: Query, Key, এবং Value। এরপর মডেল দেখে, বর্তমান টোকেনের Query অন্য সব টোকেনের Key-এর সাথে কতটা মিলছে। যার মিল বেশি, তার Value-কে মডেল বেশি ওয়েট (weight) বা গুরুত্ব দেয়।
পেপারের বিখ্যাত অংক: Scaled Dot-Product Attention
এই পুরো ব্যাপারটাকে অংকের ভাষায় প্রকাশ করার জন্য যে সমীকরণটি ব্যবহার করা হয়, সেটি হলো:
চলো একজন প্রবলেম সলভারের মতো এটিকে ধাপে ধাপে ভেঙে ফেলি:
-
(QK^T) (ডট প্রোডাক্ট): এটি বর্তমান query-এর সাথে সব key-এর মিল মাপে। ভেক্টরের ডট প্রোডাক্ট যত বড়, তাদের মধ্যে সম্পর্ক তত গভীর।
-
(\sqrt{d_k}) দিয়ে ভাগ (Scaling): ডাইমেনশন ((d_k)) বড় হলে ডট প্রোডাক্টের মান অনেক বড় হয়ে যেতে পারে। তখন সফটম্যাক্স ফাংশনের গ্রেডিয়েন্ট প্রায় শূন্য হয়ে যায় (Vanishing gradient)। তাই একে স্কেল করা হয়।
-
softmax ফাংশন: এটি স্কোরগুলোকে ০ থেকে ১ এর মধ্যে একটি সম্ভাব্যতায় পরিণত করে। এটি নিশ্চিত করে যে সবগুলোর যোগফল ১ হবে।
-
V দিয়ে গুণ (Weighted sum): এখন গুরুত্বপূর্ণ value-গুলোকে তাদের প্রাপ্ত স্কোরের গুরুত্ব অনুযায়ী যোগ করে আউটপুট তৈরি করা হয়।
Multi-Head Attention: এক মাথা দিয়ে সব বোঝা যায় না!
এবার আসি পেপারের আরেকটি অসাধারণ আইডিয়াতে: Multi-Head Attention।
একটি মাত্র attention head থাকলে মডেল হয়তো বাক্যের একটি নির্দিষ্ট ধরনের সম্পর্কই ধরতে পারবে। কিন্তু ভাষা তো আর একমাত্রিক না! একটি বাক্যে একইসাথে গ্রামার (syntax), অর্থ (semantic), এবং কনটেক্সট থাকে।
ধরো, তুমি আর তোমার বন্ধু মিলে থিয়েটারে বসে একটা মুভি দেখছ। মুভি একটাই, কিন্তু তোমাদের দুজনের "অ্যাটেনশন" বা মনোযোগের জায়গা হতে পারে সম্পূর্ণ আলাদা। তুমি হয়তো খেয়াল করছ সিনেমাটোগ্রাফি, প্লটের লজিক বা ডিরেকশনের দিকে; আর তোমার বন্ধু হয়তো গভীর মনোযোগ দিচ্ছেন চরিত্রগুলোর সাইকোলজি, ইমোশন বা ব্যাকগ্রাউন্ড স্কোরের দিকে। দুজনের এই আলাদা দৃষ্টিভঙ্গি এক করলে তবেই মুভিটার একটা পূর্ণাঙ্গ রিভিউ তৈরি হবে।
Transformer ঠিক এই বহু-দৃষ্টিকোণ (multiple perspectives) ব্যাপারটিই সামলায় multiple attention heads দিয়ে। মডেল একই ইনপুটের ওপর অনেকগুলো হেড (যেমন, ৮টি বা ১৬টি) সমান্তরালভাবে চালায়। সবগুলো হেডের রেজাল্ট শেষে একসাথে যুক্ত (concatenate) করে মডেল একটি অত্যন্ত সমৃদ্ধ ধারণা লাভ করে।
ট্রান্সফরমারের আসল আর্কিটেকচার: Encoder-Decoder
ট্রান্সফরমার আগের encoder-decoder গঠনটা ঠিকই রেখেছে, কিন্তু ভেতরের ইঞ্জিন পুরো পাল্টে দিয়েছে।
Encoder: এটি ইনপুট বাক্যটিকে ভালোভাবে বুঝে একটি কনটেক্সট তৈরি করে। এনকোডারের প্রতিটি লেয়ারে দুইটি বড় অংশ থাকে: Multi-Head Self-Attention এবং Position-wise Feed Forward Network।
Decoder: ডিকোডারও প্রায় একই, কিন্তু এখানে একটি অতিরিক্ত লেয়ার থাকে: Masked Multi-Head Self-Attention। এখানে “masked” শব্দটি খুবই গুরুত্বপূর্ণ। কারণ ডিকোডার যখন পরের শব্দ প্রেডিক্ট করছে, তখন সে কোনোভাবেই ভবিষ্যতের শব্দ দেখতে পারবে না। না হলে তো সে চিটিং করে ফেলবে! তাই ভবিষ্যতের পজিশনগুলোকে ডিকোডারে মাস্ক (mask) বা লুকিয়ে রাখা হয়।
কিন্তু Recurrence না থাকলে শব্দের সিরিয়াল বুঝবে কীভাবে? (Positional Encoding)
যেহেতু ট্রান্সফরমারে শব্দগুলো একটার পর একটা প্রসেস হয় না, তাই মডেল নিজে থেকে জানে না কোন শব্দ আগে আর কোনটি পরে। "আমি ভাত খাই" আর "খাই ভাত আমি" মডেলের কাছে একই মনে হবে যদি পজিশন না বলে দেওয়া হয়।
এই সমস্যা সমাধানে ইনপুটের সাথে পজিশনাল এনকোডিং (Positional Encoding) যোগ করা হয়:
এটি অনেকটা স্টেডিয়ামে মার্চ পাস্ট (marching band) দেখার মতো। প্রত্যেকের হাতে আলাদা প্যাটার্নের পতাকা আছে, আর সেই প্যাটার্ন দেখে তুমি দূর থেকেই বুঝে যাচ্ছ কে কত নম্বর পজিশনে দাঁড়িয়ে আছে। এই সাইন (sine) এবং কোসাইন (cosine) ওয়েবগুলো ঠিক সেই পতাকার মতোই সিগন্যাল দেয়।
Feed Forward Network (FFN): Attention-এর পরের ভালো কামলা
সবাই শুধু attention নিয়ে মেতে থাকে, কিন্তু প্রতিটি ব্লকে attention-এর পর যে Feed-Forward Network (FFN) থাকে, সেটিও সমান গুরুত্বপূর্ণ।
এক কথায় বললে:
-
Attention বের করে: “কে কার সাথে সম্পর্কিত এবং কতটা?” (Information gathering)
-
FFN কাজ করে: “প্রাপ্ত সম্পর্কগুলোকে প্রসেস করে প্রতিটি টোকেনের তথ্যকে আরও সমৃদ্ধ বা মেমোরিতে স্টোর করো।” (Information processing)
Parallelization: জিপিইউ (GPU)-র স্বপ্নের আর্কিটেকচার
Transformer-এর সবচেয়ে বড় প্র্যাকটিক্যাল বিজয় এখানেই। RNN-এ ট্রেনিং করানো ছিল অনেকটা এক লেনের রাস্তায় গাড়ি চালানোর মতো। সামনের গাড়ি না গেলে পেছনের গাড়ি যেতে পারবে না।
অন্যদিকে, Transformer হলো মাল্টি-লেন এক্সপ্রেসওয়ে (Multi-lane expressway)! এখানে একটি বাক্যের বহু টোকেন একসাথে (parallelly) প্রসেস করা যায়। এর ফলে জিপিইউ তার পুরো ক্ষমতা ব্যবহার করতে পারে। ট্রেনিং টাইম অবিশ্বাস্যভাবে কমে যায়! এই জায়গাটায় পরবর্তীতে আধুনিক ডিপ লার্নিংয়ের গেম চেঞ্জার হয়ে দাঁড়িয়েছে।
এআই-এর নতুন দিগন্ত
এই পেপারের সবচেয়ে গভীর সৌন্দর্য শুধু একটি নতুন আর্কিটেকচার দেওয়াই নয়। এটি আমাদের শিখিয়েছে, প্রবলেম সলভিংয়ে মাঝে মাঝে গদবাঁধা নিয়মের বাইরে গিয়ে পুরো বিষয়টাকে নতুনভাবে ভাবতে হয়। যখন সবাই ভাবছিল ল্যাঙ্গুয়েজ প্রসেস করার জন্য মেমোরি-বেসড (RNN) সিস্টেমই একমাত্র পথ, তখন একদল গবেষক সাহস করে দেখিয়ে দিলেন—শুধু মনোযোগ (Attention) দিয়েই পুরো কাজটা আরও নিখুঁতভাবে করা সম্ভব।
তবে এর একটি সীমাবদ্ধতাও আছে। Self-attention লেয়ারের কমপ্লেক্সিটি হলো (O(n^2 \cdot d))। অর্থাৎ, ইনপুট বাক্য (sequence) যত বড় হবে, একে অপরের সাথে কানেকশন হিসাব করার মেমোরি খরচ তত জ্যামিতিক হারে বাড়তে থাকবে। এই মেমোরি কমানো আর স্পিড বাড়ানো নিয়েই পরবর্তীতে Sparse attention, Flash attention-এর মতো দারুণ সব ইনোভেশন এসেছে!
আজ তুমি যখন ক্লাসে পড়াচ্ছ, ল্যাবে রিসার্চ করছ, অথবা ChatGPT-তে কোনো কোড জেনারেট করছ, তখন যে মূল ইঞ্জিনটা ভেতরে কাজ করে, তার শেকড় প্রোথিত আছে ২০১৭ সালের এই একটি রিসার্চ পেপারে। অনেক পেপারই আসে, কিছু সামান্য উন্নতি করে, তারপর হারিয়ে যায়। কিন্তু “Attention Is All You Need” শুধু রেজাল্ট দেয়নি, এটি এআই-এর পুরো ভাষাই বদলে দিয়েছে।
এককথায়, এই পেপারের পর এআই আর আগের জায়গায় থাকেনি; এটি ল্যাবের সীমাবদ্ধতা পেরিয়ে মানুষের রোজকার জীবনের অংশ হওয়ার পথে এক বিশাল দৌড় দিয়েছিল!