Có hợp lý để nghiên cứu mạng lưới thần kinh mà không có giáo dục toán học?


7

Với tình trạng hiện đại của các công nghệ và công cụ học máy hiện đại (ví dụ: TensorFlow, Theano, v.v.), có vẻ như ngưỡng nhập cảnh gần đây đã giảm xuống và đủ để có thể lập trình, nói, Python, để xây dựng những điều thú vị. Một nguồn khác hỗ trợ điểm này là Chuyên ngành Máy học trên Coursera , nêu rõ những điều sau trong Câu hỏi thường gặp của họ:

Những kiến ​​thức nền tảng là cần thiết?

Bạn nên có một số kinh nghiệm với lập trình máy tính; hầu hết các bài tập trong Chuyên ngành này sẽ sử dụng ngôn ngữ lập trình Python. Chuyên ngành này được thiết kế dành riêng cho các nhà khoa học và nhà phát triển phần mềm muốn mở rộng kỹ năng của họ sang khoa học dữ liệu và học máy, nhưng phù hợp với bất kỳ ai có kỹ năng toán học và lập trình cơ bản và quan tâm đến việc thu thập thông tin từ dữ liệu.

Mặt khác, có rất nhiều khóa học trực tuyến khác (ví dụ Stanford Machine Learning về Coursera hoặc Google Deep Learning on Udacity), cũng như các cuốn sách cổ điển, như S. Haykin, Mạng lưới thần kinh: Một nền tảng toàn diện , được đóng gói với toán học . Mặc dù tôi đã học toán trong vài năm ở trường đại học, bao gồm thống kê, ma trận, phép tính tích phân, v.v., nó đã không được sử dụng lâu đến nỗi tôi cảm thấy tuyệt vọng khi chỉ nhìn vào các phương trình đó. Ngay cả Toán học cụ thể của Knuth cũng được phát hiện với tốc độ chậm đến mức dường như không thể hoàn thành nó.

Do đó, các câu hỏi sau đây phát sinh:

  1. Có hợp lý cho một người có kiến ​​thức nông cạn về toán học nhưng kỹ năng lập trình để đi sâu vào nghiên cứu mạng thần kinh / máy học không?
  2. Có thể xây dựng các dự án thú vị trong lĩnh vực này, như những người chơi atari , chỉ sử dụng các công cụ cấp cao?

Hoặc nó sẽ mất rất nhiều thời gian, tốt hơn là không khiến bản thân phải vật lộn và làm một cái gì đó khác?

Câu trả lời:


5

Nó phụ thuộc vào loại công việc của bạn:

Toán học là bắt buộc nếu bạn đang làm việc trong vai trò Khoa học ứng dụng, tức là bạn cố gắng thử nghiệm những điều đã biết trong Hand tức là thử nhúng từ, có thể với CNN và xem kết quả có tốt hay KHÔNG.

Mặt khác, rất nhiều toán học được yêu cầu nếu bạn muốn trở thành một nhà khoa học nghiên cứu, ví dụ tìm các cách mới để thể hiện việc nhúng từ hoặc cải thiện các từ nhúng hiện có, trong trường hợp khai thác Văn bản.

Mặt khác, nếu bạn đang làm kỹ sư phần mềm trong Machine Learning HOẶC Kỹ sư máy học, thì bạn chỉ cần đào tạo các mô hình sử dụng kiến ​​thức hiện có về làm việc và điều chỉnh nó để có hiệu suất tốt hơn.

Có một sự đánh đổi giữa nghiên cứu và Kỹ thuật. Hướng tới nghiên cứu nhiều hơn là toán học, nhưng hướng tới kỹ thuật là toán học ít hơn và nhiều hơn về hiệu suất của hệ thống trong sản xuất.

Một ví dụ khác để giải thích sẽ là, đối với Bots trò chuyện. Nhà khoa học nghiên cứu với nền toán học yêu cầu viết một bài báo cho một mô hình mới như cách LSTM hoạt động và có thể được sử dụng. Một nhà khoa học ứng dụng sẽ thử một vấn đề kinh doanh như xây dựng bot trò chuyện với LSTM trước tiên và xuất bản các bài báo về cách thức hoạt động của chúng trong Labs. Một kỹ sư máy học sẽ sao chép khái niệm mà Nhà khoa học ứng dụng đã xuất bản cho Công việc kỹ thuật của họ (nghĩa là cần phải hiểu toán học trên giấy và sao chép nó trong mã, đó là nó.)

Hy vọng điều này sẽ giúp liên quan đến yêu cầu kiến ​​thức về Toán học trong Machine Learning


3

Google đang có các khóa học về Deep Learning để đào tạo nhân viên của mình. Vì hầu hết trong số họ đang ở trong tình huống mà bạn mô tả (không có nhiều kinh nghiệm toán học, nhưng kỹ năng phần mềm tốt) tôi sẽ nói đó là bằng chứng cho thấy bạn có thể kiếm lợi từ Deep Learning mà không cần giỏi toán.

Bây giờ có hàng tấn công cụ và mã mẫu trực tuyến trên nhiều dự án học sâu tuyệt vời để dễ dàng bắt đầu và chơi với chúng. Ví dụ, có dòng chảy không đòi hỏi nhiều kiến ​​thức về cách thức hoạt động của thuật toán backpropagation, nhưng có những lớp thậm chí đơn giản hơn được xây dựng trên nó đòi hỏi kiến ​​thức lý thuyết / học tập sâu hơn, chẳng hạn như Keras.

Nếu bạn muốn tự xây dựng, bạn phải nhớ rằng đôi khi bạn sẽ cần rất nhiều dữ liệu và nhiều khả năng tính toán cho một tập hợp con của các dự án đó. (Ví dụ, tại lớp Machine Learning của MIT, rất nhiều sinh viên muốn sao chép dự án atari mà bạn đã đề cập, nhưng các TA đề nghị không nên vì thiếu sức mạnh tính toán ở cấp độ Google).

Những điều bạn có thể sẽ có thể làm với 1-2 ngày nỗ lực bao gồm:

  • Xây dựng kiến ​​trúc của riêng bạn, tương đối đơn giản.
  • Đào tạo một kiến ​​trúc phức tạp (sử dụng mã trực tuyến) trên bộ dữ liệu bạn quan tâm.

Cuối cùng, nếu những gì bạn muốn là tạo ra kiến ​​trúc mới tuyệt vời của bạn, vượt trội so với trạng thái của nghệ thuật, tôi sẽ nói rằng điều này sẽ khó thực hiện nếu không hiểu rõ toán học đằng sau nó.


3

Tôi là một ứng cử viên tiến sĩ về Khoa học thần kinh tính toán và tôi làm việc với loại phần mềm và công cụ này mỗi ngày. Chúng tôi cũng có nhiều sinh viên đến và thực hiện các dự án của họ trong lĩnh vực này. Vì vậy, tôi có một chút kinh nghiệm.

Có hợp lý cho một người có kiến ​​thức nông cạn về toán học nhưng kỹ năng lập trình để đi sâu vào nghiên cứu mạng thần kinh / máy học không?

Vâng, đúng vậy. Bạn có thể sử dụng các bản tóm tắt cấp cao như Keras và bắt đầu ngay lập tức. Theo tôi, bạn không cần biết động lực chính xác của ANN để sử dụng nó.

Như với tất cả mọi thứ, nó phụ thuộc rất nhiều vào bạn và bạn muốn đầu tư bao nhiêu thời gian và công sức. Tôi muốn nói rằng bạn cần một chút toán học để hiểu những điều cơ bản của nó. Một ví dụ là các chức năng kích hoạt trong một mạng lưới thần kinh . Họ đóng một vai trò quan trọng nhưng đơn giản để hiểu.

Nếu bạn muốn tìm hiểu sâu hơn và thực sự hiểu cách thức và lý do tại sao nó hoạt động, bạn sẽ cần các kỹ năng toán học khá rộng. Không có cách nào xung quanh đó. Ý tôi là lý thuyết xác suất nâng cao, tính toán nâng cao và đại số nâng cao. Ví dụ, hãy xem Thuật toán Backpropagation. . Để biết thêm về toán học trong máy học, bạn có thể đọc bài đăng trên blog này .

Có thể xây dựng các dự án thú vị trong lĩnh vực này, như những người chơi atari, chỉ sử dụng các công cụ cấp cao?

Vâng, đúng vậy. Có rất nhiều công cụ tuyệt vời cho phép bạn làm điều này. Tất nhiên, ngay khi bạn cố gắng lập trình một cái gì đó mới, bạn sẽ sớm đạt đến giới hạn của mình, ví dụ, nếu bạn muốn sửa đổi một mạng thần kinh hoặc một thuật toán để nó cải thiện hoặc nhanh hơn.

Đối với Atari tôi đề nghị bạn đọc bài viết blog tốt đẹp này . Nó giải thích mọi thứ chi tiết đến mức bạn có thể thực hiện nó nhưng vẫn đủ nông để hiểu nó.

Vì vậy, để thêm vào các câu trả lời khác: Tôi đã thấy học sinh đến với các kỹ năng toán học cơ bản / thấp nhưng kỹ năng lập trình tốt và tất cả đều có thể thực hiện, kiểm tra và chạy một hệ thống máy học vững chắc. Ở đây một đường ống có nghĩa là thu thập dữ liệu, tiền xử lý, đào tạo và đánh giá toàn bộ hệ thống.

Vì vậy, vâng, bạn có thể làm điều đó.


1

Tôi sẽ giới hạn câu trả lời của tôi cho các mạng lưới thần kinh.

Có hợp lý cho một người có kiến ​​thức nông cạn về toán học nhưng kỹ năng lập trình để đi sâu vào nghiên cứu mạng thần kinh / máy học không?

Đó là hợp lý và có thể. Dưới đây là một vài lý do để hỗ trợ kết luận này:

  1. Mạng lưới thần kinh được lấy cảm hứng từ hoạt động của bộ não của chúng ta. Do đó, rất nhiều khái niệm quen thuộc và dễ hiểu: nơ-ron, kết nối, kích hoạt, v.v. Điều này làm cho việc giới thiệu các mạng thần kinh trở nên trơn tru và thú vị, và không yêu cầu bất kỳ phép toán nào.

  2. Hoạt động cơ bản của mạng nơ-ron, bất kể kích thước của nó, rất dễ hiểu: chuyển tiếp, tín hiệu truyền từ cấp này sang cấp khác, kích hoạt nơ-ron, v.v. Không cần quá nhiều toán học ở đây: tổng hợp và các hàm phi tuyến tính như sigmoid.

  3. Toán học dựa trên một số thuật toán cơ bản nhất để đào tạo mạng lưới thần kinh (ví dụ: lan truyền ngược) không phức tạp: tổng, logarit, phép nhân và phép chia. Và bạn tính toán các giá trị có ý nghĩa cụ thể: chi phí lỗi, độ dốc, v.v ... Một số kỹ thuật ML khác yêu cầu tính toán các giá trị trung gian (thường là ma trận) mà ý nghĩa của nó không rõ ràng hoặc trực quan.

  4. Nó thường không phải là toán học phức tạp hơn mà là sự hiểu biết và kinh nghiệm với những điều cơ bản cho phép bạn đi sâu vào các chủ đề nâng cao hơn như chính quy, đào tạo trước, bỏ học, v.v.

Để làm cho mọi thứ rõ ràng, có kiến ​​trúc mạng phức tạp hơn và các thuật toán đòi hỏi toán học để đào tạo mạng lưới thần kinh. Ngoài ra, mặc dù các tính toán liên quan đến lan truyền ngược rất đơn giản nhưng việc tạo ra nó rất phức tạp đối với người không nghiên cứu tính toán. Tuy nhiên, khó khăn trong việc tạo ra hoặc sự tồn tại của các thuật toán phức tạp hơn không có nghĩa là nghiên cứu các mạng thần kinh là không hợp lý. Những vấn đề này sẽ không ngăn bạn xây dựng sự hiểu biết tốt và sử dụng thực tế các mạng lưới thần kinh.

Có thể xây dựng các dự án thú vị trong lĩnh vực này, như những người chơi atari, chỉ sử dụng các công cụ cấp cao?

Trong những năm gần đây, sự quan tâm đến các mạng lưới thần kinh (đặc biệt là học sâu) là tăng vọt. Điều này dẫn đến việc tạo ra nhiều công cụ và thư viện tốt như bạn quan sát, một số trong số đó đến từ các nhà máy như Google, Microsoft hoặc NVidia. Không có nghi ngờ chất lượng của những điều này là đủ để tạo ra các dự án thú vị. Điều có thể chứng minh nhiều thách thức hơn là có được lượng dữ liệu chất lượng phù hợp để đào tạo mạng của bạn (hiện tại dữ liệu đó không có sẵn).


1
Cảm ơn bạn đã trả lời. Tôi có thể hỏi kinh nghiệm của bạn trong lĩnh vực này là gì và bạn sử dụng NN như thế nào? Ngoài ra, bạn có biết bất kỳ dự án cụ thể nào được xây dựng chỉ bằng các công cụ cấp cao hoặc được xây dựng bởi mọi người mà không lặn sâu trong toán học không?
Queeq

1

Nó phụ thuộc. Tôi giả sử bạn hiểu thuật toán backpropagation, vì nó được sử dụng bởi hầu hết các kiến ​​trúc NN, và CNN và RNN và tất cả những thứ đó không khó nếu bạn biết backpropagation.

Một mặt , Theano / Tensorflow dường như không phải là một ví dụ điển hình vì về cơ bản chúng là DSL để viết các phép tính ma trận / tenxơ, và chúng khá nặng về toán học và mức độ thấp (bạn viết ra các phép toán thực tế và không chỉ sử dụng fit, transform/ predictapi).

Mặt khác , có Keras và scikit-learn, chỉ có apis cấp cao, và không cần nhiều ống nước.

Đặc biệt, trong Keras, bạn có thể sử dụng một số mô hình đã được xử lý trước hoặc có kiến ​​trúc được xác định trước được biết là hoạt động cho một số vấn đề.

Tất nhiên, nếu bạn không có kiến ​​thức toán học tốt, bạn có thể gặp vấn đề với các mô hình hộp đen, nhưng nếu bạn chỉ muốn áp dụng những thứ dường như hoạt động với một số thứ khác, thì chắc chắn là có thể, ví dụ như kiểm tra dự án đơn giản này .

Bạn cũng có thể quan tâm đến các ứng dụng sáng tạo của Deep Learning với TensorFlow vì nó dường như nhắm vào những người không có kỹ thuật (tôi không biết liệu có khả thi khi học nó mà không có bất kỳ nền tảng kỹ thuật nào không , nhưng ít nhất nó có chứa nhiều ví dụ hay).


-3

Bản chất của một mạng lưới thần kinh là đồ thị. Trong khi các biểu đồ có thể là một phần của toán học, các khái niệm của chúng cũng cũ như chính mối quan hệ và có trước nó.

Nếu nó là cần thiết cho việc học trở nên phức tạp, thì bộ não có lẽ sẽ không tiến hóa chút nào, vì xác suất của sự phức tạp có trật tự là quá khó khả thi.

Vì vậy, sau đó, người ta phải hỏi: máy đơn giản nhất có thể học là gì? Nhưng, tất nhiên, điều đó đặt ra câu hỏi nhận thức luận: học cái gì?

Học tập là sự kết hợp của hai trạng thái tiểu thuyết, tạo thành một ký ức. Và ở đó bạn có nền tảng của AI: bộ nhớ.


1
Điều này không thực sự thêm vào câu trả lời khác hoặc thực sự giải quyết câu hỏi trực tiếp.
Nick Cox
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.