‘কৃত্রিম বুদ্ধিমত্তা’ জিনিসটা কি?
যন্ত্রের শেখাটা বড় কথা
Intelligence is the efficiency with which you acquire new skills at tasks you didn't previously prepare for. Intelligence is not skill itself, it's not what you can do, it's how well and how efficiently you can learn new things.
-- Francois Chollet
সাধারণ ধারণা, কিছু পয়েন্টার
আচ্ছা বলুনতো ‘কৃত্রিম বুদ্ধিমত্তা’ জিনিসটা কি? এই ব্যাপারটা নিয়ে ভাবছিলাম বেশ কয়েকদিন ধরে। আমার রিসার্চ বলে এর ডেফিনেশনের ব্যাপ্তি অনেক বড়। একেক সেক্টর একেকভাবে বলছেন, এবং সবাই নিজের জায়গায় ঠিক। সেদিক থেকে ব্যক্তিগত অভিজ্ঞতা থেকেই বলি বরং।
ব্যাপারটা একটু কঠিন হলেও এর ধারনাটা বেশ সহজ। তার আগে আলাপ করা যেতে পারে বুদ্ধিমত্তার চিহ্ন কিভাবে আমরা পাই? সরাসরি বলা যেতে পারে - যদি কারো ব্যবহারে আমরা বুঝতে পারি - সে সিদ্ধান্ত নিতে পারছে আশেপাশে ইনপুট থেকে, তাহলে আমরা বলতে পারি সে বুদ্ধিমত্তার পরিচয় দিচ্ছে। ছোটবেলায় পিঁপড়ার সামনে কোন প্রতিবন্ধক রাখলে সে যখন সেটাকে পাশ কাটিয়ে যায় তখন আমরা বুঝতাম সে চোখ দিয়ে দেখে অর্থাৎ আশেপাশের (ডেটা) একটা ইনপুট থেকে সিদ্ধান্ত নিয়ে তার গতিপথ পরিবর্তন করেছে। অর্থাৎ ডেটাকে সে ইন্টারপ্রেট করতে পারছে।
যন্ত্রের নিজের সিদ্ধান্ত নেওয়ার ক্ষমতা
একটা যন্ত্রের নিজের সিদ্ধান্ত নেওয়ার ক্ষমতা তৈরি হলে আমরা সেটাকে বুদ্ধিমত্তার একটা চিহ্ন হিসেবে বলতে পারি। একটা বুদ্ধির এজেন্ট হিসেবে কাজ করছে। যেহেতু বুদ্ধিমত্তাটা কোন জৈব বা ‘অর্গানিক’ মানে প্রাণী থেকে আসছে না - সে কারণে এটাকে সিন্থেটিক মানে ‘কৃত্রিম’ বুদ্ধিমত্তা বলা যেতে পারে। একটা অবস্টাকল অ্যাভয়ডেন্স রোবটের সামনে একটা প্রতিবন্ধকতা দেওয়া হলে সেটাকে (নতুন ডেটা) দেখে নতুন করে সিদ্ধান্ত নিয়ে গতিপথ পরিবর্তন করলে আমরা সেটাকে কৃত্রিম বুদ্ধিমত্তা বলতে পারি।
ব্যাপারটা কি আসলেই সে রকম?
নিজেকেই প্রশ্ন করছি।
একটা যন্ত্র যখন তার আশেপাশের ডাটা থেকে শিখে সেটা থেকে তার অ্যাকশন বা কাজকে ইন্টারপ্রেট করতে পারবে, অর্থাৎ ভবিষ্যৎ কাজ বা সিদ্ধান্ত প্রেডিকশন করতে পারবে তাহলে সেটাকে বুদ্ধিমত্তার একটা চিহ্ন বলতে পারি। ব্যাপারটা এমন যে সেই যন্ত্রকে সেই কাজটা করার জন্য আমরা ‘এক্সপ্লিসিট’ ভাবে প্রোগ্রাম করে দেইনি, বরং তাকে কিছু ডাটা দিয়েছি সেই ডাটাকে সে পড়ে সেটা থেকে তার ভবিষ্যৎ কর্মপন্থা বের করে নিয়েছে।
সনাতন প্রোগ্রামিংয়ের সাথে কি পার্থক্য?
একটা সমস্যা নিয়ে আলাপ করি। পয়েন্ট ‘ক’ থেকে পয়েন্ট ‘খ’তে পাঠাবো আমাদের রোবটকে। সনাতন প্রোগ্রামিংয়ে আমরা যন্ত্রের প্রতিটা স্টেপ ডিফাইন করে দিতাম যাতে সে শুরুর পয়েন্ট থেকে শেষ পয়েন্টে যেতে পারে। কিন্তু রোবটকে সেই পয়েন্টগুলোকে পাল্টে দিলে তাকে নতুন করে প্রোগ্রামিং করে দিতে হতো নতুন রুলসেট দিয়ে। এর অর্থ হচ্ছে যন্ত্র কিছু শিখছে না। আমরা যেভাবে রুলসেট ডিফাইন করছি সে সেভাবে কাজ করছে।
মেশিন লার্নিং
কৃত্রিম বুদ্ধিমত্তার একটা বড় অংশ হচ্ছে মেশিন লার্নিং, যন্ত্রের শেখার প্রসেস এবং যন্ত্র যা শিখছে, যেখানে যন্ত্রকে দিয়ে দেওয়া হচ্ছে ডাটা যেটাকে সে ইন্টারপ্রেট করে তার মত করে কর্মপন্থা প্রেডিকশন করে নিচ্ছে। যন্ত্রের জন্য প্রোগ্রামিং হচ্ছে এই ডেটা - যা পাল্টাচ্ছে সময়ের সাথে। পাল্টাচ্ছে ভেতরের রুলসেট। ‘কৃত্রিম বুদ্ধিমত্তা’ হচ্ছে আমরা যা চাচ্ছি যন্ত্র থেকে, আর মেশিন লার্নিং হচ্ছে এর একদম সেন্টার পিস, এটাকে কিভাবে ইমপ্লেমেন্ট করবে।
সনাতন প্রোগ্রামিংয়ের সাথে মেশিন লার্নিং একদম উল্টো কেন?
সনাতন প্রোগ্রামিংয়ে আমরা কি করি? আবারও ধরা যাক, আমাদের আগের রোবটকে পয়েন্ট ‘ক’ থেকে পয়েন্ট ‘খ’তে যাবার ইন্সট্রাকশন দিচ্ছি। প্রথমে শুরুর পয়েন্ট এর থেকে ৪৫ ডিগ্রি ডানে ঘুরাবো, ২০ স্টেপ সামনে আগাতে বলবো, আবার ৩০ ডিগ্রি বামে ঘুরাবো, এরপর ১০ স্টেপ হাঁটালেই ‘খ’ পয়েন্টে পৌঁছে যাবে। একইভাবে নতুন নতুন ইনস্ট্রাকশন দিতে হবে যখন আমরা নতুন ‘ক’ এবং ‘খ’ পয়েন্ট দেব। এটা এক্সপ্লিসিট প্রোগ্রামিং।
মেশিন লার্নিং কি ঘটবে তাহলে?
যন্ত্রকে যখন আমরা কিছু ডাটা দেব যাতে সে অনেকগুলো পয়েন্ট থেকে নতুন অনেকগুলো পয়েন্টে যাবার ধারণা পায়। পুরানো ডেটা যেখানে আগে একেকটা রোবট কিভাবে শুরুর পয়েন্ট থেকে শেষ পয়েন্টে গিয়েছিলো। সেখানে সে ডেটা এনালাইসিস করে বুঝতে পারবে প্রতিটা ডাটাতে - যেই পয়েন্ট থেকে নতুন কোন পয়েন্টে যাক না কেন - প্রতিটা ক্ষেত্রে রোবট ডানে বামে যেদিকেই যাক না কেন তার শেষ পয়েন্ট থেকে শুরুর পয়েন্টের সবসময় দূরত্ব কমতে থাকবে।
এটা একটা প্যাটার্ন। তখন সে রোবটকে বিভিন্ন দিকে হাটিয়ে দেখবে কোথায় বা কোন দিকে গেলে তার দূরত্ব কমে আসে। এটাই তার আলটিমেট গোল। এরপর সেদিকে হাঁটতে থাকবে। মাঝখানে কোন প্রতিবন্ধকতা পড়লে তার জন্য নতুন ইনপুট সিস্টেম এর প্রয়োজন পড়বে। মোদ্দা কথা হচ্ছে, একই ডাটা নতুন একই ধরনের সমস্যার জন্য কাজ করবে, সনাতন প্রোগ্রামিংয়ের মত প্রতিটা নতুন নতুন সিচুয়েশনের জন্য নতুন করে রুলসেট তৈরি করে দিতে হবে না।
মানে মেশিন শিখে গেল। কিছুটা ‘টিচিং হিম হাউ টু ফিস’। হয়তোবা সনাতন প্রোগ্রামিং এর মত প্রতিটা সিচুয়েশনে যেভাবে কাজগুলো যতো তাড়াতাড়ি বা ‘অ্যাক্যুরেট’ হবে এখানে সেরকম তাড়াতাড়ি বা ‘অ্যাক্যুরেট’ না হলেও সে আস্তে আস্তে শিখে যাবে তার আসল কাজ। এরপর তাকে মঙ্গল গ্রহে পাঠালেও সে ঠিক ঠিক রাস্তা ধরে চলে আসবে।
এখন কয়েকটা প্রশ্ন এসেছে মাথায়। লিখতে লিখতেই মাথায় এলো, বলি?
- একটা বাচ্চা এবং যন্ত্রের শেখার মধ্যে পার্থক্য আছে কী?
- এই শেখার মধ্যে গাইডেন্স দেবার সুযোগ কী আছে?
- ভুল শিখলে শোধরানোর উপায় আছে কী?