আন্দাজ করুন তো নিজের মাকে দেখে চিনতে আমাদের কতক্ষণ সময় লাগতে পারে?
উত্তরটা হচ্ছে আনুমানিক ০.১ সেকেন্ড।
আমাদের মস্তিষ্কটা হচ্ছে নিউরনের আখড়া। চোখ যা দেখে সে সেই তথ্য মস্তিষ্কে পাঠিয়ে দেয়, এরপর নিউরনে ফায়ারিং হয়। এই ফায়ারিং গোলা-বারুদের নয় বরং ফলাফলের। আমাদের মস্তিষ্কে আনুমানিক ১০^১১ টি নিউরন আছে, যারা একে অপরের সাথে সংযুক্ত। একটি নিউরন আবার প্রায় ১০^৪ টি নিউরনের সাথে সংযুক্ত থাকে। এদের কাজ হচ্ছে এদের কাছে আসা তথ্য ঠিকভাবে প্রসেস করে পরবর্তী নিউরনকে দেয়া, এভাবে “দশে মিলে” কাজ করে তারা একটা সিদ্ধান্তে পৌঁছায়। যেটা দিয়ে আমরা পরীক্ষার হলে পরীক্ষা দিই, প্রিয় মানুষগুলোকে চিনতে পারি আরো কত জটিল কাজ করি।
আমরা মঙ্গল গ্রহে বাস করার চিন্তা করতে পারছি যেই মস্তিষ্ক দিয়ে সেই মস্তিষ্কের সকলকিছু এখনো আমরা জানতে পারি নাই। কিন্তু এই মস্তিষ্কের গঠন আর কাজের ধরন সম্পর্কে আমরা যতোটুকু জানতে পেরেছি তা দিয়েই আমরা এগিয়ে যাচ্ছি।
এখন ব্যাপার হচ্ছে আমাদের মস্তিষ্ক সবচেয়ে দ্রুত সময়ে যেই কাজ করতে পারে তা করতেও সে সময় নেয় প্রায় ১০^-৩ সেকেন্ড যেখানে মোটামোটি মানের কম্পিউটারের সময় লাগে প্রায় ১০^-১০ সেকেন্ড। কিন্তু মানব মস্তিষ্ক এতোটুকু সময় বেশি নিয়েও যেই জটিল কাজ করতে পারে, মানব সৃষ্ট কম্পিউটার তো তা পারে না।
দুইটা বিশাল বিশাল সংখ্যা গুণ করতে দিলে কিংবা খুব বড় কোন সখ্যার বর্গমূল বের করতে দিলে যেকোন মানুষের অনেক সময় লাগবে ক্ষেত্র বিশেষে নাও পারতে পারে। কম্পিউটার কিন্তু খুব কম সময়ে নির্ভুলভাবে তা নির্ণয় করে দিবে। অপরদিকে আমরা মানুষরা যেভাবে ৪ বছরের বাচ্চার আঁকা-বাঁকা লিখা দেখেও বুঝতে পারি সে কি লিখতে চেয়েছে কিংবা তার অস্পষ্ট উচ্চারণ শুনেও আমরা বুঝতে পারি সে কি বুঝাতে চাচ্ছে, কম্পিউটারের পক্ষে কি কাজটা খুব সহজে করা সম্ভব? উত্তরটা অবশ্যই না। কম্পিউটার হলো বোকা, ওকে যা বলে দেয়া হয় তার থেকে “এক কলমও” ও বেশি বুঝতে পারে না/যায় না।
অসম্ভব বলেই তো মানুষ কোনদিন বসে থাকে নি, মানুষের কাজগুলো কম্পিউটারকে দিয়ে করাতে হলে মানুষের কাছ থেকেই কিছু ধার নিতে হবে। আর তা হলো মানুষের মস্তিষ্কের কাজের ধরন, সেই থেকে অনুপ্রাণিত হয়েই এসেছে Artificial Neural Network. মানুষের নিউরনের কাজের ধারার আদলে নির্মিত Neural Network। যা দিয়ে এখন “বোকা”টাও বিভিন্ন ভাষার হাতের লিখা, কোনটা মানুষ কোনটা বেড়াল তা চিনতে পারে। কাজটা মোটেও খুব সহজ নয়।
Neural Network এর বাস্তবসম্মত একটা উদাহরণ নিয়ে কথা বলি –
আমাদের প্রত্যেকের হাতের লিখা আলাদা, একই অক্ষর আমরা একেকজন একেকভাবে লিখে থাকি। কম্পিউটারের নিজস্ব কোন বুদ্ধি নেই, আমি-আপনি যতোটুকু বলবো ওর জানা বা করার ক্ষমতা ততোটুকুই। নিউরাল নেটওয়ার্ক ব্যবহার করে হাতের লিখা চেনার মতো জটিল কাজ কম্পিউটারের পক্ষে এখন করা সম্ভব হচ্ছে। প্রতিটা জিনিস(দৃশ্যত) পিক্সেলে আমরা রিপ্রেজেন্ট করতে পারি। 0-9 পর্যন্ত প্রতিটা সংখ্যার একটা নির্দিষ্ট প্যাটার্ন আছে, একটা নির্দিষ্ট ফ্রেমে বন্দী করে ব্যাপারটা চিন্তা করতে পারি। 28×28 2-D একটা ফিল্ড চিন্তা করি, যেকোন একটা সংখ্যা আঁকতে নির্দিষ্ট কিছু বক্সের উপর দিয়ে আমার কলম ঘুরাতে হবে। এটা হবে আমার মেশিনের জন্য ইনপুট। সে এটাকে খুব ছোট ছোট ভাগে ভাগ করবে – Part A। এই ছোট ছোট পার্টগুলি দিয়ে আরেকটু বড় একটা পার্টের সাথে মিল খুঁজে পাবে। যেমনঃ 1 এর ক্ষেত্রে ধরি ছোট ছোট পার্টগুলি হলো চারটা লম্বা দাগ। যার সমষ্টি করলে(একটার উপর একটা দাঁড় করালে) 1 হয়। এবার পরের ধাপে দেখবে দুইটা লম্বা দাগ যোগ করে কি পাই? কারণ 4 এর ক্ষেত্রে দেখুন ওর 1 এর মতো লম্বা দাগের একটা প্রোপার্টি আছে। দ্বিতীয় ধাপে এই লম্বা দাগের কাছাকাছি গেলো। এবার ও পরের ধাপে সিদ্ধান্ত নিবে ধরি – আচ্ছা – আমার এই সংখ্যায় আমি একটা লম্বা দাগ পেয়েছি তাঁর সাথে আর কিছু নাই। তার মানে এটা 1 ।
এক ধাপ আরেক ধাপকে ট্রিগার করে বলতে পারেন। এর আরেকটা প্রয়োগ কিন্তু আমরা প্রায়ই দেখি – ফেসবুকে ছবি আপ্লোড করলে মানুষগুলোর ফেস রিকগ্নাইজ করা আবার তাদের অটো ট্যাগ করা।
নিউরাল নেটওয়ার্কে একটা ইনপুট লেয়ার আরেকটা আউটপুর লেয়ার থাকে। এর মাঝের লেয়ারগুলোকে হিডেন লেয়ার বলা হয় যার সংখ্যাটা যে নিউরাল নেটওয়ার্কটা ডিজাইন করছে তার উপর নির্ভর করে। এই হিডেন লেয়ারের উপরই কোন একটা ফলাফলের Accuracy(কতটা সঠিকভাবে সে কাজ করছে এবং সঠিক উত্তর দিতে সক্ষম) নির্ভর করে।
লিখাটা পড়ার জন্য ধন্যবাদ।
১ – Machine Learning by Tom Mitchell
২ - Chapter 10. Neural Networks
৩ - Chapter 1, deep learning
সর্বশেষ এডিট : ২৮ শে মে, ২০১৮ রাত ১২:১৪