আমাদের রিসার্চ গ্রুপে সবার থিওরীর দক্ষতা বাড়ানোর জন্য কিছুদিন আগে একটা কম্পিউটেশনাল জার্নাল ক্লাব শুরু করেছি আমরা। আজকে পেপার প্রেজেন্ট করার দায়িত্ব পরেছিল আমার ভাগে। যে পেপারটি বেছে নিয়েছিলাম সেটা গত মাসের একদম শেষ দিকে পাবলিশ করেছে আর্টিফিসিয়াল ইন্টেলিজেন্সের কোম্পানি ডিপমাইন্ড।
নেচারে আর্টিকেল হিসেবে পাবলিশ হওয়া পেপারটির বিষয়বস্তু নতুন ধরণের একটি নিউরাল নেটওয়ার্ক। নিউরাল নেটওয়ার্ক হচ্ছে বুদ্ধিমান কম্পিউটার বানানোর মূলভিত্তি।
উল্লেখ্য লন্ডনের কোম্পানি ডিপমাইন্ড এর মূল উদ্দেশ্য এমন কম্পিউটার বানানো যা হবে বুদ্ধির অধিকারি। বর্তমানে অনেক কৃত্রিম বুদ্ধিমত্তা সম্পন্ন কম্পিউটার থাকলেও সেগুলো হল বিশেষায়িত কৃত্রিম বুদ্ধিমত্তা। অর্থাৎ সেই কম্পিউটারগুলো শুধু একটা কাজেই পারদর্শী। উদাহরণ হিসেবে বলা যায় দাবা খেলার কম্পিউটার। ডিপমাইন্ডের উদ্দেশ্য জেনেরালাইজড আর্টিফিসিয়াল ইন্টেলিজেন্স বা একটা সর্বজনীন কৃত্রিম বুদ্ধিমত্তা বানানো। এটা এমন একটা কম্পিউটার যেটা শুধু দাবা নয় যেকোন খেলা শিখতে পারবে বা যেকোন কাজ করতে পারবে।
ডিপমাইন্ড সেদিকে অনেকদূর এগিয়েও গেছে। আলফাগো নামে খুবই জটিল খেলায় ওয়ার্ল্ড চ্যাম্পিয়ন ব্যক্তিকে এই বছরের শুরুর দিকে হারিয়ে দিয়েছে ডিপমাইন্ডের কম্পিউটার প্রোগ্রাম আলফাগো।
সাম্প্রতিক পেপারটিতে ডিপমাইন্ডের গবেষকেরা তাদের উদ্ভাবিত নতুন ধরণের যে নিউরাল নেটওয়ার্কের কথা বলেছে তার বিশেষত্ব হচ্ছে এতে কম্পিউটারের র্যামের মত একটা মেমোরি আছে। আর সেই মেমোরিতে কি রাখতে হবে বা সেখান থেকে কোন ডাটা পড়তে হবে তা নিউরাল নেটওয়ার্কই ঠিক করে। অর্থাৎ এটি আগে থেকে প্রোগ্রাম করে দেয়া হয় না।
পূর্ববর্তী নিউরাল নেটওয়ার্কগুলো খুব জটিল সমস্যার সমাধান যেমন- মানুষের কন্ঠস্বর চেনা বা ছবি দেখে ব্যক্তিকে চিহ্নিত করার মত সমস্যা সমাধানে খুব পারদর্শী হলেও, সেগুলোর একটা দূর্বলতা ছিল আর সেটা হল নিউরাল নেটওয়ার্কে ভ্যারিয়েবল নিয়ে কাজ করা খুবই কঠিন। কিন্তু সাধারণ কম্পিউটার খুব সহজেই সেটা করতে পারে। সাধারণ কম্পিউটারে যেকোন ভ্যারিয়েবল হল র্যামের সুনির্দিষ্ট একটি জায়গা। বর্তমান নিউরাল নেটওয়ার্কটিতে সাধারণ কম্পিউটারের এই শক্তির জায়গাটাই যোগ করা হয়েছে। এর ফলে এটি যেকোন সমস্যা সমাধানের জন্য প্রয়োজনীয় সবচেয়ে গুরুত্বপূর্ণ তথ্য যেগুলো দীর্ঘসময় পড়েও দরকার হবে সেগুলোকে মেমোরিতে জমা রাখে। ফলে এই নেটওয়ার্কটি আরও বেশি জটিল সমস্যা সমাধান করতে পারে।
নতুন নেটওয়ার্কটির নাম দেয়া হয়েছে ডিফারেন্সিয়েবল নিউরাল কম্পিউটার নেটওয়ার্ক বা ডিএনসি। পাইলট প্রকল্পে তিনটি টেস্ট করা হয়েছে নেটওয়ার্কটির পারফরমেন্স দেখার জন্য।
প্রথম টেস্টে, নেটওয়ার্কটিকে ট্রেনিং করানো হয়েছে ভাষাগত যুক্তির উপর। এরজন্য ইনপুট হচ্ছে একটা প্যারাগ্রাফ এবং সাথে ওই প্যারাগ্রাফের উপর করা একটা প্রশ্ন। আউটপুট হচ্ছে ঐ প্রশ্নের উত্তর। ধরা যাক, প্যারাগ্রাফটি এমন, করিম একটি গাছের নিচে বসে আছে। গাছটি একটি আমগাছ। আর প্রশ্নটি হল- করিম কোন গাছের নিচে বসে আছে? উত্তরঃ আমগাছ। এইরকম অসংখ্যা প্যরাগ্রাফ, প্রশ্ন আর উত্তরের উপর নেটওয়ার্কটিকে ট্রেনিং করানোর পর শুধু মাত্র একটি প্যরাগ্রাফ আর প্রশ্ন দিলে নেটওয়ার্কটি সেই প্রশ্নের উত্তর দিতে পারে। উল্লেখ্য যে প্যরাগ্রাফ, প্রশ্ন ও উত্তরের উপর নেটওয়ার্কটিকে ট্রেইন করানো হয়েছিল, টেস্ট করানোর সময় সম্পূর্ণ ভিন্ন যে প্যরাগ্রাফ ও প্রশ্নের উপর নেটওয়ার্কটিকে টেস্ট করা হয়। অর্থাৎ নেটওয়ার্কটি ভালই শিখতে পারে।
দ্বিতীয় টেস্টে নেটওয়ার্কটিকে ট্রেইন করানো হয়েছে বিভিন্ন গ্রাফের উপর। এরপর লন্ডন শহরের আন্ডারগ্রাউন্ড ট্রেনের পুরো ম্যাপ নেটওয়ার্কটিকে উপস্থাপন করানো হয়। তারপরে নেটওয়ার্কটিকে যেকোন দুটি স্টেশনের মধ্যে ক্ষুদ্রতম দূরত্ব বের করতে বলা হয়। নেটওয়ার্কটি সাফল্যের সাথে বলে দিতে পারে একট স্টেশন থেকে অন্য স্টেশনে যেতে কোন কোন ট্রেনে করে কোন কোন স্টেশনের মধ্য দিয়ে যেতে হবে। যেমন- ভিক্টোরিয়া থেকে হিথ্রো এয়াপোর্টে যেতে হলে প্রথমে ভিক্টরিয়া থেকে ডিস্ট্রিক্ট লাইনে করে হ্যামারস্মিথে গিয়ে তারপর সেখান থেকে পিকাডিলী লাইনে করে হিথ্রোএয়ারপোর্টে যেতে হবে।
উপরের দুটি ক্ষেত্রেই নেটওয়ার্কটিকে ট্রেইন করানো হয় সুপারভাইসড লার্নিং এর মাধ্যেমে। অর্থাৎ আগের ইনপুটের সাপেক্ষে জানানো আউটপুটের উপর ট্রনিং হয়। এরপর অজানা ইনপুটের জন্য আউটপুট বের করতে হয় নেটওয়ার্কটিকে।
তৃতীয় টেস্টে সুপারভাইসড এর পরিবর্তে রিইনফোর্সমেন্ট লার্নিং ব্যাবহার করা হয়েছে। রিইনফোর্সমেন্ট লার্নিং হল যখন নেটওয়ার্ককে শিখতে হয় একটা উদ্দেশ্য কিভাবে বাস্তবায়ন করতে হবে। উল্লেখ্য যেকোন রিইনফোর্সমেন্ট লার্নিং মূলত একটা সিকোয়েন্স লানিং অর্থাৎ কোন কোন ধাপ পার করলে লক্ষ্যে পৌছানো যাবে। যেমন- একটা পাজল গেমের উদ্দেশ্য হল পাজল মিলানো। আলোচ্য পেপারে নেটওয়ার্কটিকে মিনি এসএইচআরডিইউ নামে একটি পাজলে ট্রেনিং করানো হয়। পাজলটি হল অংকের খেলা। পাজলের একটি ভার্সনে ১ থেকে শুরু করে ৬ পর্যন্ত অংক একটি ব্লকে এলোমেলো থাকে। নেটওয়ার্কটির কাজ এলোমেলো অংকগুলোকে কিছু নিয়মের ভিত্তিতে সাজানো যেমন- ১ এর বামদিকে ৫ থাকে। ৩ এর ডানদিকে ৪ থাকবে। ৪ এর উপর দিকে ৬ থাকবে ইত্যাদি। এই ক্ষেত্রে অবশ্য একটির বদলে দুটি নেটওয়ার্ক ব্যবহার করা হয়। একটি নেটওয়ার্ককে বলা হয় পলিসি নেটওয়ার্ক আর একটিকে বলা হয় ভ্যালু নেটওয়ার্ক। পলিসি নেটওয়ার্ক ঠিক করে নির্দিষ্ট সময়ে কোন স্টেপ নিতে হবে আর ভ্যালু নেটওয়ার্ক হিসাব করে সেই স্টেপ নিলে লক্ষ্যে পৌছানোর সম্ভাবনা কত।
অনেক জটিল হয়ে গেল বোধ হয় লেখাটা। কতটুকু বোঝাতে পেরেছি জানিনা।
তবে একটা বিষয় পরিষ্কার নতুন এই উদ্ভাবনের মাধ্যমে আর্টিফিসিয়াল ইন্টেলিজেন্সের দিকে প্রযুক্তি আর এক ধাপ এগিয়ে গেল।
মঞ্জিলুর রহমান
সামারটাউন, অক্সফোর্ড
নেচারে আর্টিকেল হিসেবে পাবলিশ হওয়া পেপারটির বিষয়বস্তু নতুন ধরণের একটি নিউরাল নেটওয়ার্ক। নিউরাল নেটওয়ার্ক হচ্ছে বুদ্ধিমান কম্পিউটার বানানোর মূলভিত্তি।
উল্লেখ্য লন্ডনের কোম্পানি ডিপমাইন্ড এর মূল উদ্দেশ্য এমন কম্পিউটার বানানো যা হবে বুদ্ধির অধিকারি। বর্তমানে অনেক কৃত্রিম বুদ্ধিমত্তা সম্পন্ন কম্পিউটার থাকলেও সেগুলো হল বিশেষায়িত কৃত্রিম বুদ্ধিমত্তা। অর্থাৎ সেই কম্পিউটারগুলো শুধু একটা কাজেই পারদর্শী। উদাহরণ হিসেবে বলা যায় দাবা খেলার কম্পিউটার। ডিপমাইন্ডের উদ্দেশ্য জেনেরালাইজড আর্টিফিসিয়াল ইন্টেলিজেন্স বা একটা সর্বজনীন কৃত্রিম বুদ্ধিমত্তা বানানো। এটা এমন একটা কম্পিউটার যেটা শুধু দাবা নয় যেকোন খেলা শিখতে পারবে বা যেকোন কাজ করতে পারবে।
ডিপমাইন্ড সেদিকে অনেকদূর এগিয়েও গেছে। আলফাগো নামে খুবই জটিল খেলায় ওয়ার্ল্ড চ্যাম্পিয়ন ব্যক্তিকে এই বছরের শুরুর দিকে হারিয়ে দিয়েছে ডিপমাইন্ডের কম্পিউটার প্রোগ্রাম আলফাগো।
সাম্প্রতিক পেপারটিতে ডিপমাইন্ডের গবেষকেরা তাদের উদ্ভাবিত নতুন ধরণের যে নিউরাল নেটওয়ার্কের কথা বলেছে তার বিশেষত্ব হচ্ছে এতে কম্পিউটারের র্যামের মত একটা মেমোরি আছে। আর সেই মেমোরিতে কি রাখতে হবে বা সেখান থেকে কোন ডাটা পড়তে হবে তা নিউরাল নেটওয়ার্কই ঠিক করে। অর্থাৎ এটি আগে থেকে প্রোগ্রাম করে দেয়া হয় না।
পূর্ববর্তী নিউরাল নেটওয়ার্কগুলো খুব জটিল সমস্যার সমাধান যেমন- মানুষের কন্ঠস্বর চেনা বা ছবি দেখে ব্যক্তিকে চিহ্নিত করার মত সমস্যা সমাধানে খুব পারদর্শী হলেও, সেগুলোর একটা দূর্বলতা ছিল আর সেটা হল নিউরাল নেটওয়ার্কে ভ্যারিয়েবল নিয়ে কাজ করা খুবই কঠিন। কিন্তু সাধারণ কম্পিউটার খুব সহজেই সেটা করতে পারে। সাধারণ কম্পিউটারে যেকোন ভ্যারিয়েবল হল র্যামের সুনির্দিষ্ট একটি জায়গা। বর্তমান নিউরাল নেটওয়ার্কটিতে সাধারণ কম্পিউটারের এই শক্তির জায়গাটাই যোগ করা হয়েছে। এর ফলে এটি যেকোন সমস্যা সমাধানের জন্য প্রয়োজনীয় সবচেয়ে গুরুত্বপূর্ণ তথ্য যেগুলো দীর্ঘসময় পড়েও দরকার হবে সেগুলোকে মেমোরিতে জমা রাখে। ফলে এই নেটওয়ার্কটি আরও বেশি জটিল সমস্যা সমাধান করতে পারে।
নতুন নেটওয়ার্কটির নাম দেয়া হয়েছে ডিফারেন্সিয়েবল নিউরাল কম্পিউটার নেটওয়ার্ক বা ডিএনসি। পাইলট প্রকল্পে তিনটি টেস্ট করা হয়েছে নেটওয়ার্কটির পারফরমেন্স দেখার জন্য।
প্রথম টেস্টে, নেটওয়ার্কটিকে ট্রেনিং করানো হয়েছে ভাষাগত যুক্তির উপর। এরজন্য ইনপুট হচ্ছে একটা প্যারাগ্রাফ এবং সাথে ওই প্যারাগ্রাফের উপর করা একটা প্রশ্ন। আউটপুট হচ্ছে ঐ প্রশ্নের উত্তর। ধরা যাক, প্যারাগ্রাফটি এমন, করিম একটি গাছের নিচে বসে আছে। গাছটি একটি আমগাছ। আর প্রশ্নটি হল- করিম কোন গাছের নিচে বসে আছে? উত্তরঃ আমগাছ। এইরকম অসংখ্যা প্যরাগ্রাফ, প্রশ্ন আর উত্তরের উপর নেটওয়ার্কটিকে ট্রেনিং করানোর পর শুধু মাত্র একটি প্যরাগ্রাফ আর প্রশ্ন দিলে নেটওয়ার্কটি সেই প্রশ্নের উত্তর দিতে পারে। উল্লেখ্য যে প্যরাগ্রাফ, প্রশ্ন ও উত্তরের উপর নেটওয়ার্কটিকে ট্রেইন করানো হয়েছিল, টেস্ট করানোর সময় সম্পূর্ণ ভিন্ন যে প্যরাগ্রাফ ও প্রশ্নের উপর নেটওয়ার্কটিকে টেস্ট করা হয়। অর্থাৎ নেটওয়ার্কটি ভালই শিখতে পারে।
দ্বিতীয় টেস্টে নেটওয়ার্কটিকে ট্রেইন করানো হয়েছে বিভিন্ন গ্রাফের উপর। এরপর লন্ডন শহরের আন্ডারগ্রাউন্ড ট্রেনের পুরো ম্যাপ নেটওয়ার্কটিকে উপস্থাপন করানো হয়। তারপরে নেটওয়ার্কটিকে যেকোন দুটি স্টেশনের মধ্যে ক্ষুদ্রতম দূরত্ব বের করতে বলা হয়। নেটওয়ার্কটি সাফল্যের সাথে বলে দিতে পারে একট স্টেশন থেকে অন্য স্টেশনে যেতে কোন কোন ট্রেনে করে কোন কোন স্টেশনের মধ্য দিয়ে যেতে হবে। যেমন- ভিক্টোরিয়া থেকে হিথ্রো এয়াপোর্টে যেতে হলে প্রথমে ভিক্টরিয়া থেকে ডিস্ট্রিক্ট লাইনে করে হ্যামারস্মিথে গিয়ে তারপর সেখান থেকে পিকাডিলী লাইনে করে হিথ্রোএয়ারপোর্টে যেতে হবে।
উপরের দুটি ক্ষেত্রেই নেটওয়ার্কটিকে ট্রেইন করানো হয় সুপারভাইসড লার্নিং এর মাধ্যেমে। অর্থাৎ আগের ইনপুটের সাপেক্ষে জানানো আউটপুটের উপর ট্রনিং হয়। এরপর অজানা ইনপুটের জন্য আউটপুট বের করতে হয় নেটওয়ার্কটিকে।
তৃতীয় টেস্টে সুপারভাইসড এর পরিবর্তে রিইনফোর্সমেন্ট লার্নিং ব্যাবহার করা হয়েছে। রিইনফোর্সমেন্ট লার্নিং হল যখন নেটওয়ার্ককে শিখতে হয় একটা উদ্দেশ্য কিভাবে বাস্তবায়ন করতে হবে। উল্লেখ্য যেকোন রিইনফোর্সমেন্ট লার্নিং মূলত একটা সিকোয়েন্স লানিং অর্থাৎ কোন কোন ধাপ পার করলে লক্ষ্যে পৌছানো যাবে। যেমন- একটা পাজল গেমের উদ্দেশ্য হল পাজল মিলানো। আলোচ্য পেপারে নেটওয়ার্কটিকে মিনি এসএইচআরডিইউ নামে একটি পাজলে ট্রেনিং করানো হয়। পাজলটি হল অংকের খেলা। পাজলের একটি ভার্সনে ১ থেকে শুরু করে ৬ পর্যন্ত অংক একটি ব্লকে এলোমেলো থাকে। নেটওয়ার্কটির কাজ এলোমেলো অংকগুলোকে কিছু নিয়মের ভিত্তিতে সাজানো যেমন- ১ এর বামদিকে ৫ থাকে। ৩ এর ডানদিকে ৪ থাকবে। ৪ এর উপর দিকে ৬ থাকবে ইত্যাদি। এই ক্ষেত্রে অবশ্য একটির বদলে দুটি নেটওয়ার্ক ব্যবহার করা হয়। একটি নেটওয়ার্ককে বলা হয় পলিসি নেটওয়ার্ক আর একটিকে বলা হয় ভ্যালু নেটওয়ার্ক। পলিসি নেটওয়ার্ক ঠিক করে নির্দিষ্ট সময়ে কোন স্টেপ নিতে হবে আর ভ্যালু নেটওয়ার্ক হিসাব করে সেই স্টেপ নিলে লক্ষ্যে পৌছানোর সম্ভাবনা কত।
অনেক জটিল হয়ে গেল বোধ হয় লেখাটা। কতটুকু বোঝাতে পেরেছি জানিনা।
তবে একটা বিষয় পরিষ্কার নতুন এই উদ্ভাবনের মাধ্যমে আর্টিফিসিয়াল ইন্টেলিজেন্সের দিকে প্রযুক্তি আর এক ধাপ এগিয়ে গেল।
মঞ্জিলুর রহমান
সামারটাউন, অক্সফোর্ড