Mạng lưới thần kinh sâu trông như thế nào và tại sao chúng đòi hỏi nhiều bộ nhớ như vậy. Mạng lưới thần kinh hoạt động như thế nào

Và theo một số phần, hướng dẫn này dành cho những ai quan tâm đến học máy nhưng không biết bắt đầu từ đâu. Nội dung các bài viết hướng tới đối tượng rộng rãi và sẽ khá hời hợt. Nhưng có ai thực sự quan tâm? Càng nhiều người quan tâm đến học máy thì càng tốt.

Nhận dạng đối tượng bằng deep learning

Bạn có thể đã xem truyện tranh xkcd nổi tiếng này. Người ta nói đùa rằng bất kỳ đứa trẻ 3 tuổi nào cũng có thể nhận ra ảnh của một con chim, nhưng để có được một chiếc máy tính làm được điều đó thì các nhà khoa học máy tính giỏi nhất đã phải mất hơn 50 năm. công nhận bằng cách sử dụng mạng lưới thần kinh tích chập sâu. Điều này nghe có vẻ giống như một loạt các từ bịa đặt trong tiểu thuyết khoa học viễn tưởng của William Gibson, nhưng sẽ có ý nghĩa khi chúng ta xem xét từng từ một. Vì vậy, hãy làm điều đó - viết một chương trình nhận dạng các loài chim!

Hãy bắt đầu đơn giản

Trước khi học cách nhận biết hình ảnh các loài chim, chúng ta hãy học cách nhận biết một thứ đơn giản hơn nhiều - số viết tay "8".

Ngày nay có rất nhiều cuộc nói chuyện và viết về mạng lưới thần kinh nhân tạo - cả trong bối cảnh dữ liệu lớn và học máy, và bên ngoài nó. Trong bài viết này, chúng tôi sẽ nhắc lại ý nghĩa của khái niệm này, một lần nữa phác thảo phạm vi ứng dụng của nó, đồng thời nói về một cách tiếp cận quan trọng liên quan đến mạng lưới thần kinh - học sâu, chúng tôi sẽ mô tả khái niệm của nó, cũng như những ưu điểm và nhược điểm trong các trường hợp sử dụng cụ thể.

Mạng lưới thần kinh là gì?

Như bạn đã biết, khái niệm mạng lưới thần kinh (NN) xuất phát từ sinh học và là một mô hình đơn giản hóa về cấu trúc của bộ não con người. Nhưng chúng ta đừng đi sâu vào sự hoang dã của khoa học tự nhiên - cách dễ nhất là tưởng tượng một tế bào thần kinh (bao gồm cả tế bào nhân tạo) như một loại hộp đen có nhiều lỗ đầu vào và một đầu ra.

Về mặt toán học, nơron nhân tạo thực hiện phép biến đổi vectơ tín hiệu đầu vào(tác động) X vào vectơ đầu ra Y bằng cách sử dụng hàm gọi là hàm kích hoạt. Trong kết nối (mạng nơ-ron nhân tạo - ANN), ba loại nơ-ron có chức năng: đầu vào (nhận thông tin từ thế giới bên ngoài- giá trị của các biến mà chúng ta quan tâm), đầu ra (trả về các biến mong muốn - ví dụ: dự đoán hoặc tín hiệu điều khiển), cũng như các nơ-ron trung gian thực hiện một số chức năng bên trong (“ẩn”) nhất định. Do đó, ANN cổ điển bao gồm ba lớp nơ-ron trở lên và trong lớp thứ hai và lớp tiếp theo (“ẩn” và đầu ra), mỗi phần tử được kết nối với tất cả các phần tử của lớp trước đó.

Điều quan trọng cần nhớ là khái niệm nhận xét, xác định loại cấu trúc ANN: truyền tín hiệu trực tiếp (tín hiệu đi tuần tự từ lớp đầu vào qua lớp ẩn và đi vào lớp đầu ra) và cấu trúc tái phát, khi mạng chứa các kết nối quay trở lại, từ các nơ-ron xa hơn đến các nơ-ron gần hơn). Tất cả những khái niệm này tạo thành thông tin tối thiểu cần thiết cho việc chuyển đổi sang cấp độ tiếp theo hiểu ANN - đào tạo mạng lưới thần kinh, phân loại các phương pháp của nó và hiểu nguyên tắc hoạt động của từng phương pháp.

Đào tạo mạng lưới thần kinh

Chúng ta không nên quên lý do tại sao những phạm trù như vậy nói chung được sử dụng - nếu không sẽ có nguy cơ sa lầy vào toán học trừu tượng. Trên thực tế, mạng nơ ron nhân tạo được hiểu là một lớp các phương pháp giải quyết một số vấn đề thực tế nhất định, trong đó chủ yếu là các vấn đề về nhận dạng mẫu, ra quyết định, xấp xỉ và nén dữ liệu, cũng như các vấn đề thú vị nhất đối với chúng ta về cụm. phân tích và dự báo.

Không đi sang hướng cực đoan khác và không đi sâu vào chi tiết hoạt động của các phương pháp ANN trong từng trường hợp cụ thể, chúng ta hãy tự nhắc nhở mình rằng trong mọi trường hợp, đó là khả năng học của mạng lưới thần kinh (với giáo viên hoặc “tự học” ) đó là điểm quan trọng dụng nó để giải quyết các vấn đề thực tế.

TRONG trường hợp chung, huấn luyện ANN như sau:

  1. nơ-ron đầu vào nhận các biến (“kích thích”) từ môi trường bên ngoài;
  2. theo thông tin nhận được, các tham số tự do của mạng nơ-ron thay đổi (các lớp nơ-ron trung gian hoạt động);
  3. Do những thay đổi trong cấu trúc của mạng nơron, mạng “phản ứng” với thông tin theo một cách khác.

Đây là thuật toán chung để huấn luyện mạng lưới thần kinh (hãy nhớ đến con chó của Pavlov - vâng, đó chính xác là cơ chế bên trong để hình thành phản xạ có điều kiện - và hãy quên ngay: xét cho cùng, bối cảnh của chúng ta liên quan đến việc vận hành với các khái niệm và ví dụ kỹ thuật).

Rõ ràng là một thuật toán học tập phổ quát không tồn tại và rất có thể không thể tồn tại; Về mặt khái niệm, các phương pháp học tập được chia thành học tập có giám sát và học tập không giám sát. Thuật toán đầu tiên giả định rằng đối với mỗi vectơ đầu vào (“học”) có một giá trị bắt buộc của vectơ đầu ra (“đích”) - do đó, hai giá trị này tạo thành một cặp huấn luyện và toàn bộ tập hợp các cặp đó là tập huấn luyện. Trong trường hợp học không giám sát, tập huấn luyện chỉ bao gồm các vectơ đầu vào - và tình huống này hợp lý hơn theo quan điểm của cuộc sống thực.

Học kĩ càng

Khái niệm học sâu đề cập đến một phân loại khác và biểu thị một cách tiếp cận để đào tạo cái gọi là cấu trúc sâu, bao gồm các mạng lưới thần kinh đa cấp. Một ví dụ đơn giản từ lĩnh vực nhận dạng hình ảnh: cần phải dạy một chiếc máy xác định các đặc điểm ngày càng trừu tượng theo các đặc điểm trừu tượng khác, nghĩa là xác định mối quan hệ giữa biểu hiện của toàn bộ khuôn mặt, mắt và miệng, và, cuối cùng là các cụm pixel màu về mặt toán học. Do đó, trong mạng lưới thần kinh sâu, mỗi cấp độ tính năng có lớp riêng; Rõ ràng là để đào tạo được một “khổng lồ” như vậy thì phải có kinh nghiệm phù hợp của các nhà nghiên cứu và trình độ chuyên môn. phần cứng. Các điều kiện có lợi cho việc học thần kinh sâu chỉ được phát triển vào năm 2006 - và tám năm sau, chúng ta có thể nói về cuộc cách mạng mà phương pháp này đã tạo ra trong học máy.

Vì vậy, trước hết, trong bối cảnh bài viết của chúng tôi, cần lưu ý điều sau: học sâu trong hầu hết các trường hợp không được giám sát bởi một người. Nghĩa là, cách tiếp cận này liên quan đến việc đào tạo mạng lưới thần kinh mà không cần giáo viên. Đây là ưu điểm chính của phương pháp tiếp cận “sâu”: học máy có giám sát, đặc biệt trong trường hợp cấu trúc sâu, đòi hỏi chi phí về thời gian và nhân công rất lớn. Mặt khác, học sâu là một cách tiếp cận mô hình hóa (hoặc ít nhất là cố gắng ước tính) tư duy trừu tượng của con người, thay vì sử dụng nó.

Ý tưởng, như thường lệ, thật tuyệt vời, nhưng những vấn đề khá tự nhiên nảy sinh trong cách tiếp cận - trước hết, bắt nguồn từ những tuyên bố của nó về tính phổ quát. Trên thực tế, trong khi các phương pháp học sâu đã đạt được thành công đáng kể trong lĩnh vực nhận dạng hình ảnh, thì việc xử lý ngôn ngữ tự nhiên tương tự vẫn đặt ra nhiều câu hỏi hơn là câu trả lời. Rõ ràng là trong n năm tới khó có thể tạo ra một “Leonardo Da Vinci nhân tạo” hoặc thậm chí - ít nhất là vậy! - “con người nhân tạo”.

Tuy nhiên, trước khi các nhà nghiên cứu trí tuệ nhân tạo câu hỏi về đạo đức đã nảy sinh: nỗi sợ hãi được thể hiện trong mọi bộ phim khoa học viễn tưởng đầy tự trọng, bắt đầu với “Kẻ hủy diệt” và kết thúc bằng “Transformers”, dường như không còn buồn cười nữa (mạng lưới thần kinh phức tạp hiện đại có thể được coi là một mô hình hợp lý về cách bộ não côn trùng hoạt động!), nhưng hiện tại rõ ràng là không cần thiết.

Tương lai công nghệ lý tưởng xuất hiện với chúng ta như một thời đại mà con người có thể giao phần lớn quyền lực của mình cho một cỗ máy - hoặc ít nhất có thể cho phép nó tạo điều kiện thuận lợi cho một phần quan trọng trong công việc trí tuệ của mình. Khái niệm học sâu là một bước hướng tới ước mơ này. Con đường phía trước còn dài, nhưng rõ ràng là mạng lưới thần kinh và tất cả các phương pháp tiếp cận đang phát triển liên quan đến chúng đều có khả năng hiện thực hóa khát vọng của các nhà văn khoa học viễn tưởng theo thời gian.

Tôi đã tìm hiểu về xu hướng kinh doanh tại một hội nghị quy mô lớn ở Kiev. Ngày thứ Bảy tràn ngập những hiểu biết sâu sắc, trong đó chúng tôi có được những kiến ​​thức và mối quen biết mới sau thời gian bỏ ra. Tại hội nghị có 4 luồng thông tin dành cho lãnh đạo doanh nghiệp, quản lý cấp cao, nhà tiếp thị, bộ phận bán hàng, nhân sự và các chuyên gia khác. Một trong những diễn giả là Bộ trưởng Bộ Cơ sở hạ tầng Volodymyr Omelyan, người đã nói về sự phát triển của Galuzia, việc cải tạo đường sá và sân bay.

Chúc tất cả những người dùng iOS thân mến một ngày tốt lành, có lẽ mỗi người trong số các bạn đều đã từng làm việc với mạng và phân tích dữ liệu từ JSON. Đối với quá trình này, có rất nhiều thư viện, tất cả các loại công cụ mà bạn có thể sử dụng. Một số trong số chúng phức tạp và một số đơn giản. Thành thật mà nói, bản thân tôi đã phân tích cú pháp JSON bằng tay trong một thời gian rất dài, không tin tưởng quy trình này vào một số thư viện bên thứ ba và điều này có lợi thế của nó.

Vào ngày 9 tháng 9 năm 2014, trong buổi thuyết trình tiếp theo, Apple đã giới thiệu hệ thống thanh toán di động của riêng mình - Apple Pay.

Bằng cách sử dụng hệ thống thanh toán Người dùng và chủ sở hữu Apple Pay iPhone 6 và iPhone 6+ phiên bản mới nhất Apple Watch có thể mua sắm trực tuyến, sử dụng lợi ích kèm theo Trả phí cho apple cho các ứng dụng di động và thực hiện thanh toán bằng cách sử dụng công nghệ NFC(Giao tiếp trường gần). Dùng để ủy quyền thanh toán Công nghệ cảm ứng ID hoặc Face ID.

Công nghệ không đứng yên và các quá trình phát triển cũng chuyển động theo chúng. Nếu trước đây các công ty làm việc theo mô hình “Thác nước” thì bây giờ, mọi người đều nỗ lực triển khai “Scrum”. Sự tiến hóa cũng đang diễn ra trong việc cung cấp các dịch vụ phát triển phần mềm. Trước đây, các công ty cung cấp cho khách hàng sự phát triển chất lượng cao trong phạm vi ngân sách và dừng lại ở đó, nhưng giờ đây họ cố gắng mang lại lợi ích tối đa cho khách hàng và doanh nghiệp của họ bằng cách cung cấp chuyên môn của họ.

Trong vài năm qua, rất nhiều phông chữ đẹp đã xuất hiện, bao gồm cả những phông chữ miễn phí, nên chúng tôi quyết định viết phần tiếp theo của mình cho các nhà thiết kế.

Mỗi nhà thiết kế đều có một bộ phông chữ yêu thích để làm việc mà họ đã quen làm việc và điều đó phản ánh chúng. phong cách đồ họa. Nhà thiết kế nói " Phông chữ tốt không bao giờ có thể có quá nhiều,” nhưng bây giờ chúng ta có thể tưởng tượng một cách an toàn tình huống trong đó bộ này chỉ bao gồm các phông chữ miễn phí.

Tần suất các nhà quản lý dự án thấy mình đang ở giữa một tảng đá và một nơi khó khăn khi cố gắng tìm sự cân bằng giữa tất cả các yêu cầu và thời hạn của khách hàng cũng như sức khỏe tinh thần của toàn nhóm? Cần phải tính đến bao nhiêu sắc thái để có được hòa bình và trật tự cho cả hai bên trách nhiệm? Làm thế nào để biết bạn có phải là người quản lý giỏi hay bạn cần cải thiện gấp về mọi mặt? Làm thế nào để xác định chính xác những khía cạnh nào mà bạn, với tư cách là một PM, đang tụt lại phía sau và bạn giỏi và thông minh ở điểm nào? Đây chính xác là nội dung của hội nghị Code'n'Coffee tiếp theo.

Công nghệ nhận dạng mẫu đang ngày càng trở thành một phần trong cuộc sống hàng ngày của chúng ta. Các công ty và tổ chức sử dụng nó cho nhiều nhiệm vụ khác nhau, từ bảo mật đến khảo sát sự hài lòng của khách hàng. Đầu tư vào sản phẩm dựa trên Chức năng này, hứa hẹn sẽ tăng lên 39 tỷ USD vào năm 2021. Đây chỉ là một vài ví dụ về cách sử dụng nhận dạng mẫu trong các lĩnh vực khác nhau.

"(Ấn phẩm Manning).

Bài viết này dành cho những người đã có kinh nghiệm đáng kể về deep learning (ví dụ: những người đã đọc chương 1-8 của cuốn sách này). Giả sử có sẵn số lượng lớn kiến thức.

Học sâu: Chế độ xem hình học

Điều tuyệt vời nhất về deep learning là nó rất đơn giản. Mười năm trước, không ai có thể tưởng tượng được kết quả đáng kinh ngạc mà chúng ta sẽ đạt được trong các vấn đề về nhận thức của máy bằng cách sử dụng các mô hình tham số đơn giản được đào tạo với độ dốc giảm dần. Bây giờ hóa ra tất cả những gì chúng ta cần là đủ lớn mô hình tham số được đào tạo về đủ lớn số lượng mẫu. Như Feynman đã từng nói về Vũ trụ: “ Nó không phức tạp, chỉ có rất nhiều thứ».

Trong học sâu, mọi thứ đều là một vectơ, nghĩa là dấu chấm V. không gian hình học. Dữ liệu đầu vào của mô hình (có thể là văn bản, hình ảnh, v.v.) và các mục tiêu của nó trước tiên được “vectơ hóa”, nghĩa là được dịch sang một số không gian vectơ ban đầu làm đầu vào và không gian vectơ đích làm đầu ra. Mỗi lớp trong mô hình học kĩ càng thực hiện một phép biến đổi hình học đơn giản trên dữ liệu đi qua nó. Cùng với nhau, chuỗi các lớp mô hình tạo ra một phép biến đổi hình học rất phức tạp, được chia thành một số lớp đơn giản. Phép biến đổi phức tạp này cố gắng chuyển đổi không gian dữ liệu đầu vào thành không gian đích cho từng điểm. Các tham số chuyển đổi được xác định bởi trọng số lớp, được cập nhật liên tục dựa trên mức độ hoạt động của mô hình tại thời điểm hiện tại. Tính năng chính biến đổi hình học - nó phải là gì có thể phân biệt được, nghĩa là chúng ta có thể tìm ra các tham số của nó thông qua việc giảm độ dốc. Theo trực giác, điều này có nghĩa là việc biến đổi hình học phải trơn tru và liên tục—một hạn chế quan trọng.

Toàn bộ quá trình áp dụng phép biến đổi hình học phức tạp này cho dữ liệu đầu vào có thể được hiển thị dưới dạng 3D bằng cách mô tả một người đang cố gắng mở một quả bóng giấy: quả cầu giấy nhàu nát là nhiều loại dữ liệu đầu vào mà mô hình bắt đầu hoạt động. Mỗi chuyển động của một người với một quả bóng giấy giống như một phép biến đổi hình học đơn giản được thực hiện bởi một lớp duy nhất. Trình tự hoàn chỉnh của các cử chỉ diễn ra là một sự biến đổi phức tạp của toàn bộ mô hình. Các mô hình học sâu là những cỗ máy toán học để làm sáng tỏ sự đa dạng phức tạp của dữ liệu đa chiều.

Đó là điều kỳ diệu của học sâu: biến giá trị thành vectơ, thành không gian hình học, rồi dần dần học các phép biến đổi hình học phức tạp để biến không gian này thành không gian khác. Tất cả những gì cần thiết là một không gian có kích thước đủ lớn để truyền tải đầy đủ các mối quan hệ được tìm thấy trong dữ liệu gốc.

Hạn chế của Deep Learning

Số lượng vấn đề có thể được giải quyết bằng chiến lược đơn giản này gần như là vô tận. Chưa hết, nhiều trong số chúng vẫn nằm ngoài tầm với của các kỹ thuật học sâu hiện tại - ngay cả khi có sẵn lượng lớn dữ liệu được chú thích thủ công. Ví dụ: giả sử bạn có thể thu thập một tập dữ liệu gồm hàng trăm nghìn - thậm chí hàng triệu - mô tả bằng tiếng Anh về các tính năng phần mềm do người quản lý sản phẩm viết, cũng như năm tham chiếu tương ứng do nhóm kỹ sư phát triển để đáp ứng các yêu cầu đó. Ngay cả với dữ liệu này, bạn không thể đào tạo một mô hình deep learning chỉ để đọc mô tả sản phẩm và tạo cơ sở mã tương ứng. Đây chỉ là một trong nhiều ví dụ. Nói chung, bất cứ điều gì đòi hỏi lý luận - như lập trình hoặc áp dụng phương pháp khoa học, lập kế hoạch dài hạn, thao tác dữ liệu theo kiểu thuật toán - đều nằm ngoài khả năng của các mô hình học sâu, bất kể bạn ném vào chúng bao nhiêu dữ liệu. Ngay cả việc đào tạo một mạng lưới thần kinh để thực hiện thuật toán sắp xếp cũng là một nhiệm vụ cực kỳ khó khăn.

Nguyên nhân là do mô hình deep learning “chỉ” một chuỗi các phép biến đổi hình học đơn giản, liên tục, biến đổi một không gian vectơ thành một không gian vectơ khác. Tất cả những gì nó có thể làm là chuyển đổi một tập dữ liệu X thành một tập Y khác, với điều kiện là có thể học được một sự chuyển đổi liên tục từ X sang Y và có thể học được và tính sẵn có. tập hợp mẫu dày đặc Các phép biến đổi X:Y làm dữ liệu huấn luyện. Vì vậy, mặc dù mô hình học sâu có thể được coi là một loại chương trình, hầu hết các chương trình không thể được thể hiện dưới dạng mô hình học sâu- đối với hầu hết các vấn đề, hoặc không có mạng lưới thần kinh sâu có kích thước thực tế phù hợp để giải quyết vấn đề, hoặc nếu có thì có thể không thể dạy được, nghĩa là phép biến đổi hình học tương ứng có thể quá phức tạp hoặc không có dữ liệu phù hợp để huấn luyện nó.

Việc mở rộng quy mô các kỹ thuật học sâu hiện có—thêm nhiều lớp hơn và sử dụng nhiều dữ liệu đào tạo hơn—chỉ có thể giảm thiểu một số vấn đề này một cách hời hợt. Nó sẽ không giải quyết được vấn đề cơ bản hơn là các mô hình học sâu rất hạn chế về những gì chúng có thể biểu diễn và hầu hết các chương trình không thể được biểu diễn dưới dạng biến đổi hình học liên tục của các đa tạp dữ liệu.

Rủi ro của việc nhân bản hóa các mô hình học máy

Một trong những rủi ro thực sự của AI hiện đại là hiểu sai cách hoạt động của các mô hình deep learning và phóng đại khả năng của chúng. Một đặc điểm cơ bản của tâm trí con người là “mô hình tâm lý con người”, xu hướng của chúng ta là phóng chiếu các mục tiêu, niềm tin và kiến ​​thức vào những thứ xung quanh chúng ta. Hình vẽ khuôn mặt tươi cười trên đá bỗng khiến chúng ta “hạnh phúc” - về mặt tinh thần. Ví dụ, khi áp dụng vào học sâu, điều này có nghĩa là nếu chúng ta ít nhiều có thể đào tạo thành công một mô hình để tạo ra mô tả văn bản hình ảnh, thì chúng ta có xu hướng nghĩ rằng mô hình “hiểu” nội dung của hình ảnh cũng như các mô tả được tạo ra. Sau đó, chúng tôi vô cùng ngạc nhiên khi do có một sai lệch nhỏ so với tập hợp hình ảnh được trình bày trong dữ liệu huấn luyện, mô hình bắt đầu tạo ra các mô tả hoàn toàn vô lý.

Đặc biệt, điều này được thể hiện rõ nhất trong “các ví dụ đối nghịch”, là các mẫu dữ liệu đầu vào của mạng học sâu được chọn cụ thể để phân loại sai. Bạn đã biết rằng bạn có thể thực hiện tăng dần độ dốc trên không gian dữ liệu đầu vào để tạo các mẫu giúp tối đa hóa việc kích hoạt, chẳng hạn như một bộ lọc mạng nơ-ron tích chập cụ thể - đây là cơ sở của kỹ thuật trực quan hóa mà chúng ta đã đề cập trong Chương 5 (lưu ý: sách "Deep Learning with Python") , giống như thuật toán Deep Dream từ Chương 8. Theo cách tương tự, thông qua việc tăng độ dốc, bạn có thể thay đổi hình ảnh một chút để tối đa hóa khả năng dự đoán lớp cho một lớp nhất định. Nếu chúng ta chụp ảnh một con gấu trúc và thêm độ dốc "vượn", chúng ta có thể buộc mạng lưới thần kinh phân loại con gấu trúc đó là vượn. Điều này chứng tỏ cả sự mong manh của những mô hình này và sự khác biệt sâu sắc giữa quá trình chuyển đổi đầu vào thành đầu ra mà nó hướng dẫn và nhận thức của chính con người chúng ta.

Nhìn chung, các mô hình deep learning không có khả năng hiểu biết về dữ liệu đầu vào, ít nhất là không theo nghĩa của con người. Sự hiểu biết của chúng ta về hình ảnh, âm thanh, ngôn ngữ dựa trên trải nghiệm cảm giác vận động của chúng ta với tư cách là con người - với tư cách là những sinh vật vật chất trên trần thế. Các mô hình học máy không có quyền truy cập vào trải nghiệm như vậy và do đó không thể “hiểu” dữ liệu đầu vào của chúng ta theo bất kỳ cách nào giống con người. Bằng cách chú thích một số lượng lớn các ví dụ để đào tạo các mô hình của chúng tôi, chúng tôi buộc chúng phải học một phép biến đổi hình học nhằm chuyển đổi dữ liệu thành các khái niệm của con người đối với tập hợp các ví dụ cụ thể đó, nhưng phép biến đổi này chỉ là một bản phác thảo đơn giản về mô hình ban đầu trong tâm trí chúng ta, như được phát triển từ kinh nghiệm của chúng ta với tư cách là tác nhân cơ thể giống như một sự phản chiếu mờ nhạt trong gương.

Là một người thực hành học máy, hãy luôn ghi nhớ điều này và đừng bao giờ rơi vào cái bẫy tin rằng mạng lưới thần kinh hiểu nhiệm vụ mà chúng đang thực hiện - ít nhất là không theo cách có ý nghĩa đối với chúng ta. Họ đã được đào tạo về một nhiệm vụ khác, cụ thể hơn nhiều so với nhiệm vụ mà chúng tôi muốn đào tạo họ: chỉ cần chuyển các mô hình học tập đầu vào thành các mô hình học tập mục tiêu, từ điểm này sang điểm khác. Cho họ xem bất cứ điều gì khác với dữ liệu huấn luyện và họ sẽ phá vỡ theo những cách ngớ ngẩn nhất.

Khái quát hóa cục bộ và khái quát hóa cực độ

Dường như có những khác biệt cơ bản giữa sự biến đổi hình học trực tiếp từ đầu vào đến đầu ra mà các mô hình học sâu thực hiện và cách con người suy nghĩ và học hỏi. Không chỉ là mọi người tự học hỏi từ trải nghiệm cơ thể của họ chứ không phải thông qua việc xử lý một tập hợp các mẫu đào tạo. Ngoài những khác biệt trong quá trình học tập, còn có những khác biệt cơ bản về bản chất của niềm tin cơ bản.

Con người có khả năng làm được nhiều việc hơn là chuyển một kích thích tức thời thành phản ứng tức thời, như mạng lưới thần kinh hoặc có lẽ là côn trùng. Mọi người giữ những mô hình phức tạp, trừu tượng trong tâm trí họ tình hình hiện tại, chính họ, những người khác và có thể sử dụng những mô hình này để dự đoán các những lựa chọn khả thi tương lai và thực hiện kế hoạch dài hạn. Họ có khả năng kết hợp các khái niệm đã biết để tưởng tượng ra điều gì đó mà họ chưa từng biết trước đây - chẳng hạn như vẽ một con ngựa trong chiếc quần jean, hoặc tưởng tượng những gì họ sẽ làm nếu trúng xổ số. Khả năng suy nghĩ theo giả thuyết, mở rộng mô hình không gian tinh thần của chúng ta vượt xa những gì chúng ta đã trực tiếp trải nghiệm, tức là khả năng thực hiện sự trừu tượnglý luận, có lẽ là đặc điểm xác định nhận thức của con người. Tôi gọi đây là “sự khái quát hóa cuối cùng”: khả năng thích ứng với những tình huống mới, chưa từng có trước đây bằng cách sử dụng ít hoặc không có dữ liệu.

Điều này hoàn toàn trái ngược với những gì mạng học sâu thực hiện mà tôi gọi là "tổng quát hóa cục bộ": việc chuyển đổi dữ liệu đầu vào thành dữ liệu đầu ra sẽ nhanh chóng không còn ý nghĩa nếu dữ liệu đầu vào mới thậm chí hơi khác so với những gì nó gặp phải trong quá trình đào tạo. Ví dụ, hãy xem xét vấn đề học tập thông số phù hợp phóng một tên lửa sẽ đáp xuống mặt trăng. Nếu bạn định sử dụng mạng nơ-ron cho nhiệm vụ này, được giám sát hoặc huấn luyện tăng cường, bạn sẽ cần cung cấp cho nó hàng nghìn hoặc hàng triệu quỹ đạo bay, tức là bạn sẽ cần tạo ra tập hợp các ví dụ dày đặc trong không gian giá trị đầu vào để tìm hiểu cách chuyển đổi một cách đáng tin cậy từ không gian giá trị đầu vào sang không gian giá trị đầu ra. Ngược lại, con người có thể sử dụng sức mạnh trừu tượng để tạo ra mô hình vật lý- khoa học tên lửa - và tìm ra giải pháp chính xác sẽ đưa tên lửa lên Mặt trăng chỉ sau vài lần thử. Theo cách tương tự, nếu bạn phát triển một mạng lưới thần kinh để điều khiển cơ thể con người và muốn nó học cách đi bộ an toàn trong thành phố mà không bị ô tô đâm, mạng sẽ phải chết hàng nghìn lần mỗi lần. tình huống khác x trước khi kết luận rằng ô tô là nguy hiểm và phát triển hành vi thích hợp để tránh chúng. Nếu nó được chuyển đến một thành phố mới, mạng sẽ phải học lại hầu hết những gì nó đã biết. Mặt khác, mọi người có thể học cách cư xử an toàn mà không cần phải chết - một lần nữa, nhờ vào khả năng mô phỏng trừu tượng các tình huống giả định.

Vì vậy, bất chấp những tiến bộ trong lĩnh vực nhận thức máy móc, chúng ta vẫn còn cách rất xa AI ở cấp độ con người: các mô hình của chúng ta chỉ có thể thực hiện khái quát hóa cục bộ, thích ứng với những tình huống mới phải rất gần với dữ liệu trong quá khứ, trong khi trí óc con người có khả năng khái quát hóa cực độ, nhanh chóng thích nghi với những tình huống hoàn toàn mới hoặc lên kế hoạch cho tương lai xa.

kết luận

Đây là những gì bạn cần nhớ: thành công thực sự duy nhất của deep learning cho đến nay là khả năng dịch không gian X sang không gian Y bằng cách sử dụng phép biến đổi hình học liên tục, dựa trên một lượng lớn dữ liệu được chú thích của con người. Làm tốt điều này thể hiện một bước tiến mang tính cách mạng cho toàn bộ ngành công nghiệp, nhưng AI ở cấp độ con người vẫn còn một chặng đường dài.

Để loại bỏ một số hạn chế này và bắt đầu cạnh tranh với bộ não con người, chúng ta cần chuyển từ chuyển đổi đầu vào thành đầu ra trực tiếp và chuyển sang lý luậnsự trừu tượng. Các chương trình máy tính có thể là cơ sở phù hợp để mô hình hóa các tình huống và khái niệm khác nhau một cách trừu tượng. Chúng tôi đã nói trước đây (lưu ý: trong Deep Learning with Python) rằng các mô hình học máy có thể được định nghĩa là "các chương trình học"; hiện tại, chúng tôi chỉ có thể đào tạo một tập hợp con hẹp và cụ thể của tất cả các chương trình có thể. Nhưng điều gì sẽ xảy ra nếu chúng ta có thể huấn luyện từng chương trình theo mô-đun và lặp lại? Hãy xem làm thế nào chúng ta có thể đến đó.

Tương lai của học sâu

Với những gì chúng ta biết về mạng lưới học sâu, những hạn chế của chúng và tình trạng nghiên cứu hiện tại, liệu chúng ta có thể dự đoán điều gì sẽ xảy ra trong trung hạn không? Dưới đây là một số suy nghĩ cá nhân của tôi về vấn đề này. Hãy nhớ rằng tôi không có quả cầu pha lê để dự đoán, rất nhiều điều tôi mong đợi có thể không thành hiện thực. Đây là suy đoán hoàn toàn. Tôi chia sẻ những dự đoán này không phải vì tôi kỳ vọng chúng sẽ được hiện thực hóa hoàn toàn trong tương lai mà vì chúng thú vị và có thể áp dụng được cho hiện tại.

Ở cấp độ cao, đây là những lĩnh vực chính mà tôi cho là có triển vọng:

  • Các mô hình sẽ tiếp cận các chương trình máy tính có mục đích chung được xây dựng dựa trên các nguyên hàm phong phú hơn nhiều so với các lớp vi phân hiện tại của chúng ta - vì vậy chúng ta sẽ nhận được lý luậnsự trừu tượng, sự vắng mặt của nó là điểm yếu cơ bản của các mô hình hiện tại.
  • Các hình thức học tập mới sẽ xuất hiện để biến điều này thành hiện thực - và cho phép các mô hình thoát khỏi những biến đổi đơn giản có thể khác biệt.
  • Các mô hình sẽ yêu cầu ít đầu vào của nhà phát triển hơn - công việc của bạn không phải là liên tục vặn các nút bấm.
  • Sẽ có sự tái sử dụng có hệ thống và lớn hơn các tính năng và kiến ​​trúc đã học; hệ thống siêu học tập dựa trên các thói quen mô-đun và có thể tái sử dụng.
Ngoài ra, hãy lưu ý rằng những cân nhắc này không áp dụng riêng cho học có giám sát, vốn vẫn là nền tảng của học máy—chúng cũng áp dụng cho bất kỳ hình thức học máy nào, bao gồm học không giám sát, học có giám sát và học tăng cường. Về cơ bản, việc nhãn của bạn đến từ đâu hoặc chu trình học tập của bạn trông như thế nào không quan trọng; các nhánh khác nhau của học máy này chỉ đơn giản là các khía cạnh khác nhau của cùng một cấu trúc.

Vậy thì cứ đi.

Mô hình dưới dạng chương trình

Như chúng tôi đã lưu ý trước đó, sự phát triển chuyển đổi cần thiết có thể được mong đợi trong lĩnh vực học máy là loại bỏ các mô hình hoạt động thuần túy. nhận dạng mẫu và chỉ có khả năng khái quát hóa cục bộ, đến các mô hình có khả năng sự trừu tượnglý luận có thể đạt được khái quát hóa cuối cùng. Tất cả các chương trình AI hiện tại với khả năng suy luận cơ bản đều được lập trình viên con người mã hóa cứng: ví dụ: các chương trình dựa vào thuật toán tìm kiếm, thao tác đồ thị, logic hình thức. Ví dụ, trong chương trình AlphaGo của DeepMind, phần lớn "trí thông minh" trên màn hình được thiết kế và mã hóa cứng bởi các lập trình viên chuyên nghiệp (ví dụ: tìm kiếm cây Monte Carlo); Việc học từ dữ liệu mới chỉ diễn ra trong các mô-đun con chuyên biệt - mạng giá trị và mạng chính sách. Nhưng trong tương lai, những hệ thống AI như vậy có thể được đào tạo hoàn toàn mà không cần sự can thiệp của con người.

Làm thế nào để đạt được điều này? Hãy lấy một loại mạng nổi tiếng: RNN. Điều quan trọng là RNN có ít hạn chế hơn một chút so với mạng nơ-ron tiếp liệu. Điều này là do RNN không chỉ là những phép biến đổi hình học đơn giản: chúng là những phép biến đổi hình học được thực hiện liên tục trong vòng lặp for. Thời gian của vòng lặp for được nhà phát triển chỉ định: đó là giả định có sẵn của mạng. Đương nhiên, RNN vẫn bị hạn chế về những gì chúng có thể biểu diễn, chủ yếu là vì mỗi bước chúng thực hiện vẫn là một phép biến đổi hình học có thể vi phân và do cách chúng truyền tải thông tin từng bước qua các điểm trong một không gian hình học liên tục (vectơ trạng thái). Bây giờ hãy tưởng tượng các mạng lưới thần kinh sẽ được “mở rộng” bằng cách lập trình nguyên thủy giống như vòng lặp for- nhưng không chỉ là một vòng lặp for được mã hóa cứng với bộ nhớ hình học được khâu, mà còn bộ lớn lập trình nguyên thủy mà mô hình có thể tự do truy cập để mở rộng khả năng xử lý của nó, chẳng hạn như các nhánh if, câu lệnh while, tạo biến, lưu trữ đĩa cho bộ nhớ dài hạn, toán tử sắp xếp, cấu trúc dữ liệu nâng cao như danh sách, đồ thị, bảng băm, v.v. . Không gian của các chương trình mà một mạng như vậy có thể đại diện sẽ rộng hơn nhiều so với những gì có thể thể hiện được. mạng hiện có học sâu và một số chương trình này có thể đạt được khả năng khái quát hóa vượt trội.

Nói tóm lại, chúng ta sẽ tránh xa thực tế là một mặt chúng ta có “trí thông minh thuật toán được mã hóa cứng” (phần mềm viết tay) và mặt khác là “trí tuệ hình học được đào tạo” (học sâu). Thay vào đó, chúng ta sẽ kết thúc bằng một hỗn hợp các mô-đun thuật toán hình thức cung cấp khả năng lý luậnsự trừu tượng và các mô-đun hình học cung cấp khả năng trực giác không chính thức và nhận dạng mẫu. Toàn bộ hệ thống sẽ được đào tạo với rất ít hoặc không có sự can thiệp của con người.

Một lĩnh vực liên quan đến AI mà tôi nghĩ có thể sớm đạt được những bước tiến lớn là tổng hợp phần mềm, đặc biệt là tổng hợp phần mềm thần kinh. Tổng hợp chương trình bao gồm việc tự động tạo ra các chương trình đơn giản bằng cách sử dụng thuật toán tìm kiếm(có lẽ là tìm kiếm di truyền, như trong lập trình di truyền) để nghiên cứu không gian rộng các chương trình có thể. Việc tìm kiếm dừng lại khi tìm thấy một chương trình đáp ứng các thông số kỹ thuật bắt buộc, thường được cung cấp dưới dạng một tập hợp các cặp đầu vào-đầu ra. Như bạn có thể thấy, điều này rất giống với học máy: “dữ liệu huấn luyện” được cung cấp dưới dạng cặp đầu vào-đầu ra, chúng tôi tìm thấy một “chương trình” tương ứng với việc chuyển đổi đầu vào thành đầu ra và có khả năng khái quát hóa thành đầu vào mới. Sự khác biệt là thay vì huấn luyện các giá trị tham số trong một chương trình được mã hóa cứng (mạng nơron), chúng ta tạo ra nguồn thông qua quá trình tìm kiếm rời rạc.

Tôi chắc chắn mong đợi sẽ có nhiều người quan tâm đến lĩnh vực này trong vài năm tới. Đặc biệt, tôi kỳ vọng sự thâm nhập lẫn nhau của các lĩnh vực liên quan đến học sâu và tổng hợp phần mềm, nơi chúng ta sẽ không chỉ tạo ra các chương trình bằng các ngôn ngữ có mục đích chung mà còn tạo ra các mạng thần kinh (luồng xử lý dữ liệu hình học), bổ sung một tập hợp phong phú các thuật toán nguyên thủy, chẳng hạn như vòng lặp for - và nhiều vòng lặp khác. Điều này sẽ thuận tiện và hữu ích hơn nhiều so với việc tạo mã nguồn trực tiếp và sẽ mở rộng đáng kể phạm vi các vấn đề có thể giải quyết bằng học máy - không gian của các chương trình mà chúng ta có thể tạo tự động, với dữ liệu đào tạo phù hợp. Sự kết hợp giữa AI biểu tượng và AI hình học. RNN hiện đại có thể được coi là tổ tiên lịch sử của các mô hình hình học-thuật toán lai như vậy.


Vẽ: Chương trình được đào tạo đồng thời dựa trên các nguyên hàm hình học (nhận dạng mẫu, trực giác) và các nguyên hàm thuật toán (đối số, tìm kiếm, bộ nhớ).

Ngoài lan truyền ngược và các lớp khác biệt

Nếu các mô hình học máy trở nên giống các chương trình hơn thì chúng sẽ khó có thể phân biệt được nữa—chắc chắn các chương trình đó sẽ vẫn sử dụng các lớp hình học liên tục làm các chương trình con vẫn có thể phân biệt được, nhưng mô hình tổng thể thì không. Do đó, việc sử dụng lan truyền ngược để điều chỉnh các giá trị trọng số trong một mạng cố định, được mã hóa cứng có thể không còn là phương pháp được ưa thích cho các mô hình đào tạo trong tương lai—ít nhất, nó không nên chỉ giới hạn ở phương pháp này. Chúng ta cần tìm ra cách đào tạo các hệ thống không khác biệt một cách hiệu quả nhất. Cách tiếp cận hiện tại bao gồm các thuật toán di truyền, "chiến lược tiến hóa", các phương pháp học tăng cường nhất định, ADMM (phương pháp định hướng xen kẽ của hệ số nhân Lagrange). Đương nhiên, việc giảm độ dốc vẫn tiếp tục tồn tại - thông tin về độ dốc sẽ luôn hữu ích để tối ưu hóa các hàm tham số khả vi. Nhưng các mô hình của chúng tôi chắc chắn sẽ trở nên tham vọng hơn là chỉ các hàm tham số khả vi và do đó, quá trình phát triển tự động của chúng (“đào tạo” về “học máy”) sẽ đòi hỏi nhiều hơn là truyền ngược.

Ngoài ra, lan truyền ngược có khung từ đầu đến cuối, phù hợp để học các phép biến đổi nối tốt, nhưng khá kém hiệu quả về mặt tính toán vì nó không khai thác triệt để tính mô đun mạng lưới sâu. Để tăng hiệu quả của bất cứ điều gì, có một công thức chung: giới thiệu tính mô-đun và phân cấp. Vì vậy, chúng ta có thể làm cho quá trình lan truyền ngược trở nên hiệu quả hơn bằng cách giới thiệu các mô-đun học tập tách rời với một số cơ chế đồng bộ hóa giữa chúng, được tổ chức theo cách phân cấp. Chiến lược này được phản ánh một phần trong nghiên cứu gần đây của DeepMind về “gradient tổng hợp”. Tôi mong đợi sẽ có nhiều, rất nhiều công việc theo hướng này trong tương lai gần.

Người ta có thể tưởng tượng một tương lai trong đó các mô hình không thể phân biệt được trên toàn cầu (nhưng với các phần có thể phân biệt) sẽ học - phát triển - bằng cách sử dụng quy trình tìm kiếm hiệu quả không áp dụng độ dốc, trong khi các phần có thể phân biệt sẽ học nhanh hơn bằng cách sử dụng độ dốc bằng cách sử dụng nhiều hơn nữa phiên bản hiệu quả Lan truyền ngược

Học máy tự động

Trong tương lai của kiến ​​trúc, các mô hình sẽ được tạo ra bằng cách học hỏi chứ không phải do các kỹ sư viết bằng tay. Các mô hình kết quả được tự động ghép nối với một tập hợp các mô hình học máy nguyên thủy và giống như chương trình phong phú hơn.

Ngày nay, hầu hết thời gian, nhà phát triển hệ thống deep learning không ngừng sửa đổi dữ liệu bằng các tập lệnh Python, sau đó dành nhiều thời gian để điều chỉnh kiến ​​trúc và siêu tham số của mạng deep learning để có được một mô hình hoạt động - hoặc thậm chí để có được một mô hình nổi bật nếu nhà phát triển đầy tham vọng. Không cần phải nói, đây không phải là điều tốt nhất Vị trí tốt hơn của sự vật. Nhưng AI cũng có thể giúp ích ở đây. Thật không may, phần xử lý và chuẩn bị dữ liệu khó tự động hóa vì nó thường đòi hỏi kiến ​​thức về miền cũng như sự hiểu biết rõ ràng, ở cấp độ cao về những gì nhà phát triển muốn đạt được. Tuy nhiên, điều chỉnh siêu tham số là một thủ tục tìm kiếm đơn giản và trong trong trường hợp này chúng tôi đã biết nhà phát triển muốn đạt được điều gì: điều này được xác định bởi hàm mất mát của mạng thần kinh cần được cấu hình. Hiện nay việc cài đặt đã trở nên phổ biến hệ thống cơ bản AutoML, đảm nhiệm hầu hết việc điều chỉnh cài đặt mô hình. Tôi đã tự cài đặt một cái để giành chiến thắng trong cuộc thi Kaggle.

Ở cấp độ cơ bản nhất, hệ thống như vậy sẽ chỉ điều chỉnh số lượng lớp trong ngăn xếp, thứ tự của chúng và số lượng phần tử hoặc bộ lọc trong mỗi lớp. Việc này thường được thực hiện bằng cách sử dụng các thư viện như Hyperopt mà chúng ta đã thảo luận trong Chương 7 (lưu ý: sách "Học sâu với Python"). Nhưng bạn có thể tiến xa hơn nữa và cố gắng tìm hiểu kiến ​​trúc phù hợp từ đầu, với đặt tối thiểu những hạn chế. Ví dụ, điều này có thể thực hiện được bằng cách sử dụng học tăng cường hoặc sử dụng thuật toán di truyền.

Một hướng quan trọng khác trong việc phát triển AutoML là đào tạo kiến ​​trúc mô hình đồng thời với trọng số mô hình. Bằng cách đào tạo một mô hình từ đầu mỗi lần chúng tôi thử các kiến ​​trúc hơi khác nhau, điều này cực kỳ kém hiệu quả, vì vậy thực sự hệ thống mạnh mẽ AutoML sẽ thúc đẩy sự phát triển của kiến ​​trúc trong khi các thuộc tính mô hình được điều chỉnh thông qua lan truyền ngược tới dữ liệu huấn luyện, do đó loại bỏ mọi chi phí tính toán. Khi tôi viết những dòng này, những cách tiếp cận tương tự đã bắt đầu được áp dụng.

Khi tất cả những điều này bắt đầu xảy ra, các nhà phát triển hệ thống máy học sẽ không bị thiếu việc làm - họ sẽ chuyển lên cấp độ cao hơn trong chuỗi giá trị. Họ sẽ bắt đầu nỗ lực nhiều hơn nữa để tạo ra hàm phức tạp những tổn thất phản ánh chân thực những thách thức kinh doanh và sẽ có hiểu biết sâu sắc về cách các mô hình của họ tác động đến hệ sinh thái kỹ thuật số nơi họ vận hành (ví dụ: những khách hàng được hưởng lợi từ dự đoán của mô hình và tạo dữ liệu để đào tạo nó) - những vấn đề hiện chỉ là các công ty lớn nhất có đủ khả năng để xem xét.

Học tập suốt đời và tái sử dụng các thói quen mô-đun

Nếu các mô hình trở nên phức tạp hơn và được xây dựng trên các thuật toán nguyên thủy phong phú hơn thì độ phức tạp tăng lên này sẽ yêu cầu tái sử dụng nhiều hơn giữa các tác vụ, thay vì đào tạo mô hình từ đầu mỗi khi chúng ta có tác vụ mới hoặc tập dữ liệu mới. Cuối cùng, nhiều bộ dữ liệu không chứa đủ thông tin để phát triển một mô hình phức tạp mới từ đầu và việc sử dụng thông tin từ các bộ dữ liệu trước đó sẽ trở nên cần thiết. Bạn không học lại tiếng Anh mỗi khi bạn mở nó. sách mới- điều đó là không thể được. Ngoài ra, các mô hình đào tạo từ đầu cho từng vấn đề mới rất kém hiệu quả do có sự chồng chéo đáng kể giữa các vấn đề hiện tại và những vấn đề gặp phải trước đây.

Ngoài ra, một quan sát đáng chú ý đã được đưa ra nhiều lần trong những năm gần đây rằng việc đào tạo cùng một mô hình để làm có phần yếu kém. Nhiệm vụ liên quan cải thiện kết quả của nó trong mỗi nhiệm vụ này. Ví dụ: đào tạo cùng một mạng lưới thần kinh để dịch từ tiếng Anh sang tiếng Đức và từ tiếng Pháp sang tiếng Ý sẽ mang lại một mô hình tốt hơn cho từng cặp ngôn ngữ này. Huấn luyện mô hình phân loại hình ảnh đồng thời với mô hình phân đoạn hình ảnh, với một cơ sở tích chập duy nhất, sẽ mang lại một mô hình tốt hơn ở cả hai nhiệm vụ. Và như thế. Điều này khá trực quan: luôn có một số loại thông tin trùng lặp giữa hai nhiệm vụ dường như khác nhau này và do đó mô hình chung có quyền truy cập vào nhiều thông tin hơn về từng nhiệm vụ riêng lẻ so với một mô hình chỉ được đào tạo về nhiệm vụ cụ thể đó.

Những gì chúng tôi thực sự làm khi sử dụng lại một mô hình cho các nhiệm vụ khác nhau là sử dụng các trọng số được đào tạo trước cho các mô hình thực hiện các chức năng chung, như trích xuất đặc điểm hình ảnh. Bạn đã thấy điều này trong thực tế ở Chương 5. Tôi hy vọng rằng phiên bản tổng quát hơn của kỹ thuật này sẽ được sử dụng phổ biến trong tương lai: chúng ta sẽ không chỉ sử dụng các tính năng đã học trước đó (trọng số của mô hình con) mà còn sử dụng cả kiến ​​trúc mô hình và quy trình huấn luyện. Khi các mô hình trở nên giống chương trình hơn, chúng ta sẽ bắt đầu sử dụng lại chương trình con, giống như các hàm và lớp trong các ngôn ngữ lập trình thông thường.

Hãy nghĩ xem quy trình phát triển phần mềm ngày nay trông như thế nào: khi một kỹ sư giải quyết một vấn đề nhất định (ví dụ: các yêu cầu HTTP bằng Python), anh ta sẽ đóng gói nó thành một thư viện trừu tượng cho tái sử dụng. Các kỹ sư gặp phải vấn đề tương tự trong tương lai chỉ cần tìm kiếm các thư viện hiện có, tải xuống và sử dụng chúng trong các dự án của riêng họ. Tương tự như vậy, trong tương lai, các hệ thống siêu học tập sẽ có thể tập hợp các chương trình mới bằng cách sàng lọc một thư viện toàn cầu gồm các khối có thể tái sử dụng cấp cao. Nếu hệ thống bắt đầu phát triển các quy trình tương tự cho một số nhiệm vụ khác nhau, nó sẽ phát hành một phiên bản có thể sử dụng lại "trừu tượng" của quy trình đó và lưu trữ nó trong thư viện chung. Quá trình này sẽ mở ra cơ hội cho sự trừu tượng, thành phần bắt buộcđể đạt được "sự khái quát hóa cuối cùng": một quy trình sẽ hữu ích cho nhiều nhiệm vụ và lĩnh vực có thể nói là "trừu tượng hóa" một số khía cạnh của việc ra quyết định. Định nghĩa "trừu tượng" này dường như không phải là khái niệm trừu tượng trong phát triển phần mềm. Các quy trình này có thể là hình học (mô-đun học sâu với các biểu diễn được đào tạo trước) hoặc thuật toán (gần với thư viện mà các lập trình viên hiện đại làm việc cùng).

Vẽ: Một hệ thống siêu học có thể nhanh chóng phát triển các mô hình nhiệm vụ cụ thể bằng cách sử dụng các nguyên hàm có thể tái sử dụng (thuật toán và hình học), từ đó đạt được “sự khái quát hóa cuối cùng”.

Kết quả: một tầm nhìn dài hạn

Nói tóm lại, đây là tầm nhìn dài hạn của tôi đối với việc học máy:
  • Các mô hình sẽ trở nên giống các chương trình hơn và sẽ có các khả năng vượt xa các phép biến đổi hình học liên tục của dữ liệu nguồn mà chúng ta đang làm việc hiện nay. Có lẽ những chương trình này sẽ gần hơn nhiều với các mô hình tinh thần trừu tượng mà mọi người nắm giữ về môi trường và bản thân họ, đồng thời chúng sẽ có khả năng khái quát hóa mạnh mẽ hơn do tính chất thuật toán của chúng.
  • Đặc biệt, các mô hình sẽ kết hợp module thuật toán với khả năng suy luận hình thức, tìm kiếm, trừu tượng - và mô-đun hình học với trực giác không chính thức và nhận dạng mẫu. AlphaGo (một hệ thống yêu cầu kiến ​​trúc và lập trình thủ công chuyên sâu) cung cấp một ví dụ ban đầu về việc hợp nhất AI biểu tượng và hình học có thể trông như thế nào.
  • Họ sẽ phát triển tự động (thay vì được viết bằng tay bởi các lập trình viên con người), sử dụng các bộ phận mô-đun từ thư viện toàn cầu gồm các quy trình có thể tái sử dụng - một thư viện đã phát triển bằng cách đồng hóa các mô hình hiệu suất cao từ hàng nghìn vấn đề và tập dữ liệu trước đó. Sau khi hệ thống metalearning đã xác định được các mẫu giải quyết vấn đề phổ biến, chúng sẽ được chuyển đổi thành các quy trình có thể sử dụng lại—giống như các hàm và lớp trong lập trình hiện đại—và được thêm vào thư viện toàn cầu. Đây là cách đạt được khả năng sự trừu tượng.
  • Thư viện toàn cầu và hệ thống phát triển mô hình liên quan sẽ có khả năng đạt được một số dạng "khái quát hóa cuối cùng" hình người: đối mặt với nhiệm vụ mới, trong một tình huống mới, hệ thống sẽ có thể tập hợp một mô hình hoạt động mới cho vấn đề này bằng cách sử dụng rất ít dữ liệu, nhờ vào: 1) các nguyên hàm giống như chương trình phong phú có khả năng khái quát tốt và 2) kinh nghiệm sâu rộng về các vấn đề tương tự. Theo cách tương tự, mọi người có thể nhanh chóng học một trò chơi điện tử phức tạp mới vì họ đã có kinh nghiệm trước đó với nhiều trò chơi khác và vì các mô hình từ trải nghiệm trước đó rất trừu tượng và giống như chương trình thay vì chỉ đơn giản chuyển đổi kích thích thành hành động.
  • Về cơ bản, hệ thống phát triển mô hình học tập liên tục này có thể được hiểu là Trí tuệ nhân tạo mạnh mẽ. Nhưng đừng mong đợi sự khởi đầu của một loại ngày tận thế robot đơn lẻ nào đó: đó chỉ là tưởng tượng thuần túy, được sinh ra từ danh sách lớn những hiểu lầm sâu sắc trong việc hiểu biết về trí tuệ và công nghệ. Tuy nhiên, lời chỉ trích này không có chỗ ở đây.

Ngày nay, biểu đồ là một trong những cách được chấp nhận nhất để mô tả các mô hình được tạo trong hệ thống máy học. Các đồ thị tính toán này bao gồm các đỉnh nơ-ron được kết nối bằng các cạnh khớp thần kinh mô tả các kết nối giữa các đỉnh.

Không giống như bộ xử lý đồ họa vector hoặc trung tâm vô hướng, IPU, một loại bộ xử lý mới được thiết kế cho máy học, cho phép xây dựng các biểu đồ như vậy. Một máy tính được thiết kế để thao tác đồ thị là một cỗ máy lý tưởng để tính toán các mô hình đồ thị được tạo ra thông qua học máy.

Một trong những cách dễ nhất để mô tả quá trình trí tuệ của máy là hình dung nó. Nhóm phát triển Graphcore đã tạo ra một bộ sưu tập các hình ảnh như vậy được hiển thị trên IPU. Nó dựa trên phần mềm Poplar, trực quan hóa công việc của trí tuệ nhân tạo. Các nhà nghiên cứu của công ty này cũng đã tìm ra lý do tại sao mạng sâu lại yêu cầu nhiều bộ nhớ đến vậy và có những giải pháp nào để giải quyết vấn đề.

Poplar bao gồm một trình biên dịch đồ họa được xây dựng từ đầu để dịch các hoạt động học máy tiêu chuẩn thành mã ứng dụng IPU được tối ưu hóa cao. Nó cho phép bạn thu thập các biểu đồ này lại với nhau bằng cách sử dụng nguyên tắc tương tự như POPNN được thu thập. Thư viện chứa một bộ nhiều loại khác nhau các đỉnh cho nguyên thủy tổng quát.

Đồ thị là mô hình mà tất cả các phần mềm đều dựa vào. Trong Poplar, đồ thị cho phép bạn xác định quy trình tính toán, trong đó các đỉnh thực hiện các phép toán và các cạnh mô tả mối quan hệ giữa chúng. Ví dụ: nếu bạn muốn cộng hai số lại với nhau, bạn có thể xác định một đỉnh có hai đầu vào (các số bạn muốn cộng), một số phép tính (một hàm để cộng hai số) và một đầu ra (kết quả).

Thông thường, các thao tác với các đỉnh phức tạp hơn nhiều so với ví dụ được mô tả ở trên. Họ thường quyết tâm chương trình nhỏ, được gọi là codelets (tên mã). Sự trừu tượng hóa bằng đồ họa rất hấp dẫn vì nó không đưa ra giả định nào về cấu trúc tính toán và chia tính toán thành các thành phần mà IPU có thể sử dụng để vận hành.

Poplar sử dụng sự trừu tượng hóa đơn giản này để xây dựng các biểu đồ rất lớn được biểu diễn dưới dạng hình ảnh. Việc tạo biểu đồ bằng phần mềm có nghĩa là chúng tôi có thể điều chỉnh nó theo các tính toán cụ thể cần thiết để đảm bảo hiệu quả nhất sử dụng hiệu quả tài nguyên IPU

Trình biên dịch dịch hoạt động tiêu chuẩn, được sử dụng trong các hệ thống máy học, thành mã ứng dụng IPU được tối ưu hóa cao. Trình biên dịch biểu đồ tạo ra hình ảnh trung gian của biểu đồ tính toán, được triển khai trên một hoặc nhiều thiết bị IPU. Trình biên dịch có thể hiển thị biểu đồ tính toán này, do đó, một ứng dụng được viết ở cấp khung mạng thần kinh sẽ hiển thị hình ảnh của biểu đồ tính toán đang chạy trên IPU.


Biểu đồ của chu trình đào tạo AlexNet đầy đủ theo hướng tiến và lùi

Trình biên dịch đồ họa Poplar đã biến mô tả AlexNet thành một biểu đồ tính toán gồm 18,7 triệu đỉnh và 115,8 triệu cạnh. Phân cụm có thể nhìn thấy rõ ràng là kết quả của sự kết nối mạnh mẽ giữa các tiến trình trong mỗi lớp của mạng với nhiều giao tiếp dễ dàng giữa các cấp độ.

Một ví dụ khác là một mạng kết nối đầy đủ đơn giản được huấn luyện trên MNIST, một tập dữ liệu đơn giản cho tầm nhìn máy tính, một kiểu “Xin chào thế giới” trong học máy. Mạng đơn giản việc khám phá tập dữ liệu này sẽ giúp hiểu được các biểu đồ được điều khiển bởi các ứng dụng Poplar. Bằng cách tích hợp các thư viện biểu đồ với các khung như TensorFlow, công ty cung cấp một trong những những cách đơn giảnđể sử dụng IPU trong các ứng dụng học máy.

Sau khi biểu đồ được xây dựng bằng trình biên dịch, nó cần được thực thi. Điều này có thể thực hiện được bằng cách sử dụng Graph Engine. Ví dụ về ResNet-50 thể hiện hoạt động của nó.


Đồ thị ResNet-50

Kiến trúc ResNet-50 cho phép tạo các mạng sâu từ các phân vùng lặp lại. Bộ xử lý chỉ phải xác định các phần này một lần và gọi lại chúng. Ví dụ: cụm cấp độ đối lưu 4 được thực thi sáu lần nhưng chỉ được ánh xạ một lần vào biểu đồ. Hình ảnh cũng thể hiện sự đa dạng về hình dạng của các lớp chập, vì mỗi lớp có một biểu đồ được xây dựng theo một dạng tính toán tự nhiên.

Công cụ tạo và quản lý việc thực thi mô hình học máy bằng cách sử dụng biểu đồ do trình biên dịch tạo ra. Sau khi được triển khai, Graph Engine sẽ giám sát và phản hồi các IPU hoặc thiết bị được ứng dụng sử dụng.

Hình ảnh ResNet-50 hiển thị toàn bộ mô hình. Ở cấp độ này, rất khó để xác định các kết nối giữa các đỉnh riêng lẻ, vì vậy cần xem xét các hình ảnh phóng to. Dưới đây là một số ví dụ về các phần trong các lớp mạng thần kinh.

Tại sao mạng sâu cần nhiều bộ nhớ đến vậy?

Dấu chân bộ nhớ lớn là một trong những thách thức lớn nhất của mạng lưới thần kinh sâu. Các nhà nghiên cứu đang cố gắng giải quyết những hạn chế thông lượng Các thiết bị DRAM mà các hệ thống hiện đại phải sử dụng để lưu trữ lượng trọng lượng và kích hoạt khổng lồ trong mạng lưới thần kinh sâu.

Các kiến ​​trúc được thiết kế bằng cách sử dụng các chip xử lý được thiết kế để xử lý tuần tự và tối ưu hóa DRAM cho bộ nhớ mật độ cao. Giao diện giữa hai thiết bị này là một nút thắt cổ chai gây ra các hạn chế về băng thông và tăng thêm chi phí tiêu thụ điện năng đáng kể.

Mặc dù chúng ta chưa có sự hiểu biết đầy đủ về bộ não con người và cách thức hoạt động của nó nhưng nhìn chung người ta hiểu rằng không có kho lưu trữ bộ nhớ riêng biệt lớn. Chức năng của trí nhớ dài hạn và ngắn hạn trong não người được cho là gắn liền với cấu trúc của tế bào thần kinh + khớp thần kinh. Ngay cả những sinh vật đơn giản như giun, với cấu trúc não thần kinh chỉ hơn 300 tế bào thần kinh, cũng có một số chức năng ghi nhớ.

Xây dựng bộ nhớ trong bộ xử lý thông thường là một cách để khắc phục vấn đề tắc nghẽn bộ nhớ, mở khóa băng thông khổng lồ với mức tiêu thụ điện năng thấp hơn nhiều. Tuy nhiên, bộ nhớ trên chip đắt tiền và không được thiết kế cho lượng bộ nhớ thực sự lớn được gắn vào CPU và GPU hiện đang được sử dụng để đào tạo và triển khai mạng lưới thần kinh sâu.

Vì vậy, sẽ rất hữu ích nếu bạn xem xét cách bộ nhớ được sử dụng ngày nay trong các hệ thống học sâu dựa trên CPU và GPU và tự hỏi: tại sao chúng lại yêu cầu các thiết bị lưu trữ bộ nhớ lớn như vậy khi bộ não con người vẫn hoạt động tốt khi không có chúng?

Mạng thần kinh cần bộ nhớ để lưu trữ dữ liệu đầu vào, trọng số và các hàm kích hoạt khi đầu vào truyền qua mạng. Trong quá trình học, việc kích hoạt đầu vào phải được duy trì cho đến khi nó có thể được sử dụng để tính toán các lỗi trong gradient đầu ra.

Ví dụ: mạng ResNet 50 lớp có khoảng 26 triệu tham số trọng lượng và tính toán 16 triệu lần kích hoạt chuyển tiếp. Nếu bạn sử dụng float 32 bit để lưu trữ từng trọng lượng và kích hoạt, nó sẽ cần khoảng 168 MB dung lượng. Sử dụng nhiều hơn giá trị thấpđể lưu trữ các trọng lượng và kích hoạt này, chúng tôi có thể giảm một nửa hoặc thậm chí tăng gấp bốn lần yêu cầu lưu trữ này.

Một vấn đề lớn về bộ nhớ phát sinh từ việc GPU dựa vào dữ liệu được biểu diễn dưới dạng vectơ dày đặc. Vì vậy, họ có thể sử dụng luồng lệnh đơn (SIMD) để đạt được mật độ cao tính toán. CPU sử dụng các đơn vị vectơ tương tự để tính toán hiệu năng cao.

GPU có độ rộng synap là 1024 bit nên sử dụng dữ liệu dấu phẩy động 32 bit nên thường chia thành từng đợt nhỏ 32 mẫu song song để tạo vectơ dữ liệu 1024 bit. Cách tiếp cận song song vectơ này làm tăng số lần kích hoạt lên 32 lần và nhu cầu lưu trữ cục bộ có dung lượng hơn 2 GB.

GPU và các máy khác được thiết kế cho đại số ma trận cũng phải chịu tải bộ nhớ do trọng lượng hoặc kích hoạt mạng thần kinh. GPU không thể thực hiện hiệu quả các phép tích chập nhỏ được sử dụng trong mạng lưới thần kinh sâu. Do đó, một phép biến đổi được gọi là "rút gọn" được sử dụng để chuyển đổi các phép tích chập này thành phép nhân ma trận-ma trận (GEMM), mà GPU có thể xử lý hiệu quả.

Bộ nhớ bổ sung cũng được yêu cầu để lưu trữ dữ liệu đầu vào, giá trị tạm thời và hướng dẫn chương trình. Đo mức sử dụng bộ nhớ khi huấn luyện ResNet-50 trên HPC GPU cho thấy rằng nó yêu cầu hơn 7,5 GB DRAM cục bộ.

Một số người có thể nghĩ rằng độ chính xác tính toán thấp hơn có thể làm giảm lượng bộ nhớ cần thiết, nhưng thực tế không phải vậy. Bằng cách chuyển đổi các giá trị dữ liệu sang độ chính xác một nửa cho trọng số và kích hoạt, bạn sẽ chỉ lấp đầy một nửa chiều rộng vectơ SIMD, lãng phí một nửa tài nguyên máy tính hiện có. Để bù đắp cho điều này, khi bạn chuyển từ độ chính xác hoàn toàn sang độ chính xác một nửa trên GPU, bạn sẽ phải tăng gấp đôi kích thước của lô nhỏ để buộc đủ dữ liệu song song để sử dụng tất cả tính toán có sẵn. Do đó, việc chuyển sang trọng lượng và kích hoạt có độ chính xác thấp hơn trên GPU vẫn cần hơn 7,5 GB bộ nhớ động truy cập miễn phí.

Với ví dụ một lượng lớn dữ liệu cần được lưu trữ thì đơn giản là không thể đưa tất cả dữ liệu đó vào GPU. Mỗi lớp mạng thần kinh tích chập cần lưu trữ trạng thái của DRAM bên ngoài, tải lớp mạng tiếp theo và sau đó tải dữ liệu vào hệ thống. Kết quả là giao diện đã bị giới hạn bởi băng thông và độ trễ bộ nhớ. bộ nhớ ngoài phải chịu thêm gánh nặng của việc liên tục tải lại cân cũng như lưu trữ và truy xuất các chức năng kích hoạt. Điều này làm chậm đáng kể thời gian đào tạo và tăng đáng kể mức tiêu thụ điện năng.

Có một số cách để giải quyết vấn đề này. Đầu tiên, các hoạt động như chức năng kích hoạt có thể được thực hiện “tại chỗ”, cho phép dữ liệu đầu vào được ghi lại trực tiếp vào đầu ra. Bằng cách này, bộ nhớ hiện có có thể được tái sử dụng. Thứ hai, có thể đạt được cơ hội tái sử dụng bộ nhớ bằng cách phân tích sự phụ thuộc dữ liệu giữa các hoạt động trên mạng và phân bổ cùng bộ nhớ cho các hoạt động hiện không sử dụng nó.

Cách tiếp cận thứ hai đặc biệt hiệu quả khi toàn bộ mạng lưới thần kinh có thể được phân tích tại thời điểm biên dịch để tạo ra bộ nhớ được phân bổ cố định, do chi phí quản lý bộ nhớ giảm xuống gần như bằng không. Hóa ra, sự kết hợp của các phương pháp này có thể giảm mức sử dụng bộ nhớ của mạng thần kinh từ hai đến ba lần.
Cách tiếp cận quan trọng thứ ba gần đây đã được nhóm Baidu Deep Speech phát hiện. Họ đã áp dụng nhiều kỹ thuật tiết kiệm bộ nhớ khác nhau để giảm 16 lần mức tiêu thụ bộ nhớ của các chức năng kích hoạt, cho phép họ huấn luyện mạng với 100 lớp. Trước đây, với cùng dung lượng bộ nhớ, họ có thể huấn luyện các mạng có chín lớp.

Việc kết hợp các tài nguyên bộ nhớ và xử lý vào một thiết bị duy nhất có tiềm năng đáng kể để cải thiện hiệu suất và hiệu quả của mạng nơ-ron tích chập, cũng như các hình thức học máy khác. Có thể thực hiện sự cân bằng giữa bộ nhớ và tài nguyên điện toán để đạt được sự cân bằng giữa các tính năng và hiệu suất trong hệ thống.

Mạng lưới thần kinh và mô hình tri thức trong các phương pháp học máy khác có thể được coi là đồ thị toán học. Những đồ thị này chứa số lượng lớn sự song song. Bộ xử lý song song được thiết kế để khai thác tính song song trong biểu đồ không dựa vào lô nhỏ và có thể giảm đáng kể dung lượng lưu trữ cục bộ cần thiết.

Kết quả nghiên cứu hiện tại đã chỉ ra rằng tất cả các phương pháp này có thể cải thiện đáng kể hiệu suất của mạng lưới thần kinh. GPU và CPU hiện đại có bộ nhớ trong rất hạn chế, tổng cộng chỉ có vài megabyte. Kiến trúc bộ xử lý mới được thiết kế đặc biệt cho bộ nhớ cân bằng máy học và điện toán trên chip, mang lại những cải tiến đáng kể về hiệu suất và hiệu suất so với CPU và GPU hiện nay.