Nói một cách đơn giản về sự phức tạp: mạng lưới thần kinh là gì

"(Ấ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ơ, 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 trong khoảnh khắc này. 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 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 nhiệm vụ thực tế không có mạng lưới thần kinh sâu kích thước phù hợp, giải quyết vấn đề hoặc nếu nó tồn tại, nó 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 gì nữa vấn đề cơ bản rằng 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ộ so với khái quát hóa cực đoan

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ữ trong đầu những mô hình phức tạp, trừu tượng về tình hình hiện tại, về bản thân 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 tình huống khác nhau. 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 đề 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 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 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, 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. Thực hiện tốt Thách thức này thể hiện một bước tiến mang tính cách mạng đối với 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 hoàn toàn là suy đoá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 thông tin đầ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 “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 nhúng, mà còn 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 để 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 lâu dài -bộ nhớ 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 nữa. 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 phần mềm bao gồm thế hệ tự động các chương trình đơn giản 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 cần thiết, 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 trực tiếp mã nguồn và sẽ mở rộng đáng kể ranh giới của những vấn đề có thể được giải quyết bằng cách sử dụng máy học - không gian của các chương trình mà chúng ta có thể tạo tự động, nhận 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 hóa 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, nhiều hơn nữa làm việc nhiều hơn theo hướng này trong thời gian tới.

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 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 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. 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, 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 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 còn việc làm nữa - họ sẽ chuyển sang làm nhiều việc hơn cấp độ cao 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 vấn đề 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 nhiệm vụ, thay vì đào tạo mô hình từ đầu mỗi khi chúng ta có nhiệm vụ hoặc nhiệm vụ mới. bộ mới dữ liệu. 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ở 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 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 chức năng chung, giống 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 trong tương lai sẽ có việc sử dụng rộng rãi hơn phiên bản chung Kỹ thuật này: chúng ta sẽ không chỉ áp dụng các tính năng đã học trước đó (trọng số của mô hình con), mà còn cả kiến ​​trúc mô hình và quy trình đào tạo. 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 qua 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ố tác 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 vấn đề 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 đó. 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.

Anh ấy nói với tôi rằng thật giả tạo mạng lưới thần kinh, chúng khác với các chương trình máy tính truyền thống như thế nào và tại sao xu hướng này sẽ còn tồn tại lâu dài với chúng ta.

Học sâu là gì?

Lần đầu tiên về sự thành công của deep learning ( học kĩ càng) được biết đến vào năm 2012 và ba năm sau mọi người đều bàn tán về nó. Điều tương tự cũng xảy ra với Internet trong thời kỳ bong bóng đầu tư. Và vì các khoản đầu tư đáng kể hiện đang được thực hiện vào mạng lưới thần kinh, chúng ta có thể nói về một bong bóng mới một cách an toàn.

Internet rất dễ được chứng minh: lúc đầu nó nhanh (so với giấy) E-mail, sau đó là những trang web đầy màu sắc có thể truy cập được trên bất kỳ máy tính nào có kết nối Internet. Trong học sâu, mọi thứ đều khác: có sự chú ý đến nó, nhưng không thể chứng minh điều gì đó cụ thể. Thật vậy, điều gì kết nối các chương trình nhận dạng giọng nói và chương trình dịch tự động, chương trình xác định lỗi trong thiết bị dầu khí và chương trình tổng hợp văn bản mô tả ảnh?



Sự đa dạng này không phải ngẫu nhiên: nếu Internet chỉ là một loại hình giao tiếp thì mạng nơ-ron sâu (DNN) về cơ bản là kiểu mới các chương trình linh hoạt như các chương trình máy tính truyền thống. Tính phổ quát này đã được chứng minh về mặt lý thuyết: một mạng lưới thần kinh về mặt lý thuyết có thể xấp xỉ chính xác vô cùng bất kỳ hàm nào của nhiều biến - và cũng thực hiện các phép tính tương đương với các phép tính của máy Turing.

Mạng bạn cần học

Thông tin có thể được truyền qua Internet một cách rất đơn điệu, trong các gói thống nhất và nó được xây dựng dựa trên ý tưởng này. Nhưng bạn có thể tạo ra thông tin và sử dụng nó theo nhiều cách khác nhau. Các chương trình máy tính thực hiện việc này rất khác nhau. Mạng lưới thần kinh giống nhau, chúng cung cấp nhiều cách xử lý giống nhau.

Để mô tả ngày nay mạng lưới thần kinh là gì cũng chính là mô tả vào cuối những năm 50 các chương trình máy tính truyền thống là gì (và ngôn ngữ FORTRAN được phát hành vào năm 1957) - nếu bạn bắt đầu nói rằng máy tính sẽ điều khiển hệ thống đánh lửa trong mọi ô tô và cũng chiếu phim khiêu dâm trên màn hình điện thoại sẽ khiến bạn cười.

Nếu bây giờ tôi nói với bạn rằng bạn sẽ nói chuyện với mạng máy tính thần kinh trong máy tính bảng của mình và mạng thần kinh sẽ điều khiển một chiếc ô tô mà không cần người lái, thì bạn cũng sẽ không tin - nhưng vô ích.

Nhân tiện, “ảnh khiêu dâm” trên mạng xã hội không còn do người ta phát hiện nữa mà do chính mạng phát hiện ra. Nhưng 100 nghìn người trên thế giới đang làm việc này, xem hàng terabyte ảnh và video. Với sự ra đời của deep learning, thế giới xử lý dữ liệu đột nhiên bắt đầu thay đổi và nhanh chóng.

Không giống như các chương trình máy tính truyền thống, mạng lưới thần kinh không cần phải được “viết” mà cần được “dạy”. Và họ có thể được dạy những điều vô cùng khó khăn (nếu không nói là không thể) thực hiện được bằng công nghệ phần mềm truyền thống. Ví dụ: mạng nơ-ron đã học cách nhận dạng âm thanh và video ở cấp độ con người - và thậm chí còn tốt hơn chúng. Hoặc ngược lại, tạo âm thanh và video - nếu bạn hiểu biết về hình ảnh của một số đối tượng được thể hiện trong mạng lưới thần kinh sâu đã được huấn luyện, thì sự hiểu biết tương tự này có thể được sử dụng để tạo ra hình ảnh của các đối tượng này. Tính năng tổng hợp giọng nói, văn bản và hình ảnh vẫn chưa được tung ra thị trường, nhưng các thử nghiệm đã cho thấy những thành công mà trước đây không thể đạt được trong lĩnh vực này. Hơn nữa, mạng lưới thần kinh không chỉ có thể phân tích dữ liệu mà còn có thể ra lệnh. Vì vậy, họ đã học chơi trò chơi Atari 2600, thậm chí nhiều trò chơi còn tốt hơn đàn ông, và chúng không cần phải được lập trình đặc biệt cho việc này.

Làm sao điều này chỉ có thể thực hiện được ngày hôm nay? Tại sao những kết quả như vậy lại không đạt được từ lâu, ngay cả trước khi Internet ra đời? Suy cho cùng, các cuộc thảo luận về khả năng của mạng lưới thần kinh đã diễn ra từ những năm 50 của thế kỷ trước!

Đầu tiên, việc dạy mạng lưới thần kinh sâu đã trở nên rõ ràng - loại toán học nào hoạt động ở đó. Mạng lưới thần kinh sâu có nghĩa là mạng có độ sâu hơn hai lớp. Nếu có ít lớp hơn thì chúng ta đang nói về việc học nông. Nếu số lớp nhiều hơn mười thì người ta nói về việc học rất sâu, nhưng cho đến nay điều này rất hiếm. Trước đây, họ đã cố gắng dạy mạng lưới thần kinh bằng cách thử và sai (hay còn gọi là phương pháp “chọc khoa học”) và bằng cách này chỉ có thể đào tạo các mạng nhỏ. Theo thời gian, sự hiểu biết về toán học của mạng lưới thần kinh nhiều lớp đã hình thành, người ta có thể thiết kế chúng và hiểu biết về cách tạo ra các loại mạng mới và đảm bảo khả năng học tập của chúng.

Thứ hai, mạng nơ-ron hoạt động nhanh nhưng học rất chậm và điều này đòi hỏi lượng dữ liệu khổng lồ - dữ liệu lớn. Và mạng lưới thần kinh càng có nhiều lớp thì mạng đó càng phải thực hiện nhiều yêu cầu hơn khả năng tính toán Trong quá trình huấn luyện. Trên thực tế, cho đến gần đây, mạng lưới thần kinh chỉ có thể được dạy bất cứ thứ gì trên siêu máy tính.



Ngày nay, tình hình đã thay đổi, vì thẻ video đã được kết nối để làm việc với mạng lưới thần kinh - và điều này đã đẩy nhanh quá trình đào tạo của họ lên gấp 10 lần. Nhưng ngay cả việc học tăng tốc như vậy cũng thường đòi hỏi phải tính toán nhiều giờ, thậm chí nhiều ngày, và đôi khi là hàng tuần. Điều an ủi duy nhất là trong trường hợp lập trình truyền thống việc giải quyết những vấn đề tương tự không chỉ đòi hỏi nhiều tuần mà còn nhiều năm làm việc của các lập trình viên.

Nhưng một khi mạng lưới thần kinh sâu được đào tạo, nó thường nhanh hơn hàng trăm đến hàng nghìn lần so với các thuật toán truyền thống. Chương trình chiếm RAM ít hơn hàng trăm lần khi chất lượng tốt nhất kết quả.

« Bậc thầy về mạng lưới thần kinh"

Các đặc tính bất thường của các mạng này đã dẫn đến thực tế là hầu hết các cuộc thi quốc tế về phân tích dữ liệu đều thuộc về mạng lưới thần kinh sâu. Và nếu bạn có một số loại nhiệm vụ phân tích dữ liệu và có rất nhiều, rất nhiều dữ liệu này, thì rất có thể trong trường hợp này, mạng lưới thần kinh sâu cũng sẽ được hưởng lợi.

Nghề nghiệp của những người tham gia vào mạng lưới thần kinh thậm chí còn chưa có tên. Nếu vào buổi bình minh của Internet, khái niệm “quản trị trang web” đã xuất hiện (và tồn tại được 5 hoặc 6 năm) thì vẫn chưa có nghề “master mạng lưới thần kinh” tương tự. TRONG khu vực rộng lớn dữ liệu, những chuyên gia như vậy tự gọi mình là “nhà khoa học dữ liệu”, nhưng công việc của họ vẫn mang tính chất kỹ thuật giống như công việc của các lập trình viên. Các kỹ sư đo lường, phân tích, thiết kế, xây dựng và hệ thống mục tiêu và các công cụ dành cho kỹ thuật. Kỹ thuật phần mềm(kỹ thuật phần mềm) khác với khoa học máy tính(khoa học máy tính). Mạng lưới thần kinh cũng vậy: chưa có tên gọi cho nghề này nhưng đã có những kỹ sư sẽ giúp bạn tạo, đào tạo và sử dụng chúng. May mắn thay, trong năm qua cơ sở hạ tầng phát triển đã xuất hiện cho nghề mới: các khóa đào tạo đại học, hàng chục bài hướng dẫn, sách, sân thi đấu và đào tạo, một số lượng lớn các chương trình miễn phí. Chỉ có trong cộng đồng deep learning nói tiếng Nga VKontakte ngày nay

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ế để quản lý đồ thị - chiếc xe hoàn hảo cho các mô hình đồ thị tính toán được tạo trong 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ó được dựa trên phần mềm Poplar, trực quan hóa công việc 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 tập hợ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 tập hợ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ố 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 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 hoạt động tiêu chuẩn, Được dùng trong hệ thống máy mócđào tạo về 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 đơ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 phải được sử dụng hệ thống hiện đạiđể lưu trữ một 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ó chức năng ghi nhớ ở một mức độ nào đó.

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 của 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. 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. 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. Vì vậy, để giảm trọng lượng chính xác và kích hoạt trên GPU vẫn cần nhiều hơn 7,5 GB bộ nhớ động với quyền 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ộ 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ọ đã nộp đơn Các phương pháp khác nhau tiết kiệm bộ nhớ để 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à tính toán trên chip, mang lại những cải tiến đáng kể về hiệu suất và hiệu quả so với các công nghệ hiện tại. bộ xử lý trung tâm và bộ tăng tốc đồ họa.

Từ bài viết bạn sẽ biết deep learning là gì. Bài viết cũng chứa nhiều tài nguyên mà bạn có thể sử dụng để thành thạo lĩnh vực này.

Trong thế giới hiện đại, từ chăm sóc sức khỏe đến sản xuất, deep learning được sử dụng ở mọi nơi. Các công ty đang chuyển sang công nghệ này để giải quyết vấn đề phức tạp, chẳng hạn như nhận dạng giọng nói và đối tượng, dịch máy, v.v.

Một trong những thành tích ấn tượng nhất năm nay là việc AlphaGo đánh bại kỳ thủ cờ vây giỏi nhất thế giới. Ngoài cờ vây, máy móc còn đánh bại con người trong các trò chơi khác: cờ đam, cờ vua, đảo ngược và Jeopardy.

Có thể chiến thắng ở trò chơi trên bàn cờ dường như không thể áp dụng được để giải các bài toán thực tế, nhưng điều này hoàn toàn không đúng. Cờ vây được thiết kế để trí tuệ nhân tạo không thể đánh bại được. Để làm được điều này, anh ấy cần phải học một điều quan trọng trong trò chơi này - trực giác của con người. Giờ đây, với sự trợ giúp của sự phát triển này, có thể giải quyết được nhiều vấn đề mà trước đây máy tính không thể tiếp cận được.

Rõ ràng, deep learning vẫn chưa hoàn hảo nhưng nó đã gần hữu ích về mặt thương mại. Ví dụ như những chiếc xe tự lái này. Công ty nổi tiếng như Google, Tesla và Uber đang cố gắng giới thiệu ô tô tự hành trên đường phố.

Ford dự đoán tỷ lệ xe tự lái sẽ tăng đáng kể Phương tiện giao thôngđến năm 2021. Chính phủ Hoa Kỳ cũng đã cố gắng xây dựng một bộ quy tắc an toàn cho họ.

Học sâu là gì?

Để trả lời câu hỏi này, bạn cần hiểu cách nó tương tác với máy học, mạng lưới thần kinh và trí tuệ nhân tạo. Để làm điều này, chúng tôi sử dụng phương pháp trực quan hóa bằng các vòng tròn đồng tâm:

Vòng ngoài là trí tuệ nhân tạo nói chung (ví dụ: máy tính). Xa hơn một chút là học máy, và ngay trung tâm là mạng lưới thần kinh nhân tạo và học sâu.

Nói một cách đại khái, deep learning đơn giản là một cái tên tiện lợi hơn cho mạng lưới thần kinh nhân tạo. “Sâu” trong cụm từ này đề cập đến mức độ phức tạp (độ sâu) của mạng lưới thần kinh, thường có thể khá hời hợt.

Những người tạo ra mạng lưới thần kinh đầu tiên được lấy cảm hứng từ cấu trúc của vỏ não. Lớp cơ sở của mạng, perceptron, về cơ bản là phần tử tương tự về mặt toán học của một nơ-ron sinh học. Và, cũng như trong não, các perceptron giao nhau với nhau có thể xuất hiện trong mạng lưới thần kinh.

Lớp đầu tiên của mạng nơ-ron được gọi là lớp đầu vào. Mỗi nút trong lớp này nhận một số thông tin làm đầu vào và truyền nó đến các nút tiếp theo trong các lớp khác. Thông thường, không có kết nối nào giữa các nút của một lớp và nút cuối cùng của chuỗi đưa ra kết quả của mạng lưới thần kinh.

Các nút ở giữa được gọi là nút ẩn vì chúng không có kết nối với thế giới bên ngoài như nút đầu ra và nút đầu vào. Chúng chỉ được gọi khi các lớp trước đó được kích hoạt.

Học sâu về cơ bản là một kỹ thuật đào tạo mạng lưới thần kinh sử dụng nhiều lớp để giải quyết các vấn đề phức tạp (như nhận dạng giọng nói) bằng cách sử dụng các mẫu. Vào những năm 80, hầu hết các mạng nơ-ron đều là mạng đơn lớp do chi phí cao và khả năng dữ liệu hạn chế.

Nếu coi machine learning như một nhánh hay một biến thể của trí tuệ nhân tạo thì deep learning là một loại hình chuyên biệt của nhánh đó.

Học máy sử dụng trí thông minh máy tính không cung cấp câu trả lời ngay lập tức. Thay vào đó, mã sẽ chạy trên dữ liệu thử nghiệm và dựa trên tính chính xác của kết quả, sẽ điều chỉnh tiến trình của nó. Để quá trình này thành công, nhiều kỹ thuật, phần mềm đặc biệt và khoa học máy tính, mô tả các phương pháp tĩnh và đại số tuyến tính, thường được sử dụng.

Phương pháp học sâu

Phương pháp học sâu được chia thành hai loại chính:

  • Đào tạo kèm cặp
  • Học tập không giám sát

Phương pháp đầu tiên sử dụng dữ liệu được lựa chọn đặc biệt để đạt được kết quả mong muốn. Nó đòi hỏi khá nhiều sự can thiệp của con người, vì dữ liệu phải được lựa chọn thủ công. Tuy nhiên, nó rất hữu ích cho việc phân loại và hồi quy.

Hãy tưởng tượng rằng bạn là chủ sở hữu của một công ty và muốn xác định tác động của tiền thưởng đến thời hạn hợp đồng của cấp dưới. Với dữ liệu được thu thập trước, phương pháp học có giám sát sẽ rất cần thiết và rất hiệu quả.

Phương pháp thứ hai không bao hàm các câu trả lời và thuật toán làm việc được chuẩn bị trước. Nó nhằm mục đích xác định các mẫu ẩn trong dữ liệu. Nó thường được sử dụng cho các nhiệm vụ phân cụm và liên kết, chẳng hạn như nhóm khách hàng theo hành vi. “Họ cũng chọn cái này” trên Amazon là một biến thể của nhiệm vụ liên kết.

Mặc dù phương pháp học có giám sát thường khá thuận tiện nhưng phiên bản phức tạp hơn vẫn tốt hơn. Học sâu đã chứng tỏ mình là một mạng lưới thần kinh không cần sự giám sát của con người.

Tầm quan trọng của học sâu

Máy tính từ lâu đã sử dụng công nghệ để nhận dạng các đặc điểm nhất định trong hình ảnh. Tuy nhiên, kết quả đã không thành công. Tầm nhìn máy tínhđã có tác động đáng kinh ngạc đến việc học sâu. Chính hai kỹ thuật này hiện đang giải quyết được mọi vấn đề nhận dạng.

Đặc biệt, Facebook đã thành công trong việc nhận diện khuôn mặt trong ảnh bằng deep learning. Đây không phải là một cải tiến đơn giản về công nghệ mà là một bước ngoặt làm thay đổi mọi niềm tin trước đó: “Một người có thể xác định với xác suất 97,53% liệu cùng một người có xuất hiện trong hai bức ảnh khác nhau hay không. Chương trình do nhóm Facebook phát triển có thể thực hiện điều này với xác suất 97,25%, bất kể ánh sáng hay người đó đang nhìn thẳng vào máy ảnh hay quay sang một bên.”

Nhận dạng giọng nói cũng đã trải qua những thay đổi đáng kể. Nhóm nghiên cứu tại Baidu, một trong những công cụ tìm kiếm hàng đầu của Trung Quốc, đã phát triển một hệ thống nhận dạng giọng nói có thể vượt xa con người về tốc độ và độ chính xác khi viết văn bản trên thiết bị di động. Bằng tiếng Anh và tiếng Quan Thoại.

Điều đặc biệt thú vị là việc viết một mạng lưới thần kinh chung cho hai ngôn ngữ hoàn toàn khác nhau không đòi hỏi nhiều công sức: “Trong lịch sử, người ta coi tiếng Trung và tiếng Anh là hai ngôn ngữ hoàn toàn khác nhau. ngôn ngữ khác nhau, vì vậy mỗi người trong số họ yêu cầu một cách tiếp cận khác nhau,” Andrew Ng, người đứng đầu trung tâm nghiên cứu Baidu cho biết. “Các thuật toán học tập hiện nay đã được khái quát hóa đến mức bạn có thể Chỉ học hỏi."

Google sử dụng deep learning để quản lý năng lượng trong trung tâm dữ liệu của công ty. Họ đã có thể giảm 40% chi phí tài nguyên làm mát. Đó là mức cải thiện khoảng 15% về hiệu quả năng lượng và tiết kiệm hàng triệu đô la.

Dịch vụ vi mô học sâu

Đây Đánh giá ngắn dịch vụ liên quan đến deep learning.

Trình gắn thẻ minh họa. Được cải tiến bởi Illustration2Vec, dịch vụ này cho phép bạn đánh dấu các hình ảnh với xếp hạng “được bảo vệ”, “có vấn đề”, “nguy hiểm”, “bản quyền” hoặc “chung” để hiểu trước nội dung của hình ảnh.

  • Tiện ích bổ sung Theano của Google
  • Có thể chỉnh sửa bằng Python và Numpy
  • Thường được sử dụng để giải quyết một loạt vấn đề cụ thể
  • Không phải mục đích chung. Tập trung vào thị giác máy
  • Đã chỉnh sửa bằng C++
  • Có một giao diện bằng Python

Các khóa học trực tuyến về học sâu

Google và Udacity đã hợp tác để tạo một khóa học miễn phí về học sâu, một phần của Khóa học máy học của Udacity. Chương trình này được dẫn dắt bởi các nhà phát triển giàu kinh nghiệm, những người muốn phát triển lĩnh vực học máy và đặc biệt là học sâu.

Một lựa chọn phổ biến khác là khóa học máy học của Andrew Ng, được Coursera và Stanford hỗ trợ.

  1. Học máy - Stanford của Andrew Ng trên Coursera (2010-2014)
  2. Học máy - Caltech của Yaser Abu-mostafa (2012-2014)
  3. Học máy - Carnegie Mellon của Tom Mitchell (Mùa xuân 2011)
  4. Mạng lưới thần kinh cho máy học – Geoffrey Hinton trên Coursera (2012)
  5. Lớp mạng lưới thần kinh– Hugo Larochelle từ Đại học Sherbrooke (2013)

Sách về học sâu

Trong khi các tài nguyên ở phần trước dựa trên nền tảng kiến ​​thức khá sâu rộng, thì ngược lại, Grokking Deep Learning lại nhắm đến người mới bắt đầu. Như các tác giả đã nói: “Nếu bạn đã học xong lớp 11 và hiểu sơ bộ về cách viết Python, chúng tôi sẽ dạy bạn học sâu”.

Một lựa chọn thay thế phổ biến cho cuốn sách này là một cuốn sách có tựa đề dễ hiểu là Deep Learning Book. Nó đặc biệt tốt vì nó bao gồm tất cả các phép toán mà bạn cần để tiếp cận lĩnh vực này.

  1. "Học sâu" của Yoshua Bengio, Ian Goodfellow và Aaron Courville (2015)
  2. “Mạng lưới thần kinh và học sâu” của Michael Nielsen (2014)
  3. "Học sâu" từ Microsoft Research (2013)
  4. “Hướng dẫn học sâu” từ Phòng thí nghiệm LISA, Đại học Montreal (2015)
  5. “Thảo luận thần kinh” của Andrej Karpathy
  6. "Giới thiệu về thuật toán di truyền"
  7. “Cách tiếp cận hiện đại với trí tuệ nhân tạo”
  8. "Tổng quan về học sâu và mạng lưới thần kinh"

Video và bài giảng

Deep Learning Simplified là một kênh YouTube tuyệt vời. Đây là video đầu tiên của họ:

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 cũng như 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 cấu trúc có phần đơn giản hó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 vector 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à lớp đầ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 nên đòi hỏi tối thiểu thông tin để chuyển sang cấp độ hiểu biết tiếp theo về 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 bất kỳ trường hợp nào, đó 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”). ”) đó chính là điểm mấu chốt trong việc sử dụng nó để giải quyết các vấn đề thực tế.

Nói chung, việc đào tạo 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 lưới thần kinh, mạng “phản ứng” với thông tin theo một cách khác.

Như thế đấy 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 sâu của mạng lưới thần kinh chỉ được phát triển vào năm 2006 - và 8 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: deep learning trong hầu hết các trường hợp không được kiểm soát bởi con 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 chừng) 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, các nhà nghiên cứu trí tuệ nhân tạo đã phải đối mặt với câu hỏi về đạo đức: những 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, từ “Kẻ hủy diệt” đến “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à hợp lý). mô hình hóa công việc của bộ não côn trù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 hầu hết 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 đáng kể 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.