Tại sao Python là ngôn ngữ phổ biến trong lĩnh vực AI?


47

Trước hết, tôi là người mới bắt đầu nghiên cứu về AI và đây không phải là câu hỏi định hướng ý kiến ​​hay câu hỏi để so sánh ngôn ngữ lập trình. Tôi không nói đó là ngôn ngữ tốt nhất. Nhưng thực tế là hầu hết các khung AI nổi tiếng đều có hỗ trợ chính cho Python. Chúng thậm chí có thể được hỗ trợ đa ngôn ngữ, ví dụ, TensorFlow hỗ trợ Python, C ++ hoặc CNTK từ Microsoft hỗ trợ C # và C ++, nhưng được sử dụng nhiều nhất là Python (ý tôi là nhiều tài liệu hơn, ví dụ, cộng đồng lớn hơn, hỗ trợ, v.v.). Ngay cả khi bạn chọn C # (được phát triển bởi Microsoft và ngôn ngữ lập trình chính của tôi), bạn phải thiết lập môi trường Python.

Tôi đọc trên các diễn đàn khác rằng Python được ưa thích cho AI vì mã được đơn giản hóa và sạch hơn, tốt cho việc tạo mẫu nhanh.

Tôi đã xem một bộ phim với chủ đề AI (Ex_Machina). Trong một số cảnh, nhân vật chính hack giao diện của tự động hóa ngôi nhà. Đoán ngôn ngữ nào trên hiện trường? Con trăn.

Vậy vấn đề lớn, mối quan hệ giữa Python và AI là gì?


Hãy nhớ rằng việc thể hiện ngôn ngữ lập trình trong phim thường không liên quan đến đời thực! Bất cứ thứ gì trông giống như gobbledegook khó hiểu đối với giáo dân thường đều ổn ...
Oliver Mason

Nếu C # là ngôn ngữ lập trình chính của bạn, bạn có thể quan tâm đến scisharpstack.org
henon

Câu trả lời:


32

Python đi kèm với một số lượng lớn các thư viện sẵn có. Nhiều thư viện dành cho Trí tuệ nhân tạo và Học máy. Một số thư viện là Tensorflow (là thư viện mạng thần kinh cấp cao), scikit-learn (để khai thác dữ liệu, phân tích dữ liệu và học máy), pylearn2 (linh hoạt hơn so với scikit-learn), v.v. kết thúc

Bạn có thể tìm thấy một số thư viện ở đây .

Python có một triển khai dễ dàng cho OpenCV. Điều làm cho Python yêu thích đối với mọi người là việc thực hiện mạnh mẽ và dễ dàng.
Đối với các ngôn ngữ khác, sinh viên và nhà nghiên cứu cần phải biết ngôn ngữ trước khi vào ML hoặc AI với ngôn ngữ đó. Đây không phải là trường hợp với trăn. Ngay cả một lập trình viên có kiến ​​thức rất cơ bản cũng có thể dễ dàng xử lý python. Ngoài ra, thời gian ai đó dành cho việc viết và gỡ lỗi mã trong python ít hơn nhiều so với C, C ++ hoặc Java. Đây chính xác là những gì các sinh viên của AI và ML muốn. Họ không muốn dành thời gian để gỡ lỗi mã cho các lỗi cú pháp, họ muốn dành nhiều thời gian hơn cho các thuật toán và phương pháp phỏng đoán liên quan đến AI và ML .
Không chỉ các thư viện mà các hướng dẫn, xử lý giao diện của họ cũng dễ dàng có sẵn trực tuyến . Mọi người xây dựng thư viện của riêng họ và tải chúng lên GitHub hoặc những nơi khác để người khác sử dụng.

Tất cả các tính năng này làm cho Python phù hợp với chúng.


10
"Họ không muốn dành thời gian để gỡ lỗi mã cho các lỗi cú pháp" - Có lập trình viên nào muốn làm điều này không? Python có phải là thứ tốt nhất cho mọi thứ? Tôi không tin.
Frank Puffer

24

Thực tế tất cả các khung học sâu phổ biến và được sử dụng rộng rãi nhất đều được triển khai bằng Python trên bề mặt và C / C ++ dưới mui xe.

Tôi nghĩ lý do chính là Python được sử dụng rộng rãi trong các cộng đồng khoa học và nghiên cứu, bởi vì nó dễ dàng thử nghiệm các ý tưởng mới và các nguyên mẫu mã nhanh chóng trong một ngôn ngữ với cú pháp tối thiểu như Python.

Hơn nữa có thể có một lý do khác. Như tôi có thể thấy, hầu hết các khóa học trực tuyến quá cường điệu về AI đang thúc đẩy Python vì nó dễ dàng cho các lập trình viên mới. AI là từ nóng tiếp thị mới để bán các khóa học lập trình. (Nhắc đến AI có thể bán các khóa học lập trình cho những đứa trẻ muốn xây dựng HAL 3000, nhưng thậm chí không thể viết Hello World hoặc thả một đường xu hướng vào biểu đồ Excel. :)


4
"....... hầu hết các khóa học trực tuyến quá cường điệu về AI đang thúc đẩy Python bởi vì nó dễ dàng cho các lập trình viên mới. AI là từ tiếp thị mới để bán các khóa học lập trình ..." ---- Điểm hay . Không thể đồng ý nhiều hơn.
Emran Hussain

5

Python có một thư viện chuẩn đang được phát triển và một số ít cho AI. Nó có một cú pháp trực quan, luồng điều khiển cơ bản và cấu trúc dữ liệu. Nó cũng hỗ trợ thời gian chạy diễn giải, không có ngôn ngữ trình biên dịch tiêu chuẩn. Điều này làm cho Python đặc biệt hữu ích cho các thuật toán tạo mẫu cho AI.


Điểm hay về khả năng diễn giải của Python. Có vẻ như tính linh hoạt và tốc độ phát triển được ưa chuộng mạnh mẽ hơn "mã lực" lớn hơn của các ngôn ngữ được biên dịch.
DukeZhou

5

Điều thu hút tôi với Python cho công việc phân tích của tôi là "toàn bộ" các công cụ có sẵn nhờ vào việc được thiết kế như một ngôn ngữ có mục đích chung so với R là ngôn ngữ cụ thể của miền. Phân tích dữ liệu thực tế chỉ là một phần của câu chuyện và Python có các công cụ phong phú và ngôn ngữ đầy đủ tính năng để có được từ đầu đến cuối trong một ngôn ngữ duy nhất (sử dụng trình bao bọc C / Fortran bất kể).

Ở mặt trước, công việc của tôi thường bắt đầu bằng việc lấy dữ liệu từ nhiều nguồn khác nhau, bao gồm cả cơ sở dữ liệu, tệp ở các định dạng khác nhau hoặc quét web. Python hỗ trợ cho điều này là tốt và hầu hết các cơ sở dữ liệu hoặc định dạng dữ liệu phổ biến đều có thư viện vững chắc, được duy trì tốt cho giao diện. R dường như chia sẻ sự phong phú chung cho I / O dữ liệu, mặc dù đối với FITS, gói R dường như không được phát triển tích cực (không phát hành FITSio trong 2,5 năm?). Rất nhiều giai đoạn công việc tiếp theo thường xảy ra trong giai đoạn tổ chức dữ liệu và thực hiện xử lý dựa trên đường ống với rất nhiều tương tác cấp hệ thống.

Ở mặt sau, bạn cần có khả năng trình bày các tập dữ liệu lớn theo cách hữu hình và đối với tôi, điều này thường có nghĩa là tạo các trang web. Đối với hai dự án tôi đã viết các ứng dụng web Django quan trọng để kiểm tra kết quả của các dự án khảo sát lớn của Chandra. Điều này bao gồm rất nhiều phế liệu (danh mục nhiều bước sóng) và vv. Chúng chỉ được sử dụng nội bộ để điều hướng tập dữ liệu và giúp tạo ra danh mục nguồn, nhưng chúng là vô giá trong toàn bộ dự án.

Chuyển sang chức năng đặc trưng của thiên văn học để phân tích, có vẻ như rõ ràng rằng cộng đồng đang đứng sau Python. Điều này được nhìn thấy ở độ sâu của các gói có sẵn và mức độ hoạt động phát triển, cả ở cấp độ cá nhân và tổ chức ( http://www.astropython.org/resource ). Với mức cơ sở hạ tầng sẵn có và đang hoạt động, tôi nghĩ sẽ hợp lý khi nỗ lực trực tiếp chuyển các công cụ thống kê R hữu ích nhất cho thiên văn học sang Python. Điều này sẽ bổ sung cho khả năng hiện tại để gọi các hàm R từ Python thông qua rpy2. Nếu bạn quan tâm, tôi thực sự khuyên bạn nên đọc bài viết này, đây là câu hỏi so sánh các ngôn ngữ lập trình https://diceus.com/what-t Technology- is-b ... nd-java-r / Tôi hy vọng nó có ích. May mắn


3

Python có thư viện phong phú, nó cũng hướng đối tượng, dễ lập trình. Nó cũng có thể được sử dụng như ngôn ngữ frontend. Đó là lý do tại sao nó được sử dụng trong trí tuệ nhân tạo. Thay vì AI, nó cũng được sử dụng trong học máy, điện toán mềm, lập trình NLP và cũng được sử dụng làm kịch bản web hoặc hack Đạo đức.


Đó là một câu trả lời tuyệt vời, bởi vì Python thực sự là ngôn ngữ lập trình số một đặc biệt là cho kịch bản web. Lúc đầu, tôi sợ rằng bạn có thể giải thích với thế giới, rằng AutoIt là ngôn ngữ kịch bản hoàn hảo vì nó được sử dụng để viết Aimbot.
Manuel Rodriguez

2

Đó là bởi vì python là một ngôn ngữ lập trình hướng đối tượng kịch bản hiện đại có cú pháp thời trang. Trái với các ngôn ngữ lập trình cấu trúc như java và C ++, bản chất kịch bản của nó cho phép lập trình viên kiểm tra giả thuyết của mình rất nhanh. Hơn nữa, có rất nhiều thư viện máy học mã nguồn mở (bao gồm cả scikit-learn và Keras) mở rộng việc sử dụng python trong lĩnh vực AI.


2

Đó là sự kết hợp của nhiều yếu tố cùng nhau làm cho nó trở thành một lựa chọn rất tốt để phát triển hệ thống nhận thức.

  • Phát triển nhanh
  • Tạo mẫu nhanh
  • Cú pháp thân thiện với khả năng đọc gần như ở cấp độ con người
  • Thư viện tiêu chuẩn đa dạng và đa mô hình
  • Nó có thể được sử dụng như một lối vào cho các phụ trợ hiệu suất được viết bằng các ngôn ngữ được biên dịch như C / C ++.

Các thư viện số hiệu suất hiện có, chẳng hạn như numpy và các thư viện khác đã thực hiện công việc hàng loạt chuyên sâu cho bạn, cho phép bạn tập trung hơn vào các khía cạnh kiến ​​trúc của hệ thống.

Bên cạnh đó, có một cộng đồng và hệ sinh thái rất lớn xung quanh Python, dẫn đến một loạt các công cụ có sẵn được định hướng cho loại nhiệm vụ khác nhau.


0

Tôi thực sự thích C cho máy học. Bởi vì giống như trong cuộc sống, trong thế giới mà chúng ta biết, bao gồm các "cổng logic" không bao giờ kết thúc (về cơ bản giống như lật một đồng xu - SILL có 2 kết quả có thể xảy ra - không tính thứ ba: hạ cánh ở bên cạnh!). Điều đó cũng có nghĩa là trong khi vũ trụ dường như không bao giờ kết thúc, chúng ta vẫn không bao giờ ngừng tìm kiếm những thứ thậm chí còn nhỏ hơn thứ nhỏ nhất cuối cùng, phải không?

Vì vậy, ... Để đặt nó trong bối cảnh khi lập trình C, tôi có thể kiểm soát việc sử dụng bộ nhớ hiệu quả hơn bằng cách mã hóa các đoạn nhỏ hơn được kết hợp, để luôn tạo thành các "đoạn mã" nhỏ hơn và hiệu quả, tạo nên cái mà chúng ta gọi là " các tế bào "trong sinh học (nó có chức năng đo được và có một số thuộc tính được thiết lập sẵn).

Vì vậy, tôi thích tối ưu hóa cho việc sử dụng RAM thấp, sử dụng CPU thấp, v.v. khi lập trình AI. Tôi mới chỉ thực hiện feedforward với một thuật toán di truyền cơ bản trong C, nhưng mạng thần kinh tái phát tiên tiến hơn mà tôi đã viết bằng C ++ (CHỈ vì đơn giản sử dụng "std :: vector name;", vì vậy tôi đã viết cvector.c của riêng mình: https://pastebin.com/sBbxmu9T & cvector.h: https://pastebin.com/Rd8B7mK4 & debug: https://pastebin.com/kcGD8Fzf - biên dịch với gcc -o debug.c cvector.c). Điều đó thực sự đã giúp ALOT trong nhiệm vụ tối ưu hóa việc sử dụng CPU (và thời gian chạy tổng thể) khi tạo các mạng thần kinh được tối ưu hóa.

Hy vọng nó giúp.

EDIT: Vì vậy, theo một nghĩa nào đó, tôi thực sự thấy điều ngược lại với những gì AlexPnt nhìn thấy, khi nói đến việc khám phá những gì có thể xảy ra trong vương quốc của một "cái tôi".

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.