Trong năm qua, tôi đã nghe rất nhiều về các khung lập trình xác suất (PP) như PyMC3 và Stan , và PP tuyệt vời như thế nào. Và hôm nay, ai đó đã chia sẻ liên kết này với tôi: Pyro: Ngôn ngữ lập trình xác suất sâu
Tuy nhiên, tôi không thực sự làm theo những gì đặc biệt về nó vì nó giống như bất cứ điều gì bạn có thể làm trong PP bạn có thể làm trong bất kỳ ngôn ngữ mục đích chung nào khác. Tôi chắc chắn có những khía cạnh kỹ thuật về PP làm cho nó hấp dẫn (ví dụ như tính toán song song), nhưng điều này sang một bên, PP có thực sự khác biệt với bất kỳ ngôn ngữ nào khác không?
Câu hỏi: Tôi đã tự hỏi liệu có sự đồng thuận về PP là gì và nó khác với các phần mềm tập trung thống kê khác như R, Matlab, Mathematica như thế nào. Cần lưu ý rằng PyMC3
và Stan
được tập trung vào phân tích Bayes nhiều hơn.
Thực hiện một nghiên cứu nhỏ trên Google, tôi đã bắt gặp hai định nghĩa sau. Thứ nhất trừu tượng hơn, và thứ hai nhiều hơn về các đặc tính kỹ thuật của PP.
1.2. Lập trình xác suất là
Thay vào đó, lập trình xác suất là một công cụ cho mô hình thống kê. Ý tưởng là mượn bài học từ thế giới ngôn ngữ lập trình và áp dụng chúng vào các vấn đề thiết kế và sử dụng các mô hình thống kê. Các chuyên gia xây dựng các mô hình thống kê đã có sẵn bằng tay, theo ký hiệu toán học trên giấy nhưng đó là một quá trình chỉ dành cho chuyên gia khó có thể hỗ trợ với lý luận cơ học. Cái nhìn sâu sắc quan trọng trong PP là mô hình thống kê có thể, khi bạn làm đủ, bắt đầu cảm thấy rất giống như lập trình. Nếu chúng ta thực hiện bước nhảy vọt và thực sự sử dụng một ngôn ngữ thực sự cho mô hình của mình, nhiều công cụ mới trở nên khả thi. Chúng ta có thể bắt đầu tự động hóa các tác vụ được sử dụng để biện minh cho việc viết một bài báo cho mỗi trường hợp.
Đây là định nghĩa thứ hai : ngôn ngữ lập trình xác suất là ngôn ngữ lập trình thông thường với
rand
rất nhiều công cụ liên quan giúp bạn hiểu hành vi thống kê của chương trình.Cả hai định nghĩa này đều chính xác. Họ chỉ nhấn mạnh các góc độ khác nhau trên cùng một ý tưởng cốt lõi. Cái nào có ý nghĩa với bạn sẽ phụ thuộc vào những gì bạn muốn sử dụng PP cho. Nhưng đừng bị phân tâm bởi thực tế là các chương trình PPL trông rất giống các triển khai phần mềm thông thường, trong đó mục tiêu là chạy chương trình và nhận được một số loại đầu ra. Mục tiêu trong PP là phân tích, không thực hiện (nhấn mạnh thêm).
Tôi muốn biết liệu cộng đồng thống kê chung có đồng ý với hai định nghĩa về PP này hay không và nếu có bất kỳ đặc điểm nào khác thì định nghĩa này có thể bị thiếu.