যা যা আছে

একটু গল্পগাছা - 1



এই পোস্টে আমরা একটু গল্পগাছা করবো। জানার চেষ্টা করবো, কৃত্রিম বুদ্ধিমত্তা (Artificial Intelligence) বা AI, Machine Learning (ML), আর Deep Learning (DL) কি? এদের মধ্যে সম্পর্ক, পার্থক্য আর শুরুর কিছু গল্প করে একটা ধারণা তৈরী করার চেষ্টা করবো, যার ওপর ভিত্তি করে দ্রুত এদের কাজে লাগানো শুরু করা যায়। সম্ভব হলে, আমরা আরো কতগুলো প্রশ্নের ছোট করে উত্তর জানার চেষ্টা করবো: ১) ভবিষ্যতে AI কি সত্যিই আমাদের জীবনে ততটা গুরুত্বপূর্ণ হয়ে উঠবে, যেমনটা সর্বত্র বলা হচ্ছে? ২) যা রটে, তার কতটুকু বটে? ৩) যে সব অজস্র নতুন নতুন শব্দ শোনা যায় ML প্রসঙ্গে, তাদের মানে কি? ৪) আর সবথেকে গুরুত্বপূর্ণ প্রশ্ন, এ-সব আমার কোন কাজে লাগবে? … যদি ঝিমুনি আসে, তবে স্বচ্ছন্দে পরের পোস্টে চলে যেতে পারো, তবে এ সব ব্যাপারে একদম কাঁচা হলে, এই পোস্টটা পড়ে ফেলাই বুদ্ধিমানের কাজ হবে। বাজার-চলতি সবচেয়ে নামকরা DL framework গুলোর মধ্যে একটা হলো Keras, আর এর স্রষ্টা হলেন François Chollet। ভদ্রলোক এই পোস্ট লেখার সময়ে Google এর চাকুরে, আর DL এর ওপর একখানা অতি ঝকঝকে বইয়ের লেখক। এই পোস্টে প্রধানত বইটার প্রথম চ্যাপ্টারটাই অনুসরণ করা হবে, যদিও মাঝেমধ্যে আমরা একটু এদিক-ওদিক ঘুরে আসবো।

সঙ্গের ছবিতে দেখানোর চেষ্টা করা হয়েছে AI, ML, আর DL এর পারস্পরিক সম্পর্ক (ছবি scale মেনে আঁকা নয়)। কিন্তু এরা আসলে কি?

AI : Artificial Intelligence শুনলেই যদিও আমাদের সিনেমা-দেখা মাথায় প্রথমেই আসে রোবটদের কথা, এর মানে রোবট নয়। এর আসল মানে এমন একটা computer program, যা তার চারপাশের জগৎটা অনুভব করতে পারে (পঞ্চেন্দ্রিয়ের বদলে পাঁচশো ইন্দ্রিয়ও থাকতে পারে), তা নিয়ে চিন্তা করতে পারে logically, সেই চিন্তার ওপর ভিত্তি করে একটা কর্তব্য স্থির করতে পারে, সেই কাজটা শুরু করতে পারে, এবং, সর্বোপরি, অবস্থা বদলালে, বা সমস্যা তৈরি হলে কাজের ধরণ বদলে ফেলতে পারে। মানে, এককথায়, আমরা একে অন্যের থেকে (অন্য Homo Sapiens) সবচেয়ে কম যতটুকু দাবী করে থাকি, সেইটুকুই। লিস্টি করে ফেলতে চাইলে, এর মোদ্দা লক্ষ্য হলো: reasoning, knowledge representation, planning, learning, natural language processing (NLP), perception, আর, the ability to move and manipulate objects।

তা, প্রশ্ন উঠতে পারে, এই রকম একটা মেশিন, যা কিনা আমাদের intelligence কে এতটাই ভাল নকল করতে পারে, তা আমরা তৈরি করতে চাইবো কেন? 7 billion মানুষের পৃথিবীতে কর্মীর কি কিছু অভাব পড়িয়াছে? উত্তর যদি হয়, যে মেশিন অন্যরকমের কাজ ভালো করে করতে পারে, repetitive, labor intensive কাজের জন্যে আমরা মেশিন ব্যবহার করতে পারি, অর্থাৎ, automation of reasoning,  তাতে প্রশ্ন উঠবে, “ও, আচ্ছা, তাহলে এই AI আসলে ঠিক human intelligence এর কার্বন-কপি নয়! কি করে স্থির করলাম, যে এই ‘অন্যরকম বুদ্ধি’ আমাদের থেকে অনেকটা এগিয়ে গিয়ে, আমাদেরকেই আর তোয়াক্কা করবে না?” অন্য দিকে, আরেকরকমের প্রশ্নও উঠে আসে, যদি এই বুদ্ধির সঙ্গে আমাদের বুদ্ধির পার্থক্য না-ই করা যায়, তবে সেই বুদ্ধিমান মেশিনেরও কি মানবাধিকারের মতো ‘মেশিনাধিকার’ থাকা উচিত নয়? হতেই পারে, যখন আমরা তাকে দিয়ে কাজ করাতে চাই, তার তখন ‘ইচ্ছে’ হলো ছবি আঁকার। তাকে ‘বাধ্য’ করা আর দাসপ্রথা সমর্থন করা কি সমার্থক হয়ে দাঁড়াবে না? এই প্রবল দার্শনিক কচকচি বিরক্তিকর মনে হলেও, খুব দরকারি, কিন্তু এই মুহূর্তে আমাদের কোন কাজে লাগবে না। 

অবান্তর:
এমন ভাবার কোন কারণ নেই, যে এই কৃত্রিম বুদ্ধিমত্তা বা রোবট নিয়ে মানুষের কল্পনা, চিন্তা সব আধুনিক যুগে শুরু হয়েছে। গ্রীক পৌরাণিক গল্পের Talos সম্ভবত প্রথম বুদ্ধিমান রোবট। Talosএর গল্প, মানুষের হয়ে তার কাজ করা, আর শেষে মানুষের প্রবঞ্চনাতেই তার ‘জীবন’-অবসান, ওই দার্শনিক চিন্তারই আরেকরকম ছবি। Talos এর গল্প নিয়ে একটা মিষ্টি animation আছে এখানে


দর্শন যা-ই হোক, 1955 সাল নাগাদ থেকেই, কম্পিউটার সায়েন্স এর দিকপালেরা ভাবতে শুরু করেছেন, যে কোনো সময় আমরা AI বানিয়ে ফেলতে পারি। এই ‘যে কোনো সময়’টা, অবশ্যই মানুষের সময়-সূচী মেনে চলেনা। কিন্তু optimism bias এ ভোগা মানব-মস্তিষ্ক ভেবে বসেছিলো, যে মেশিনের সে দিন আসন্ন। উদাহরণ? MIT র AI lab এর প্রতিষ্ঠাতা Marvin Minsky সেই 1967 সালে বলে বসলেন, “within a generation ... the problem of creating 'artificial intelligence' will substantially be solved.” 

অবান্তর:
এখানে Minsky কে নিয়ে আলোচনা হবে।

ভদ্রলোক একা নন, মুষ্টিমেয় কিছু মানুষ ছাড়া সকলেই ভেবেছিলো যে AI এর দিন আসলো বলে। এর কারণ আছে। আশির দশকে expert systems নামের একধরনের program (যার ভিত্তি আরও আগেকার symbolic AI) প্রবল জনপ্রিয় হয়েছিলো। এদের মধ্যে কিছু, দিয়ে দেওয়া বেশ কিছু rule এর ভিত্তি করে প্রশ্নের উত্তর দেওয়ার চেষ্টা করতো (inference engine), আর কিছু, লোড করা প্রচুর তথ্যের database এর ভিত্তি করে একই কাজ করার চেষ্টা করতো (knowledge base)। এরা এমন অনেককিছু করতে পেরেছিলো, যা মানুষ আগে ভাবেনি, তার মধ্যে logical problem solve করা যেমন আছে, তেমন ছিলো দাবা খেলা।

অবান্তর:
IBM এর দাবা খেলার মেশিন Deep Blue 1996 সালে তৎকালীন দুনিয়ার সেরা দাবাড়ু Gary Kasparov কে হারিয়েছিলো একটা game এ, যদিও match টা Kasparov ই জেতেন। সেই শেষ মুখরক্ষা, পরের বছরই Kasparov কে ম্যাচটিও খোয়াতে হয়। Deep Blue ছিলো এই ধরনের এক symbolic AI, এদের এখনকার দিনে আদর করে ‘GoodOld-Fashioned Artificial Intelligence’ (GOFAI) বলে ডাকা হয়। এদের অনেক উপরের স্তরের আধুনিক ভায়রাভাই আছে, যারা গোলমেলে কঠিন কাজকম্মো করতে সক্ষম। একটা উদাহরণ হলো Wolfram Alpha। তোমার কাছে Mathematica থাকলে তুমি তার ভেতর থেকেই Alpha ব্যবহার করতে পারো, কিন্তু না হলেও, web-version তো আছেই। ব্যবহার করার নিয়মকানুন নিয়ে পরে আলোচনা হবে।

আর একটা নামকরা inference engine এর নাম হলো Cyc, যার database তৈরি হয়েছিলো CycL languageএ। এই database ছিলো hard-coded, অর্থাৎ, কোন একজন মানুষ হাতে করে সেটা তৈরি করতো। গোলমেলে কাজ, তদুপরি, সত্যিকারের পৃথিবীর মতো যথেষ্ট জটিলতা তৈরি করতে গেলে আরো গোলমাল হতো। একটা উদাহরণ দেওয়া আছে Deep Learning এর এক নামকরা ব্যক্তিত্ব Ian Goodfellowর বইতে:
... Cyc failed to understand a story about a person named Fred shaving in the morning. Its inference engine detected an inconsistency in the story: it knew people do not have electrical parts, but because Fred was holding an electric razor, it believed the entity ‘FredWhileShaving’ contained electrical parts. It therefore asked whether Fred was still a person while shaving.

ভাল কথা, কিন্তু এমন অনেক ধরনের ‘ঘোলাটে’ কাজ আছে, যা দাবা খেলার মতো কঠিন নিয়ম মেনে চলে না, অথচ আমাদের দৈনন্দিন জীবনে আমরা হরবখত করে থাকি, আর সেগুলো খুব দরকারি কাজও বটে। উদাহরণ? অনুবাদ করা। গুচ্ছের লোক একই জিনিসকে হাজার রকম করে বলে চলেছে, আর তার কথার মধ্যে লুকিয়ে আছে তার মনের ভাব, অবস্থা, এমনকি dry রসিকতা অবধি। কি করে এই অস্পষ্ট নিয়মে বাঁধা ভাষাকে অন্য, একইরকম অস্বচ্ছ নিয়মে তৈরি অন্য একটা ভাষায় বদলে দেওয়া যায়? অথবা, মানুষের হাতের লেখা থেকে বোঝা, সে কি লিখতে চেয়েছিলো? এইসব কাজ আমরা প্রতিনিয়ত এত বেশি করি, আর মানব-মস্তিষ্ক এসব করতে এতটাই সক্ষম, যে আমরা ভুলে যাই, আসলে এদের codify করা আসলে কতটা কঠিন। এইসব আপাত অসম্ভব সমস্যার সমাধানে এক নতুন জিনিস এলো বাজারে, symbolic AI কে গদিচ্যূত করতে। তার নাম? Machine Learning।


ML : একটু ভাবার চেষ্টা করা যাক, programming বলতে আমরা আসলে ঠিক কি বুঝি? মেশিনকে আমরা সাধারণত কিছু input দিয়ে থাকি, যা নম্বর, শব্দ, ছবি যা কিছু হতে পারে। সঙ্গে আমরা আরো কিছু দিই মেশিনকে, যাদের rule বলা যেতে পারে, যেমন, “input 10 এর থেকে বেশি হলে তাকে 2 দিয়ে গুণ করো, না হলে 3 দিয়ে” – এইসব। বদলে মেশিন থেকে আমরা পাই উত্তর, ঠিক যেমনটা আমরা চাই; এমনকি আমরা আগে থেকেই জানি, যে ঠিক উত্তর কি হবে। সময় দিলে আমরাই সেই সব উত্তর বের করে আনতে পারি। একে classical programming বলা যেতে পারে।

কিন্তু, এ কি করে বুদ্ধিমত্তার পরিচয় হলো? intelligence এর মানে তো প্রায় সবসময়েই অজানা নিয়মকানুন খুঁজে বের করে আনা, তাই না? একজন 11 ক্লাসের ছাত্রীকে একখান arithmetic progression এর প্রথম পাঁচখানা সংখ্যা ধরিয়ে দিলে কিছুক্ষণের মধ্যেই সে বলে দেবে, যে পরের সংখ্যাটা কি হবে। কি করে বলতে পারলো? ওটা যে Fibonacci Series নয়, সে বিষয়ে কি করে নিশ্চিত হতে পারলো? উত্তর তার কাছে খুব সোজা: প্রথম দু’টো সংখ্যা দিয়ে শুরু করে ও প্রথমে বোঝার চেষ্টা করবে, তৃতীয় সংখ্যাটা কি করে আসে। একখানা সম্পর্ক খুঁজে বের করতে পারলে, সেটা আবার দ্বিতীয় আর তৃতীয়ের ওপর লাগিয়ে দেখার চেষ্টা করবে তার থেকে চতুর্থটা আসে কিনা। যেই উত্তর মিলে যাবে, আরো একবার শেষ দু’টোর ওপর বসিয়ে নিজের খুঁজে পাওয়া ‘নিয়ম’টা ঝালিয়ে নিয়ে তোমায় উত্তর বলে দেবে (অবশ্যই, সমান্তর প্রগতির অঙ্ক করে আসাটা তার উপকারে লাগবে এই সময়। Good, তার মানে পূর্ব-অভিজ্ঞতা কাজে লাগছে)।

মেয়েটা যা অনায়াসে করলো, সেটা আসলে কি? প্রথমেই ও ধরে নিলো, যে প্রথম দু’টো সংখ্যা ওর input, আর পরেরটা ওর ‘ঠিক’ উত্তর। এইভাবে দুই আর তিন নম্বর সংখ্যাগুলো input হ’লে, চার নম্বরেরটা উত্তর। এই নানা রকম input আর উত্তরের combination গুলো ঠিক কোন rule মেনে চলে, সেটাই ও খুঁজে বের করলো। আমরা আরও একবার নিশ্চিন্ত হলাম, যে ও ‘বুদ্ধি’মতী। বেশ, কিন্তু এ তো classical programming এর উলটো কথা! Classical programming মেনে চলা কম্পিউটার কি করে ‘বুদ্ধি’মান হবে?

অবান্তর:
First computer algorithm (Wikipedia)
Augusta Ada King, কবি Lord Byron এর একমাত্র বৈধ সন্তান, Lovelace Countyর মালকিন, ছিলেন ‘কম্পিউটারের জনক’ Charles Babbage এর সহকর্মী। সেই প্রস্তাবিত প্রথম কম্পিউটারের (mechanical computer, electronic chip এর বহুযুগ আগের কথা হচ্ছে, ঊনবিংশ শতকের তিরিশ-চল্লিশের দশক) প্রধান কাজ ছিলো mathematical calculation করা, আর সেই জন্যেই নাম দেওয়া হয়েছিল ‘Analytical Engine’।

Lady Ada Lovelace বুঝেছিলেন, এই যন্ত্র শুধু যে calculation করতে সক্ষম তা-ই নয়, একে দিয়ে অন্য অনেক কিছু করানো সম্ভব, শুধু সঠিক algorithm লেখার অপেক্ষা। মহিলা কাজটা নামিয়েও ফেলেছিলেন। জগতের প্রথম published algorithm এর স্রষ্টা প্রথম computer programmer দের একজনও বটে। তা, 1843 সালে এই নয়া আবিষ্কার সম্পর্কে ওঁর বক্তব্য ছিলো: “The Analytical Engine has no pretensions whatever to originate anything. It can do whatever we know how to order it to perform … Its province is to assist us in making available what we’re already acquainted with.” এই ধারণার মধ্যে বুদ্ধির নামগন্ধও আছে কি? নাহ্, কিন্তু এই ধারণার পরিবর্তন করতেই মাঠে নেমেছিলেন Turing, তাঁর Turing Test এর আইডিয়া নিয়ে।


ক্ষণজন্মা বিজ্ঞানী Alan Turing (নাম না জানা থাকলে Google করো, আর The Imitation Game সিনেমাটা দেখে ফেলো) তাঁর 1950 সালের বিখ্যাত পেপারে দেখিয়েছিলেন, যে তা সম্ভব। মেশিন-লার্নিং এই অসাধ্যটাই (ভাল-খারাপ, যেভাবেই হোক) সাধন করে দেখায়। আমরা মেশিনকে দিই input data আর তার সম্ভাব্য উত্তর, অনেক-অনেক গুলো। মেশিন তাদের দেখে programmed হয় না, trained হয়। Statistics আর calculus ব্যবহার করে তারপর ও খুঁজে বের করার চেষ্টা করে তাদের মধ্যে সম্পর্ক। অর্থাৎ, ও এবার জানে যে ওই ধরনের input থেকে ওই ধরনের ‘সঠিক’ উত্তর বের করে আনতে কি ধরনের rule apply করতে হবে।

Training যদি ভাল (এই ‘ভাল’-‘মন্দ’ ব্যাপারটা অত সহজ না, পরে বিশদে জানতে হবে আমাদের) হয়, তবে এর পরে ওকে যদি এমন কোনো input দেওয়া হয়, যা ও আগে দেখেনি, তখনও ওই খুঁজে বের করা rule গুলো লাগিয়ে ও আমাদের একটা সম্ভাব্য উত্তর বলে দিতে পারবে। কেমন একটা ‘বুদ্ধি’-‘বুদ্ধি’ গন্ধ আসছে না এবার? আগের পোস্টের উদাহরণের ImageIdentify যে ম্যাজিকের মতো বলে দিতে পারছিলো input এর ছবিটা কিসের, তার কারণ, ওকে তার আগে প্রবল training এর মধ্যে দিয়ে যেতে হয়েছে (একখানা গোটা project তৈরী করা হয়েছে শুধু ওই functionটার জন্যে। প্রোজেক্টটা সম্পর্কে Wolfram এর নিজের পোস্টটা সময় হলে পড়ে দেখতে পারো)। অথচ, এর মধ্যে কোন ম্যাজিকই নেই, আছে statistics, linear algebra আর calculus। তাহলে ML কি শুধু statistics এর একটা অংশমাত্র? না। ধারণা, ব্যবহার আর প্রস্তাবনার মধ্যে বেশ কিছু মিল থাকলেও, একটা প্রথাগত statistical analysis , যেমন Bayesian analysis আর ML এর মধ্যে কিছু মজ্জাগত পার্থক্য আছে। কিরকম? সেটা বোঝার আগে, আমাদের একটু জানতে হবে, এই উদ্ভট কাজটা ML করে কিভাবে? সে গল্প নাহয় চলুক পরের পোস্টে…

No comments