মেশিন লার্নিং মডেল কাস্টমাইজ করা: সহজ উপায়

১. ভূমিকা

2a934d0e86f14118.png

সর্বশেষ হালনাগাদ: ২৮-০৩-২০২২

মেশিন লার্নিং

মেশিন লার্নিং এমন একটি ক্ষেত্র যা অবিশ্বাস্য দ্রুত গতিতে বিকশিত হচ্ছে। প্রতিদিন নতুন নতুন গবেষণা ও সম্ভাবনা উন্মোচিত হচ্ছে, যা এমন সব ব্যবহারের সুযোগ তৈরি করছে যা আগে সম্ভব ছিল না।

এই রিলিজগুলোর ফলস্বরূপ সাধারণত একটি মডেল থাকে। মডেলকে খুব দীর্ঘ গাণিতিক সমীকরণ হিসেবে বোঝা যেতে পারে, যা একটি ইনপুট (যেমন: ছবি) গ্রহণ করে একটি ফলাফল (যেমন: শ্রেণিবিন্যাস) প্রদান করে।

  • যদি আপনি আপনার নিজের ডেটা দিয়ে এই নতুন মডেলগুলোর কোনো একটি ব্যবহার করতে চান, তাহলে কী হবে?
  • আপনার ব্যবহারের ক্ষেত্রে বা আপনার অ্যাপে এই অত্যাধুনিক মডেলগুলো থেকে আপনি কীভাবে উপকৃত হতে পারেন?

এই কোডল্যাবটি আপনাকে খুব সহজে আপনার নিজের ডেটার জন্য মেশিন লার্নিং মডেল কাস্টমাইজ করার প্রক্রিয়াটি ধাপে ধাপে দেখিয়ে দেবে।

মেশিন লার্নিং মডেল তৈরি ও প্রশিক্ষণে অনেক চ্যালেঞ্জ রয়েছে:

  • অনেক সময় লাগে।
  • প্রচুর পরিমাণে ডেটা ব্যবহার করে।
  • গণিত ও পরিসংখ্যানের মতো বিষয়ে দক্ষতা প্রয়োজন।
  • সম্পদ-নিবিড়: কিছু মডেল প্রশিক্ষণ দিতে কয়েক দিন সময় লাগতে পারে।

নতুন মডেল আর্কিটেকচার তৈরি করতে অনেক সময় লাগে এবং এর জন্য বহু পরীক্ষা-নিরীক্ষা ও বছরের পর বছরের অভিজ্ঞতার প্রয়োজন হতে পারে। কিন্তু কেমন হয় যদি আপনি সেই সমস্ত জ্ঞানকে কাজে লাগিয়ে, শুধুমাত্র আপনার নিজের সমস্যার জন্য অত্যাধুনিক গবেষণাকে কাস্টমাইজ করে নিজের ডেটার উপর প্রয়োগ করতে পারেন? ট্রান্সফার লার্নিং নামক একটি কৌশল ব্যবহার করে এটি সম্ভব!

এই কোডল্যাবে আপনি শিখবেন কীভাবে ট্রান্সফার লার্নিং করতে হয়, এটি কেন কার্যকর এবং কখন এটি ব্যবহার করতে হয়।

আপনি যা শিখবেন

  • ট্রান্সফার লার্নিং কী এবং কখন এটি ব্যবহার করতে হয়।
  • ট্রান্সফার লার্নিং কীভাবে ব্যবহার করবেন।
  • কীভাবে মডেলগুলোকে সূক্ষ্মভাবে সমন্বয় করা যায়।
  • TensorFlow Lite Model Maker কীভাবে ব্যবহার করবেন।
  • TensorFlow Hub কীভাবে ব্যবহার করবেন

আপনার যা যা লাগবে

  • সমস্ত কোড গুগল কোলাবোরেটরি ব্যবহার করে চালানো হয়, তাই আপনার মেশিনে কিছু ইনস্টল করার প্রয়োজন হবে না। কোলাবে সাইন ইন করার জন্য আপনার শুধু ইন্টারনেট সংযোগ এবং একটি গুগল অ্যাকাউন্ট প্রয়োজন।
  • TensorFlow এবং Keras API সম্পর্কে প্রাথমিক জ্ঞান।
  • পাইথন সম্পর্কে জ্ঞান।

আপনার যদি TensorFlow বা মেশিন লার্নিং সম্পর্কে প্রাথমিক জ্ঞান না থাকে, তবুও আপনি ট্রান্সফার লার্নিং সম্পর্কে শিখতে পারেন। এই কৌশলটির পেছনের তত্ত্ব জানতে পরবর্তী ধাপ "ট্রান্সফার লার্নিং কী" পড়ুন এবং তারপর "মডেল মেকারের সাহায্যে ট্রান্সফার লার্নিং" অংশটি অনুসরণ করুন। আপনি যদি আরও গভীরে যেতে চান এবং প্রক্রিয়াটি আরও বিস্তারিতভাবে দেখতে চান, তবে TensorFlow Hub-এর সাহায্যে ট্রান্সফার লার্নিং সম্পর্কিত বিভাগগুলিতে তা পাবেন।

২. স্থানান্তর শিখন বলতে কী বোঝায়?

প্রি-ট্রেইনড মডেল হলো একটি সংরক্ষিত নেটওয়ার্ক, যা পূর্বে একটি বৃহৎ ডেটাসেটের উপর, সাধারণত বড় আকারের ইমেজ-ক্লাসিফিকেশন টাস্কের জন্য প্রশিক্ষিত করা হয়েছিল। আপনি হয় প্রি-ট্রেইনড মডেলটি সরাসরি ব্যবহার করতে পারেন, অথবা ট্রান্সফার লার্নিং ব্যবহার করে এটিকে একটি নির্দিষ্ট কাজের জন্য কাস্টমাইজ করতে পারেন।

ইমেজ ক্লাসিফিকেশনের জন্য ট্রান্সফার লার্নিংয়ের পেছনের মূল ধারণাটি হলো, যদি কোনো মডেলকে যথেষ্ট বড় এবং সাধারণ একটি ডেটাসেটের ওপর প্রশিক্ষণ দেওয়া হয়, তবে এই মডেলটি কার্যকরভাবে দৃশ্যমান জগতের একটি জেনেরিক মডেল হিসেবে কাজ করবে। এরপর, একটি বড় ডেটাসেটের ওপর বড় মডেলকে একেবারে গোড়া থেকে প্রশিক্ষণ না দিয়েই, আপনি এই শেখা ফিচার ম্যাপগুলোর সুবিধা নিতে পারবেন।

একটি মেশিন লার্নিং মডেল কাস্টমাইজ করার দুটি উপায় আছে।

  • ফিচার এক্সট্র্যাকশন : নতুন স্যাম্পল থেকে গুরুত্বপূর্ণ ফিচার বের করার জন্য পূর্ববর্তী নেটওয়ার্ক দ্বারা শেখা রিপ্রেজেন্টেশনগুলো ব্যবহার করুন। আপনি কেবল প্রি-ট্রেইনড মডেলের উপরে একটি নতুন ক্লাসিফায়ার যোগ করেন, যা একেবারে শুরু থেকে ট্রেইন করা হয়, যাতে আপনি ডেটাসেটের জন্য পূর্বে শেখা ফিচার ম্যাপগুলোকে পুনরায় ব্যবহার করতে পারেন। আপনার পুরো মডেলটিকে (পুনরায়) ট্রেইন করার প্রয়োজন নেই। বেস কনভল্যুশনাল নেটওয়ার্কটিতে ইতিমধ্যেই এমন ফিচার রয়েছে যা ছবি ক্লাসিফাই করার জন্য সাধারণভাবে উপযোগী। তবে, প্রি-ট্রেইনড মডেলের চূড়ান্ত ক্লাসিফিকেশন অংশটি মূল ক্লাসিফিকেশন টাস্কের জন্য নির্দিষ্ট, এবং ফলস্বরূপ, যে ক্লাস সেটের উপর মডেলটি ট্রেইন করা হয়েছিল তার জন্যও নির্দিষ্ট।
  • ফাইন-টিউনিং : একটি ফ্রোজেন মডেল বেসের উপরের দিকের কয়েকটি লেয়ারকে আনফ্রিজ করুন এবং নতুন যোগ করা ক্লাসিফায়ার লেয়ার ও বেস মডেলের শেষ লেয়ারগুলোকে একসাথে ট্রেইন করুন। এর মাধ্যমে আমরা বেস মডেলের উচ্চ-ক্রমের ফিচার রিপ্রেজেন্টেশনগুলোকে "ফাইন টিউন" করতে পারি, যাতে সেগুলো নির্দিষ্ট কাজের জন্য আরও প্রাসঙ্গিক হয়ে ওঠে।

ফিচার এক্সট্র্যাকশন পদ্ধতিতে প্রশিক্ষণ দ্রুততর, কিন্তু ফাইন-টিউনিংয়ের মাধ্যমে আরও ভালো ফলাফল অর্জন করা যায়।

আপনি ট্রান্সফার লার্নিং-এর দুটি ভিন্ন পদ্ধতি ব্যবহার করে ফিচার এক্সট্র্যাকশন এবং ফাইন-টিউনিং উভয়ই চেষ্টা করবেন:

  • TensorFlow Lite Model Maker লাইব্রেরিটি স্বয়ংক্রিয়ভাবে ডেটা পাইপলাইন এবং মডেল তৈরির বেশিরভাগ কাজ করে, যা প্রক্রিয়াটিকে অনেক সহজ করে তোলে। এর ফলে তৈরি হওয়া মডেলটি মোবাইল এবং ব্রাউজারে ব্যবহারের জন্য সহজেই এক্সপোর্ট করা যায়।
  • TensorFlow Hub মডেলগুলো সেখানে উপলব্ধ মেশিন লার্নিং মডেলের বিশাল ভান্ডারকে কাজে লাগায়। গবেষক এবং কমিউনিটি এই মডেলগুলো সরবরাহ করার ফলে অত্যাধুনিক মডেলগুলো আরও দ্রুত এবং অধিক বৈচিত্র্যে পাওয়া যায়।

৩. মডেল মেকারের সাহায্যে স্থানান্তর শিক্ষা

এখন যেহেতু আপনি ট্রান্সফার লার্নিং-এর পেছনের ধারণাটি জানেন, চলুন টেনসরফ্লো লাইট মডেল মেকার লাইব্রেরি ব্যবহার করা শুরু করি, যা এই কাজটি সহজে করতে সাহায্য করে।

TensorFlow Lite Model Maker লাইব্রেরিটি একটি ওপেন সোর্স লাইব্রেরি যা ট্রান্সফার লার্নিং প্রক্রিয়াকে সহজ করে এবং মোবাইল ও ওয়েব ডেভেলপারদের মতো নন-এমএল ডেভেলপারদের জন্য এই প্রক্রিয়াটিকে অনেক বেশি সহজবোধ্য করে তোলে।

কোলাব নোটবুক আপনাকে নিম্নলিখিত ধাপগুলোর মাধ্যমে নির্দেশনা দেয়:

  • ডেটা লোড করুন।
  • ডেটা বিভক্ত করুন।
  • মডেলটি তৈরি ও প্রশিক্ষণ দিন
  • মডেলটি মূল্যায়ন করুন।
  • মডেলটি রপ্তানি করুন।

এই ধাপের পর, আপনি হুবহু একই প্রক্রিয়া অনুসরণ করে আপনার নিজের ডেটা দিয়ে ট্রান্সফার লার্নিং শুরু করতে পারেন।

সহযোগিতামূলক

এরপর, কাস্টম মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য গুগল কোলাবে যাওয়া যাক।

নোটবুকটির ব্যাখ্যা পর্যালোচনা করতে এবং এর মূল বিষয়গুলো বুঝতে প্রায় ১৫ মিনিট সময় লাগে।

সুবিধা :

  • মডেলগুলো কাস্টমাইজ করার সহজ উপায়।
  • TensorFlow বা Keras API বোঝার কোনো প্রয়োজন নেই।
  • এটি একটি ওপেন সোর্স টুল, যা ব্যবহারকারীর প্রয়োজন অনুযায়ী পরিবর্তন করা যেতে পারে, যদি এখনও কোনো নির্দিষ্ট কিছু বাস্তবায়ন করা না হয়ে থাকে।
  • মোবাইল বা ব্রাউজারে চালানোর জন্য সরাসরি মডেলটি এক্সপোর্ট করে।

অসুবিধা

  • পূর্ববর্তী দুটি পদ্ধতির মতো, সম্পূর্ণ পাইপলাইন এবং মডেল নিজে তৈরি করার তুলনায় এতে কনফিগারেশনের সুযোগ কম।
  • বেস মডেল বেছে নিলেও, সব মডেলকে বেস হিসেবে ব্যবহার করা যায় না।
  • বিপুল পরিমাণ ডেটার জন্য উপযুক্ত নয়, যেখানে ডেটা পাইপলাইন আরও জটিল।

৪. TensorFlow Hub-এ একটি মডেল খুঁজুন

এই অধ্যায়ের শেষে, আপনি সক্ষম হবেন:

  • TensorFlow Hub-এ মেশিন লার্নিং মডেল খুঁজুন।
  • সংগ্রহ সম্পর্কে বুঝুন।
  • বিভিন্ন ধরণের মডেল সম্পর্কে জানুন।

ট্রান্সফার লার্নিং করতে হলে আপনাকে দুটি জিনিস দিয়ে শুরু করতে হবে:

  • ডেটা, যেমন আপনি যাদের শনাক্ত করতে চান তাদের ছবি।
  • একটি বেস মডেল যা আপনি আপনার ডেটা অনুযায়ী কাস্টমাইজ করতে পারেন।

ডেটার বিষয়টি সাধারণত ব্যবসার ধরনের ওপর নির্ভরশীল, কিন্তু সবচেয়ে সহজ উপায় হলো আপনি যা শনাক্ত করতে চান তার প্রচুর ছবি তুলে রাখা। কিন্তু বেস মডেলের কী হবে? সেটি কোথায় পাওয়া যাবে? এখানেই টেনসরফ্লো হাব সাহায্য করতে পারে।

TensorFlow Hub হলো আপনার TensorFlow মডেল সংক্রান্ত প্রয়োজনের জন্য মডেল রিপোজিটরি।

আপনি ব্যবহারের জন্য প্রস্তুত হাজার হাজার মডেলের ডকুমেন্টেশন অনুসন্ধান করে পড়তে পারেন, এবং সেগুলোর মধ্যে অনেকগুলোই ট্রান্সফার লার্নিং ও ফাইন-টিউনিংয়ের জন্য তৈরি।

একটি মডেল খোঁজা হচ্ছে

চলুন প্রথমে টেনসরফ্লো হাব-এ ব্যবহারযোগ্য মডেলগুলো খুঁজে বের করি, যেগুলো আপনি পরে আপনার কোডে ব্যবহার করতে পারবেন।

ধাপ ১: আপনার ব্রাউজারে tfhub.dev সাইটটি খুলুন।

tfhub.dev প্রধান পৃষ্ঠার ছবি

ইমেজ ডোমেইনে ট্রান্সফার লার্নিং-এর জন্য আমাদের ফিচার ভেক্টর প্রয়োজন। ফিচার ভেক্টরগুলো ক্লাসিফিকেশন মডেলের মতোই, কিন্তু এতে ক্লাসিফিকেশন হেড থাকে না।

ফিচার ভেক্টর ছবিকে N-তম স্পেসে একটি সাংখ্যিক উপস্থাপনায় রূপান্তর করতে পারে (যেখানে N হলো মডেলের আউটপুট লেয়ারের ডাইমেনশন সংখ্যা)।

TFHub-এ আপনি কোনো নির্দিষ্ট কার্ডে ক্লিক করে সুনির্দিষ্টভাবে ফিচার ভেক্টর অনুসন্ধান করতে পারেন।

tfhub.dev পেজের একটি ছবি, যেখানে একটি বর্গক্ষেত্র দিয়ে ফিচার ভেক্টর টাস্কটি হাইলাইট করা হয়েছে।

এছাড়াও আপনি বাম দিকের ফিল্টার ব্যবহার করে কোনো মডেলের নাম দিয়ে অনুসন্ধান করতে পারেন, যাতে শুধুমাত্র Image feature vectors দেখানো হয়।

এটি tfhub.dev-এর মূল পৃষ্ঠা থেকে একটি ফিচার ভেক্টর টাস্ক বেছে নেওয়ার পরের সার্চ পেজের একটি ছবি।

নীল আইকনযুক্ত কার্ডগুলো হলো মডেলের সংগ্রহ । আপনি কোনো ছবির সংগ্রহে ক্লিক করলে, বেছে নেওয়ার জন্য অনেকগুলো একই ধরনের মডেল দেখতে পাবেন। চলুন ছবির সংগ্রহটি বেছে নিই।

এটি tfhub.dev-এর চিত্র সংগ্রহ পৃষ্ঠা।

নিচে স্ক্রল করুন এবং MobileNet V3 নির্বাচন করুন। যেকোনো ফিচার ভেক্টর হলেই চলবে।

এটি tfhub.dev-এর ইমেজ কালেকশন পেজ, যা আগের পেজ থেকে কিছুটা স্ক্রল করা হয়েছে।

মডেলের বিস্তারিত পৃষ্ঠায় আপনি মডেলটির সমস্ত ডকুমেন্টেশন পড়তে পারেন, মডেলটি পরীক্ষা করার জন্য কোড স্নিপেট দেখতে পারেন, অথবা সরাসরি একটি কোলাব নোটবুকে এটি ব্যবহার করে দেখতে পারেন।

একটি mobilenetV3 ফিচার ভেক্টর মডেলের বিবরণ পৃষ্ঠা

আপাতত, আপনার শুধু উপরের URL-টিই প্রয়োজন। ওটাই মডেল হ্যান্ডেল এবং এর মাধ্যমেই আপনি TensorFlow Hub লাইব্রেরি থেকে সহজেই একটি মডেল অ্যাক্সেস করতে পারবেন।

৫. টেনসরফ্লো হাবের সাহায্যে ট্রান্সফার লার্নিং

এখন যেহেতু আপনি ব্যবহারের জন্য একটি মডেল বেছে নিয়েছেন, চলুন TensorFlow Hub লাইব্রেরির KerasLayer মেথড ব্যবহার করে এটিকে লোড করে কাস্টমাইজ করি।

এই পদ্ধতিটি একটি মডেলকে এমনভাবে লোড করে, যাতে এটিকে আপনার মডেলের উপর একটি লেয়ার হিসেবে ব্যবহার করা যায় এবং এর উপর ভিত্তি করে আপনি আপনার মডেলটি তৈরি করতে পারেন।

আগে, যখন আপনি মডেল মেকার ব্যবহার করা শিখেছিলেন, তখন বোঝার সুবিধার জন্য এর ভেতরের সবকিছু আপনার কাছ থেকে গোপন রাখা হয়েছিল। এখন, মডেল মেকার পর্দার আড়ালে কী করছে তা আপনি দেখতে পাবেন।

সহযোগিতামূলক

এরপর, কাস্টম মডেলটিকে প্রশিক্ষণ দেওয়ার জন্য গুগল কোলাবে যাওয়া যাক।

নোটবুকটির ব্যাখ্যা পর্যালোচনা করতে এবং এর মূল বিষয়গুলো বুঝতে প্রায় ২০ মিনিট সময় লাগে।

সুবিধা :

  • গবেষক ও কমিউনিটির অবদানে তৈরি এবং বিভিন্ন ডেটাসেটের ওপর প্রশিক্ষিত হাজার হাজার মডেল উপলব্ধ রয়েছে।
  • দৃষ্টি, পাঠ্য এবং অডিওর মতো সকল কাজের জন্য মডেল।
  • বিভিন্ন একই রকম মডেল নিয়ে পরীক্ষা করা সহজ। মূল মডেল পরিবর্তন করতে হয়তো শুধু একটি সুতো বদলানোর প্রয়োজন হতে পারে।

অসুবিধা

  • মডেলগুলো ব্যবহার করার জন্য এখনও TensorFlow/Keras বিষয়ে কিছুটা দক্ষতার প্রয়োজন।

আপনি যদি আরও গভীরে যেতে চান, তাহলে কেরাস অ্যাপ্লিকেশন (Keras Application) ব্যবহার করে ট্রান্সফার লার্নিংও (Transfer Learning) করতে পারেন। এটি টেনসরফ্লো হাব (TensorFlow Hub) ব্যবহারের মতোই একটি প্রক্রিয়া, তবে এতে শুধুমাত্র কোর টেনসরফ্লো এপিআই (core TensorFlow APIs) ব্যবহার করা হয়।

৬. অভিনন্দন

অভিনন্দন, আপনি শিখেছেন ট্রান্সফার লার্নিং কী এবং কীভাবে এটি আপনার নিজের ডেটাতে প্রয়োগ করতে হয়!

এই কোডল্যাবে আপনি ট্রান্সফার লার্নিং নামক একটি কৌশল ব্যবহার করে কীভাবে নিজের ডেটার জন্য মেশিন লার্নিং মডেল কাস্টমাইজ করতে হয় তা শিখেছেন।

আপনি স্থানান্তর শিক্ষার ২টি পদ্ধতি চেষ্টা করেছেন:

  • TensorFlow Lite Model Maker-এর মতো একটি টুল ব্যবহার করে।
  • TensorFlow Hub থেকে একটি ফিচার ভেক্টর ব্যবহার করা

উভয় বিকল্পেরই সুবিধা ও অসুবিধা রয়েছে এবং আপনার নির্দিষ্ট প্রয়োজন অনুসারে অনেক সম্ভাব্য বিন্যাসও আছে।

আপনি আরও শিখেছেন যে, আপনার ডেটার সাথে আরও ভালোভাবে খাপ খাইয়ে নেওয়ার জন্য মডেলগুলোর ওয়েট (weights) আরেকটু পরিবর্তন করে সেগুলোকে আরও নিখুঁত করা যায়।

উভয় বিকল্পই মডেলগুলিতে সূক্ষ্ম সমন্বয় করতে পারে।

ট্রান্সফার লার্নিং এবং ফাইন টিউনিং শুধুমাত্র ইমেজ-সম্পর্কিত মডেলের জন্যই নয়। যেহেতু এর মূল উদ্দেশ্য হলো কোনো ডোমেইনের শেখা উপস্থাপনা ব্যবহার করে ডেটাসেটের সাথে মডেলটিকে টিউন করা, তাই এটি টেক্সট এবং অডিও ডোমেইনের জন্যও ব্যবহার করা যেতে পারে।

পরবর্তী পদক্ষেপ

  • আপনার নিজের ডেটা দিয়ে এটি চেষ্টা করে দেখুন।
  • আপনি যা তৈরি করেন তা আমাদের সাথে শেয়ার করুন এবং আপনার প্রজেক্টগুলো দিয়ে সোশ্যাল মিডিয়ায় TensorFlow-কে ট্যাগ করুন।

আরও জানুন

আপনার কি কোনো প্রশ্ন আছে?