ڈیپ لرننگ
Deep Learning
مصنف: ڈاکٹر نعمان اسلام
تاریخ: 6 جون 2018
قاریؑن- آج کے آرٹیکل میں ہم آپ سے ڈیپ لرننگ کے متعلق تفصیلی بات کریں گے- ڈیپ لرننگ مشین لرننگ کی ایک قسم ہے- اگر ہم AIکی بات کریں تو ابتدا میں کمپیوٹر میں کسی بھی پرابلم کو حل کرنے کے لیؑے اس کا Algorithm بھی ساتھ میں دینا پڑتا تھا- اس کو Symbolic AI کہا جاتا ہے- تاہم جدید AI میں ہم کمپیوٹر کو صرف مثالیں دیتے ہیں- ان مثالوں یا ڈیٹا سے کمپیوٹر خود سیکھتا ہے- مثلاؑ ہمیں اگر Car اور Bus میں فرق کرنا ہے تو ہم کار کی سو تصویریں کمپیوٹر کو دکھایؑں گے اور اسی طرح بس کی تصویریں دکھایؑں گے- کمپیوٹر خود ہی ان تصویروں سے کار اور بس میں فرق کرنا سیکھ جاےؑگا- اس طریقے کو مشین لرننگ کہا جاتا ہے- آج کل کے AI کے جدید Algorithm اسی اصول پر کام کرتے ہیں-
مشین لرننگ میں ہم اپنے ڈیٹا کو تین حصوں میں تقسیم کرتے ہیں-
ٹریننگ ڈیٹا (Training data):
مشین لرننگ میں پہلے ہم کمپیوٹر کو مثالوں سے سکھاتے ہیں- اس عمل کو ٹریننگ کہتے ہیں- کمپیوٹر کو ہم ڈیٹا اور اس کا جواب دونوں بتاتے ہیں- مثلاؑ ہم کمپیوٹر کو ایک بس کی تصویر دیتے ہیں اور ساتھ یہ بھی بتاتے ہیں کہ یہ بس کی تصویر ہے- کمپیوٹر اگر غلط جواب دیتا ہے (مثلاؑ وہ اسے گاڑی بتاتا ہے) تو اپنے آپ کو پھر Adjustکرتا ہے تاکہ اگلی دفعہ پھر غلطی نہ کرے - اس عمل کو Learning کہتے ہیں- اس کے لیے جو Algorithm سب سے زیادہ استعمال ہوتا ہے اس کو Gradient Descent کہتے ہیں-اس طرح ہمارا Model ٹرین ہو جاتا ہے-
ویلیڈیشن ڈیٹا (Validation Data):
ایک دفعہ ٹریننگ کے بعد ہم اپنے ماڈل کی صلاحیت کو ٹیسٹ کرتے ہیں- اس مقصد کے لیےؑ Validation data استعمال کیا جاتا ہے- اگر ہمارا ماڈل صحیح کام نہیں کر رہا تو ہم اپنے ماڈل کے (hyper parameters) کو تبدیل کر کے پھر سے ٹریننگ دیتے ہیں- یہ عمل جاری رہتا ہے یہاں تک کہ ماڈل کی Accuracy بہت اچھی نہ آ جاےؑ-
ٹیسٹنگ ڈیٹا (Testing data):
جب ہماری ٹریننگ مکمل ہو جاےؑ تو ہم آخری بار اپنے ماڈل کو ٹیسٹ ڈیٹا پر چیک کرتے ہیں- اس ڈیٹا کو الگ رکھنے کا مقصد یہ ہے کہ validation data تو Hyper parameter کی سیلیکشن ( یا ٹریننگ) کے دوران ایکسپوز ہو چکا ہے- ہمیں کسی بلکل نےؑ ڈیٹا پر ماڈل کو چیک کرنے کی ضرورت ہے-
جیسا کہ پچھلے آرٹیکل میں ہم نے تذکرہ کیا تھا کے مشین لرننگ کے لیے بہت سارے ماڈلز موجود ہیں- جو ماڈل ڈیپ لرننگ میں استعمال ہوتا ہے اس کو ہم نیورل نیٹ ورک کہتے ہیں- آیؑے اس کا تفصیلی مطالعہ کرتے ہیں-
نیورل نیٹ ورک (Neural Network)
نیورل نیٹ ورک انسانی دماغ سے متاثر ہو کر بنایا گیا ہے- اس میں بنیادی حیثیت نیورون کی ہے- ایک نیورون کچھ Input لیتا ہے اور اس کو Weights سے Multiply کرکے اس پر Linear transformation ایپلاییؑ کرتا ہے- جیسا کے فیگر میں دیکھا جاسکتا ہے-
فیگر1: ایک نیوران اور اس کے اجزاؑ
نیورل نیٹ ورک اس طرح کے کیؑ نیوران پر مشتمل ہوتا ہے-ایک نیوران اپنے اگلے کیؑ نیوران سے Connected ہوتا ہے اور اس کواپنا ڈیٹا دیتا ہے- ایک نیوران اپنے اگلے نیوران کو ڈیٹا دینے سے پہلے ایک Activation function بھی ایپلاییؑ کرتا ہے- اس طرح نیورل نیٹ ورک کسی بھی طرح کے Non-linear ڈیٹا کو ماڈل کر سکتا ہے-
فیگر2: نیورل نیٹ ورک جو کہ مختلف نیوران سےمل کر بنتا ہے
ایک نیورل نیٹ ورک میں عام طور پر ایک Input Layer، کیؑ Hidden Layers اور ایک Output Layer ہوتی ہے- ڈیپ لرننگ میں ہم Layers کی تعداد بڑھا دیتے ہیں جس سے ماڈل Complex ڈیٹا کو Represent کر پاتا ہے- ایک اور اہم بات یہ کہ ہم ڈیپ لرننگ میں Features نہیں نکالتے- ماڈل مختلف layers کی transformations کے ذریعے خود ہی features نکال لیتا ہے-
لرننگ عام طور پر تین طرح سے ہوتی ہے:
Supervised Learning
اس طریقے میں ہم ڈیٹا اور اس کا label ٹریننگ کے دوران دیتے ہیں- کمپیوٹر لیبل کو دیکھتے ہوےؑ اپنے آپ کو ایڈجسٹ کرتا ہے- گویا کمپیوٹر کو feedback کے طور پر جواب بھی پتا ہوتا ہے-
Unsupervised learning
اس طریقے میں ہم کو فیڈ بیک یا ٹارگٹ مہیا نہیں ہوتا-اصل مقصد ڈیٹا کو ٹرانسفارم کرنا یا بہتر طریقے سے سمجھنا ہوتا ہے- Clustering جو کہ ایک قسم کی un-supervised learning ہے میں ہم ڈیٹا کو مختلف گروپس میں تقسیم کرتے ہیں-جو ڈیٹا ایک جیسا ہوتا ہے وہ ایک گروپ میں ہوتا ہے- Dimensionality reduction ایک اور قسم ہے جس میں ہم ڈیٹا کے سایؑز کو کم کرتے ہیں-
Reinforcement learning
اس طریقے میں کمپیوٹر ماحول کے فیڈبیک سے سیکھتا ہے- مثلاؑ ایک گاڑی اگر خودکار طریقے سے چل رہی ہے تو روڈ پر دوسری گاڑیوں اور سڑک کی کنڈیشن سے وہ اپنے آپ کو ایڈجسٹ کر سکتی ہے- اسی طرح گیمز وغیرہ میں بھی یہ بہت استعمال ہوتا ہے-
قاریؑن- آج ہم نے ڈیپ لرننگ کے متعلق آگاہی حاصل کی- اگلے آرٹیکل میں ہم ڈیپ لرننگ کو پریکٹکیکلی ایپلایؑ کریں گے-