Mạng lưới thần kinh với học tập sâu. Học sâu là gì và tại sao mọi người lại nói về nó?

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 đã 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.

Với Apple Pay, người dùng iPhone 6 và iPhone 6+ cũng như chủ sở hữu Apple Watch mới nhất có thể mua sắm trực tuyến, tận hưởng các lợi ích bổ sung của Apple Pay cho ứng dụng di động và thanh toán bằng công nghệ NFC (Giao tiếp trường gần). Công nghệ Touch ID hoặc Face ID được sử dụng để ủy quyền thanh toán.

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, có 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 phong cách đồ họa của họ. Các nhà thiết kế nói, “Bạn không bao giờ có thể có quá nhiều phông chữ đẹp,” nhưng bây giờ bạn có thể tưởng tượng một cách an toàn tình huống mà 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 các 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.

Đã hơn 20 năm trôi qua kể từ khi thuật ngữ “học sâu” được đặt ra, nhưng mọi người chỉ mới bắt đầu nói về nó gần đây. Chúng tôi giải thích ngắn gọn lý do tại sao điều này xảy ra, deep learning là gì, nó khác với machine learning như thế nào và tại sao bạn cần biết về nó.

  • Nó là gì?

    Học sâu là một nhánh của học máy sử dụng mô hình lấy cảm hứng từ cách hoạt động của bộ não - cách các tế bào thần kinh tương tác.

    Bản thân thuật ngữ này đã xuất hiện từ những năm 1980 nhưng phải đến năm 2012 mới có đủ năng lực để triển khai công nghệ này và hầu như không ai để ý đến nó. Sau hàng loạt bài viết của các nhà khoa học nổi tiếng và bài đăng trên các tạp chí khoa học, công nghệ này nhanh chóng trở nên phổ biến và nhận được sự quan tâm của các phương tiện truyền thông lớn - The New York Times là cơ quan truyền thông thế giới đầu tiên viết về nó. Một trong những lý do cho tài liệu này là công trình khoa học của các chuyên gia từ các trường đại học Toronto Alex Krizhevsky, Ilya Satskever và Jeff Hinton. Họ đã mô tả và phân tích kết quả của cuộc thi nhận dạng hình ảnh ImageNet, trong đó mạng lưới thần kinh của họ được huấn luyện bằng phương pháp học sâu đã giành chiến thắng với tỷ số cách biệt lớn - hệ thống đã xác định được 85% đối tượng. Kể từ đó, chỉ có mạng lưới thần kinh sâu mới giành chiến thắng trong cuộc thi

  • Đợi đã, học máy là gì?

    Đây là một trường con của trí tuệ nhân tạo và là thuật ngữ mô tả các phương pháp xây dựng các thuật toán học hỏi từ kinh nghiệm mà không cần viết một chương trình đặc biệt. Nghĩa là, trong trường hợp này, một người không cần phải giải thích cho máy cách giải quyết vấn đề; nó sẽ tự tìm ra câu trả lời từ dữ liệu được cung cấp cho nó. Ví dụ: nếu muốn thuật toán nhận dạng khuôn mặt, chúng ta phải hiển thị cho nó mười nghìn khuôn mặt khác nhau, lưu ý chính xác vị trí của khuôn mặt và sau đó chương trình sẽ tự học cách nhận dạng khuôn mặt đó.

    Máy có thể học cả với sự trợ giúp của giáo viên, khi giáo viên đánh dấu các câu trả lời đúng cho máy và không có giáo viên. Nhưng kết quả sẽ tốt hơn khi học với giáo viên. Mỗi khi quá trình xử lý dữ liệu diễn ra, hệ thống sẽ trở nên chính xác hơn.

  • Học sâu hoạt động như thế nào?

    Nó bắt chước tư duy trừu tượng của con người và có khả năng khái quát hóa. Ví dụ: mạng nơ-ron được đào tạo bằng máy không nhận dạng tốt các chữ cái viết tay - và để nó không bị nhầm lẫn trong các cách viết khác nhau, tất cả chúng phải được tải vào đó.

    Học sâu được sử dụng khi làm việc với mạng lưới thần kinh nhân tạo nhiều lớp và có thể giải quyết được nhiệm vụ này.

    “Gần đây có ba thuật ngữ thường được sử dụng gần như thay thế cho nhau: trí tuệ nhân tạo, học máy và học sâu. Tuy nhiên, đây thực sự là những thuật ngữ “lồng nhau”: trí tuệ nhân tạo là bất cứ thứ gì có thể giúp máy tính thực hiện các nhiệm vụ của con người; học máy là một nhánh của AI, trong đó các chương trình không chỉ giải quyết vấn đề mà còn học dựa trên kinh nghiệm mà chúng có và học sâu là một nhánh của học máy nghiên cứu mạng lưới thần kinh sâu.

    Nói một cách đơn giản: 1.nếu bạn viết một chương trình chơi cờ, đó là trí tuệ nhân tạo; 2.nếu nó học dựa trên các trò chơi đại kiện tướng hoặc bằng cách đấu với chính nó thì đây là máy học; 3.và nếu nó học được từ nó không chỉ bất cứ thứ gì mà còn từ mạng lưới thần kinh sâu, thì đó là học sâu.”.

  • Học sâu hoạt động như thế nào?

    Hãy lấy một ví dụ đơn giản - chúng tôi sẽ hiển thị các bức ảnh mạng lưới thần kinh mô tả một cậu bé và một cô gái. Ở lớp đầu tiên, tế bào thần kinh phản ứng với những hình ảnh trực quan đơn giản, chẳng hạn như sự thay đổi độ sáng. Về thứ hai - phức tạp hơn: góc, hình tròn. Đến lớp thứ ba, tế bào thần kinh có thể phản ứng với các dòng chữ và khuôn mặt con người. Đối với mỗi lớp tiếp theo, hình ảnh được xác định sẽ phức tạp hơn. Mạng lưới thần kinh tự xác định yếu tố hình ảnh nào thú vị để giải quyết vấn đề này và xếp chúng theo thứ tự quan trọng để hiểu rõ hơn trong tương lai những gì được hiển thị trong ảnh.

  • Và bạn đã phát triển được những gì với nó?

    Hầu hết các dự án học sâu đều được sử dụng trong nhận dạng hình ảnh hoặc âm thanh và chẩn đoán bệnh. Ví dụ: nó đã được sử dụng trong các bản dịch hình ảnh của Google: Công nghệ Deep Learning phát hiện xem có các chữ cái trong ảnh hay không và sau đó dịch chúng. Một dự án khác hoạt động với ảnh là hệ thống nhận dạng khuôn mặt có tên DeepFace. Nó có thể nhận dạng khuôn mặt con người với độ chính xác 97,25% - độ chính xác gần tương đương với con người.

    Năm 2016, Google phát hành WaveNet, một hệ thống có thể mô phỏng giọng nói của con người. Để làm được điều này, công ty đã tải vào hệ thống hàng triệu phút truy vấn bằng giọng nói được ghi âm được sử dụng trong dự án OK Google và sau khi nghiên cứu, bản thân mạng lưới thần kinh đã có thể soạn các câu với trọng âm, nhấn mạnh chính xác và không có những khoảng dừng phi logic.

    Đồng thời, học sâu có thể phân đoạn một hình ảnh hoặc video theo ngữ nghĩa - nghĩa là không chỉ chỉ ra rằng có một đối tượng trong ảnh mà còn làm nổi bật các đường viền của nó một cách lý tưởng. Công nghệ này được sử dụng trong ô tô tự lái để phát hiện vật cản trên đường, vạch kẻ đường và đọc biển báo đường để tránh tai nạn. Mạng lưới thần kinh cũng được sử dụng trong y học - chẳng hạn như để xác định bệnh võng mạc tiểu đường từ ảnh chụp mắt của bệnh nhân. Bộ Y tế Hoa Kỳ đã cho phép sử dụng công nghệ này trong các phòng khám của chính phủ.

  • Tại sao họ không bắt đầu triển khai deep learning sớm hơn?

    Trước đây, việc này rất tốn kém, khó khăn và tốn thời gian - bạn cần bộ xử lý đồ họa, card màn hình và bộ nhớ mạnh mẽ. Sự bùng nổ của học sâu có liên quan chính xác đến việc sử dụng rộng rãi bộ xử lý đồ họa, giúp tăng tốc và giảm chi phí tính toán, khả năng lưu trữ dữ liệu gần như không giới hạn và sự phát triển của công nghệ “dữ liệu lớn”.

  • Đây là công nghệ mang tính đột phá, liệu nó có thay đổi được mọi thứ?

    Thật khó để nói chắc chắn về điều này; Một mặt, Google, Facebook và các công ty lớn khác đã đầu tư hàng tỷ đô la và tỏ ra lạc quan. Theo quan điểm của họ, mạng lưới thần kinh với khả năng học sâu có khả năng thay đổi cấu trúc công nghệ của thế giới. Một trong những chuyên gia hàng đầu về học máy, Andrew Ng, cho biết: “Nếu một người có thể thực hiện một nhiệm vụ trong đầu trong một giây, rất có thể nhiệm vụ đó sẽ được tự động hóa trong tương lai gần”. Ng gọi machine learning là “nguồn điện mới” - đó là một cuộc cách mạng công nghệ và các công ty bỏ qua nó sẽ nhanh chóng thấy mình bị tụt hậu so với đối thủ một cách vô vọng.

    Mặt khác, cũng có những người hoài nghi: họ tin rằng học sâu là một từ thông dụng hoặc một cách đổi tên thương hiệu của mạng lưới thần kinh. Ví dụ, Sergei Bartunov, giảng viên cao cấp tại Khoa Khoa học Máy tính của Trường Kinh tế Cao cấp, tin rằng thuật toán này chỉ là một trong những lựa chọn (và không phải là tốt nhất) để đào tạo mạng lưới thần kinh, thuật toán này đã nhanh chóng được đón nhận bởi các ấn phẩm đại chúng và bây giờ mọi người đều biết đến.

    Sergey Nikolenko, đồng tác giả cuốn sách “Học sâu”: “Lịch sử trí tuệ nhân tạo đã trải qua hai “mùa đông”, khi làn sóng cường điệu và kỳ vọng cao kéo theo sự thất vọng. Nhân tiện, cả hai lần, nó đều được kết nối với mạng lưới thần kinh. Đầu tiên, vào cuối những năm 1950, người ta quyết định rằng perceptron của Rosenblatt sẽ ngay lập tức dẫn đến dịch máy và máy tính tự nhận thức; nhưng tất nhiên là nó không thành công do phần cứng, dữ liệu hạn chế và thiếu mô hình phù hợp.

    Và vào cuối những năm 1980, sai lầm tương tự cũng xảy ra khi họ tìm ra cách đào tạo bất kỳ kiến ​​trúc mạng lưới thần kinh nào. Dường như nó đây rồi, một chiếc chìa khóa vàng có thể mở được bất kỳ cánh cửa nào. Đây không còn là một kết luận ngây thơ nữa: thực sự, nếu bạn lấy một mạng lưới thần kinh từ cuối những năm 1980, làm cho nó lớn hơn một cách cơ học (tăng số lượng nơ-ron) và huấn luyện nó trên các bộ dữ liệu hiện đại và phần cứng hiện đại, nó sẽ hoạt động rất tốt! Nhưng lúc đó không có đủ dữ liệu hay phần cứng, cuộc cách mạng deep learning phải hoãn lại đến cuối những năm 2000.

    Chúng ta hiện đang sống trong làn sóng cường điệu trí tuệ nhân tạo thứ ba. Liệu nó sẽ kết thúc vào “mùa đông” thứ ba hay việc tạo ra AI mạnh mẽ, chỉ có thời gian mới trả lời được.”

  • 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 bức ả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 thực hiện - 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".

    "(Ấ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). Một lượng lớn kiến ​​thức được giả định.

    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 những 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ơ, tức 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 sâu 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. Đặc điểm chính của một phép biến đổi hình học là nó phải 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 hình 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ả bóng 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, cũng như tính sẵn có của nó. 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ể huấn luyện thành công một mô hình để tạo ra các mô tả văn bản về 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 lưu giữ những mô hình phức tạp, trừu tượng về tình hình hiện tại, bản thân họ và những người khác trong đầu và có thể sử dụng những mô hình này để dự đoán nhiều tương lai có thể xảy ra cũng như 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 đề tìm hiểu các thông số phóng thích hợp cho một tên lửa được cho là sẽ hạ cánh trên Mặt trăng. Nếu bạn định sử dụng mạng lưới thần kinh 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, nghĩa 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 các 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 giúp đư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, thì mạng sẽ phải chết hàng nghìn lần trong các tình huống khác nhau trước khi nó hoạt động. sẽ kết luận rằng ô tô là nguy hiểm và không có 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 trên nền tảng nguyên thủy 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à do 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 “tăng lên” bằng cách lập trình nguyên thủy theo cách tương tự 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 duy nhất với bộ nhớ hình học được khâu, mà là một tập hợp lớn các nguyên tắc lập trình mà mô hình có thể tự do truy cập vào mở rộng khả năng xử lý của 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à nhiều hơn thế nữa. Không gian của các chương trình mà mạng như vậy có thể đại diện sẽ rộng hơn nhiều so với các mạng học sâu hiện tại có thể thể hiện 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 thuật toán tìm kiếm (có thể là tìm kiếm di truyền, như trong lập trình di truyền) để khám phá một không gian rộng lớn các chương trình khả thi. 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 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ác phương pháp 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 của mạng 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 nhiều hơn nữa 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 một số phiên bản lan truyền ngược hiệu quả hơn

    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 quá trình 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 rất tham vọng. Không cần phải nói, đây không phải là tình trạng tốt nhấ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 quy trình tìm kiếm đơn giản và 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 điều chỉnh. Giờ đây, việc cài đặt các hệ thống AutoML cơ bản đã trở nên phổ biến, hệ thống này đả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, mộ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 một số hạn chế tối thiểu. 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, chúng tôi thử các kiến ​​trúc hơi khác nhau mỗi lần, điều này cực kỳ kém hiệu quả, do đó, một hệ thống AutoML thực sự mạnh mẽ sẽ quản lý sự phát triển của các 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 trên dữ liệu huấn luyện, do đó loại bỏ tất cả 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 các hàm tổn thất phức tạp phản ánh chân thực các mục tiêu kinh doanh và sẽ phát triển sự 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ụ: khách hàng sử dụng dự đoán mô hình và tạo dữ liệu cho đào tạo của nó) - những vấn đề mà hiện nay chỉ những công ty lớn nhất mới 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 mở một cuốn sách mới - điều đó là không thể. 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, quan sát đáng chú ý đã được thực hiện nhiều lần trong những năm gần đây là việc đào tạo cùng một mô hình để thực hiện nhiều nhiệm vụ liên quan lỏng lẻo sẽ cải thiện hiệu suất 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 tổng thể 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ô 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 trong Python), anh ta sẽ đóng gói nó thành một thư viện trừu tượng để 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, một thành phần cần thiết để đạ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.
    • Một thư viện toàn cầu và hệ thống phát triển mô hình liên quan sẽ có thể đạt được một số dạng "khái quát hóa cuối cùng" giống như con người: khi đối mặt với một nhiệm vụ mới, một tình huống mới, hệ thống sẽ có thể tập hợp một mô hình làm việc mới cho nhiệm vụ đó bằng cách sử dụng rất ít dữ liệu, nhờ vào: 1) những người nguyên thủy 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 trong việc giải quyết 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 một ngày tận thế robot đơn lẻ nào đó sẽ xảy ra: đó chỉ là tưởng tượng thuần túy, sinh ra từ một danh sách dài những hiểu lầm sâu sắc trong hiểu biết về trí thông minh 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 tập hợp các loại đỉnh khác nhau dành cho các dạng 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ố 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. Chúng thường được xác định bởi các chương trình nhỏ 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 biểu đồ theo các tính toán cụ thể cần thiết để đảm bảo sử dụng tài nguyên IPU hiệu quả nhất.

    Trình biên dịch dịch các hoạt động tiêu chuẩn được sử dụng trong hệ thống máy học thành mã ứng dụng được tối ưu hóa cao cho IPU. 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ự giao tiếp mạnh mẽ giữa các tiến trình trong mỗi lớp của mạng, với việc giao tiếp giữa các lớp dễ dàng hơn.

    Một ví dụ khác là một mạng đơn giản được kết nối đầy đủ được đào tạo trên MNIST, một tập dữ liệu thị giác máy tính đơn giản, một dạng “Xin chào thế giới” trong học máy. Một mạng đơn giản để khám phá tập dữ liệu này sẽ giúp hiểu được các biểu đồ do ứng dụng Poplar điều khiển. 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 cách đơn giản nhất để 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 vấn đề băng thông hạn chế của các thiết bị DRAM mà các hệ thống hiện đại phải sử dụng để lưu trữ số lượng lớn trọng lượng và kích hoạt 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ớ vào các bộ xử lý thông thường là một cách để khắc phục vấn đề thắt cổ chai bộ nhớ, giải phóng băng thông khổng lồ trong khi tiêu thụ ít năng lượng 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 số 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. Bằng cách sử dụng giá trị chính xác thấp hơn để lưu trữ các trọng số và kích hoạt này, chúng tôi có thể giảm một nửa hoặc thậm chí 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. Do đó, họ có thể sử dụng luồng lệnh đơn (SIMD) để đạt được mật độ tính toán cao. 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 đào tạo ResNet-50 trên GPU cao cấp cho thấy nó cần 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 rất nhiều dữ liệu cần lưu trữ, đơn giản là không thể nhét tất cả 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ộ nhớ ngoài vốn đã bị giới hạn băng thông lạ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. Có một lượng lớn sự song song tập trung trong các biểu đồ này. 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.