मुख्य बात यह है कि ट्रेनिंग से फ़िल्टर का व्यवहार बदल जाता है, बिना इसके कि आपको नए if स्टेटमेंट जोड़ने पड़ें। ट्रेनिंग प्रोसेस लेबल का इस्तेमाल करके इंटरनल सेटिंग्स को ऐसे आउटपुट की ओर ले जाती है जो अक्सर लेबल से मेल खाते हैं; इस तरह, जो मैसेज पहले गलत क्लासिफ़ाई हो जाता था, वह एडजस्टमेंट के बाद सही ढंग से क्लासिफ़ाई हो जाता है।
जब फ़िल्टर उदाहरणों के आधार पर बदल सकता है, तो अगला सवाल यह है कि किस तरह के बदलाव को ‘सीखना’ माना जाएगा। अगर प्रोग्राम सिर्फ़ ट्रेनिंग ईमेल को हूबहू याद कर लेता है, तो वह उन उदाहरणों पर तो परफेक्ट स्कोर पा सकता है, लेकिन किसी ऐसे नए स्कैम में फेल हो सकता है जिसकी भाषा अलग हो।
अगर फ़िल्टर को कोई ऐसा नया ईमेल मिले जिसे उसने पहले कभी नहीं देखा, तो पैटर्न-आधारित सिस्टम उसे क्लासिफ़ाई करने के लिए क्या इस्तेमाल कर सकता है, बिना हर नए तरीके के लिए अलग से कोडिंग किए? वह उन फ़ीचर्स का दोबारा इस्तेमाल कर सकता है जो अक्सर लेबल किए गए सेट में स्पैम से जुड़े होते हैं, जैसे invoice का होना, भेजने वाले का असामान्य डोमेन, या भेजने वाले के नाम और डोमेन के बीच मेल न होना।
तुलना करें कि एक ‘एक्ज़ैक्ट-मैच मेमोरी’ (हूबहू मिलान वाली मेमोरी), एक ‘पैटर्न-आधारित लर्नर’, और ‘फिक्स्ड रूल्स’ (तय नियम) किसी ऐसे ईमेल को कैसे हैंडल करते हैं जिसे पहले कभी नहीं देखा गया।
मान लीजिए आपने कई सारे if स्टेटमेंट का इस्तेमाल करके एक स्पैम फ़िल्टर बनाया है। अगर सब्जेक्ट में FREE है, तो उसे स्पैम मार्क करें। अगर भेजने वाले का पता .ru पर खत्म होता है, तो उसे स्पैम मार्क करें। अगर ईमेल में wire transfer है, तो उसे स्पैम मार्क करें।
एक हफ़्ते तक तो सब ठीक चलता है, लेकिन फिर इनबॉक्स में गड़बड़ होने लगती है। ऐसे नए स्कैम आते हैं जो आपके कीवर्ड्स से बच जाते हैं, और सामान्य ईमेल भी स्पैम मार्क हो जाते हैं क्योंकि किसी सहकर्मी ने कैलेंडर इनवाइट में “free lunch” लिख दिया होता है। मेलबॉक्स में कुछ भी ऐसा नहीं होता जो प्रोग्राम को क्रैश कर दे। नियम वही काम कर रहे होते हैं जो आपने लिखे थे, और यही समस्या है।
नियम-आधारित फ़िल्टर के फेल होने के बाद, अगला कदम एक ऐसे सिस्टम का है जिसका आउटपुट यह देखने के बाद बदल जाता है कि आप किसे सही मानते हैं। एक प्रोग्राम तब सीखता है जब ट्रेनिंग के दौरान उसकी इंटरनल सेटिंग्स में बदलाव किया जाता है, ताकि ट्रेनिंग से पहले की तुलना में उसी इनपुट ईमेल से बेहतर स्पैम या नॉट-स्पैम आउटपुट मिल सके।
इसे आसानी से समझने के लिए, एक छोटे इनबॉक्स का इस्तेमाल करें जहाँ हर ईमेल के साथ एक लेबल हो। यह वह सही जवाब है जो आप चाहते हैं कि प्रोग्राम दे, जैसे spam या not_spam। उदाहरणों का वह सेट डेटा है, यानी रिकॉर्ड किए गए इनपुट और उनके लेबल। प्रोग्राम पूरे ईमेल को किसी जादू की तरह नहीं लेता। यह फ़ीचर्स का इस्तेमाल करता है, जो ईमेल से मापी जा सकने वाली खास बातें हैं, जैसे “इसमें invoice शब्द है” या “भेजने वाले का डोमेन .biz पर खत्म होता है”।
देखें कि कैसे एक ही लेबल वाले ईमेल ट्रेनिंग से पहले और बाद में अलग-अलग आउटपुट दे सकते हैं।