মেশিন লার্নিং, আর্টিফিশিয়াল ইন্টিলিজেন্স, ডীপ লার্নিং, টেনসরফ্লো ইত্যাদির একটার সাথে একটার সম্পর্ক এবং মেশিন লার্নিং কিভাবে শেখা যাবে, শিখে কোথায় প্রয়োগ করা যাবে, তা নিয়ে বিস্তারিত 🙂
মেশিন লার্নিং:
টারমিনেটর মুভির কথা মনে আছে? স্কাইনেট এর মত কোন কিছুর উৎপত্তি যদি হয়, তা হবে এই মেশিন লার্নিং থেকে। মানুষ থেকে বেশি বুদ্ধিমান প্রোগ্রাম হলে যা হবে আরকি।
কোন কিছু বুদ্ধিমান হতে হলে তাকে শিখতে হয়। কোন প্রোগ্রাম নিজে নিজে শিখতে পারাটা হচ্ছে মেশিন লার্নিং। এটা রোবট হতে পারে বা যে কোন সফটওয়ার হতে পারে। সাধারণ কম্পিউটার প্রোগ্রামে কোনটার পর কি কাজ করবে সে লজিক গুলো বলে দেই, প্রোগ্রাম সে অনুযায়ী কাজ করে। কিন্তু মেশিন লার্নিং প্রোগ্রাম গুলো একটু ভিন্ন। এগুলো নিজে থেকেই বুঝে নেয় কখন কি কাজ করতে হবে। এখানে প্রোগ্রাম গুলোকে আগে কিছু ডেটা দিয়ে ট্রেইন করা হয়। প্রথমে এরা সঠিক আউটপুট দেয় না। শিখতে শিখতে এক সময় সঠিক আউটপুট দেয়।
এরকম প্রোগ্রাম গুলো আমরা নিয়মিত ব্যবহার করেছি। যেমন ফেসবুকের কথাই চিন্তা করি, আপনার নিউজ ফিডে আপনি সবার পোস্ট দেখতে পান না। ফেসবুক অ্যালগরিদম আপনার পছন্দ অনুযায়ী আপনাকে নিউজ দেখায়। আপনি কি পছন্দ করেন না করেন, তা এনালাইসিস করে ফেসবুক আস্তে আস্তে বুঝে নেয় আপনাকে কি দেখাতে হবে। এটা একটা উদাহরণ। আমাদের স্মার্ট ফোনে অনেক গুলো মেশিন লার্নিং প্রোগ্রাম রয়েছে। সিরি, কর্টনা, ওকে গুগল, ভয়েস দিয়ে সার্চ, ফটো অ্যাপ ইত্যাদি সব গুলতেই মেশিন লার্নিং এর প্রয়োগ রয়েছে।
Types of Machine Learning:
মেশিন লার্নিং হচ্ছে আসলে কিছু অ্যালগরিদম। মেশিন লার্নিং অ্যালগরিদম গুলোকে সাধারণত চার ভাগে ভাগ করা যায়।
- Supervised learning
- Unsupervised learning
- Semi-Supervised learning
- Reinforcement learning
সুপারভাইসড লার্নিং
সুপারভাইসড লার্নিং এ গুলো উদাহরণ বা ট্রেনিং ডেটা থেকে প্রোগ্রাম বুঝে নেয় তার কি করতে হবে। প্রথমে কিছু ট্রেনিং ডেটা দিয়ে প্রোগ্রামকে ট্রেইন করা হয়। এই ট্রেনিং ডেটাতে ইনপুট দিলে কি আউটপুট হবে, তা থাকে। ট্রেইন করা হয়ে গেলে প্রোগ্রাম নিজ থেকেই বুঝে নেয় তার কি করা উচিত। ছোট্ট একটা উদাহরণ দেওয়া যেতে পারে।
1 ইনপুট দিলে আউটপুট দিবে 1। দুই ইনপুট দিলে আউটপুট দিবে 4, তিন ইনপুট দিলে আউটপুট দিবে 9। এভাবে ট্রেনিং ডেটা এনালাইসিস করে প্রোগ্রাম বুঝে কোন নাম্বার ইনপুট দিলে আউটপুট দিতে হবে ঐ নাম্বারটির বর্গ। তারপর আমরা যখনই কোন নাম্বার দিব, প্রোগ্রামটি আমাদের ঐ নাম্বারের বর্গ আউটপুট দিবে। কোন কম্পিউটার প্রোগ্রামকে এভাবে শিখিয়ে নেওয়াটাই হচ্ছে সুপারভাইসড লার্নিং।
আনসুপারভাইসড লার্নিং
আনসুপারভাইসড লার্নিং এ ট্রেনিং ডেটার আউটপুট কি হবে, তা বলে দেওয়া হয় না। ইনপুট দিলে প্রোগ্রাম নিজ থেকেই বুঝে নেয় কি করতে হবে। যেমন আমরা যদি অনেক গুলো মানুষের তথ্য ইনপুট দেই, প্রোগ্রামটি তখন তথ্য গুলোর মধ্যে সিমিলারিটি খুঁজে সিমিলার মানুষ গুলোকে এক সাথে রাখবে। বিভিন্ন ক্লাসে বা ক্লাস্টারে ভাগ করবে। এটা হচ্ছে আনসুপারভাইসড লার্নিং এর একটা উদাহরণ।
রিইনফোর্সমেন্ট লার্নিং
আমরা ছোটবেলায় কিভাবে শিখি? কোন কিছু করার পর ভালো লাগলে তা বেশি করে করি। আবার কোন কিছু করে ব্যথা পেলে তা আর করি না। বাস্তবে মানুষ বা কোন প্রাণী যেভাবে শিখে, রিইনফোর্সমেন্ট লার্নিং এ কোন প্রোগ্রামে ঠিক ঐ ভাবে ট্রেইন করা হয়।
নিউরাল নেটওয়ার্ক
মানুষের ব্রেইন যেভাবে কাজ করে, তাকে অনুকরণ করার প্রচেষ্ঠা থেকেই আর্টিফিশিয়াল নিউরাল নেটোওয়ার্ক শাখাটির উৎপত্তি। মানুষের নিউরনের মত করে এখানে থাকে নড। নড গুলোতে কোন ডেটা আসলে সেখানে অপারেশন চালিয়ে তা পরবর্তী নডে পাস করে দেয়। নড গুলো একটা আরেকটার সাথে কানেক্টেড থাকে, এগুলোকে বলে লিঙ্ক। প্রতিটা লিঙ্ক এ একটা ওয়েট থাকে। আর প্রতিবার শেখার পড় এই ওয়েট পরিবর্তন করে।
নিউরাল নেটওয়ার্ক ব্যবহার করে যে কোন ধরণের মেশিং লার্নিং অ্যালগরিদম যেমন সুপারভাইসড লার্নিং, আনসুপারভাইসড লার্নিং, রিইনফোর্সমেন্ট লার্নিং, ইত্যাদি প্রয়গো করা যায়।
ডীপ লার্নিং
মাল্টি লেয়ার নিউরয়াল নেটোওয়ার্ক হচ্ছে ডীপ লার্নিং বা ডীপ নিউলার নেটওয়ার্ক লার্নিং। সাধারণ নিউরাল নেটওয়ার্কে থাকে ইনপুট লেয়ার, একটা হিডেন লেয়ার আর আউটপুট লেয়ার। ডীপ লার্নিং এ থাকে একের অধিক হিডেন লেয়ার। আর এ জন্যই এর নাম ডীপ লার্নিং।
ডীপ লার্নিং ও নিউরাল নেটওয়ার্ক নিয়ে অনেক আগে থেকেই কাজ হচ্ছিল। কিন্তু আগে এত জনপ্রিয় হতে পারে নি বা মানুষ তত বেশি ব্যবহার করে নি। এখন ডীপ লার্নি একটা হট টপিক। আগে ডীপ লার্নিং নিয়ে কাজ করা সহজ না থাকার কারণ ছিল কম্পিউটেশনাল পাওয়ার। আমাদের সিপিইউ কোন ডেটা লিনিয়ার প্রসেস করে। ডীপ লার্নিং এ অনেক অনেক কম্পিউটেশন করতে হয়। আর ডীপ লার্নিং নিয়ে কাজ করতে তাই অনেক বেশি সময় লাগত। জিপিইউ প্যারালালি ডেটা প্রসেস করতে পারে। জিপিইউ এর ক্ষমতা ব্যবহার করে ডীপ লার্নিং ব্যবহার করে মেশিন লার্নিং এ দ্রুত ফলাফল পাওয়ার কারণে ডীপ লার্নিং এর ব্যবহার দিন দিন বাড়তে লাগল। ডীপ লার্নিং এর ব্যবহার এতই বেশি হচ্ছে যে এখন মেশিন বলতেই ডীপ লার্নিং বুঝে অনেকে।
ডীপ লার্নিং হচ্ছে এখানেঃ Computer Science > Artificial Intelligence > Machine Learning > Neural Network > Deep Learning। এত গভীরে হওয়ার কারণেই সম্ভবত এর নাম ডীপ লার্নিং 😛
মেশিন লার্নিং এর জন্য প্রোগ্রামিং ল্যাঙ্গুয়েজ
মেশিন লার্নিং হচ্ছে কত গুলো অ্যালগরিদমের সমষ্টি। আমরা এই অ্যালগরিদম গুলো যে কোন ল্যাঙ্গুয়েজে ইমপ্লিমেন্ট করে মেশিন লার্নিং নিয়ে কাজ করতে পারি। কিছু কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজে বিল্ট ইন কিছু অ্যালগরিদম ইমপ্লিমেন্টেড থাকার কারণে ঐসব ল্যাঙ্গুয়েজ বেশি জনপ্রিয়। যেমন R প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটি মূলত স্ট্যাটিসটিক্স রিলেটেড কাজ করার জন্য ডেভেলপ করা হয়েছে। ডেভেলপ ও করেছেন স্ট্যাটিস্টিশিয়ানরা। মেশিন লার্নিং এর অনেক অংশ জুড়ে ডেটা নিয়ে কাজ করতে হয়। আর এ জন্যই R প্রোগ্রামিং ল্যাঙ্গুয়েজ মেশিন লার্নিং এ অনেক জনপ্রিয়।
এ ছাড়া পাইথনের অনেক গুলো লাইব্রেরি রয়েছে ডেটা নিয়ে কাজ করার জন্য। এগুলোর মধ্যে scikit-learn অনেক বেশি ব্যবহার করা হয়। পাইথন প্রোগ্রামিং অনেক সহজ এবং দারুণ প্রোগ্রামিং হওয়ায় এটিও মেশিন লার্নিং এর জন্য প্রচুর ব্যবহৃত হয়।
মেশিন লার্নিং লাইব্রেরী ও ফ্রেমওয়ার্ক
মেশিন লার্নিং এর মধ্যে অনেক গুলো শাখা প্রশাখা রয়েছে। এক একটা কাজের জন্য এক এক ধরণের অ্যালগরিদম ব্যবহার করা হয়। যেমন কম্পিউটার ভিশন এর জন্য এক ধরণের অ্যালগরিদম, ন্যচারাল ল্যাঙ্গুয়েজ প্রসেসিং এর জন্য এক ধরণের অ্যালগরিদম, ভয়েজ রিকগনিশনের জন্য এক ধরণের অ্যালগরিদমের প্রয়োজন হয়। লারিব্রেরী বা ফ্রেমওয়ার্ক গুলোতে একই ক্যাটেগরির দরকারি অ্যালগরিদম গুলো ইমপ্লিমেন্ট করা থাকে। যেমন ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং করতে যে ধরণের অ্যালগরিদম গুলো দরকার হতে পারে, সব গুলো ইমপ্লিমেন্ট করে একটা লাইব্রেরী তৈরি করা হয়। এরপর যে কেউ ঐ লাইব্রেরী নিজের মত করে ব্যবহার করতে পারে।
এরকম সব গুলো লাইব্রেরীর একটা লিস্ট পাওয়া যাবে গিটহাবের Awesome Machine Learning নামক রিপোজিটরিতে। সেখানে সব গুলো ল্যাঙ্গুয়েজ অনুযায়ী লাইব্রেরী গুলোর লিস্ট করা রয়েছে। কোন লাইব্রেরী দিয়ে কি ধরনের কাজ করা হবে, সে সব তথ্যও পাওয়া যাবে। সেগুলো দেখে নিজ প্রয়োজন মত যে কোন লাইব্রেরী নিয়েই কাজ করতে পারেন।
টেনসরফ্লো
টেনসরফ্লো হচ্ছে ডীপ লার্নিং এর জন্য একটা লাইব্রেরী। গুগল ব্রেইন টিম এটি ডেভেলপ করেছে। এটা শুরু করার উদ্দেশ্য ছিল মূলত রিসার্চ এর কাজে ব্যবহার করার জন্য। পরে সবার জন্য উন্মুক্ত করে দেওয়া হয়।
গুগল নিজের প্রোডাক্ট তৈরি করতে যে প্রযুক্তি ব্যবহার করে, তা আমরা যে কেউই ব্যবহার করতে পারি। ছোট একটা কোম্পানি বা কোন পারসন আর গুগলের মধ্যে গ্যাপ টা কত কম। গুগলের স্পিচ রিকগনিশন সিস্টেম, গুগল ফটো, জিমেইল, সার্চ এসব কিছুতে টেনসরফ্লো বা ডীপ লার্নিং ব্যবহার করা হয়। গুগল যা করতে পারে, আমরাও তা করতে পারি। তৈরি করতে পারি দারুণ কিছু।
টেনসরফ্লো নিয়ে কাজ করার জন্য রয়েছে Python API। টেনসরফ্লো এর বেশির ভাগ কোড লেখা হয়েছে C++ এ। C++ API ও রয়েছে। তবে পাইথনের ডকুমেন্টশন বেশি। পাইথনে কোড লেখাও সহজ। নতুন যারা টেনসরফ্লো নিয়ে আগ্রহী, তারা পাইথন দিয়ে শুরু ক্রতে পারেন। টেনসরফ্লো এর রিসোর্স এবং ওপেন সোর্স প্রজেক্ট গুলোর একটা লিস্ট পাওয়া যাবে Awesome TensorFlow রিপোজিটোরিতে।
মেশিন লার্নিং নিয়ে কাজ করার জন্য সহজ কিছু প্লাটফর্ম
যারা কোডিং ব্যাকগ্রাউণ্ড এর না বা সহজে দারুণ কিছু তৈরি করতে চান, তারা দেখতে পারেন wit.ai, IBM Watson API বা Google Prediction প্লাটফরম গুলো। এগুলোতে সব কিছুই করা আছে। আপনি শুধু API কল আপনার প্রোগ্রামে ব্যবহার করতে পারবেন।
কোথায় থেকে শেখা যাবে
ডীপ লার্নিং এর নামের সাথে একজনের নাম চলে আসে, তার নাম Andrew NG। কোর্সেরাতে মেশিন লার্নিং এর উপর উনার করা কোর্স রয়েছে। এছাড়া উডাসিটিতে ডীপ লার্নিং এবং টেনসরফ্লো নিয়ে গুগলের নিজস্ব কোর্স রয়েছে। এগুলো শেখার জন্য দারুণ রিসোর্স। অনলাইনে আরো অনেক রিসোর্স রয়েছে।
গ্রাউন্ড লেভেল থেকে মেশিন লার্নিং নিয়ে কাজ করার জন্য গুগলেরই তৈরি Machine Learning Recipes সিরিজটা খুবি সহজ এবং দারুণ। আমার নিজের কাছে অনেক বেশি ভালো লেগেছে। এছাড়া আরো রিসোর্স খুঁজে নেওয়ার জন্য গুগল তো আছেই।
কোথায় এপ্লাই করা যাবে
সব জায়গায় মেশিং লার্নিং এপ্লাই করা যাবে। আমরা যত গুলো অ্যাপ ব্যবহার করি, যত গুলো সফটওয়ার ব্যবহার করি, কয়েক বছরের মধ্যে সব গুলো সফটওয়ার, অ্যাপ, ওয়েব সাইট মেশিন লার্নিং প্রোগ্রাম দিয়ে রিপ্লেস হয়ে যাবে। ভবিষ্যৎ এ ভালো কিছু করতে চাইলে মেশিন লার্নিং নিয়ে পড়ালেখা একটা ভালো অপশন হতে পারে।
IoT এবং মেশিং লার্নিং এর কম্বিনেশনে হবে দারুণ কিছু। ইন্ডিয়াতে প্রায় 470+ লিস্টেড IoT স্টার্টআপ রয়েছে। সারা বিশ্বে রয়েছে 3000+। বাংলাদেশের অনেক অনেক সমস্যা আমরা মেশিন লার্নিং দিয়ে সমাধান করতে পারি। মেশিং লার্নিং ব্যবহার করে আশা করি আপনি দারুণ কিছু করবেন, মানুষের জন্য, বাংলাদেশের জন্য, সারা বিশ্বের জন্য। শুভ কামনা 🙂
এ বিষয় গুলো নিয়ে আলোচনা করেছি TensorFlow Machine Learning Developer Summit Bangladesh ইভেন্টে। স্লাইডটিঃ
অসাধারণ পোস্ট ছিল …… অনেক ধন্যবাদ
তথ্যবহুল দারুন একটা আর্টিকেল, থ্যাংকস ব্রাদার।
Three things involved, cognitive computing, artificial intelligence and predictive analyses to augment the future of computing. Great writing. Not much emphasis on IBM, which was necessary.
Awesome. Thanks vai.
খুব ভাল লাগলো, গুছিয়ে গুছিয়ে লেখা।
Alhamdulilla vai….khub valo laglo….
Great My Brother.