মানুষ এবং যন্ত্র কিভাবে শেখে?
আচ্ছা, 'টুরিং' কী বলেছিলেন? যন্ত্রের সাথে যোগাযোগ করে যদি তাকে মানুষ আর যন্ত্রের মধ্যে ফারাক বোঝা না যায় তাহলে তার কাজের আউটকামকে 'বুদ্ধিদীপ্ত' বলে ধরা যাবে।
মুভিটা না দেখলেই নয়
'ইমিটেশন গেম' মুভিটা নেটফ্লিক্সে পাবেন, মিস করার নয়।
ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং (এনএলপি)
শুরুতেই বলে নিচ্ছি - এ ব্যাপারে আপনাদের আর্টিফিশিয়াল ইন্টেলিজেন্ট এক্সপার্ট অথবা ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এ বোদ্ধা হবার প্রয়োজন নেই। আমি আপনাদের গাইড এই পুরো রাস্তায়। পুরো ব্যাপারটাকে ঠিকমতো কন্টেক্সটচুয়ালাইজেশন লেভেলে আনতে সাহায্য নিয়েছি গুগলের। বিশেষ করে লরেন্স মরোনির এবং অ্যালিসনের কাছ থেকে। বিশেষ করে শুরুর দিকে।
ভালো করে লক্ষ্য করে দেখবেন যে একটা মেশিন এবং একটা বাচ্চার শেখার প্রসেস প্রায় একই। আমি আমাদের (আমার এবং স্বাতীর) বাচ্চাগুলোর উদাহরণ দেই। আমাদের বাচ্চাগুলো যখন কথা বলা শুরু করেছিল, তখন সে ভাষার কোন ধরনের গ্রামার সম্বন্ধে জানা তো দুরের কথা, তারা অক্ষরই জানতো না। তারা বিশেষ করে আমরা মানে বাবা-মা আত্মীয়-স্বজন সবার কাছ থেকে বিভিন্ন শব্দের স্যাম্পল শুনে শুনে কিছু একটা তৈরি করার চেষ্টা করত মাথার ভেতরে। তার মানে তারা শব্দগুলোকে ঠিকমত ডিকোড অর্থাৎ কোন শব্দগুলো কি, অথবা শব্দগুলো কোন অক্ষরগুলো দিয়ে তৈরি, কোনটার সাথে কোনটা লাগালে ভাব প্রকাশ হবে সেটা না বুঝেই বিভিন্ন শব্দ জোড়া লাগিয়ে কথা বলার চেষ্টা করতো। অনেক সময় সেই বাক্যগুলো মিনিংফুল হত, আবার অনেক সময় হতো না।
এর অর্থ হচ্ছে একটা বাক্যে কিভাবে শব্দগুলোকে জোড়া লাগিয়ে ‘নাউন প্রনাউন ভার্ব অ্যাডযেক্টিভ’ না জেনে এমন কিছু তৈরি করত যা অনেক সময় মিলে যেত। যখন মিলত না তখন আমরা মানে মা-বাবা সেটাকে কারেকশন করে দিতাম। এরপর কয়েকদিন সে ভুলভাল বলে আস্তে আস্তে ঠিক করে নিতো তার শুরুর বাক্য তৈরি স্টাইল। আর সব কিছুই তারা করত কোন ধরনের অক্ষর বা গ্রামার সম্বন্ধে ন্যূনতম ধারণা না নিয়েই। এটাই লক্ষ্য করার জিনিস। এবং ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এ সে কারণে আমরা অক্ষর নিয়ে খুব একটা মাথা ঘামাইনা। বরং শব্দগুলোর সিকোয়েন্স ম্যাটার করে বেশি। একই শব্দ আগে পড়ে বসলে মানে পাল্টে যায়। সেটা দেখবো সামনে।
অক্ষরজ্ঞান অথবা ব্যাকরণ শিখিয়ে 'এনএলপি' হবে না
এতক্ষণ যা বললাম তার একটা সারমর্ম করি এখানে। একটা বাচ্চা পৃথিবীতে এলো। তার আশেপাশের সবাই কথা বলছে বিভিন্ন ভঙ্গিতে। তাকে শেখানো হয়নি ভাষার রুল গুলোকে, বরং সে মাসের-পর-মাস দেখচ্ছে তার আশেপাশের মানুষজন কিভাবে যেন যোগাযোগ বলছে। উপায়ন্তর না দেখে কোন ধরনের রুলস না জেনে মানুষ কিভাবে কথা বলছে সেই প্যাটার্ন টা বের করে আশেপাশের মানুষ গুলোকে মিমিক করে কথা বলা শুরু করেছে বাচ্চাটা। বাচ্চাটার মাথার নিউরাল নেটওয়ার্ক আশেপাশের সব কিছু প্যাটার্ন ধরে ভাষার ব্যবহার শুরু করেছে কোন নিয়ম নীতি না জেনেই।
মজার কথা হচ্ছে যখন আমি মেশিন লার্নিং এবং নিউরাল নেটওয়ার্ক নিয়ে কাজ করা শুরু করলাম, তখন বাচ্চাদের পুরো ব্যাপারটা মনে হতে থাকলো। বাচ্চাদের ছোটবেলার ব্যবহার আর নিউরাল নেটওয়ার্কের ব্যবহারের মধ্যে কোন পার্থক্য দেখি না। বড় হয়েও আমি ক্যাডেট কলেজে বাংলা গ্রামারে কোনরকমে পাস করে বের হতাম। আসলে ভাষা এমন একটা জিনিস যার জন্য কোন ধরনের কমপ্লিট ম্যানুয়াল তৈরি করা সম্ভব না, যেখানে আমরা বলতে পারি ভাষা এভাবেই হতে হবে, এর বাহিরে হলে চলবে না। ভাষায় এটা হলে বারোটা বেজে যেতো সাহিত্যের।
সেকারণে ছোটবেলায় আমাদের বাচ্চারা যেভাবে ভাষাকে তাদের কাজের সুবিধার জন্য ব্যবহার করছিল, সেটার অ্যাকুরেসি বাড়ছিল দিন দিন আশেপাশের ফিডব্যাক এর উপর ভিত্তি করে। তার মানে ওরা মাঝে মাঝে মুখস্থ করে, মাঝেমধ্যে গোঁজামিল দিয়ে, মাসের পর মাস এই একই ধরনের রিকার্সিভ প্রসেসে একটা মানসিক মডেল তৈরি করে ফেলতো তার মাথার ভেতরে, বিশেষ করে ভাষার ব্যবহার নিয়ে। বাচ্চাদের মাথা আশেপাশের প্যাটার্ন ধরে বুঝে ফেলতো কিভাবে একটা বাক্যে কোন শব্দের পরে কোন শব্দটা আসতে পারে - বিশেষ করে কোন শব্দটা না বললেই নয়। ফলে কোন ধরনের অক্ষর বা গ্রামার না শিখেও বাচ্চারা এক ধরনের জোড়াতালি দেওয়া বাক্য তৈরি করতে পারে - যা ইমপ্রুভ করে স্কুলে ভর্তি হবার আগেই। সবচেয়ে বড় কথা হচ্ছে সেটা কাজও করে বিশেষ করে আশেপাশের মানুষগুলোর কাছে।
আর সেই কাজটাই আমি দেখছি গত কয়েক বছর ধরে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এ। ডিপ লার্নিং মডেলকে কয়েকটা শেক্সপিয়ারের নাটক দিয়ে ট্রেনিং করিয়ে দিলে, সে শেক্সপিয়ারের মত করে কাছাকাছি নাটক লিখে ফেলতে পারে। আমরা কি সেই ডিপ লার্নিং মডেলকে গ্রামার বা অক্ষর শিখিয়েছিলাম? অবশ্যই না। ডিপ লার্নিং মডেল শেক্সপিয়ারের নাটকগুলো থেকে শব্দগুলোর একটা প্যাটার্ন মানে সিকোয়েন্স ধরে ধরে বের করে সেটাকেই ব্যবহার করে জোড়াতালি দিয়ে একটা নাটক লিখেছে - যা পড়লে বোঝা যায় অনেকখানি। আর এখন এতই এতই বাক্য কম্পিউটার দেখছে, সেখানে কম্পিউটারের জন্য একটা ভালো ন্যাচারাল ল্যাংগুয়েজ প্রসেসিং মডেল তৈরি করা খুব একটা কষ্টকর নয়। সেটা আরো ভালো বোঝা যায় যখন আমরা গুগল-সার্চে বসি। কোনরকমে একটা বাক্যের প্রথম শব্দ লিখলেই হলো, সে হাজারও অপশন দিবে তার পরবর্তী শব্দটা কি হতে পারে। এটাই ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিংয়ের একটা কাজ। আর মাথা খারাপ করবো না গল্প দিয়ে।
টোকেনাইজেশন: বাক্যকে মিনিংফুল ছোট ছোট শব্দে ভাগ
আচ্ছা বলুন তো কম্পিউটার কিভাবে আমাদের ভাষা প্রসেস করে? কম্পিউটার তো সংখ্যা ছাড়া কিছু বোঝেনা। সেখানে একটা বাক্যের ছোট ইউনিট হিসেবে শব্দ গুলোকে বলা যায় যা একেকটা অর্থ বহন করে। ভাষার একটা ছোট মিনিংফুল ইউনিট হচ্ছে শব্দগুলো। যেমন আমরা যদি একটা বাক্য না বলে শুধুমাত্র আম বলি, সেখানে একটা ধারণা পাওয়া যায় যে আমরা একটা ফলের নাম বলছি। আমরা সেই ফলটা খেতে চাচ্ছি। অথবা ফলটা আমার কাছে আছে। ভাব প্রকাশের জন্য একটা শব্দই অনেক সময় ভালো কাজ করে।
আমরা শব্দগুলোকে এমনভাবে প্রসেস করব যাতে কম্পিউটার সেটাকে নিউরাল নেটওয়ার্ক পাঠাতে পারে। আমাদের নিউরাল নেটওয়ার্কের কাজ হবে শব্দগুলো থেকে তার ভাব গুলোকে বের করে নেওয়া। ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এর প্রথম পার্ট হচ্ছে ভাষার নরমালাইজেশন করা। এখানে আমাদের কাজ হবে বাক্যের মধ্যে শব্দগুলোর ঠিকমতো এনকোডিং করা। একে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং এর ভাষায় বলা হয় টোকেনাইজেশন। যার অর্থ হচ্ছে একটা বাক্যকে মিনিংফুল ছোট ছোট শব্দতে ভাগ করে সেটাকে সংখ্যায় এনকোড করা যা নিউরাল নেটওয়ার্ক বুঝতে পারে।
শুরুতে একটা বাচ্চা তো অক্ষর জ্ঞান নিয়ে ভাষা শেখে না। সে শেখে শব্দগুলো দিয়ে, শব্দগুলোর প্লেসমেন্ট নিয়ে, কোন শব্দ আগে পড়ে গেলে শব্দের অর্থ গুলো কি রকম হতে পারে সেটা কে বের করার চেষ্টা করে। এই একই কাজ করবে নিউরাল নেটওয়ার্ক। এখন বলি কেন অক্ষর কাজ করবে না?কারণ আমরা ছোটবেলায় অক্ষর শিখে কথা বলা শুরু করিনি। কথা বলা শুরু করেছি আশেপাশে র মানুষ থেকে শব্দ শিখে।
তবে ভাষার সবচেয়ে ছোট ইউনিট হচ্ছে একেকটা অক্ষর। কম্পিউটার সেই অক্ষর গুলো কিভাবে চেনে? অক্ষরগুলোকে একটা এনকোডিং স্কিমে ফেলে দেওয়া যায়, যার কাজ হচ্ছে অক্ষরকে সংখ্যায় পরিবর্তন করে নেওয়া। ইংরেজি শব্দের জন্য একটা পপুলার স্কিম হচ্ছে আস্কি, বাংলা এনকোডিং এর জন্য ইউনিকোড খুব ভালো কাজ করে। কিন্তু অক্ষর দিয়ে একটা বাক্যের ভাব বোঝা যাবে?
৯০% বই মুখে লেখা, পেছনে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং
এখন কৃত্রিম বুদ্ধিমত্তা অসাধারণভাবে ভাষা বুঝতে পারে বলে এই পুরো বই লিখতে আমি ব্যবহার করেছি বাংলা ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং। এর অনেকটাই অংশ মুখে বলেছি বলে সেটাকে প্রোবাবিলিস্টিক ধারণায় সেই শব্দ তার কাছাকাছি কোন শব্দের সাথে মিলে যায় সেই শব্দ এবং বাক্যকে ব্যবহার করেছে ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং।