مصنوعی ذہانت (AI) نے حالیہ برسوں میں کافی مقبولیت حاصل کی ہے۔
اگر آپ عام طور پر سافٹ ویئر انجینئر، کمپیوٹر سائنس دان، یا ڈیٹا سائنس کے شوقین ہیں، تو شاید آپ کو اس فیلڈ کے ذریعے فراہم کردہ امیج پروسیسنگ، پیٹرن کی شناخت اور آبجیکٹ کا پتہ لگانے کی حیرت انگیز ایپلی کیشنز سے دلچسپی ہوگی۔
AI کا سب سے اہم ذیلی فیلڈ جس کے بارے میں آپ نے شاید سنا ہوگا وہ ہے ڈیپ لرننگ۔ یہ فیلڈ طاقتور الگورتھم (کمپیوٹر پروگرام ہدایات) پر توجہ مرکوز کرتا ہے جسے انسانی دماغ کی فعالیت کے نام سے جانا جاتا ہے۔ عصبی نیٹ ورک.
اس آرٹیکل میں، ہم نیورل نیٹ ورکس کے تصور پر جائیں گے اور اس کا استعمال کرتے ہوئے ان ماڈلز کو بنانے، مرتب کرنے، فٹ کرنے اور جانچنے کا طریقہ دیکھیں گے۔ ازگر.
عصبی نیٹ ورک
نیورل نیٹ ورکس، یا NNs، انسانی دماغ کی حیاتیاتی سرگرمی کے بعد بنائے گئے الگورتھم کا ایک سلسلہ ہے۔ نیورل نیٹ ورک نوڈس پر مشتمل ہوتے ہیں، جنہیں نیوران بھی کہا جاتا ہے۔
عمودی نوڈس کا مجموعہ تہوں کے نام سے جانا جاتا ہے۔ ماڈل ایک ان پٹ، ایک آؤٹ پٹ، اور کئی پوشیدہ پرتوں پر مشتمل ہے۔ ہر پرت نوڈس پر مشتمل ہوتی ہے، جسے نیوران بھی کہا جاتا ہے، جہاں حساب کتاب ہوتا ہے۔
درج ذیل خاکہ میں، حلقے نوڈس کی نمائندگی کرتے ہیں اور نوڈس کا عمودی مجموعہ تہوں کی نمائندگی کرتا ہے۔ اس ماڈل میں تین پرتیں ہیں۔
ایک پرت کے نوڈس اگلی پرت سے ٹرانسمیشن لائنوں کے ذریعے جڑے ہوئے ہیں جیسا کہ نیچے دیکھا گیا ہے۔
ہمارا ڈیٹاسیٹ لیبل والے ڈیٹا پر مشتمل ہے۔ اس کا مطلب ہے کہ ہر ڈیٹا ہستی کو ایک مخصوص نام کی قدر تفویض کی گئی ہے۔
لہذا جانوروں کی درجہ بندی کے ڈیٹاسیٹ کے لیے ہمارے پاس اپنے ڈیٹا کے طور پر بلیوں اور کتوں کی تصاویر ہوں گی، جس میں 'بلی' اور 'کتے' ہمارے لیبل کے طور پر ہوں گے۔
یہ نوٹ کرنا ضروری ہے کہ لیبلز کو ہمارے ماڈل کے لیے عددی اقدار میں تبدیل کرنے کی ضرورت ہے تاکہ ان کا احساس ہو، اس لیے ہمارے جانوروں کے لیبل بلی کے لیے '0' اور کتے کے لیے '1' بن جاتے ہیں۔ ڈیٹا اور لیبل دونوں ماڈل کے ذریعے گزرے ہیں۔
سیکھنا
ڈیٹا ایک وقت میں ایک ماڈل کو فیڈ کیا جاتا ہے۔ یہ ڈیٹا ٹکڑوں میں ٹوٹ جاتا ہے اور ماڈل کے ہر نوڈ سے گزر جاتا ہے۔ نوڈس ان ٹکڑوں پر ریاضی کی کارروائیاں کرتے ہیں۔
آپ کو اس ٹیوٹوریل کے لیے ریاضی کے افعال یا حسابات جاننے کی ضرورت نہیں ہے، لیکن یہ ضروری ہے کہ یہ عام خیال ہو کہ یہ ماڈل کیسے کام کرتے ہیں۔ ایک پرت میں حسابات کی ایک سیریز کے بعد، ڈیٹا کو اگلی پرت میں منتقل کیا جاتا ہے وغیرہ۔
مکمل ہونے کے بعد، ہمارا ماڈل آؤٹ پٹ پرت پر ڈیٹا لیبل کی پیشین گوئی کرتا ہے (مثال کے طور پر، جانوروں کی درجہ بندی کے مسئلے میں ہمیں بلی کے لیے '0' پیشین گوئی ملتی ہے)۔
اس کے بعد ماڈل اس پیشن گوئی کی قیمت کا اصل لیبل قدر کے ساتھ موازنہ کرنے کے لیے آگے بڑھتا ہے۔
اگر اقدار مماثل ہیں، تو ہمارا ماڈل اگلا ان پٹ لے گا لیکن اگر قدریں مختلف ہوں تو ماڈل دونوں قدروں کے درمیان فرق کا حساب لگائے گا، جسے نقصان کہا جاتا ہے، اور اگلی بار مماثل لیبل تیار کرنے کے لیے نوڈ کے حسابات کو ایڈجسٹ کرے گا۔
گہری سیکھنے کا فریم ورک
کوڈ میں نیورل نیٹ ورکس بنانے کے لیے، ہمیں درآمد کرنے کی ضرورت ہے۔ گہری سیکھنے کے فریم ورک ہمارے مربوط ترقیاتی ماحول (IDE) کا استعمال کرتے ہوئے لائبریریوں کے نام سے جانا جاتا ہے۔
یہ فریم ورک پہلے سے لکھے گئے فنکشنز کا مجموعہ ہیں جو اس ٹیوٹوریل میں ہماری مدد کریں گے۔ ہم اپنا ماڈل بنانے کے لیے Keras فریم ورک استعمال کریں گے۔
کیراس ایک ازگر کی لائبریری ہے جو گہری سیکھنے اور مصنوعی ذہانت کے پس منظر کا استعمال کرتی ہے ٹینسر فلو آسانی کے ساتھ سادہ سیکوینشل ماڈلز کی شکل میں NNs بنانے کے لیے۔
کیراس اپنے پہلے سے موجود ماڈلز کے ساتھ بھی آتا ہے جو بھی استعمال کیا جا سکتا ہے۔ اس ٹیوٹوریل کے لیے، ہم Keras کا استعمال کرتے ہوئے اپنا ماڈل بنائیں گے۔
آپ اس ڈیپ لرننگ فریم ورک کے بارے میں مزید جان سکتے ہیں۔ کیراس ویب سائٹ.
نیورل نیٹ ورک کی تعمیر (ٹیوٹوریل)
آئیے Python کا استعمال کرتے ہوئے نیورل نیٹ ورک بنانے کی طرف بڑھتے ہیں۔
مسئلہ یہ بیان
نیورل نیٹ ورک AI پر مبنی مسائل کا حل ہے۔ اس ٹیوٹوریل کے لیے ہم Pima Indians Diabetes Data پر جائیں گے، جو دستیاب ہے۔ یہاں.
UCI مشین لرننگ نے اس ڈیٹاسیٹ کو مرتب کیا ہے۔ اور ہندوستانی مریضوں کا میڈیکل ریکارڈ رکھتا ہے۔ ہمارے ماڈل کو یہ پیشین گوئی کرنی ہوتی ہے کہ آیا مریض کو 5 سال کے اندر ذیابیطس کا آغاز ہوتا ہے یا نہیں۔
ڈیٹا سیٹ لوڈ ہو رہا ہے۔
ہمارا ڈیٹا سیٹ ایک واحد CSV فائل ہے جسے 'diabetes.csv' کہا جاتا ہے جسے Microsoft Excel کا استعمال کرتے ہوئے آسانی سے ہیرا پھیری کی جا سکتی ہے۔
اپنا ماڈل بنانے سے پہلے، ہمیں اپنا ڈیٹاسیٹ درآمد کرنا ہوگا۔ درج ذیل کوڈ کا استعمال کرتے ہوئے آپ یہ کر سکتے ہیں:
بطور PD پانڈا درآمد کریں
ڈیٹا = pd.read_csv('diabetes.csv')
x = data.drop("نتائج")
y = ڈیٹا["نتیجہ"]
یہاں ہم استعمال کر رہے ہیں۔ پانڈاس لائبریری ہمارے CSV فائل کے ڈیٹا میں ہیرا پھیری کرنے کے قابل ہو، read_csv() پانڈوں کا ایک بلٹ ان فنکشن ہے جو ہمیں اپنی فائل میں موجود اقدار کو 'ڈیٹا' نامی متغیر میں اسٹور کرنے کی اجازت دیتا ہے۔
متغیر x میں نتیجہ (لیبل) ڈیٹا کے بغیر ہمارا ڈیٹاسیٹ ہوتا ہے۔ ہم اسے data.drop() فنکشن کے ساتھ حاصل کرتے ہیں جو x کے لیبل کو ہٹاتا ہے، جبکہ y میں صرف نتیجہ (لیبل) ڈیٹا ہوتا ہے۔
ترتیب وار ماڈل کی تعمیر
مرحلہ 1: لائبریریاں درآمد کرنا
سب سے پہلے، ہمیں 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، ایکٹیویشن = 'ریلو')
گھنے (یونٹ = 2، ایکٹیویشن = 'softmax')
])
یہاں یہ ہے کہ ماڈل کا خلاصہ کیسا ہونا چاہئے:
ماڈل کی تربیت
ہمارے ماڈل کو دو مراحل میں تربیت دی جائے گی، پہلا ماڈل کو مرتب کرنا (ماڈل کو ایک ساتھ رکھنا) اور اگلا ایک دیئے گئے ڈیٹاسیٹ پر ماڈل کو فٹ کرنا۔
یہ model.compile() فنکشن کے بعد model.fit() فنکشن کا استعمال کرتے ہوئے کیا جا سکتا ہے۔
model.compile(optimizer = Adam(learning_rate = 0.0001), loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(x, y, epochs = 30, batch_size = 10)
'درستیت' میٹرک کی وضاحت ہمیں تربیت کے دوران اپنے ماڈل کی درستگی کا مشاہدہ کرنے کی اجازت دیتی ہے۔
چونکہ ہمارے لیبلز 1 اور 0 کی شکل میں ہیں، اس لیے ہم اصل اور پیشین گوئی شدہ لیبلز کے درمیان فرق کی گنتی کے لیے بائنری نقصان کا فنکشن استعمال کریں گے۔
ڈیٹاسیٹ کو 10 (batch_size) کے بیچوں میں بھی تقسیم کیا جا رہا ہے اور اسے 30 بار ماڈل کے ذریعے منتقل کیا جائے گا۔ دیے گئے ڈیٹاسیٹ کے لیے، x ڈیٹا ہوگا اور y ڈیٹا سے مطابقت رکھنے والے لیبلز ہوں گے۔
پیشین گوئیوں کا استعمال کرتے ہوئے ماڈل کی جانچ کرنا
اپنے ماڈل کا جائزہ لینے کے لیے، ہم predict() فنکشن کا استعمال کرتے ہوئے ٹیسٹ ڈیٹا پر پیشین گوئیاں کرتے ہیں۔
پیشین گوئیاں = ماڈل پیشین گوئی(x)
اور یہ بات ہے!
اب آپ کو اس کی اچھی سمجھ ہونی چاہیے۔ گہری سیکھنا ایپلی کیشن، نیورل نیٹ ورکس، وہ عام طور پر کیسے کام کرتے ہیں اور Python کوڈ میں ماڈل کی تعمیر، تربیت اور جانچ کیسے کرتے ہیں۔
مجھے امید ہے کہ یہ ٹیوٹوریل آپ کو اپنے ڈیپ لرننگ ماڈلز بنانے اور تعینات کرنے کے لیے کِک اسٹارٹ فراہم کرے گا۔
اگر مضمون مددگار تھا تو ہمیں تبصرے میں بتائیں۔
جواب دیجئے