Probabilistic programming
ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ (ಪಿಪಿ) ಒಂದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಯಾಗಿದ್ದು, ಇದರಲ್ಲಿ ಸಂಭವನೀಯ ಮಾದರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಈ ಮಾದರಿಗಳ ತೀರ್ಮಾನವನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಡೆಸಲಾಗುತ್ತದೆ. ಇದು ಮೊದಲನೆಯದನ್ನು ಸುಲಭವಾಗಿ ಮತ್ತು ಹೆಚ್ಚು ವ್ಯಾಪಕವಾಗಿ ಅನ್ವಯಿಸುವ ಸಲುವಾಗಿ ಸಂಭವನೀಯ ಮಾದರಿ ಮತ್ತು ಸಾಂಪ್ರದಾಯಿಕ ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಏಕೀಕರಿಸುವ ಪ್ರಯತ್ನವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಅನಿಶ್ಚಿತತೆಯ ನಡುವೆಯೂ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡುವ ವ್ಯವಸ್ಥೆಗಳನ್ನು ರಚಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದು. ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗಾಗಿ ಬಳಸುವ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು "ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು" (ಪಿಪಿಎಲ್ಗಳು) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸ್ಟಾಕ್ ಬೆಲೆಗಳನ್ನು ಊಹಿಸುವುದು, ಚಲನಚಿತ್ರಗಳನ್ನು ಶಿಫಾರಸು ಮಾಡುವುದು, ಕಂಪ್ಯೂಟರ್ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು, ಸೈಬರ್ ಒಳನುಸುಳುವಿಕೆಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಮತ್ತು ಚಿತ್ರವನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಮುಂತಾದ ವಿವಿಧ ಕಾರ್ಯಗಳಿಗೆ ಸಂಭವನೀಯ ತಾರ್ಕಿಕತೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಇತ್ತೀಚಿನವರೆಗೂ (ಭಾಗಶಃ ಸೀಮಿತ ಕಂಪ್ಯೂಟಿಂಗ್ ಶಕ್ತಿಯ ಕಾರಣದಿಂದಾಗಿ), ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವ್ಯಾಪ್ತಿಯು ಸೀಮಿತವಾಗಿತ್ತು, ಮತ್ತು ಹೆಚ್ಚಿನ ತೀರ್ಮಾನ ಕ್ರಮಾವಳಿಗಳನ್ನು ಪ್ರತಿ ಕಾರ್ಯಕ್ಕೂ ಕೈಯಿಂದ ಬರೆಯಬೇಕಾಗಿತ್ತು. ಆದಾಗ್ಯೂ, 2015 ರಲ್ಲಿ, ಆ ಮುಖಗಳ 2ಡಿ ಚಿತ್ರಗಳ ಆಧಾರದ ಮೇಲೆ ಮಾನವ ಮುಖಗಳ 3ಡಿ ಮಾದರಿಗಳನ್ನು ರಚಿಸಲು 50-ಸಾಲಿನ ಸಂಭವನೀಯ ಕಂಪ್ಯೂಟರ್ ದೃಷ್ಟಿ ಕಾರ್ಯಕ್ರಮವನ್ನು ಬಳಸಲಾಯಿತು. ಪ್ರೋಗ್ರಾಂ ತನ್ನ ತೀರ್ಮಾನ ವಿಧಾನದ ಆಧಾರವಾಗಿ ವಿಲೋಮ ಗ್ರಾಫಿಕ್ಸ್ ಅನ್ನು ಬಳಸಿತು ಮತ್ತು ಜೂಲಿಯಾದಲ್ಲಿ ಪಿಕ್ಚರ್ ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಬಳಸಿ ನಿರ್ಮಿಸಲಾಗಿದೆ. ಇದು ಸಾಧ್ಯವಾಯಿತು "50 ಸಾಲುಗಳ ಕೋಡ್ನಲ್ಲಿ ಸಾವಿರಾರು ತೆಗೆದುಕೊಳ್ಳುತ್ತಿತ್ತು". ಜೆನ್ ಪ್ರೋಬಬಿಲಿಸ್ಟಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಲೈಬ್ರರಿಯನ್ನು (ಜೂಲಿಯಾದಲ್ಲಿಯೂ ಬರೆಯಲಾಗಿದೆ) ದೃಷ್ಟಿ ಮತ್ತು ರೊಬೊಟಿಕ್ಸ್ ಕಾರ್ಯಗಳಿಗೆ ಅನ್ವಯಿಸಲಾಗಿದೆ. ತೀರಾ ಇತ್ತೀಚೆಗೆ, ಸಂಭಾವ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಿಸ್ಟಮ್ Turing.jl ಅನ್ನು ವಿವಿಧ ಔಷಧೀಯ ಮತ್ತು ಆರ್ಥಿಕ ಅನ್ವಯಿಕೆಗಳಲ್ಲಿ ಅನ್ವಯಿಸಲಾಗಿದೆ. ಜೂಲಿಯಾದಲ್ಲಿನ ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಜೂಲಿಯಾ ಪ್ಯಾಕೇಜ್ Zygote.jl ಅನ್ನು Turing.jl ನೊಂದಿಗೆ ಸಂಯೋಜಿಸುವ ಮೂಲಕ ವಿಭಿನ್ನವಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ. ಅರಿವಿನ ಮಾದರಿಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲು ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಬಯೇಸಿಯನ್ ಅರಿವಿನ ವಿಜ್ಞಾನದಲ್ಲಿ ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳನ್ನು ಸಹ ಸಾಮಾನ್ಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಸಂಭಾವ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಪಿಪಿಎಲ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಮೂಲ ಭಾಷೆಯಿಂದ ವಿಸ್ತರಿಸುತ್ತವೆ. ಆಧಾರವಾಗಿರುವ ಮೂಲಭೂತ ಭಾಷೆಯ ಆಯ್ಕೆಯು ಮೂಲ ಭಾಷೆಯ ಮೂಲತತ್ವಕ್ಕೆ ಮಾದರಿಯ ಹೋಲಿಕೆಯನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ, ಜೊತೆಗೆ ವಾಣಿಜ್ಯ ಪರಿಗಣನೆಗಳು ಮತ್ತು ವೈಯಕ್ತಿಕ ಆದ್ಯತೆಯನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಡಿಂಪಲ್ ಮತ್ತು ಚಿಂಪಲ್ ಜಾವಾವನ್ನು ಆಧರಿಸಿವೆ, Infer.NET. NET ಚೌಕಟ್ಟನ್ನು ಆಧರಿಸಿದೆ, ಆದರೆ PRISM ಪ್ರೊಲಾಗ್ನಿಂದ ವಿಸ್ತರಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ವಿನ್ಬಗ್ಸ್ನಂತಹ ಕೆಲವು ಪಿಪಿಎಲ್ಗಳು ಸ್ವಯಂ-ಒಳಗೊಂಡಿರುವ ಭಾಷೆಯನ್ನು ನೀಡುತ್ತವೆ, ಇದು ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಮಾದರಿಗಳ ಗಣಿತದ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಹತ್ತಿರವಾಗಿ ನಕ್ಷೆ ಮಾಡುತ್ತದೆ, ಮತ್ತೊಂದು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಲ್ಲಿ ಯಾವುದೇ ಸ್ಪಷ್ಟ ಮೂಲವಿಲ್ಲ. ಗಿಬ್ಸ್ ಸ್ಯಾಂಪ್ಲಿಂಗ್ (ಮತ್ತು ಸಂಬಂಧಿತ ಕ್ರಮಾವಳಿಗಳು) ಬಳಸಿ ಬೇಯೇಶಿಯನ್ ಗಣನೆಯನ್ನು ನಿರ್ವಹಿಸಲು ವಿನ್ಬಗ್ಸ್ನ ಭಾಷೆಯನ್ನು ಅಳವಡಿಸಲಾಯಿತು. ತುಲನಾತ್ಮಕವಾಗಿ ಹಳೆಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಲ್ಲಿ (ಪ್ಯಾಸ್ಕಲ್) ಅಳವಡಿಸಲಾಗಿದ್ದರೂ, ಈ ಭಾಷೆಯು ಹೊಂದಿಕೊಳ್ಳುವ ಕಂಪ್ಯೂಟೇಶನಲ್ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ವಿವಿಧ ರೀತಿಯ ಸಂಖ್ಯಾಶಾಸ್ತ್ರೀಯ ಮಾದರಿಗಳಿಗೆ ಬೇಯೇಶಿಯನ್ ತೀರ್ಮಾನವನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಒಂದೇ ರೀತಿಯ ಬಗ್ಸ್ ಭಾಷೆಯನ್ನು ವಿಭಿನ್ನ ಗಣನೆಯ ಆಯ್ಕೆಗಳು ("ಸ್ಯಾಂಪ್ಲರ್ಗಳು") ಮತ್ತು ಸಂಪ್ರದಾಯಗಳು ಅಥವಾ ಡೀಫಾಲ್ಟ್ಗಳ ಮೂಲಕ ತೀರ್ಮಾನಕ್ಕಾಗಿ ಬೇಯೇಶಿಯನ್ ಮಾದರಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು, ಸ್ವತಂತ್ರ ಪ್ಯಾಕೇಜ್ ವಿನ್ ಬಗ್ಸ್ (ಅಥವಾ ಸಂಬಂಧಿತ ಆರ್ ಪ್ಯಾಕೇಜ್ಗಳು, ಆರ್ಬಗ್ಗಳು ಮತ್ತು ಆರ್ 2 ವಿನ್ ಬಗ್ಗಳು) ಮತ್ತು ಜೆಎಜಿಎಸ್ (ಜಸ್ಟ್ ಅನದರ್ ಗಿಬ್ಸ್ ಸ್ಯಾಂಪ್ಲರ್, ಮತ್ತೊಂದು ಆರ್ ಪ್ಯಾಕೇಜ್) ಅನ್ನು ಬಳಸಬಹುದು. ತೀರಾ ಇತ್ತೀಚೆಗೆ, ಬಯೇಸಿಯನ್ ಮಾದರಿ ವಿವರಣೆ ಮತ್ತು ತೀರ್ಮಾನವನ್ನು ಬೆಂಬಲಿಸುವ ಇತರ ಭಾಷೆಗಳು ಆಧಾರವಾಗಿರುವ ಬಯೇಸಿಯನ್ ಗಣನೆಗೆ ವಿಭಿನ್ನ ಅಥವಾ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿ ಆಯ್ಕೆಗಳನ್ನು ಅನುಮತಿಸುತ್ತವೆ, ಮತ್ತು ಆರ್ ದತ್ತಾಂಶ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪರಿಸರದಿಂದ ಪ್ರವೇಶಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ. : ಸ್ಟ್ಯಾನ್, ನಿಂಬಲ್ ಮತ್ತು ನಟ್ಸ್. ಮಾದರಿ ನಿರ್ದಿಷ್ಟತೆಯ ಕೆಲವು ಅಂಶಗಳಿಗೆ ಅದೇ ವಾಕ್ಯರಚನೆಯನ್ನು ಬಳಸುವ ಈ ನಂತರದ ಭಾಷೆಗಳಲ್ಲಿ ಬುಗ್ಸ್ ಭಾಷೆಯ ಪ್ರಭಾವವು ಸ್ಪಷ್ಟವಾಗಿದೆ. ಕೆಲವು ಬೀಟಾ ಪರೀಕ್ಷೆಯನ್ನು ಒಳಗೊಂಡಂತೆ ಹಲವಾರು ಪಿಪಿಎಲ್ಗಳು ಸಕ್ರಿಯ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿವೆ. ಎರಡು ಜನಪ್ರಿಯ ಸಾಧನಗಳೆಂದರೆ ಸ್ಟ್ಯಾನ್ ಮತ್ತು ಪೈಎಂಸಿ. ಸಂಭವನೀಯ ಸಂಬಂಧದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯು (ಪಿಆರ್ಪಿಎಲ್) ಸಂಭಾವ್ಯ ಸಂಬಂಧದ ಮಾದರಿಗಳನ್ನು (ಪಿಆರ್ಎಂ) ವಿವರಿಸಲು ಮತ್ತು ಊಹಿಸಲು ವಿಶೇಷವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಪಿಪಿಎಲ್ ಆಗಿದೆ. ಪಿಆರ್ಎಂ ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸಂಬಂಧಿತ ವಿತರಣೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು, ನಿರ್ಣಯಿಸಲು ಮತ್ತು ಕಂಡುಹಿಡಿಯಲು ಕ್ರಮಾವಳಿಗಳ ಗುಂಪಿನೊಂದಿಗೆ ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗುತ್ತದೆ, ಇವುಗಳನ್ನು ಅನುಗುಣವಾದ ಪಿಆರ್ಪಿಎಲ್ನಲ್ಲಿ ಹುದುಗಿಸಲಾಗುತ್ತದೆ. ಸಂಭಾವ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳ ಪಟ್ಟಿ ಈ ಪಟ್ಟಿಯು ಪ್ರಸ್ತುತ ಲಭ್ಯವಿರುವ ವಿವಿಧ ಪಿಪಿಎಲ್ಗಳನ್ನು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ಮೂಲವನ್ನು ಸ್ಪಷ್ಟಪಡಿಸುತ್ತದೆ. ಅಸ್ಥಿರಗಳನ್ನು ಸಂಭವನೀಯತೆಯ ವಿತರಣೆಗಳೆಂದು ತರ್ಕಿಸುವುದು ಅನನುಭವಿ ಪ್ರೋಗ್ರಾಮರ್ಗಳಿಗೆ ತೊಂದರೆಗಳನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ, ಆದರೆ ಈ ತೊಂದರೆಗಳನ್ನು ಬಯೇಸಿಯನ್ ಜಾಲದ ದೃಶ್ಯೀಕರಣಗಳು ಮತ್ತು ಮೂಲ ಕೋಡ್ ಸಂಪಾದಕದಲ್ಲಿ ಹುದುಗಿರುವ ಅಸ್ಥಿರ ವಿತರಣೆಗಳ ಗ್ರಾಫ್ಗಳ ಬಳಕೆಯ ಮೂಲಕ ಪರಿಹರಿಸಬಹುದು. ಸ್ಟ್ಯಾಟಿಸ್ಟಿಕಲ್ ರಿಲೇಷನಲ್ ಲರ್ನಿಂಗ್ ಇಂಡಕ್ಟಿವ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಬಯೇಸಿಯನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಪ್ಲೇಟ್ ನೊಟೇಷನ್ ಟಿಪ್ಪಣಿಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳ ಸಂಭಾವ್ಯ ಮಾದರಿಗಳ ಪಟ್ಟಿ ಮಿನಿ ಲಾಂಗ್ವೇಜ್ ಟೂಲ್ಕಿಟ್ಗಳು ಸಂಭವನೀಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಕಿ ಸಂಭವನೀಯ ಮಾದರಿಗಳು ಸಂಭವನೀಯ ಸಾಫ್ಟ್ವೇರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾದರಿಗಳನ್ನು ಸಹ ನೋಡಿ.