فرض کریں کہ آپ نے if (اگر) کے بیانات (statements) کے ایک مجموعے کی صورت میں ایک سپیم فلٹر (spam filter) لکھا ہے۔ اگر ای میل کے عنوان (subject) میں FREE کا لفظ ہو تو اسے سپیم قرار دیں۔ اگر بھیجنے والے کا پتہ .ru پر ختم ہو تو اسے سپیم قرار دیں۔ اگر ای میل میں wire transfer کا ذکر ہو تو اسے سپیم قرار دیں۔
ایک ہفتے تک تو سب ٹھیک لگتا ہے، لیکن پھر ان باکس کی کارکردگی بگڑنے لگتی ہے۔ ایسے نئے فراڈ (scams) سامنے آتے ہیں جو آپ کے مخصوص کلیدی الفاظ (keywords) سے بچ نکلتے ہیں، اور عام ای میلز کو بھی سپیم قرار دے دیا جاتا ہے کیونکہ کسی ساتھی نے کیلنڈر انوائٹ میں “free lunch” (مفت دوپہر کا کھانا) لکھ دیا ہوتا ہے۔ میل باکس میں کوئی چیز اس طرح “خراب” نہیں ہوتی کہ پروگرام کریش ہو جائے۔ اصول اب بھی بالکل وہی کام کر رہے ہوتے ہیں جو آپ نے لکھے تھے، اور یہی اصل مسئلہ ہے۔
اصولوں پر مبنی فلٹر کی ناکامی کے بعد، اگلا قدم ایک ایسے نظام کا قیام ہے جس کا نتیجہ (output) اس وقت تبدیل ہو جائے جب وہ یہ دیکھ لے کہ آپ کے نزدیک درست کیا ہے۔ ایک پروگرام اس وقت سیکھتا (learns) ہے جب ‘ٹریننگ’ کے دوران اس کی اندرونی ترتیبات میں ایسی تبدیلی کی جائے کہ وہی ان پٹ ای میل، ٹریننگ سے پہلے کے مقابلے میں، سپیم یا نان سپیم (not spam) کے بارے میں بہتر نتیجے کی طرف لے جائے۔
اس تصور کو عملی مثال سے سمجھنے کے لیے، ایک چھوٹے سے ان باکس کا تصور کریں جہاں ہر ای میل کے ساتھ ایک لیبل (label) موجود ہو؛ یہ لیبل وہ درست جواب ہوتا ہے جو آپ پروگرام سے حاصل کرنا چاہتے ہیں، جیسے کہ spam یا not_spam۔ مثالوں کا یہ مجموعہ ہی ڈیٹا (data) کہلاتا ہے، یعنی ریکارڈ شدہ ان پٹس اور ان کے ساتھ منسلک لیبلز۔ پروگرام پوری ای میل کو کسی جادوئی چیز کے طور پر نہیں لیتا۔ یہ فیچرز (features) استعمال کرتا ہے، جو ای میل سے اخذ کی جانے والی نمایاں خصوصیات ہوتی ہیں، مثلاً “اس میں invoice کا لفظ موجود ہے” یا “بھیجنے والے کا ڈومین نام .biz پر ختم ہوتا ہے”۔
دیکھیں کہ کس طرح ایک ہی لیبل والی ای میلز ٹریننگ سے پہلے اور بعد میں مختلف نتائج کا باعث بن سکتی ہیں۔
اہم بات یہ ہے کہ ‘ٹریننگ’ (training) کے ذریعے فلٹر کا رویہ تبدیل ہو جاتا ہے، بغیر اس کے کہ آپ کو نئے if اسٹیٹمنٹس (if statements) شامل کرنے پڑیں۔ ٹریننگ کا عمل ‘لیبلز’ (labels) کو استعمال کرتے ہوئے اندرونی ترتیبات (settings) کو ایسے نتائج کی طرف لے جاتا ہے جو اکثر لیبلز سے مطابقت رکھتے ہوں؛ یوں وہی پیغام جو پہلے غلط زمرے میں ڈالا گیا تھا، ایڈجسٹمنٹ کے بعد درست زمرے میں آ جاتا ہے۔
جب فلٹر مثالوں کی بنیاد پر خود کو تبدیل کرنے کے قابل ہو جائے، تو اگلا سوال یہ پیدا ہوتا ہے کہ کس قسم کی تبدیلی کو ‘سیکھنا’ (learning) سمجھا جائے۔ اگر پروگرام صرف ٹریننگ والی مخصوص ای میلز کو ہی یاد (یا رٹ) لیتا ہے، تو وہ ان مثالوں پر تو بہترین کارکردگی دکھا سکتا ہے، لیکن کسی ایسے نئے فراڈ (scam) کو پہچاننے میں ناکام رہ سکتا ہے جس کی عبارت یا الفاظ مختلف ہوں۔
اگر کوئی ایسی نئی ای میل سامنے آئے جسے فلٹر نے پہلے کبھی نہ دیکھا ہو، تو ایک ‘پیٹرن پر مبنی نظام’ (pattern-based system) اسے کیسے زمرہ بندی (classify) کر سکتا ہے، جبکہ اسے ہر نئے حربے کے لیے الگ سے کوڈنگ نہ کرنی پڑے؟ یہ نظام ان خصوصیات کو دوبارہ استعمال کر سکتا ہے جن کا تعلق اکثر ‘اسپام’ (spam) سے ہوتا ہے (جیسا کہ لیبل شدہ ڈیٹا سیٹ میں دیکھا گیا ہے)؛ مثلاً ‘invoice’ (انوائس) کا لفظ موجود ہونا، بھیجنے والے کا غیر معمولی ڈومین (domain)، یا بھیجنے والے کے نام اور ڈومین کے درمیان عدم مطابقت۔
موازنہ کریں کہ ‘عین مطابق مماثلت والی یادداشت’ (exact-match memory)، ‘پیٹرن پر مبنی سیکھنے والا نظام’ (pattern-based learner)، اور ‘مقررہ اصول’ (fixed rules) کسی ایسی ای میل سے کیسے نمٹتے ہیں جو پہلے کبھی نہیں دیکھی گئی۔