Làm thế nào để một người bắt đầu học trí tuệ nhân tạo?


16

Tôi là một sinh viên kỹ thuật phần mềm và tôi hoàn toàn bắt đầu với AI. Tôi đã đọc rất nhiều bài viết về cách bắt đầu học AI, nhưng mỗi bài viết gợi ý một cách khác nhau. Tôi đã tự hỏi nếu một số chuyên gia của bạn có thể giúp tôi bắt đầu đúng cách.

Một vài câu hỏi cụ thể hơn

  1. Tôi nên tập trung vào ngôn ngữ nào? Rất nhiều bài viết đề xuất Python, C ++ hoặc Lisp cho AI. Tôi có thể sử dụng Java thay vì bất kỳ ngôn ngữ nào khác được đề cập không?

  2. Tôi nên có loại nền toán học nào? Trong năm đầu tiên, tôi đã làm toán học rời rạc, bao gồm các chủ đề sau: tập hợp, ma trận, vectơ, hàm, logic và lý thuyết đồ thị (Họ đã dạy ngắn gọn các chủ đề này). Có những chủ đề nào nữa mà tôi nên học bây giờ không? Chẳng hạn, tính toán?

Nếu có thể, tôi sẽ đánh giá cao bất kỳ tài nguyên hoặc sách nào tôi có thể sử dụng để bắt đầu hoặc có thể các bạn có thể cung cấp cho tôi một quy trình chi tiết tôi có thể làm theo để theo kịp trình độ của bạn.

Lưu ý: Hiện tại tôi muốn tập trung vào các mạng thần kinh và học máy. Sau tôi, tôi muốn khám phá robot và xử lý ngôn ngữ tự nhiên.


Câu trả lời:


16

Trí tuệ nhân tạo là một lĩnh vực rất rộng và nó bao gồm nhiều lĩnh vực rất sâu rộng về khoa học máy tính, toán học, thiết kế phần cứng và thậm chí cả sinh học và tâm lý học. Đối với môn toán: Tôi nghĩ rằng tính toán, thống kê và tối ưu hóa là những chủ đề quan trọng nhất, nhưng học càng nhiều toán càng tốt.

Có rất nhiều tài nguyên giới thiệu miễn phí tốt về AI cho người mới bắt đầu. Tôi thực sự khuyên bạn nên bắt đầu với cái này: http://aiplaybook.a16z.com/ Họ cũng đã xuất bản hai video về các khái niệm chung về AI, bạn có thể tìm thấy chúng trên Vimeo: "AI, Deep Learning và Machine Learning: A Primer "và" Lời hứa của AI "

Một khi bạn đã hiểu rõ về các thuật ngữ và phương pháp tiếp cận AI cơ bản, bạn phải tìm ra mục tiêu của mình là gì. Bạn muốn phát triển loại phần mềm AI nào? Những ngành công nghiệp mà bạn quan tâm? Cơ hội của bạn để tham gia vào các dự án của các công ty lớn là gì? Dễ dàng hơn để chọn đúng công cụ khi bạn biết chính xác những gì bạn muốn đạt được.

Đối với hầu hết những người mới làm quen với AI, lĩnh vực thú vị nhất là Deep Learning. Nói rõ hơn, có rất nhiều lĩnh vực AI ngoài Machine Learning và có nhiều lĩnh vực Machine Learning ngoài Deep Learning. (Trí tuệ nhân tạo> Học máy> Học sâu) Hầu hết các phát triển gần đây và tin tức được thổi phồng là về DL.

Nếu bạn cũng quan tâm đến Deep Learning, bạn phải bắt đầu với việc tìm hiểu về các khái niệm của mạng lưới thần kinh nhân tạo. May mắn thay, không quá khó để hiểu những điều cơ bản và có rất nhiều hướng dẫn, ví dụ mã và tài nguyên học tập miễn phí trên web và có nhiều khung công tác nguồn mở để bắt đầu thử nghiệm.

Khung Deep Learning phổ biến nhất như vậy là TensorFlow. Nó được hỗ trợ bởi Google. Yêu hay ghét nó, đó là một khung dựa trên Python. Có rất nhiều khung công tác dựa trên Python khác. Scikit-learn, Theano, Keras cũng thường được đề cập trong hướng dẫn. (Mẹo: nếu bạn sử dụng Windows, bạn có thể tải xuống WinPython bao gồm tất cả các khung này.)

Đối với các khung công tác Java, thật không may, không có nhiều tùy chọn. Khung công tác Java nổi bật nhất cho DL là Deeplearning4j. Nó được phát triển bởi một công ty nhỏ và cơ sở người dùng của nó nhỏ hơn rất nhiều so với đám đông xung quanh TensorFlow. Có ít dự án và hướng dẫn cho khung này. Tuy nhiên, các chuyên gia trong ngành cho biết các khung công tác dựa trên Java cuối cùng tích hợp tốt hơn với các giải pháp Dữ liệu lớn dựa trên Java và chúng có thể cung cấp mức độ di động cao hơn và triển khai sản phẩm dễ dàng hơn. Chỉ là một sidenote: Phòng thí nghiệm Động cơ phản lực của NASA đã sử dụng Deeplearning4j cho nhiều dự án.

Nếu bạn quyết định đi theo dòng chảy và muốn bắt đầu tìm hiểu thêm về TensorFlow, tôi khuyên bạn nên xem các kênh YouTube của "DeepLearning.TV", "sentdex" và "Siraj Raval". Họ có hướng dẫn tốt đẹp và một số bản demo tuyệt vời. Và nếu bạn quyết định đi lặn sâu hơn, bạn có thể đăng ký một khóa học trực tuyến tại udacity hoặc coursera.

Bạn cũng có thể thú vị khi biết rằng có các khung công tác Deep Learning khác cho Máy ảo Java với các ngôn ngữ thay thế, ví dụ như Clojure. (Clojure là một phương ngữ của LISP và nó được phát minh bởi John McCarthy, cùng một nhà khoa học máy tính đã đặt ra thuật ngữ "trí tuệ nhân tạo". Nói cách khác, có những ngôn ngữ và công cụ lập trình phổ biến và hiện đại hơn, nhưng nó vẫn có thể / và hơi tuyệt vời / để sử dụng ngôn ngữ cho AI ban đầu được thiết kế cho AI. ThinkTopic ở Boulder và Freiheit ở Hamburg là hai công ty sử dụng Clojure cho các dự án AI. Và nếu bạn muốn thấy điều gì đó tuyệt vời để lấy cảm hứng sử dụng Clojure trong AI và robot, Tôi khuyên bạn nên xem video YouTube "OSCON 2013: Carin Meier, The Joy of Flying Robots with Clojure".

(+++ Bất cứ ai cũng cảm thấy thoải mái khi sửa tôi nếu tôi nói bất cứ điều gì sai. +++)


Vì có ít khung công tác hơn cho Java, nên có thể viết các khung công tác của riêng tôi cho nó, mà tôi có thể sử dụng để thay thế cho TensorFlow không? Cảm ơn
aspire29

1
Tạo khung riêng của bạn để nghiên cứu các khái niệm cơ bản là một ý tưởng rất tốt. Mặt khác, TensorFlow được phát triển bởi một cộng đồng lớn và rất nhiều chuyên gia rất tài năng. Thành thật tôi không nghĩ bất kỳ khuôn khổ tự chế nào có thể cạnh tranh thành công với nó. Btw, tôi không hiểu tại sao có quá ít khung công tác AI của Java ... vì nó vẫn là số 1. ngôn ngữ lập trình và JVM chỉ là ở khắp mọi nơi. Tôi đoán AI vẫn là về nghiên cứu hơn là sản xuất.
akopacsi

6

Bạn sẽ thấy rằng cả Giải tích và Đại số tuyến tính đều có một số ứng dụng trong kỹ thuật AI / ML. Theo nhiều nghĩa, bạn có thể lập luận rằng hầu hết ML giảm xuống Đại số tuyến tính, và Giải tích được sử dụng trong, ví dụ. thuật toán backpropagation để đào tạo mạng lưới thần kinh.

Bạn cũng sẽ được phục vụ để tham gia một hoặc hai lớp về xác suất và thống kê.

Lựa chọn ngôn ngữ lập trình ít quan trọng hơn, IMO. Bạn có thể thực hiện AI / ML bằng bất kỳ ngôn ngữ chính nào và nhiều ngôn ngữ không chính thống. Sự khác biệt lớn nhất liên quan đến hiệu suất và tính sẵn có của thư viện / công cụ. C ++, ví dụ, thường sẽ vượt trội hơn Java hoặc Python và nó cho phép bạn "gần với kim loại" để thực sự tối đa hóa khả năng của phần cứng. Tuy nhiên, Python có FFI thực sự tốt và thường được sử dụng cùng với C hoặc C ++. Python, C ++, Java, R, Octave / Matlab và một vài ngôn ngữ khác có xu hướng có sẵn nhiều thư viện chất lượng cao, điều này có thể quan trọng đối với bạn tùy thuộc vào những gì bạn muốn làm.

Điều đó nói rằng, có lẽ bạn không muốn thử và thực hiện ML / AI, giả sử, COBOL hoặc PL / I hoặc RPG / 400 hoặc một cái gì đó. Dính vào một cái gì đó ít nhất là hợp lý phổ biến. Chọc quanh mloss.org và xem thư viện / bộ công cụ nào có sẵn bằng các ngôn ngữ khác nhau và điều đó sẽ giúp hướng dẫn lựa chọn của bạn.


5

Khi tôi có hứng thú với AI, tôi bắt đầu với những điều cơ bản nhất. Cuốn sách đầu tiên của tôi là Trí tuệ nhân tạo của Russell & Norvig - Cách tiếp cận hiện đại . Tôi nghĩ đó là một nơi tốt để bắt đầu, ngay cả khi bạn chủ yếu quan tâm đến Deep Nets. Nó không chỉ xử lý các khái niệm và thuật toán AI cơ bản (hệ thống chuyên gia, tìm kiếm theo chiều sâu và chiều rộng đầu tiên, biểu diễn tri thức, v.v.) mà còn cả toán học cơ bản (lý luận Bayes, Logic đầu tiên, NL n-gram, v.v.) và một số vấn đề thường được biết đến (ví dụ như vấn đề nhân viên bán hàng du lịch).

Nó cũng có thể là một ý tưởng tốt để tìm hiểu số liệu thống kê, vì bạn đặc biệt quan tâm đến ML. Sau cuốn sách được đề cập, bạn cũng nên có một ý tưởng tốt về những gì cần học tiếp theo.

  • Đừng quan tâm quá nhiều về ngôn ngữ lập trình.

Điều quan trọng hơn nhiều là phải hiểu lập trình và các kỹ thuật liên quan. Tìm hiểu điều gì đó về cấu trúc dữ liệu, thuật toán và các mô hình lập trình khác nhau (như OOP, Lập trình hàm, v.v.). Cố gắng hiểu logic đằng sau lập trình và không chỉ là một ngôn ngữ cụ thể. Rốt cuộc, học một ngôn ngữ mới không khó lắm khi bạn hiểu cách lập trình (sau đó học một ngôn ngữ mới chỉ là đường cú pháp ít nhiều).


1
Tôi đã chỉnh sửa một chút để dễ đọc và thêm một liên kết đến sách giáo khoa. Lời khuyên tốt, đặc biệt là lại: ngôn ngữ lập trình. (Hãy tìm đến các lập trình viên làm việc trong "bất kỳ ngôn ngữ nào có cú pháp" :) Thực sự đi đến những gì tối ưu hoặc thuận tiện nhất cho một dự án hoặc nhiệm vụ nhất định.
DukeZhou

4

Dưới đây là một số tài nguyên tôi thấy hữu ích để tìm hiểu những điều cơ bản về AI

Andrew Ng là giáo sư thỉnh giảng tại Stanford, người sáng lập Coursera và hiện là trưởng phòng nghiên cứu tại Alibaba. Các video trên sẽ cung cấp cho bạn (tất cả) những điều cơ bản bạn cần về AI.


3

Để bắt đầu AI trước hết hãy hiểu AI là gì. Tại sao độ chính xác của MNIST tăng nhanh sau năm 2012. Tại sao máy học cần AI để tăng độ chính xác của nó.

Để bắt đầu và xây dựng Ứng dụng trên Machine learning với AI, bạn không cần phải có toán học hay một loại khoa học tên lửa nào đó. Bạn đến trễ, người bạn của tôi xây dựng các phím tắt cho tất cả các vấn đề về máy học như trình bao bọc. Bạn chỉ cần truyền dữ liệu cho một phương thức và phương thức sẽ làm tất cả shit. Bắt đầu với vấn đề thú vị của MNIST. Đọc về lịch sử của MNIST sử dụng thuật toán cơ bản trên đó. Hãy thử hồi quy tuyến tính, hồi quy logistic, phân lớp Kmean, KNN. Các công cụ cho Machine learning Skite learn (python lib) hoặc Tensorflow (python lib) tflearn (api cấp cao hơn của Tensorflow như một trình bao bọc) Cả hai đều là nguồn mở. Ví dụ có sẵn trên GitHub. Bắt đầu tìm kiếm trên GitHub. Bạn đã tìm thấy một ví dụ tuyệt vời. Đối với cả lib. Sử dụng kaggel để giải quyết vấn đề tham gia vào quá trình tính toán.

Khi bạn hoàn thành tất cả các thuật toán trên, hãy cố gắng tập trung vào lỗi của bạn. Bây giờ AI đã đi vào hoạt động. Cố gắng tìm hiểu làm thế nào mạng lưới thần kinh giúp bạn giảm lỗi và tăng độ chính xác. Sau đó thử một số mạng thần kinh cơ bản như sigmoid, relu và cnn. Đừng quên sử dụng bỏ học trong mạng lưới thần kinh của bạn. Bạn có thể sử dụng Tensorflow hoặc keras hoặc Tensorflow với keras

Kiểm tra bên cạnh 3 video đại số tuyến tính của Blue 1 Brown để cải thiện toán học của bạn. mỗi ngày một lần nhưng mỗi ngày một video.

Và bây giờ tập trung vào toán học đằng sau logic (bất kỳ thuật toán nào) Bạn có thể thử và học khóa học máy.

Sử dụng Tensorflow để xây dựng ứng dụng Android, ứng dụng IOS, RaspPi Kiểm tra hội nghị thượng đỉnh devorflow dev 2016/2017.

Hoặc nếu bạn cần khóa học sự cố thì hãy kiểm tra https://youtu.be/u4alGiomYP4 này


1
Chúng ta hãy làm rõ, AI không phải là tất cả về việc đọc sách html và bạn bắt đầu lập trình, hãy làm rõ ở đây ,! OP cần tham khảo ý kiến ​​các giáo sư từ Oxford, harvad, v.v.
quintumnia

3

Trước khi đi vào Trí tuệ nhân tạo, người ta nên thực hiện với các điều kiện tiên quyết. Không có một danh sách vững chắc, nhưng một kiến ​​thức tốt về các thuật toán khác nhau là bắt buộc. Ngoài ra, bạn nên thoải mái với ít nhất một ngôn ngữ lập trình, như C ++ hoặc Java. Tôi sẽ không đề nghị bạn đi sâu vào Trí tuệ nhân tạo nếu bạn hoàn toàn mới với Khoa học máy tính. Một số kinh nghiệm về lập trình trước khi đi sâu vào Trí tuệ nhân tạo sẽ là một điểm cộng cho bạn.

Bắt đầu đọc (blog, bài báo, bài báo học thuật, v.v.) về Trí tuệ nhân tạo. Giống như những gì nó là, ứng dụng của nó, trạng thái hiện tại và những thứ khác mà bạn có thể tìm thấy. Bắt đầu tạo mã AI cho các trò chơi nhỏ như Tic Tac Toe, Sudoku, Reversi (Othello), v.v. để bắt đầu. Bạn có thể tạo trình giả lập của riêng mình và xây dựng mã giải quyết khối Rubik. Tương tự, tạo mã cho Nhận dạng mẫu và Học máy. Không có gì tốt hơn là học bằng cách làm. Các ngôn ngữ như LISP và python sẽ rất hữu ích. Đây là hai câu trả lời sẽ giúp bạn, ans1ans2 .

Nếu bạn là một người thích đọc và học từ sách (như tôi), thì bạn có thể mua Trí tuệ nhân tạo: Cách tiếp cận hiện đại (Peter Norvig và Stuart Russell). Cuốn sách rất tốt và hoạt động tốt cho trình độ trung cấp và cao cấp. Cố gắng giải quyết các vấn đề tập thể dục được đưa ra trong cuốn sách. Các giải pháp pdf của các cuốn sách có sẵn trực tuyến . Đối với Machine Learning hai cuốn sách mà tôi giới thiệu là Nhận dạng mẫu và Học máy (Christopher M. Giám mục) và Lập trình trí tuệ tập thể (O'Reilly).

Để bắt đầu, có một bài viết rất hay về Trí tuệ nhân tạo và Điểm kỳ dị công nghệ.

Bài viết dài và chia thành hai phần. Tôi thực sự khuyên bạn nên đọc bài viết này nếu bạn nghiêm túc về Trí tuệ nhân tạo. Nó sẽ cung cấp cho bạn một số hiểu biết tốt.

Kiến thức về Lý thuyết tính toán sẽ giúp bạn rất nhiều. Đặc biệt là khi bạn đang làm việc trong lĩnh vực Xử lý ngôn ngữ tự nhiên. Các lĩnh vực phụ khác của AI có thể khiến bạn quan tâm sẽ là Machine Learning, Evolution Computing, Thuật toán di truyền, Học tăng cường, Học sâu, v.v. Kiến thức về Thống kê của bạn tốt hơn, nó sẽ tốt hơn cho Trí tuệ nhân tạo. Hãy theo dõi các hoạt động gần đây trong lĩnh vực này thông qua các diễn đàn, trang web, v.v ... Trang web AI mở cũng là một nguồn rất tốt.

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.