पी.ए.क्यू.: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{For|the unrelated <code>PAQ.EXE</code> compressor for DOS|Quantum compression (disambiguation){{!}}Quantum compression}}
{{For|डीओएस के लिए असंबंधित <code>PAQ.EXE</code> कंप्रेसर|क्वांटम संपीड़न (बहुविकल्पी){{!}}क्वांटम संपीड़न}}
[[Image:Paq8o Sample Session.png|thumb|500px|PAQ8O का नमूना सत्र]]PAQ [[दोषरहित डेटा संपीड़न]] अभिलेखों की श्रृंखला है जो सहयोगात्मक विकास के माध्यम से संपीड़न अनुपात को मापने वाले कई बेंचमार्क पर शीर्ष रैंकिंग तक पहुंच गई है (हालांकि गति और मेमोरी उपयोग की कीमत पर)। पीएक्यू के विशिष्ट संस्करणों ने [[हटर पुरस्कार]] और [[ कैलगरी चुनौती |कैलगरी चुनौती]] जीता है।<ref>{{cite web|url=http://mailcom.com/challenge/ |title=The Compression/SHA-1 Challenge |publisher=Mailcom.com |access-date=2010-05-19}}</ref> पीएक्यू [[जीएनयू जनरल पब्लिक लाइसेंस]] के तहत वितरित [[मुफ्त सॉफ्टवेयर]] है।<ref>{{cite web
[[Image:Paq8o Sample Session.png|thumb|500px|पी.ए.क्यू.8O का नमूना सत्र]]'''पी.ए.क्यू.''' [[दोषरहित डेटा संपीड़न|लॉसलेस  डेटा कंप्रेशन]] अभिलेखों की श्रृंखला है जो सहयोगात्मक विकास के माध्यम से कंप्रेशन  अनुपात को मापने वाले अनेक बेंचमार्क पर शीर्ष रैंकिंग तक पहुंच गई है (चूँकि गति और मेमोरी उपयोग की मूल्य पर)। पीएक्यू के विशिष्ट वर्जनो ने [[हटर पुरस्कार]] और [[ कैलगरी चुनौती |कैलगरी चुनौती]] जीता है।<ref>{{cite web|url=http://mailcom.com/challenge/ |title=The Compression/SHA-1 Challenge |publisher=Mailcom.com |access-date=2010-05-19}}</ref> पीएक्यू [[जीएनयू जनरल पब्लिक लाइसेंस]] के अनुसार वितरित [[मुफ्त सॉफ्टवेयर]] है।<ref>{{cite web
|url=http://mattmahoney.net/dc/
|url=http://mattmahoney.net/dc/
|title=Homepage of the PAQ compressors
|title=Homepage of the PAQ compressors
Line 9: Line 9:


==एल्गोरिदम==
==एल्गोरिदम==
PAQ संदर्भ मिश्रण एल्गोरिथ्म का उपयोग करता है। संदर्भ मिश्रण आंशिक मिलान (पीपीएम) द्वारा भविष्यवाणी से संबंधित है जिसमें कंप्रेसर को भविष्यवक्ता और अंकगणितीय कोडर में विभाजित किया गया है, लेकिन इसमें भिन्नता है कि अगले-प्रतीक भविष्यवाणी की गणना बड़ी संख्या में मॉडल से संभाव्यता अनुमानों के भारित संयोजन का उपयोग करके की जाती है। विभिन्न सन्दर्भों पर आधारित। पीपीएम के विपरीत, किसी संदर्भ को सन्निहित होने की आवश्यकता नहीं है। अधिकांश PAQ संस्करण निम्नलिखित संदर्भों के लिए अगले-प्रतीक आँकड़े एकत्र करते हैं:
पी.ए.क्यू. संदर्भ मिश्रण एल्गोरिथ्म का उपयोग करता है। संदर्भ मिश्रण आंशिक मिलान (पीपीएम) द्वारा पूर्वानुमान से संबंधित है जिसमें कंप्रेसर को भविष्यवक्ता और अंकगणितीय कोडर में विभाजित किया गया है, किन्तु इसमें भिन्नता है कि अगले-प्रतीक पूर्वानुमान की गणना बड़ी संख्या में मॉडल से संभाव्यता अनुमानों के भारित संयोजन का उपयोग करके की जाती है। विभिन्न सन्दर्भों पर आधारित पीपीएम के विपरीत, किसी संदर्भ को सन्निहित होने की आवश्यकता नहीं है। अधिकांश पी.ए.क्यू. वर्जन निम्नलिखित संदर्भों के लिए अगले-प्रतीक आँकड़े एकत्र करते हैं:
* एन-ग्राम|एन-ग्राम; प्रसंग अंतिम है {{Var|n}} पूर्वानुमानित प्रतीक से पहले बाइट्स (जैसा कि पीपीएम में);
 
* संपूर्ण-शब्द एन-ग्राम, केस और गैर-वर्णमाला वर्णों को अनदेखा करना (पाठ फ़ाइलों में उपयोगी);
* ''n'' -ग्राम ; संदर्भअनुमानित प्रतीक से पहले <var>अंतिम '''''n''''' बाइट्स है (जैसा कि पीपीएम में है);</var>
*संपूर्ण-शब्द ''n''-ग्राम, केस और गैर-वर्णमाला वर्णों को अनदेखा करना (टेक्स्ट फ़ाइलों में उपयोगी);
* विरल संदर्भ, उदाहरण के लिए, अनुमानित प्रतीक से पहले के दूसरे और चौथे बाइट्स (कुछ बाइनरी प्रारूपों में उपयोगी);
* विरल संदर्भ, उदाहरण के लिए, अनुमानित प्रतीक से पहले के दूसरे और चौथे बाइट्स (कुछ बाइनरी प्रारूपों में उपयोगी);
* एनालॉग संदर्भ, जिसमें पिछले 8- या 16-बिट शब्दों के उच्च-क्रम बिट्स शामिल हैं (मल्टीमीडिया फ़ाइलों के लिए उपयोगी);
* एनालॉग संदर्भ, जिसमें पिछले 8- या 16-बिट शब्दों के उच्च-क्रम बिट्स सम्मिलित हैं (मल्टीमीडिया फ़ाइलों के लिए उपयोगी);
* द्वि-आयामी संदर्भ (छवियों, तालिकाओं और स्प्रेडशीट के लिए उपयोगी); पंक्ति की लंबाई दोहराए जाने वाले बाइट पैटर्न की स्ट्राइड लंबाई ज्ञात करके निर्धारित की जाती है;
* द्वि-आयामी संदर्भ (छवियों, तालिकाओं और स्प्रेडशीट के लिए उपयोगी); पंक्ति की लंबाई दोहराए जाने वाले बाइट पैटर्न की स्ट्राइड लंबाई ज्ञात करके निर्धारित की जाती है;
* विशेष मॉडल, जैसे x[[86]] निष्पादन योग्य, [[ विंडोज़ बिटमैप |विंडोज़ बिटमैप]] , टीआईएफएफ, या [[जेपीईजी]] छवियां; ये मॉडल केवल तभी सक्रिय होते हैं जब विशेष फ़ाइल प्रकार का पता लगाया जाता है।
* विशेष मॉडल, जैसे x[[86]] निष्पादन योग्य, [[ विंडोज़ बिटमैप |विंडोज़ बिटमैप]] , टीआईएफएफ, या [[जेपीईजी]] छवियां; ये मॉडल केवल तभी सक्रिय होते हैं जब विशेष फ़ाइल प्रकार का पता लगाया जाता है।


सभी PAQ संस्करण समय में बिट की भविष्यवाणी करते हैं और संपीड़ित करते हैं, लेकिन मॉडल के विवरण और भविष्यवाणियों को संयुक्त और पोस्टप्रोसेस करने के तरीके में भिन्नता होती है। बार जब अगली-बिट संभावना निर्धारित हो जाती है, तो इसे [[अंकगणितीय कोडिंग]] द्वारा एन्कोड किया जाता है। संस्करण के आधार पर भविष्यवाणियों के संयोजन की तीन विधियाँ हैं:
सभी पी.ए.क्यू. वर्जन समय में बिट की पूर्वानुमान करते हैं और कंप्रेस करते हैं, किन्तु मॉडल के विवरण और पूर्वानुमानो को संयुक्त और पोस्टप्रोसेस करने के विधियों में भिन्नता होती है। एक बार जब अगली-बिट संभावना निर्धारित हो जाती है, तो इसे [[अंकगणितीय कोडिंग]] द्वारा एन्कोड किया जाता है। वर्जन के आधार पर पूर्वानुमानो के संयोजन की तीन विधियाँ हैं:
* PAQ1 से PAQ3 तक, प्रत्येक पूर्वानुमान को बिट गणनाओं की जोड़ी के रूप में दर्शाया जाता है <math>(n_0, n_1)</math>. इन गणनाओं को भारित योग द्वारा संयोजित किया जाता है, जिसमें लंबे संदर्भों को अधिक महत्व दिया जाता है।
*पी.ए.क्यू.1 से पी.ए.क्यू.3 तक, प्रत्येक पूर्वानुमान को बिट गणना <math>(n_0, n_1)</math> की एक जोड़ी के रूप में दर्शाया जाता है। इन गणनाओं को भारित योग द्वारा संयोजित किया जाता है, जिसमें लंबे संदर्भों को अधिक महत्व दिया जाता है।
* PAQ4 से PAQ6 में, पूर्वानुमानों को पहले की तरह संयोजित किया जाता है, लेकिन प्रत्येक मॉडल को दिए गए भार को अधिक सटीक मॉडल के पक्ष में समायोजित किया जाता है।
* पी.ए.क्यू.4 से पी.ए.क्यू.6 में, पूर्वानुमानों को पहले की तरह संयोजित किया जाता है, किन्तु प्रत्येक मॉडल को दिए गए भार को अधिक स्पष्ट मॉडल के पक्ष में समायोजित किया जाता है।
* PAQ7 और बाद में, प्रत्येक मॉडल गिनती की जोड़ी के बजाय संभावना को आउटपुट करता है। संभावनाओं को [[कृत्रिम तंत्रिका नेटवर्क]] का उपयोग करके संयोजित किया जाता है।
* पी.ए.क्यू.7 और पश्चात्  में, प्रत्येक मॉडल गिनती की जोड़ी के अतिरिक्त संभावना को आउटपुट करता है। संभावनाओं को [[कृत्रिम तंत्रिका नेटवर्क|आर्टिफिशल न्यूरल नेटवर्क]] का उपयोग करके संयोजित किया जाता है।


PAQ1SSE और बाद के संस्करण द्वितीयक प्रतीक अनुमान (SSE) का उपयोग करके भविष्यवाणी को पोस्टप्रोसेस करते हैं। किसी तालिका में नई भविष्यवाणी देखने के लिए संयुक्त भविष्यवाणी और छोटे संदर्भ का उपयोग किया जाता है। बिट एन्कोड होने के बाद, पूर्वानुमान त्रुटि को कम करने के लिए तालिका प्रविष्टि को समायोजित किया जाता है। एसएसई चरणों को विभिन्न संदर्भों के साथ पाइपलाइन किया जा सकता है या औसत आउटपुट के साथ समानांतर में गणना की जा सकती है।
पी.ए.क्यू.1एसएसई और पश्चात्  के वर्जन द्वितीयक प्रतीक अनुमान (एसएसई) का उपयोग करके पूर्वानुमान को पोस्टप्रोसेस करते हैं। किसी तालिका में नई पूर्वानुमान देखने के लिए संयुक्त पूर्वानुमान और छोटे संदर्भ का उपयोग किया जाता है। बिट एन्कोड होने के पश्चात् , पूर्वानुमान त्रुटि को कम करने के लिए तालिका प्रविष्टि को समायोजित किया जाता है। एसएसई चरणों को विभिन्न संदर्भों के साथ पाइपलाइन किया जा सकता है या औसत आउटपुट के साथ समानांतर में गणना की जा सकती है।


===अंकगणित कोडिंग===
===अंकगणित कोडिंग===


एक स्ट्रिंग s को सबसे छोटी बाइट स्ट्रिंग में संपीड़ित किया जाता है जो कि [0, 1] रेंज में बेस-256 [[बड़े एंडियन]] संख्या x का प्रतिनिधित्व करता है जैसे कि P(r < s) ≤ x < P(r ≤ s), जहां P(r < s) संभावना है कि यादृच्छिक स्ट्रिंग r जिसकी लंबाई s के समान है, [[शब्दकोषीय क्रम]] में s से कम होगी। ऐसा x खोजना हमेशा संभव है कि x की लंबाई [[शोर-चैनल कोडिंग प्रमेय]] से अधिकतम बाइट लंबी हो, -लॉग<sub>2</sub>पी(आर = एस) बिट्स. एस की लंबाई संग्रह शीर्षलेख में संग्रहीत है।
एक स्ट्रिंग s को सबसे छोटी बाइट स्ट्रिंग में कंप्रेस किया जाता है जो [0, 1] रेंज में बेस-256 बिग-एंडियन नंबर x का प्रतिनिधित्व करता है जैसे कि P(r < s) ≤ x < P(r ≤ s), जहां P(r < s) संभावना है कि एक रैंडम स्ट्रिंग r जिसकी लंबाई s के समान है, शब्दकोष की दृष्टि से s से कम होगी। ऐसा x खोजना सदैव संभव है कि x की लंबाई शैनन सीमा, −log<sub>2</sub>P(''r'' = ''s'') बिट्स से अधिक से अधिक एक बाइट अधिक हो। एस की लंबाई संग्रह शीर्षलेख में संग्रहीत है।


PAQ में अंकगणित कोडिंग प्रत्येक भविष्यवाणी के लिए x पर निचली और ऊपरी सीमा को बनाए रखते हुए कार्यान्वित की जाती है, प्रारंभ में [0, 1]। प्रत्येक भविष्यवाणी के बाद, वर्तमान सीमा को P(0) और P(1) के अनुपात में दो भागों में विभाजित किया जाता है, संभावना है कि s का अगला बिट क्रमशः 0 या 1 होगा, s के पिछले बिट्स को देखते हुए। फिर अगली बिट को नई श्रेणी के लिए संबंधित उपश्रेणी का चयन करके एन्कोड किया जाता है।
पी.ए.क्यू. में अंकगणित कोडिंग प्रत्येक पूर्वानुमान के लिए x पर निचली और ऊपरी सीमा को बनाए रखते हुए कार्यान्वित की जाती है, प्रारंभ में [0, 1]। प्रत्येक पूर्वानुमान के पश्चात् , वर्तमान सीमा को P(0) और P(1) के अनुपात में दो भागों में विभाजित किया जाता है, संभावना है कि s का अगला बिट क्रमशः 0 या 1 होगा, s के पिछले बिट्स को देखते हुए। फिर अगली बिट को नई श्रेणी के लिए संबंधित उपश्रेणी का चयन करके एन्कोड किया जाता है।


संख्या x को बिट भविष्यवाणियों की समान श्रृंखला बनाकर वापस स्ट्रिंग s में विघटित किया जाता है (चूंकि s के पिछले बिट्स ज्ञात हैं)। संपीड़न के साथ सीमा को विभाजित किया गया है। x वाला भाग नई श्रेणी बन जाता है, और संबंधित बिट को s से जोड़ दिया जाता है।
संख्या x को बिट पूर्वानुमानो की समान श्रृंखला बनाकर वापस स्ट्रिंग s में विघटित किया जाता है (चूंकि s के पिछले बिट्स ज्ञात हैं)। कंप्रेशन  के साथ सीमा को विभाजित किया गया है। जो कि x वाला भाग नई श्रेणी बन जाता है, और संबंधित बिट को s से जोड़ दिया जाता है।


PAQ में, सीमा की निचली और ऊपरी सीमा को 3 भागों में दर्शाया गया है। सबसे महत्वपूर्ण आधार-256 अंक समान हैं, इसलिए उन्हें x के अग्रणी बाइट्स के रूप में लिखा जा सकता है। अगले 4 बाइट्स को मेमोरी में रखा जाता है, ताकि प्रमुख बाइट अलग हो। अनुगामी बिट्स को निचली सीमा के लिए सभी शून्य और ऊपरी सीमा के लिए सभी शून्य माना जाता है। निचली सीमा से और बाइट लिखकर संपीड़न समाप्त किया जाता है।
पी.ए.क्यू. में, सीमा की निचली और ऊपरी सीमा को 3 भागों में दर्शाया गया है। सबसे महत्वपूर्ण आधार-256 अंक समान हैं, इसलिए उन्हें x के अग्रणी बाइट्स के रूप में लिखा जा सकता है। अगले 4 बाइट्स को मेमोरी में रखा जाता है, जिससे प्रमुख बाइट अलग हो। अनुगामी बिट्स को निचली सीमा के लिए सभी शून्य और ऊपरी सीमा के लिए सभी शून्य माना जाता है। निचली सीमा से और बाइट लिखकर कंप्रेशन  समाप्त किया जाता है।


===अनुकूली मॉडल भार===
===अनुकूली मॉडल भार===


PAQ6 के माध्यम से PAQ संस्करणों में, प्रत्येक मॉडल अलग-अलग संदर्भों के सेट को गिनती की जोड़ी में मैप करता है, <math>n_0</math>, शून्य बिट्स की गिनती, और <math>n_1</math>, 1 बिट की गिनती। हाल के इतिहास का पक्ष लेने के लिए, विपरीत बिट देखे जाने पर 2 से अधिक की आधी गिनती को छोड़ दिया जाता है। उदाहरण के लिए, यदि किसी संदर्भ से जुड़ी वर्तमान स्थिति है <math>(n_0,n_1) = (12,3)</math> और 1 देखा जाता है, तो गिनती (7, 4) में अपडेट हो जाती है।
पी.ए.क्यू.6 के माध्यम से पी.ए.क्यू. वर्जनो में, प्रत्येक मॉडल गिनती की एक जोड़ी, <math>n_0</math>, शून्य बिट्स की गिनती, और <math>n_1</math>, 1 बिट्स की गिनती के लिए अलग-अलग संदर्भों का एक सेट मैप करता है। वर्तमान के इतिहास का पक्ष लेने के लिए, विपरीत बिट देखे जाने पर 2 से अधिक की आधी गिनती को छोड़ दिया जाता है। उदाहरण के लिए, यदि किसी संदर्भ से जुड़ी वर्तमान स्थिति <math>(n_0,n_1) = (12,3)</math> है और 1 देखा जाता है, तो गिनती (7, 4) में अपडेट की जाती है।


एक बिट को अंकगणितीय रूप से उसकी संभाव्यता के आनुपातिक स्थान के साथ कोडित किया जाता है, या तो P(1) या P(0) = 1 - P(1)। संभावनाओं की गणना 0 और 1 की गणना के भारित योग द्वारा की जाती है:
एक बिट को अंकगणितीय रूप से उसकी संभाव्यता के आनुपातिक स्थान के साथ कोडित किया जाता है, या तो P(1) या P(0) = 1 - P(1)। संभावनाओं की गणना 0 और 1 की गणना के भारित योग द्वारा की जाती है:
* एस<sub>0</sub> = एस<sub>''i''</sub> w<sub>i</sub>एन<sub>0''i''</sub>,
** ''S''<sub>0</sub> = Σ<sub>''i''</sub> ''w<sub>i</sub>'' ''n''<sub>0''i''</sub>,
* एस<sub>1</sub> = एस<sub>''i''</sub> w<sub>i</sub>एन<sub>1''i''</sub>,
** ''S''<sub>1</sub> = Σ<sub>''i''</sub> ''w<sub>i</sub>'' ''n''<sub>1''i''</sub>,
* एस = एस<sub>0</sub> + एस<sub>1</sub>,
** ''S'' = ''S''<sub>0</sub> + ''S''<sub>1</sub>,
* पी(0) = एस<sub>0</sub> / एस,
** P(0) = ''S''<sub>0</sub> / ''S'',
* पी(1) = एस<sub>1</sub> / एस,
** P(1) = ''S''<sub>1</sub> / ''S'',
कहाँ डब्ल्यू<sub>i</sub>i-वें मॉडल का वजन है। PAQ3 के माध्यम से, वजन तय किया गया और तदर्थ तरीके से सेट किया गया। (आदेश-एन संदर्भों का भार एन था<sup>2</sup>.) PAQ4 से शुरुआत करते हुए, वज़न को उस दिशा में अनुकूल रूप से समायोजित किया गया था जो समान संदर्भ सेट में भविष्य की त्रुटियों को कम करेगा। यदि कोड किया जाने वाला बिट y है, तो वजन समायोजन है:
जहां ''w<sub>i</sub>'' ''i''-वें मॉडल का वजन है। पी.ए.क्यू.3 के माध्यम से, वजन तय किया गया और तदर्थ विधियों  से सेट किया गया। (ऑर्डर-''n'' संदर्भों का वजन n2 था।) पी.ए.क्यू.4 से प्रारंभ करते हुए, वजन को उस दिशा में अनुकूल रूप से समायोजित किया गया था जो समान संदर्भ सेट में भविष्य की त्रुटियों को कम करेगा। यदि कोड किया जाने वाला बिट y है, तो वजन समायोजन है:
* एन<sub>i</sub>= एन<sub>0''i''</sub> + एन<sub>1''i''</sub>,
*त्रुटि = y – P(1),
* डब्ल्यू<sub>i</sub>← वी<sub>i</sub>+ [(एस एन<sub>1''i''</sub> − एस<sub>1</sub> n<sub>i</sub>) / (एस<sub>0</sub> S<sub>1</sub>)] गलती।


===तंत्रिका-नेटवर्क मिश्रण===


PAQ7 से शुरू होकर, प्रत्येक मॉडल भविष्यवाणी आउटपुट करता है (गिनती की जोड़ी के बजाय)। ये भविष्यवाणियाँ लॉजिस्टिक डोमेन में औसत हैं:
 
* एक्स<sub>i</sub>= खिंचाव(पी<sub>''i''</sub>(1)),
** ''n<sub>i</sub>'' = ''n''<sub>0''i''</sub> + ''n''<sub>1''i''</sub>,
* पी(1) = स्क्वैश(Σ<sub>''i''</sub> w<sub>i</sub>एक्स<sub>i</sub>),
** त्रुटि = ''y'' – P(1),
जहां P(1) संभावना है कि अगला बिट 1, P होगा<sub>''i''</sub>(1) आई-वें मॉडल द्वारा अनुमानित संभावना है, और
** ''w<sub>i</sub>'' ← ''w<sub>i</sub>'' + [(''S'' ''n''<sub>1''i''</sub> − ''S''<sub>1</sub> ''n<sub>i</sub>'') / (''S''<sub>0</sub> ''S''<sub>1</sub>)] त्रुटि.
 
===न्यूरल-नेटवर्क मिश्रण===
 
पी.ए.क्यू.7 से प्रारंभ होकर, प्रत्येक मॉडल पूर्वानुमान आउटपुट करता है (गिनती की जोड़ी के अतिरिक्त )। ये पूर्वानुमान  लॉजिस्टिक डोमेन में औसत हैं:
* ''x<sub>i</sub>'' = खिंचाव(P<sub>''i''</sub>(1)),
* P(1) = स्क्वैश(Σ<sub>''i''</sub> ''w<sub>i</sub>'' ''x<sub>i</sub>''),
जहां P(1) संभावना है कि अगला बिट 1, P होगा<sub>''i''</sub>(1) i -वें मॉडल द्वारा अनुमानित संभावना है, और
* खिंचाव(x) = ln(x / (1 − x)),
* खिंचाव(x) = ln(x / (1 − x)),
* स्क्वैश(x) = 1 / (1 + <sup>−x</sup>) (खिंचाव का उलटा)।
* स्क्वैश(x) = 1 / (1 + ''e''<sup>−''x''</sup>) (खिंचाव का व्युत्क्रम)।
**
**


प्रत्येक भविष्यवाणी के बाद, कोडिंग लागत को कम करने के लिए वजन को समायोजित करके मॉडल को अपडेट किया जाता है:
प्रत्येक पूर्वानुमान के पश्चात् , कोडिंग कास्ट को कम करने के लिए वजन को समायोजित करके मॉडल को अपडेट किया जाता है:
* डब्ल्यू<sub>i</sub>← वी<sub>i</sub>+ एक्स<sub>i</sub>(वाई - पी(1)),
** ''w<sub>i</sub>'' ''w<sub>i</sub>'' + η ''x<sub>i</sub>'' (''y'' − P(1)),
जहां η [[सीखने की दर]] है (आमतौर पर 0.002 से 0.01), y अनुमानित बिट है, और (y − P(1)) भविष्यवाणी त्रुटि है। वेट अपडेट एल्गोरिदम [[पश्चप्रचार]] से अलग है जिसमें P(1)P(0) शब्द हटा दिए जाते हैं। ऐसा इसलिए है क्योंकि तंत्रिका नेटवर्क का लक्ष्य कोडिंग लागत को कम करना है, न कि मूल माध्य वर्ग त्रुटि।
**
'''जहां η [[सीखने की दर]] है (आमतौर पर 0.002 से 0.01), y अनुमानित बिट है, और (y − P(1''')) पूर्वानुमान त्रुटि है। वेट अपडेट एल्गोरिदम [[पश्चप्रचार]] से अलग है जिसमें P(1)P(0) शब्द हटा दिए जाते हैं। ऐसा इसलिए है क्योंकि तंत्रिका नेटवर्क का लक्ष्य कोडिंग कास्ट को कम करना है, न कि मूल माध्य वर्ग त्रुटि।


पीएक्यू के अधिकांश संस्करण तंत्रिका नेटवर्क के लिए वजन के सेट के बीच चयन करने के लिए छोटे संदर्भ का उपयोग करते हैं। कुछ संस्करण एकाधिक नेटवर्क का उपयोग करते हैं जिनके आउटपुट एसएसई चरणों से पहले और नेटवर्क के साथ संयुक्त होते हैं। इसके अलावा, प्रत्येक इनपुट भविष्यवाणी के लिए कई इनपुट हो सकते हैं जो पी के गैर-रेखीय कार्य हैं<sub>''i''</sub>(1) खिंचाव के अतिरिक्त (पी(1))।
पीएक्यू के अधिकांश वर्जन तंत्रिका नेटवर्क के लिए वजन के सेट के बीच चयन करने के लिए छोटे संदर्भ का उपयोग करते हैं। कुछ वर्जन एकाधिक नेटवर्क का उपयोग करते हैं जिनके आउटपुट एसएसई चरणों से पहले और नेटवर्क के साथ संयुक्त होते हैं। इसके अलावा, प्रत्येक इनपुट पूर्वानुमान के लिए अनेक इनपुट हो सकते हैं जो पी के गैर-रेखीय कार्य हैं<sub>''i''</sub>(1) खिंचाव के अतिरिक्त (पी(1))।


===संदर्भ मॉडलिंग===
===संदर्भ मॉडलिंग===


प्रत्येक मॉडल एस के ज्ञात बिट्स को संदर्भों के सेट में विभाजित करता है और प्रत्येक संदर्भ को 8-बिट स्थिति द्वारा दर्शाए गए बिट इतिहास में मैप करता है। PAQ6 के माध्यम से संस्करणों में, राज्य काउंटरों की जोड़ी का प्रतिनिधित्व करता है (एन<sub>0</sub>, एन<sub>1</sub>). PAQ7 और बाद के संस्करणों में कुछ शर्तों के तहत, स्थिति अंतिम बिट या संपूर्ण अनुक्रम के मूल्य का भी प्रतिनिधित्व करती है। प्रत्येक मॉडल के लिए 256-प्रविष्टि तालिका का उपयोग करके राज्यों को संभावनाओं के आधार पर मैप किया जाता है। मॉडल द्वारा भविष्यवाणी के बाद, भविष्यवाणी त्रुटि को कम करने के लिए तालिका प्रविष्टि को थोड़ा (आमतौर पर 0.4%) समायोजित किया जाता है।
प्रत्येक मॉडल एस के ज्ञात बिट्स को संदर्भों के सेट में विभाजित करता है और प्रत्येक संदर्भ को 8-बिट स्थिति द्वारा दर्शाए गए बिट इतिहास में मैप करता है। पी.ए.क्यू.6 के माध्यम से वर्जनो में, राज्य काउंटरों की जोड़ी का प्रतिनिधित्व करता है (एन<sub>0</sub>, एन<sub>1</sub>). पी.ए.क्यू.7 और पश्चात्  के वर्जनो में कुछ शर्तों के तहत, स्थिति अंतिम बिट या संपूर्ण अनुक्रम के मूल्य का भी प्रतिनिधित्व करती है। प्रत्येक मॉडल के लिए 256-प्रविष्टि तालिका का उपयोग करके राज्यों को संभावनाओं के आधार पर मैप किया जाता है। मॉडल द्वारा पूर्वानुमान के पश्चात् , पूर्वानुमान त्रुटि को कम करने के लिए तालिका प्रविष्टि को थोड़ा (आमतौर पर 0.4%) समायोजित किया जाता है।


सभी PAQ8 संस्करणों में, प्रतिनिधित्व योग्य स्थितियाँ इस प्रकार हैं:
सभी पी.ए.क्यू.8 वर्जनो में, प्रतिनिधित्व योग्य स्थितियाँ इस प्रकार हैं:
* 4 बिट तक के लिए सटीक बिट अनुक्रम।
* 4 बिट तक के लिए स्पष्ट बिट अनुक्रम।
* 5 से 15 बिट्स के अनुक्रमों के लिए गिनती की जोड़ी और नवीनतम बिट का संकेतक।
* 5 से 15 बिट्स के अनुक्रमों के लिए गिनती की जोड़ी और नवीनतम बिट का संकेतक।
* 16 से 41 बिट्स के अनुक्रमों के लिए गिनती की जोड़ी।
* 16 से 41 बिट्स के अनुक्रमों के लिए गिनती की जोड़ी।
Line 77: Line 84:
अधिकांश संदर्भ मॉडल [[हैश तालिका]]ओं के रूप में कार्यान्वित किए जाते हैं। कुछ छोटे संदर्भों को प्रत्यक्ष लुकअप तालिकाओं के रूप में कार्यान्वित किया जाता है।
अधिकांश संदर्भ मॉडल [[हैश तालिका]]ओं के रूप में कार्यान्वित किए जाते हैं। कुछ छोटे संदर्भों को प्रत्यक्ष लुकअप तालिकाओं के रूप में कार्यान्वित किया जाता है।


===पाठ प्रीप्रोसेसिंग===
===टेक्स्ट प्रीप्रोसेसिंग===


PAQ के कुछ संस्करण, विशेष रूप से PAsQDa, PAQAR (दोनों PAQ6 डेरिवेटिव), और PAQ8HP1 से PAQ8HP8 (PAQ8 डेरिवेटिव और [[हटर पुरस्कार]] प्राप्तकर्ता) बाहरी शब्दकोश में शब्दों को देखकर और उन्हें 1- से 3-बाइट कोड के साथ बदलकर टेक्स्ट फ़ाइलों को प्रीप्रोसेस करते हैं। . इसके अलावा, अपरकेस अक्षरों को विशेष वर्ण के साथ एन्कोड किया जाता है जिसके बाद लोअरकेस अक्षर आते हैं। PAQ8HP श्रृंखला में, शब्दकोश को वाक्यात्मक और शब्दार्थ संबंधी शब्दों को साथ समूहित करके व्यवस्थित किया जाता है। यह मॉडलों को संदर्भ के रूप में शब्दकोश कोड के सबसे महत्वपूर्ण बिट्स का उपयोग करने की अनुमति देता है।
पी.ए.क्यू. के कुछ संस्करण, विशेष रूप से PAsQDa, पी.ए.क्यू.AR (दोनों पी.ए.क्यू.6 डेरिवेटिव), और पी.ए.क्यू.8HP1 से पी.ए.क्यू.8HP8 (पी.ए.क्यू.8 डेरिवेटिव और [[हटर पुरस्कार]] प्राप्तकर्ता) बाहरी शब्दकोश में शब्दों को देखकर और उन्हें 1- से 3-बाइट कोड के साथ बदलकर टेक्स्ट फ़ाइलों को प्रीप्रोसेस करते हैं। . इसके अलावा, अपरकेस अक्षरों को विशेष वर्ण के साथ एन्कोड किया जाता है जिसके पश्चात्  लोअरकेस अक्षर आते हैं। पी.ए.क्यू.8HP श्रृंखला में, शब्दकोश को वाक्यात्मक और शब्दार्थ संबंधी शब्दों को साथ समूहित करके व्यवस्थित किया जाता है। यह मॉडलों को संदर्भ के रूप में शब्दकोश कोड के सबसे महत्वपूर्ण बिट्स का उपयोग करने की अनुमति देता है।


==तुलना==
==तुलना==


निम्नलिखित तालिका मैट महोनी द्वारा [http://mattmahoney.net/dc/text.html बड़े टेक्स्ट संपीड़न बेंचमार्क] से नमूना है जिसमें 10 वाली फ़ाइल शामिल है<sup>[[अंग्रेजी विकिपीडिया]] पाठ के 9</sup> बाइट्स (1 [[गीगाबाइट]], या 0.931 [[GiB]])।
निम्नलिखित तालिका मैट महोनी द्वारा [http://mattmahoney.net/dc/text.html बड़े टेक्स्ट कंप्रेशन  बेंचमार्क] से नमूना है जिसमें 10 वाली फ़ाइल सम्मिलित है<sup>[[अंग्रेजी विकिपीडिया]] टेक्स्ट के 9</sup> बाइट्स (1 [[गीगाबाइट]], या 0.931 [[GiB]])।


{| class="wikitable"
{| class="wikitable"
!कार्यक्रम
!कंप्रेस आकार (बाइट्स)
!मूल आकार का %
!कंप्रेशन  समय ( एनएस / बी )
!मेमोरी (एमआईबी)
|-
|-
! Program
|पीएक्यू8एचपी8
! Compressed size (bytes)
|133,423,109
! % of original size
|13.34
! Compression time ([[nanosecond|ns]]/[[byte|B]])
|64 639
! Memory (MiB)
|1849
|-
| PAQ8HP8
| 133,423,109
| {{#expr: ((133423109/1000000000)*100) round 2}}
| 64 639
| 1849
|-
|-
| [[Prediction by partial matching#PPMd|PPMd]]
|पी.पी.एम.डी
| 183,976,014
|183,976,014
| {{#expr: ((183976014/1000000000)*100) round 2}}
|18.4
| 880
|880
| 256
|256
|-
|-
| [[bzip2]]
|बीजेआईपी 2
| 254,007,875
|254,007,875
| {{#expr: ((254007875/1000000000)*100) round 2}}
|25.4
| 379
|379
| 8
|8
|-
|-
| [[Infozip|InfoZIP]]
|इन्फोज़िप
| 322,649,703
|322,649,703
| {{#expr: ((322649703/1000000000)*100) round 2}}
|32.26
| 104
|104
| 0.1
|0.1
|}
|}
फ़ाइल संपीड़न बेंचमार्क की सूची के लिए दोषरहित संपीड़न#बेंचमार्क देखें।
फ़ाइल कंप्रेशन  बेंचमार्क की सूची के लिए लॉसलेस  कंप्रेशन #बेंचमार्क देखें।


==इतिहास==
==इतिहास==


निम्नलिखित PAQ एल्गोरिथम के प्रमुख संवर्द्धनों को सूचीबद्ध करता है। इसके अलावा, बड़ी संख्या में वृद्धिशील सुधार हुए हैं, जिन्हें छोड़ दिया गया है।
निम्नलिखित पी.ए.क्यू. एल्गोरिथम के प्रमुख संवर्द्धनों को सूचीबद्ध करता है। इसके अलावा, बड़ी संख्या में वृद्धिशील सुधार हुए हैं, जिन्हें छोड़ दिया गया है।


* PAQ1 को 6 जनवरी 2002 को मैट महोनी द्वारा जारी किया गया था। इसमें निश्चित वजन का उपयोग किया गया था और इसमें एनालॉग या विरल मॉडल शामिल नहीं था।
* पी.ए.क्यू.1 को 6 जनवरी 2002 को मैट महोनी द्वारा जारी किया गया था। इसमें निश्चित वजन का उपयोग किया गया था और इसमें एनालॉग या विरल मॉडल सम्मिलित नहीं था।
* PAQ1SSE/PAQ2 को 11 मई 2003 को सर्ज ओस्नाच द्वारा जारी किया गया था। इसने भविष्यवक्ता और एनकोडर के बीच माध्यमिक प्रतीक अनुमान (एसएसई) चरण जोड़कर संपीड़न में उल्लेखनीय सुधार किया। एसएसई संक्षिप्त संदर्भ और वर्तमान भविष्यवाणी इनपुट करता है और तालिका से नई भविष्यवाणी आउटपुट करता है। फिर वास्तविक बिट मान को प्रतिबिंबित करने के लिए तालिका प्रविष्टि को समायोजित किया जाता है।
* पी.ए.क्यू.1SSE/पी.ए.क्यू.2 को 11 मई 2003 को सर्ज ओस्नाच द्वारा जारी किया गया था। इसने भविष्यवक्ता और एनकोडर के बीच माध्यमिक प्रतीक अनुमान (एसएसई) चरण जोड़कर कंप्रेशन  में उल्लेखनीय सुधार किया। एसएसई संक्षिप्त संदर्भ और वर्तमान पूर्वानुमान इनपुट करता है और तालिका से नई पूर्वानुमान आउटपुट करता है। फिर वास्तविक बिट मान को प्रतिबिंबित करने के लिए तालिका प्रविष्टि को समायोजित किया जाता है।
* 9 अक्टूबर 2003 को जारी PAQ3N ने विरल मॉडल जोड़ा।
* 9 अक्टूबर 2003 को जारी पी.ए.क्यू.3N ने विरल मॉडल जोड़ा।
* मैट महोनी द्वारा 15 नवंबर 20