কৃত্রিম বুদ্ধিমত্তা (AI) সাম্প্রতিক বছরগুলিতে উল্লেখযোগ্য পরিমাণে জনপ্রিয়তা অর্জন করেছে।
আপনি যদি একজন সফ্টওয়্যার প্রকৌশলী, কম্পিউটার বিজ্ঞানী, বা সাধারণভাবে ডেটা বিজ্ঞান উত্সাহী হন, তাহলে আপনি সম্ভবত এই ক্ষেত্র দ্বারা প্রদত্ত ইমেজ প্রসেসিং, প্যাটার্ন শনাক্তকরণ এবং বস্তু সনাক্তকরণের আশ্চর্যজনক অ্যাপ্লিকেশনগুলির দ্বারা আগ্রহী হন৷
AI এর সবচেয়ে গুরুত্বপূর্ণ সাবফিল্ড যা আপনি সম্ভবত শুনেছেন তা হল ডিপ লার্নিং। এই ক্ষেত্রটি শক্তিশালী অ্যালগরিদমগুলিতে ফোকাস করে (কম্পিউটার প্রোগ্রাম নির্দেশাবলী) যা মানব মস্তিষ্কের কার্যকারিতা হিসাবে পরিচিত নিউরাল নেটওয়ার্ক.
এই নিবন্ধে, আমরা নিউরাল নেটওয়ার্কের ধারণা এবং কীভাবে এই মডেলগুলি ব্যবহার করে তৈরি, সংকলন, ফিট এবং মূল্যায়ন করব তা নিয়ে আলোচনা করব। পাইথন.
নিউরাল নেটওয়ার্ক
নিউরাল নেটওয়ার্ক, বা এনএন, মানব মস্তিষ্কের জৈবিক কার্যকলাপের পরে তৈরি করা অ্যালগরিদমের একটি সিরিজ। নিউরাল নেটওয়ার্ক নোড নিয়ে গঠিত, যাকে নিউরনও বলা হয়।
উল্লম্ব নোডগুলির একটি সংগ্রহ স্তর হিসাবে পরিচিত। মডেলটিতে একটি ইনপুট, একটি আউটপুট এবং অনেকগুলি লুকানো স্তর রয়েছে৷ প্রতিটি স্তরে নোড থাকে, যাকে নিউরনও বলা হয়, যেখানে গণনা করা হয়।
নিম্নলিখিত চিত্রে, চেনাশোনাগুলি নোডগুলির প্রতিনিধিত্ব করে এবং নোডগুলির উল্লম্ব সংগ্রহ স্তরগুলিকে প্রতিনিধিত্ব করে৷ এই মডেলটিতে তিনটি স্তর রয়েছে।
একটি স্তরের নোডগুলি নীচের হিসাবে ট্রান্সমিশন লাইনের মাধ্যমে পরবর্তী স্তরের সাথে সংযুক্ত থাকে।
আমাদের ডেটাসেট লেবেলযুক্ত ডেটা নিয়ে গঠিত। এর মানে হল যে প্রতিটি ডেটা সত্তাকে একটি নির্দিষ্ট নামের মান বরাদ্দ করা হয়েছে।
তাই একটি প্রাণীর শ্রেণীবিভাগের ডেটাসেটের জন্য আমাদের ডেটা হিসাবে বিড়াল এবং কুকুরের ছবি থাকবে, আমাদের লেবেল হিসাবে 'বিড়াল' এবং 'কুকুর' থাকবে।
এটি লক্ষ করা গুরুত্বপূর্ণ যে লেবেলগুলিকে আমাদের মডেলের জন্য সংখ্যাসূচক মানগুলিতে রূপান্তরিত করতে হবে যাতে সেগুলি বোঝা যায়, তাই আমাদের প্রাণীর লেবেলগুলি বিড়ালের জন্য '0' এবং কুকুরের জন্য '1' হয়ে যায়৷ ডেটা এবং লেবেল উভয়ই মডেলের মাধ্যমে পাস করা হয়।
শিক্ষা
ডেটা এক সময়ে মডেলের একটি সত্তাকে দেওয়া হয়। এই ডেটা খণ্ডে বিভক্ত করা হয় এবং মডেলের প্রতিটি নোডের মধ্য দিয়ে যায়। নোডগুলি এই অংশগুলির উপর গাণিতিক ক্রিয়াকলাপ চালায়।
এই টিউটোরিয়ালের জন্য আপনার গাণিতিক ফাংশন বা গণনা জানার দরকার নেই, তবে এই মডেলগুলি কীভাবে কাজ করে সে সম্পর্কে একটি সাধারণ ধারণা থাকা গুরুত্বপূর্ণ। এক স্তরে ধারাবাহিক গণনার পর, ডেটা পরবর্তী স্তরে প্রেরণ করা হয় এবং আরও অনেক কিছু।
একবার সম্পূর্ণ হয়ে গেলে, আমাদের মডেল আউটপুট স্তরে ডেটা লেবেলের ভবিষ্যদ্বাণী করে (উদাহরণস্বরূপ, একটি প্রাণীর শ্রেণিবিন্যাসের সমস্যায় আমরা একটি বিড়ালের জন্য একটি ভবিষ্যদ্বাণী '0' পাই)।
মডেল তারপর প্রকৃত লেবেল মানের সাথে এই পূর্বাভাসিত মান তুলনা করতে এগিয়ে যায়।
যদি মানগুলি মিলে যায়, আমাদের মডেল পরবর্তী ইনপুট নেবে কিন্তু মানগুলি ভিন্ন হলে মডেলটি উভয় মানের মধ্যে পার্থক্য গণনা করবে, যাকে ক্ষতি বলা হয় এবং পরের বার মিলিত লেবেল তৈরি করতে নোড গণনাগুলি সামঞ্জস্য করে৷
ডিপ লার্নিং ফ্রেমওয়ার্ক
কোডে নিউরাল নেটওয়ার্ক তৈরি করতে, আমাদের আমদানি করতে হবে ডিপ লার্নিং ফ্রেমওয়ার্ক আমাদের ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) ব্যবহার করে লাইব্রেরি হিসেবে পরিচিত।
এই ফ্রেমওয়ার্কগুলি পূর্ব-লিখিত ফাংশনগুলির একটি সংগ্রহ যা এই টিউটোরিয়ালটিতে আমাদের সাহায্য করবে। আমরা আমাদের মডেল তৈরি করতে কেরাস ফ্রেমওয়ার্ক ব্যবহার করব।
কেরাস একটি পাইথন লাইব্রেরি যা একটি গভীর শিক্ষা এবং কৃত্রিম বুদ্ধিমত্তা ব্যাকএন্ড ব্যবহার করে টেনসরফ্লো সহজে সহজ অনুক্রমিক মডেলের আকারে NN তৈরি করতে।
কেরাস এর নিজস্ব প্রাক-বিদ্যমান মডেলের সাথেও আসে যা ব্যবহার করা যেতে পারে। এই টিউটোরিয়ালের জন্য, আমরা কেরাস ব্যবহার করে আমাদের নিজস্ব মডেল তৈরি করব।
আপনি এই ডিপ লার্নিং ফ্রেমওয়ার্ক সম্পর্কে আরও জানতে পারেন কেরাস ওয়েবসাইট.
একটি নিউরাল নেটওয়ার্ক তৈরি করা (টিউটোরিয়াল)
আসুন পাইথন ব্যবহার করে একটি নিউরাল নেটওয়ার্ক তৈরিতে এগিয়ে যাই।
সমস্যা বিবৃতি
নিউরাল নেটওয়ার্ক হল এআই-ভিত্তিক সমস্যার এক ধরনের সমাধান। এই টিউটোরিয়ালের জন্য আমরা পিমা ইন্ডিয়ানস ডায়াবেটিস ডেটা নিয়ে যাব, যা উপলব্ধ এখানে.
আইসিইউ মেশিন লার্নিং এই ডেটাসেট কম্পাইল করেছে এবং ভারতীয় রোগীদের একটি মেডিকেল রেকর্ড রয়েছে। আমাদের মডেলটি 5 বছরের মধ্যে রোগীর ডায়াবেটিস শুরু হয়েছে কিনা তা ভবিষ্যদ্বাণী করতে হবে।
ডেটাসেট লোড হচ্ছে
আমাদের ডেটাসেট হল 'diabetes.csv' নামে একটি একক CSV ফাইল যা মাইক্রোসফট এক্সেল ব্যবহার করে সহজেই ম্যানিপুলেট করা যায়।
আমাদের মডেল তৈরি করার আগে, আমাদের ডেটাসেট আমদানি করতে হবে। নিম্নলিখিত কোড ব্যবহার করে আপনি এটি করতে পারেন:
পিডি হিসাবে পান্ডস আমদানি করুন
ডেটা = pd.read_csv('diabetes.csv')
x = data.drop("ফলাফল")
y = ডেটা["ফলাফল"]
এখানে আমরা ব্যবহার করছি পান্ডাস লাইব্রেরি আমাদের CSV ফাইলের ডেটা ম্যানিপুলেট করতে সক্ষম হতে, read_csv() হল পান্ডাসের একটি অন্তর্নির্মিত ফাংশন যা আমাদের ফাইলের মানগুলিকে 'ডেটা' নামক একটি ভেরিয়েবলে সংরক্ষণ করতে দেয়।
পরিবর্তনশীল x-এ ফলাফল (লেবেল) ডেটা ছাড়াই আমাদের ডেটাসেট রয়েছে। আমরা data.drop() ফাংশন দিয়ে এটি অর্জন করি যা x-এর লেবেলগুলি সরিয়ে দেয়, যখন y-এ শুধুমাত্র ফলাফল (লেবেল) ডেটা থাকে।
বিল্ডিং অনুক্রমিক মডেল
ধাপ 1: লাইব্রেরি আমদানি করা
প্রথমত, আমাদের মডেলের জন্য প্রয়োজনীয় কিছু প্যারামিটার সহ টেনসরফ্লো এবং কেরাস আমদানি করতে হবে। নিম্নলিখিত কোড আমাদের এটি করতে অনুমতি দেয়:
tf হিসাবে tensorflow আমদানি করুন
tensorflow আমদানি keras থেকে
tensorflow.keras.models থেকে অনুক্রমিক আমদানি
tensorflow.keras.layers থেকে অ্যাক্টিভেশন, ঘনত্ব আমদানি করুন
tensorflow.keras.optimizers থেকে অ্যাডাম আমদানি করে
tensorflow.keras.metrics থেকে categorical_crossentropy আমদানি করুন
আমাদের মডেলের জন্য আমরা ঘন স্তর আমদানি করছি। এগুলি সম্পূর্ণভাবে সংযুক্ত স্তর; অর্থাৎ, একটি স্তরের প্রতিটি নোড পরের স্তরের অন্য নোডের সাথে সম্পূর্ণভাবে সংযুক্ত থাকে।
আমরাও একটি আমদানি করছি সক্রিয়করণ নোডগুলিতে পাঠানো ডেটা স্কেলিং করার জন্য প্রয়োজনীয় ফাংশন। অপ্টিমাইজার ক্ষতি কমাতেও আমদানি করা হয়েছে।
অ্যাডাম একজন খ্যাতিমান অপ্টিমাইজার যা আমাদের মডেল আপডেট নোড গণনাগুলিকে আরও দক্ষতার সাথে করে categorical_crossentropy যা ক্ষতি ফাংশনের ধরন (প্রকৃত এবং পূর্বাভাসিত লেবেল মানগুলির মধ্যে পার্থক্য গণনা করে) যা আমরা ব্যবহার করব।
ধাপ 2: আমাদের মডেল ডিজাইন করা
আমি যে মডেলটি তৈরি করছি তাতে একটি ইনপুট (16 ইউনিট সহ), একটি লুকানো (32 ইউনিট সহ) এবং একটি আউটপুট (2 ইউনিট সহ) স্তর রয়েছে। এই সংখ্যাগুলি স্থির নয় এবং সম্পূর্ণভাবে প্রদত্ত সমস্যার উপর নির্ভর করবে।
সঠিক সংখ্যক ইউনিট এবং স্তর সেট করা একটি প্রক্রিয়া যা অনুশীলনের মাধ্যমে ওভারটাইম উন্নত করা যেতে পারে। অ্যাক্টিভেশন নোডের মধ্য দিয়ে যাওয়ার আগে আমরা আমাদের ডেটাতে যে ধরনের স্কেলিং করব তার সাথে মিলে যায়।
Relu এবং Softmax এই কাজের জন্য বিখ্যাত অ্যাক্টিভেশন ফাংশন।
মডেল = অনুক্রমিক([
ঘন (ইউনিট = 16, ইনপুট_আকৃতি = (1,), সক্রিয়করণ = 'relu'),
ঘন (ইউনিট = 32, সক্রিয়করণ = 'relu'),
ঘন (ইউনিট = 2, সক্রিয়করণ = 'softmax')
])
মডেলের সারাংশ কেমন হওয়া উচিত তা এখানে:
মডেল প্রশিক্ষণ
আমাদের মডেলকে দুটি ধাপে প্রশিক্ষিত করা হবে, প্রথমটি হচ্ছে মডেলটি কম্পাইল করা (মডেলটিকে একসাথে রাখা) এবং পরবর্তীটি একটি প্রদত্ত ডেটাসেটে মডেলটিকে ফিট করা।
এটি model.compile() ফাংশন অনুসরণ করে model.fit() ফাংশন ব্যবহার করে করা যেতে পারে।
model.compile(অপ্টিমাইজার = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
'নির্ভুলতা' মেট্রিক নির্দিষ্ট করা আমাদের প্রশিক্ষণের সময় আমাদের মডেলের নির্ভুলতা পর্যবেক্ষণ করতে দেয়।
যেহেতু আমাদের লেবেলগুলি 1 এবং 0 এর আকারে রয়েছে, তাই প্রকৃত এবং পূর্বাভাসিত লেবেলের মধ্যে পার্থক্য গণনা করতে আমরা একটি বাইনারি লস ফাংশন ব্যবহার করব।
ডেটাসেটটি 10 (ব্যাচ_সাইজ) ব্যাচেও বিভক্ত করা হচ্ছে এবং 30 বার (যুগ) মডেলের মাধ্যমে পাস করা হবে। একটি প্রদত্ত ডেটাসেটের জন্য, x হবে ডেটা এবং y হবে ডেটার সাথে সম্পর্কিত লেবেল।
ভবিষ্যদ্বাণী ব্যবহার করে মডেল পরীক্ষা করা
আমাদের মডেল মূল্যায়ন করার জন্য, আমরা predict() ফাংশন ব্যবহার করে পরীক্ষার ডেটাতে ভবিষ্যদ্বাণী করি।
ভবিষ্যদ্বাণী = মডেল.ভবিষ্যদ্বাণী(x)
এবং এটাই!
আপনি এখন একটি ভাল বোঝার থাকা উচিত গভীর জ্ঞানার্জন অ্যাপ্লিকেশন, নিউরাল নেটওয়ার্ক, তারা কীভাবে সাধারণভাবে কাজ করে এবং পাইথন কোডে কীভাবে একটি মডেল তৈরি, প্রশিক্ষণ এবং পরীক্ষা করা যায়।
আমি আশা করি এই টিউটোরিয়ালটি আপনাকে আপনার নিজস্ব ডিপ লার্নিং মডেল তৈরি এবং স্থাপন করতে কিকস্টার্ট দেবে।
নিবন্ধটি সহায়ক হলে আমাদের মন্তব্যে জানান।
নির্দেশিকা সমন্ধে মতামত দিন