Probabilistic programming
સંભવિત પ્રોગ્રામિંગ (પી. પી.) એ એક પ્રોગ્રામિંગ પ્રતિમાન છે જેમાં સંભવિત મોડેલો નિર્દિષ્ટ કરવામાં આવે છે અને આ મોડેલો માટેનું અનુમાન આપમેળે કરવામાં આવે છે. તે સંભવિત મોડેલિંગ અને પરંપરાગત સામાન્ય હેતુના પ્રોગ્રામિંગને એકીકૃત કરવાના પ્રયાસને રજૂ કરે છે જેથી પહેલાને સરળ અને વધુ વ્યાપક રીતે લાગુ કરી શકાય. તેનો ઉપયોગ એવી પ્રણાલીઓ બનાવવા માટે થઈ શકે છે જે અનિશ્ચિતતાનો સામનો કરતી વખતે નિર્ણયો લેવામાં મદદ કરે. સંભવિત પ્રોગ્રામિંગ માટે ઉપયોગમાં લેવાતી પ્રોગ્રામિંગ ભાષાઓને "સંભવિત પ્રોગ્રામિંગ ભાષાઓ" (પી. પી. એલ.) તરીકે ઓળખવામાં આવે છે. એપ્લિકેશન્સ સંભવિત તર્કનો ઉપયોગ વિવિધ પ્રકારના કાર્યો માટે કરવામાં આવે છે જેમ કે શેરની કિંમતોની આગાહી કરવી, ફિલ્મોની ભલામણ કરવી, કમ્પ્યુટરનું નિદાન કરવું, સાયબર ઘૂસણખોરી શોધવી અને છબી શોધવી. જો કે, તાજેતરમાં સુધી (આંશિક રીતે મર્યાદિત કમ્પ્યુટિંગ શક્તિને કારણે), સંભવિત પ્રોગ્રામિંગ અવકાશમાં મર્યાદિત હતું, અને મોટાભાગના અનુમાન અલ્ગોરિધમ્સને દરેક કાર્ય માટે જાતે લખવું પડતું હતું. તેમ છતાં, 2015 માં, 50-લાઇનના સંભવિત કમ્પ્યુટર વિઝન પ્રોગ્રામનો ઉપયોગ તે ચહેરાની 2D છબીઓના આધારે માનવ ચહેરાના 3D મોડેલ્સ બનાવવા માટે કરવામાં આવ્યો હતો. પ્રોગ્રામ તેની અનુમાન પદ્ધતિના આધાર તરીકે ઇન્વર્સ ગ્રાફિક્સનો ઉપયોગ કરે છે, અને જુલિયામાં પિક્ચર પેકેજનો ઉપયોગ કરીને બનાવવામાં આવ્યો હતો. આનાથી "કોડની 50 પંક્તિઓમાં જે હજારો લેતા હતા" તે શક્ય બન્યું. જનરલ પ્રોબેબિલિસ્ટિક પ્રોગ્રામિંગ લાઇબ્રેરી (જુલિયામાં પણ લખાયેલી) દ્રષ્ટિ અને રોબોટિક્સ કાર્યો માટે લાગુ કરવામાં આવી છે. તાજેતરમાં, સંભવિત પ્રોગ્રામિંગ સિસ્ટમ Turing.jl વિવિધ ફાર્માસ્યુટિકલ અને અર્થશાસ્ત્રના ઉપયોગોમાં લાગુ કરવામાં આવી છે. જુલિયામાં સંભવિત પ્રોગ્રામિંગને પણ જુલિયા પેકેજ Zygote.jl ને Turing.jl સાથે જોડીને વિભેદક પ્રોગ્રામિંગ સાથે જોડવામાં આવ્યું છે. સંભવિત પ્રોગ્રામિંગ ભાષાઓનો ઉપયોગ સામાન્ય રીતે બાયેસિયન જ્ઞાનાત્મક વિજ્ઞાનમાં સમજશક્તિના નમૂનાઓ વિકસાવવા અને તેનું મૂલ્યાંકન કરવા માટે થાય છે. સંભવિત પ્રોગ્રામિંગ ભાષાઓ પી. પી. એલ. ઘણીવાર મૂળભૂત ભાષાથી વિસ્તરે છે. અંતર્ગત મૂળભૂત ભાષાની પસંદગી મૂળભૂત ભાષાના તત્ત્વજ્ઞાન સાથે મોડેલની સમાનતા, તેમજ વ્યાવસાયિક વિચારણાઓ અને વ્યક્તિગત પસંદગી પર આધારિત છે. દાખલા તરીકે, ડિમ્પલ અને ચિમ્પલ જાવા પર આધારિત છે, Infer.NET ડોટ નેટ ફ્રેમવર્ક પર આધારિત છે, જ્યારે PRISM પ્રોલોગથી વિસ્તરે છે. જો કે, વિનબ્યુજીએસ જેવી કેટલીક પી. પી. એલ. સ્વ-સમાવિષ્ટ ભાષા પ્રદાન કરે છે, જે અન્ય પ્રોગ્રામિંગ ભાષામાં કોઈ સ્પષ્ટ મૂળ વિના, આંકડાકીય નમૂનાઓની ગાણિતિક રજૂઆત સાથે નજીકથી નકશો બનાવે છે. ગિબ્સ સેમ્પલિંગ (અને સંબંધિત અલ્ગોરિધમ્સ) નો ઉપયોગ કરીને બાયેસિયન ગણતરી કરવા માટે વિનબગ માટેની ભાષાનો અમલ કરવામાં આવ્યો હતો. પ્રમાણમાં જૂની પ્રોગ્રામિંગ ભાષા (પાસ્કલ) માં લાગુ કરવામાં આવી હોવા છતાં, આ ભાષા લવચીક કોમ્પ્યુટેશનલ અભિગમનો ઉપયોગ કરીને વિવિધ પ્રકારના આંકડાકીય નમૂનાઓ માટે બાયેસિયન અનુમાનને મંજૂરી આપે છે. સમાન BUGS ભાષાનો ઉપયોગ વિવિધ કોમ્પ્યુટેશનલ પસંદગીઓ ("સેમ્પ્લર્સ") અને સંમેલનો અથવા ડિફોલ્ટ્સ દ્વારા અનુમાન માટે બાયેસિયન મોડેલ્સને સ્પષ્ટ કરવા માટે થઈ શકે છે, જેમાં એકલ પેકેજ વિનબ્યુજીએસ (અથવા સંબંધિત આર પેકેજો, આરબગ્સ અને આર2વિનબગ્સ) અને જેએજીએસ (જસ્ટ અનધર ગિબ્સ સેમ્પ્લર, અન્ય આર પેકેજ) નો ઉપયોગ થાય છે. તાજેતરમાં, બાયેસિયન મોડેલ સ્પષ્ટીકરણ અને અનુમાનને ટેકો આપવા માટેની અન્ય ભાષાઓ અંતર્ગત બાયેસિયન ગણતરી માટે વિવિધ અથવા વધુ કાર્યક્ષમ પસંદગીઓને મંજૂરી આપે છે, અને આર ડેટા વિશ્લેષણ અને પ્રોગ્રામિંગ વાતાવરણમાંથી સુલભ છે, દા. ત. : સ્ટાન, નિમ્બલ અને નટ્સ. BUGS ભાષાનો પ્રભાવ આ પછીની ભાષાઓમાં સ્પષ્ટ છે, જે મોડેલ સ્પષ્ટીકરણના કેટલાક પાસાઓ માટે સમાન વાક્યરચનાનો પણ ઉપયોગ કરે છે. કેટલાક પી. પી. એલ. સક્રિય વિકાસમાં છે, જેમાં કેટલાક બીટા પરીક્ષણમાં છે. બે લોકપ્રિય સાધનો સ્ટેન અને પીવાયએમસી છે. પ્રોબેબિલિસ્ટિક રીલેશ્નલ પ્રોગ્રામિંગ લેંગ્વેજ (પી. આર. પી. એલ.) એ પી. પી. એલ. છે જે ખાસ કરીને પ્રોબેબિલિસ્ટિક રીલેશ્નલ મોડલ્સ (પી. આર. એમ.) નું વર્ણન કરવા અને અનુમાન લગાવવા માટે રચાયેલ છે. પી. આર. એમ. સામાન્ય રીતે સંબંધિત વિતરણોને ઘટાડવા, તેના વિશે અનુમાન લગાવવા અને તેની શોધ કરવા માટે એલ્ગોરિધમ્સના સમૂહ સાથે વિકસાવવામાં આવે છે, જે અનુરૂપ પી. આર. પી. એલ. માં સમાવિષ્ટ હોય છે. સંભવિત પ્રોગ્રામિંગ ભાષાઓની સૂચિ આ સૂચિ હાલમાં ઉપલબ્ધ પી. પી. એલ. ની વિવિધતાનો સારાંશ આપે છે અને તેમની ઉત્પત્તિને સ્પષ્ટ કરે છે. મુશ્કેલી સંભાવના વિતરણ તરીકે ચલ વિશે તર્ક કરવો શિખાઉ પ્રોગ્રામરો માટે મુશ્કેલીઓનું કારણ બને છે, પરંતુ આ મુશ્કેલીઓને બાયેસિયન નેટવર્ક વિઝ્યુલાઇઝેશન અને સ્રોત કોડ એડિટરમાં જડિત ચલ વિતરણોના ગ્રાફના ઉપયોગ દ્વારા સંબોધિત કરી શકાય છે. આંકડાકીય રીલેશ્નલ લર્નિંગ ઇન્ડક્ટિવ પ્રોગ્રામિંગ બાયેસિયન પ્રોગ્રામિંગ પ્લેટ નોટેશન નોંધો બાહ્ય કડીઓ સંભવિત મોડેલ મિની લેંગ્વેજ ટૂલકિટ્સની સૂચિ સંભવિત પ્રોગ્રામિંગ વિકિ સંભવિત સોફ્ટવેર પ્રોગ્રામિંગ દાખલાઓ પણ જુઓ.