Mạng lưới thần kinh từ sách điện tử đầu

Tìm hiểu hoạt động bên trong và toán học đằng sau deep learning bằng cách tạo, đào tạo và sử dụng mạng thần kinh từ đầu trong Python

1.123 người ủng hộ đã cam kết 54.975 đô la để giúp đưa dự án này vào cuộc sống

Ý tưởng ở đây là chia sẻ các phần hướng dẫn Mạng nơ-ron từ Scratch / sách Mạng nơ-ron từ Scratch bằng nhiều ngôn ngữ lập trình khác, ngoài Python

Nếu bạn đang theo dõi bằng ngôn ngữ khác, vui lòng đóng góp cho ngôn ngữ cụ thể của bạn thông qua yêu cầu kéo. Nếu bạn đang cân nhắc việc cố gắng sử dụng một ngôn ngữ khác, bạn cũng có thể xem cách những người khác đã đạt được thành công khi viết mạng thần kinh từ đầu bằng các ngôn ngữ khác tại đây

Làm thế nào để đóng góp

Kế hoạch là chia sẻ mã từ phần video #s. Chúng tôi sẽ cập nhật các biến thể Python, vì vậy, nếu bạn chỉ theo dõi cuốn sách, bạn có thể xem [những] khối mã nào sẽ được dịch bằng cách xem các phiên bản Python

Trước khi gửi PR, hãy kiểm tra xem đã có PR từ ai đó cho phần # và ngôn ngữ cụ thể đó chưa

Đệ trình cho số phần đã cho phải được hoàn thành trong một tệp duy nhất, tức là. không nên chia thành nhiều tệp. Điều này giúp chúng tôi dễ dàng duy trì kho lưu trữ hơn và người khác dễ dàng theo dõi hơn

Nếu bạn muốn gửi giải pháp bằng nhiều ngôn ngữ hoặc bài gửi của bạn thêm tệp mới và thay đổi tệp của người khác, hãy tạo PR riêng cho những trường hợp này

Lời nói đầu - Mạng thần kinh từ đầu trong Python 2 Mạng thần kinh từ đầu trong Python Harrison Kinsley & Daniel Kukieła Lời nói đầu - Mạng thần kinh từ đầu trong Python 3 Lời cảm ơn Harrison Kinsley. Vợ tôi, Stephanie, vì sự ủng hộ và niềm tin không ngừng của cô ấy dành cho tôi trong suốt những năm qua. Bạn chưa bao giờ nghi ngờ tôi. Mỗi và mọi người xem và những người đã ủng hộ cuốn sách và dự án này. Không có khán giả của tôi, không ai trong số này có thể có được. Cộng đồng lập trình Python nói chung là tuyệt vời. Daniel Kukieła vì nỗ lực không ngừng của bạn với dự án lớn này mà Mạng nơ-ron từ Scratch đã trở thành. Từ việc học C ++ để tạo các bản mod trong GTA V, đến Python cho các dự án khác nhau, đến phép tính đằng sau mạng thần kinh, dường như không có vấn đề nào bạn không thể giải quyết và rất vui khi được làm điều này để kiếm sống cùng bạn. Tôi mong muốn được xem những gì tiếp theo. Lời nói đầu - Mạng thần kinh từ đầu trong Python 4 Daniel Kukieła. Con trai tôi, Oskar, vì sự kiên nhẫn và thấu hiểu của nó trong những ngày bận rộn. Vợ tôi, Katarzyna, vì tình yêu vô bờ bến, niềm tin và sự ủng hộ trong tất cả những việc tôi làm, đã từng làm và dự định làm, ánh nắng trong những ngày giông bão nhất và ly cà phê sáng mỗi ngày. Harrison vì đã thách thức tôi học Python sau đó thúc đẩy tôi học mạng lưới thần kinh. Vì đã cho tôi thấy rằng mọi thứ không nhất thiết phải được hoàn thành một cách hoàn hảo, tất cả sự hỗ trợ và giúp tôi trở thành một phần của rất nhiều dự án thú vị, bao gồm cả “hãy tạo một hướng dẫn về mạng lưới thần kinh từ đầu,” điều này đã trở thành một trong những thách thức lớn nhất trong cuộc đời tôi . Tôi sẽ không ở vị trí hiện tại nếu tất cả những điều đó không xảy ra. Cộng đồng Python đã giúp tôi trở thành một lập trình viên giỏi hơn và giúp tôi cải thiện các kỹ năng ngôn ngữ của mình. Lời nói đầu - Mạng nơ-ron từ đầu bằng Python 5 Bản quyền Bản quyền © 2020 Harrison Kinsley Bìa Thiết kế bản quyền © 2020 Harrison Kinsley Không phần nào của cuốn sách này có thể được sao chép dưới bất kỳ hình thức nào hoặc bằng bất kỳ phương tiện điện tử hoặc cơ học nào, với những ngoại lệ sau. 1. Trích dẫn ngắn gọn từ cuốn sách. 2. Mã/phần mềm Python [các chuỗi được hiểu là logic với Python], được lưu trữ theo giấy phép MIT, được mô tả trên trang tiếp theo. Lời nói đầu - Mạng nơ-ron từ đầu bằng Python 6 Giấy phép mã hóa Mã Python/phần mềm trong cuốn sách này được cung cấp theo Giấy phép MIT sau đây. Bản quyền © 2020 Sentdex, Kinsley Enterprises Inc. , https. //nnfs. io Theo đây, quyền được cấp miễn phí cho bất kỳ người nào có được bản sao của phần mềm này và các tệp tài liệu liên quan ["Phần mềm"], để xử lý Phần mềm mà không bị hạn chế, bao gồm nhưng không giới hạn các quyền sử dụng, sao chép, sửa đổi, . Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc phần quan trọng của Phần mềm. PHẦN MỀM ĐƯỢC CUNG CẤP “NGUYÊN TRẠNG”, KHÔNG CÓ BẢO ĐẢM DƯỚI BẤT KỲ HÌNH THỨC NÀO, RÕ RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN CÁC BẢO ĐẢM VỀ KHẢ NĂNG BÁN ĐƯỢC, SỰ PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ VÀ SỰ KHÔNG VI PHẠM. TRONG BẤT KỲ TRƯỜNG HỢP NÀO TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ VỀ BẤT KỲ KHIẾU NẠI, THIỆT HẠI HOẶC TRÁCH NHIỆM PHÁP LÝ KHÁC NÀO, DÙ TRONG MỘT HÀNH ĐỘNG HỢP ĐỒNG, NGOẠI TỆ HOẶC CÁCH NÀO KHÁC, PHÁT SINH TỪ, NGOÀI HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC VIỆC SỬ DỤNG HOẶC CÁC GIAO DỊCH KHÁC TRONG . Lời nói đầu - Mạng thần kinh từ đầu trong Python 7 Readme Mục tiêu của cuốn sách này là chia nhỏ một chủ đề cực kỳ phức tạp, mạng thần kinh, thành các phần nhỏ, có thể sử dụng được cho bất kỳ ai muốn bắt tay vào hành trình này. Ngoài việc phá vỡ chủ đề này, hy vọng là làm sáng tỏ đáng kể các mạng lưới thần kinh. Như bạn sẽ sớm thấy, chủ đề này, khi được khám phá từ đầu, có thể là một trải nghiệm hấp dẫn và mang tính giáo dục. Cuốn sách này dành cho bất cứ ai sẵn sàng dành thời gian để ngồi xuống và nghiên cứu nó. Đổi lại, bạn sẽ hiểu sâu hơn nhiều so với hầu hết khi nói đến mạng lưới thần kinh và học sâu. Cuốn sách này sẽ dễ hiểu hơn nếu bạn đã có hiểu biết về Python hoặc ngôn ngữ lập trình khác. Python là một trong những ngôn ngữ lập trình rõ ràng và dễ hiểu nhất; . Nếu bạn cần, chúng tôi khuyên bạn nên bắt đầu tại đây. https. //lập trình trăn. net/python-fundamental-tutorials/ Để trích dẫn tài liệu này. ​ Harrison Kinsley & Daniel Kukieła Mạng thần kinh từ đầu [NNFS] https. //nnfs. io Lời nói đầu - Mạng nơ-ron từ đầu trong Python 8 Chương 1 Giới thiệu về mạng nơ-ron Chúng ta bắt đầu với ý tưởng chung về mạng nơ-ron là gì và tại sao bạn có thể quan tâm đến chúng. Mạng thần kinh, còn được gọi là Mạng thần kinh nhân tạo [mặc dù có vẻ như trong những năm gần đây, chúng tôi đã bỏ phần “nhân tạo”], là một loại máy học thường được kết hợp với học sâu. Đặc điểm xác định của mạng nơ-ron sâu là có hai hoặc nhiều lớp ẩn — một khái niệm sẽ được giải thích ngay sau đây, nhưng những lớp ẩn này là lớp mà mạng nơ-ron điều khiển. Có thể nói rằng hầu hết các mạng thần kinh đang được sử dụng là một hình thức học sâu. hình 1. 01. Mô tả các lĩnh vực khác nhau của trí tuệ nhân tạo và vị trí của chúng trong tổng thể. ​ Lời nói đầu - Mạng nơ-ron từ đầu trong Python 9 Sơ lược về lịch sử Kể từ khi máy tính ra đời, các nhà khoa học đã xây dựng các cách để cho phép máy móc nhận đầu vào và tạo ra đầu ra mong muốn cho các nhiệm vụ như phân loại và hồi quy. Ngoài ra, nói chung, có máy học được giám sát và không được giám sát. Học máy có giám sát ​ ​ được sử dụng khi bạn đã thiết lập trước và gắn nhãn dữ liệu có thể dùng để đào tạo. Giả sử bạn có dữ liệu cảm biến cho một máy chủ với các chỉ số như tốc độ tải lên/tải xuống, nhiệt độ và độ ẩm, tất cả được sắp xếp theo thời gian cứ sau 10 phút. Thông thường, máy chủ này hoạt động như dự định và không có sự cố ngừng hoạt động, nhưng đôi khi các bộ phận bị lỗi và gây ra sự cố ngừng hoạt động. Chúng tôi có thể thu thập dữ liệu và sau đó chia nó thành hai lớp. một lớp dành cho thời gian/quan sát khi máy chủ hoạt động bình thường và một lớp khác dành cho thời gian/quan sát khi máy chủ gặp sự cố ngừng hoạt động. Khi máy chủ bị lỗi, chúng tôi muốn gắn nhãn dữ liệu cảm biến dẫn đến lỗi đó là dữ liệu trước lỗi. Khi máy chủ hoạt động bình thường, chúng tôi chỉ cần gắn nhãn dữ liệu đó là “bình thường. ” Những gì mỗi cảm biến đo lường trong ví dụ này được gọi là một tính năng. Một nhóm các tính năng tạo thành một bộ tính năng [được biểu thị dưới dạng vectơ/mảng] và các giá trị của một bộ tính năng có thể được gọi là mẫu. Các mẫu được đưa vào các mô hình mạng thần kinh để huấn luyện chúng khớp với các đầu ra mong muốn từ các đầu vào này hoặc để dự đoán dựa trên chúng trong giai đoạn suy luận. Nhãn “bình thường” và “không đạt” là phân loại hoặc nhãn. Bạn cũng có thể thấy những điều này được gọi là mục tiêu hoặc sự thật cơ bản trong khi chúng tôi điều chỉnh thuật toán máy học. Các mục tiêu này là các phân loại ​là mục tiêu hoặc mục tiêu, được biết là đúng và chính xác, để thuật toán học ​ ​ ​ ​ ​. Đối với ví dụ này, mục đích cuối cùng là đào tạo một thuật toán để đọc dữ liệu cảm biến và dự đoán chính xác khi sắp xảy ra sự cố. Đây chỉ là một ví dụ về học có giám sát dưới dạng phân loại. Ngoài phân loại, còn có hồi quy, được sử dụng để dự đoán các giá trị số, như giá cổ phiếu. Ngoài ra còn có máy học không giám sát, trong đó máy tìm thấy cấu trúc trong dữ liệu mà không cần biết trước các nhãn/lớp. Có những khái niệm bổ sung [e. g. , học tăng cường và học máy bán giám sát] nằm dưới sự bảo trợ của mạng lưới thần kinh. Đối với cuốn sách này, chúng tôi sẽ tập trung vào phân loại và hồi quy với mạng thần kinh, nhưng những gì chúng tôi trình bày ở đây dẫn đến các trường hợp sử dụng khác. Mạng lưới thần kinh được hình thành vào những năm 1940, nhưng việc tìm ra cách đào tạo chúng vẫn là một bí ẩn trong 20 năm. Khái niệm lan truyền ngược [sẽ giải thích sau] xuất hiện vào những năm 1960, nhưng ​ mạng nơ-ron vẫn không nhận được nhiều sự chú ý cho đến khi chúng bắt đầu giành chiến thắng trong các cuộc thi vào năm 2010. Kể từ đó, các mạng nơ-ron đã tăng lên nhanh chóng do Lời nói đầu đôi khi có vẻ giống như của chúng - Mạng nơ-ron từ đầu trong Python 10 khả năng kỳ diệu để giải quyết các vấn đề trước đây được coi là không thể giải quyết được, chẳng hạn như chú thích hình ảnh, dịch ngôn ngữ, tổng hợp âm thanh và video, v.v. Hiện tại, mạng lưới thần kinh là giải pháp chính cho hầu hết các cuộc thi và thách thức các vấn đề công nghệ như ô tô tự lái, tính toán rủi ro, phát hiện gian lận và phát hiện ung thư sớm, v.v. Mạng lưới thần kinh là gì? . Nó không phải là một so sánh hoàn hảo, nhưng có các tế bào thần kinh, kích hoạt và rất nhiều kết nối, ngay cả khi các quá trình cơ bản khá khác nhau. hình 1. 02. So sánh một tế bào thần kinh sinh học với một tế bào thần kinh nhân tạo. ​ Bản thân một nơ-ron đơn lẻ tương đối vô dụng, nhưng khi được kết hợp với hàng trăm hoặc hàng nghìn [hoặc nhiều hơn nữa] các nơ-ron khác, sự kết nối lẫn nhau tạo ra các mối quan hệ và kết quả thường vượt trội so với bất kỳ phương pháp học máy nào khác. Lời nói đầu - Mạng nơ-ron từ đầu trong Python 11 Hình 1. 03. Ví dụ về mạng nơ-ron có 3 lớp ẩn, mỗi lớp 16 nơ-ron. hoạt hình 1. 03. https. //nnfs. io/ntr : Hoạt hình trên cho thấy các ví dụ về cấu trúc mô hình và số lượng tham số mà mô hình phải học cách điều chỉnh để tạo ra kết quả đầu ra mong muốn. Các chi tiết của những gì được thấy ở đây là chủ đề của các chương trong tương lai. Nó có vẻ khá phức tạp khi bạn nhìn nó theo cách này. Mạng lưới thần kinh được coi là “hộp đen” ở chỗ chúng ta thường không biết tại sao chúng lại đưa ra kết luận như vậy. Chúng tôi hiểu cách họ làm điều này, mặc dù. ​ ​ Các lớp dày đặc, các lớp phổ biến nhất, bao gồm các nơ-ron liên kết với nhau. Trong một lớp dày đặc, mỗi nơ-ron của một lớp nhất định được kết nối với mọi nơ-ron của lớp tiếp theo, điều đó có nghĩa là giá trị đầu ra của nó trở thành đầu vào cho các nơ-ron tiếp theo. Mỗi kết nối giữa các nơ-ron có một trọng số được liên kết với nó, đây là yếu tố có thể huấn luyện về mức độ sử dụng của đầu vào này và trọng số này được nhân với giá trị đầu vào. Khi tất cả các yếu tố đầu vào·trọng số chảy vào nơ-ron của chúng ta, chúng ​ ​

Mạng lưới thần kinh từ đầu Harrison là gì?

Harrison Kinsley, Daniel Kukieła . a book intended to teach you how to build neural networks on your own, without any libraries, so you can better understand deep learning and how all of the elements work.

Netflix có sử dụng mạng thần kinh không?

Chúng tôi sử dụng nó để tối ưu hóa việc sản xuất các bộ phim và chương trình truyền hình gốc trong studio đang phát triển nhanh chóng của Netflix .

Bạn có thể xây dựng mạng lưới thần kinh mà không cần sử dụng bất kỳ thư viện nào không?

Bạn có thể chọn xây dựng mạng thần kinh ngay cả khi không có thư viện NumPy, nhưng sẽ tốn nhiều thời gian hơn . Chúng tôi cũng sẽ nhập thư viện duy nhất khác mà chúng tôi cần cho phần này trong matplotlib. Chúng tôi sẽ sử dụng thư viện này để trực quan hóa và vẽ biểu đồ tổn thất khi chúng tôi đào tạo mô hình của mình cho một số kỷ nguyên cụ thể.

Mạng lưới thần kinh có khó xây dựng không?

Đào tạo mạng lưới thần kinh học sâu rất khó . Thuật toán chung tốt nhất được biết để giải quyết vấn đề này là giảm dần độ dốc ngẫu nhiên, trong đó các trọng số của mô hình được cập nhật mỗi lần lặp bằng cách sử dụng thuật toán lan truyền ngược của lỗi. Tối ưu hóa nói chung là một nhiệm vụ cực kỳ khó khăn.

Chủ Đề