Một cái nhìn kỹ thuật của sự vật. Giới thiệu về Học sâu

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

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

Vào ngày 9 tháng 9 năm 2014, trong buổi thuyết trình tiếp theo, công ty táo trình bày hệ thống riêng của mình thanh toán di động- Trả phí cho apple.

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

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

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

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

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

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

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 những cái truyền thống như thế nào chương trình máy tính và tại sao xu hướng này sẽ 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ề thành công học kĩ càng (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ể yên tâm nói về một bong bóng mới.

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 và chương trình nhận dạng giọng nói Bản 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ột thần kinh mạng máy tính trong máy tính bảng của bạn và mạng lưới thần kinh sẽ điều khiển một chiếc ô tô mà không cần người lái, bạn cũng sẽ không tin - nhưng vô ích.

Nhân tiện, “hình ảnh khiêu dâm” ở trong mạng xã hội Nó không còn được phát hiện bởi con người nữa mà bởi chính các mạng lưới. 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 đã xuất hiện, 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 mất ít hơn hàng trăm lần bộ nhớ truy cập tạm thời Tại 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 dữ liệu, 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, đối với Năm ngoái cơ sở hạ tầng phát triển cho nghề mới: trường đại học khóa huấn luyện, hàng chục hướng dẫn, sách, sân thi đấu và đào tạo, số lượng lớn phần mềm miễn phí. Chỉ có trong cộng đồng deep learning nói tiếng Nga VKontakte ngày nay

Học sâu là gì? Ngày 3 tháng 3 năm 2016

Ngày nay, họ nói về các công nghệ học sâu thời thượng như thể đó là ma-nang từ thiên đường. Nhưng liệu người nói có hiểu nó thực sự là gì không? Nhưng khái niệm này không có định nghĩa chính thức và nó kết hợp cả một loạt công nghệ. Trong bài đăng này, tôi muốn giải thích một cách phổ biến nhất có thể và về cơ bản những gì đằng sau thuật ngữ này, tại sao nó lại phổ biến và những công nghệ này mang lại cho chúng ta những gì.


Nói tóm lại, thuật ngữ mới này (học sâu) là về cách tập hợp một sự trừu tượng (biểu diễn) phức tạp hơn và sâu sắc hơn từ một số sự trừu tượng đơn giản. mặc dù thực tế là ngay cả những phần trừu tượng đơn giản nhất cũng phải được lắp ráp bởi chính máy tính chứ không phải bởi con người. Những thứ kia. Nó không còn chỉ là học tập nữa mà là siêu học tập. Nói một cách hình tượng, bản thân máy tính phải học cách học tốt nhất. Và trên thực tế, đây chính xác là ý nghĩa của thuật ngữ “sâu”. Hầu như luôn luôn, thuật ngữ này được áp dụng cho các mạng thần kinh nhân tạo sử dụng nhiều hơn một lớp ẩn, do đó, “sâu” chính thức cũng có nghĩa là kiến ​​trúc mạng thần kinh sâu hơn.

Ở đây, trong slide phát triển, bạn có thể thấy rõ deep learning khác với học thông thường như thế nào. Tôi lặp lại, Điều độc đáo về học sâu là máy tự tìm ra các tính năng(các đặc điểm chính của thứ gì đó giúp dễ dàng tách một lớp đối tượng này khỏi lớp đối tượng khác) và cấu trúc các dấu hiệu này theo thứ bậc: những dấu hiệu đơn giản hơn được kết hợp thành những dấu hiệu phức tạp hơn. Dưới đây chúng ta sẽ xem xét điều này với một ví dụ.

Chúng ta hãy xem một ví dụ về nhiệm vụ nhận dạng hình ảnh: trước đây, họ đã nhét một nhiệm vụ khổng lồ vào mạng thần kinh thông thường có một lớp (1024×768 - khoảng 800.000 Giá trị kiểu số) và nhìn chiếc máy tính dần chết đi, ngột ngạt vì thiếu bộ nhớ và không thể hiểu được pixel nào quan trọng để nhận dạng và pixel nào không. Chưa kể đến hiệu quả của phương pháp này. Đây là kiến ​​trúc của một mạng lưới thần kinh thông thường (nông).

Sau đó, họ lắng nghe cách bộ não phân biệt các đặc điểm và nó thực hiện điều này theo cách phân cấp nghiêm ngặt, đồng thời họ cũng quyết định trích xuất cấu trúc phân cấp từ các bức ảnh. Để làm được điều này, cần phải thêm nhiều lớp ẩn hơn (các lớp nằm giữa đầu vào và đầu ra; nói một cách đại khái là các giai đoạn chuyển đổi thông tin) vào mạng nơ-ron. Mặc dù họ quyết định làm điều này gần như ngay lập tức khi tế bào thần kinh được phát minh, nhưng các mạng chỉ có một lớp ẩn đã được huấn luyện thành công. Những thứ kia. Về nguyên tắc, các mạng sâu đã tồn tại lâu như các mạng thông thường, chỉ là chúng ta không thể đào tạo chúng. Điều gì đã thay đổi?

Vào năm 2006, một số nhà nghiên cứu độc lập đã giải quyết vấn đề này ngay lập tức (ngoài ra, khả năng phần cứng đã đủ phát triển, các card màn hình khá mạnh đã xuất hiện). Các nhà nghiên cứu này là: Geoffrey Hinton (và đồng nghiệp của ông là Ruslan Salakhutidinov) với kỹ thuật đào tạo trước từng lớp của mạng lưới thần kinh bằng máy Boltzmann bị ràng buộc (thứ lỗi cho tôi vì những thuật ngữ này...), Yann LeCun với mạng lưới thần kinh tích chập, và Yoshuay Bengio với bộ mã hóa tự động xếp tầng. Hai người đầu tiên lần lượt được Google và Facebook tuyển dụng ngay lập tức. Đây là hai bài giảng: một - Hinton, cái khác - Lyakuna, trong đó họ cho biết học sâu là gì. Không ai có thể nói với bạn về điều này tốt hơn họ. Một cái hay khác bài học Schmidhuber về sự phát triển của deep learning, cũng là một trong những trụ cột của ngành khoa học này. Và Hinton cũng có một khóa học tuyệt vời về tế bào thần kinh.

Mạng lưới thần kinh sâu có thể làm gì bây giờ? Trẻ có thể nhận biết và mô tả đồ vật; người ta có thể nói trẻ “hiểu” đồ vật đó là gì. Đó là về về việc nhận biết ý nghĩa.

Chỉ cần xem video này để nhận biết theo thời gian thực những gì camera nhìn thấy.

Như tôi đã nói, công nghệ deep learning là một nhóm công nghệ và giải pháp. Tôi đã liệt kê một số mạng trong số chúng ở đoạn trên, một ví dụ khác là mạng lặp lại, được sử dụng trong video ở trên để mô tả những gì mạng nhìn thấy. Nhưng đại diện phổ biến nhất của loại công nghệ này vẫn là mạng nơ-ron tích chập của LyaKun. Chúng được xây dựng bằng cách tương tự với các nguyên tắc hoạt động của vỏ não thị giác của não mèo, trong đó cái gọi là tế bào đơn giản được phát hiện, phản ứng với các đường thẳng ở các góc khác nhau và các tế bào phức tạp - phản ứng liên quan đến sự kích hoạt một bộ nhất định tế bào đơn giản. Mặc dù thành thật mà nói, bản thân LaCun không tập trung vào sinh học nhưng anh ấy đã quyết định nhiệm vụ cụ thể(xem bài giảng của anh ấy), và rồi nó trùng hợp.

Nói một cách đơn giản, mạng tích chập là mạng trong đó thành phần cấu trúc chính của việc học là một nhóm (tổ hợp) các nơ-ron (thường là hình vuông 3x3, 10x10, v.v.) chứ không chỉ một. Và ở mỗi cấp độ của mạng lưới, hàng chục nhóm như vậy được đào tạo. Mạng tìm thấy sự kết hợp của các nơ-ron nhằm tối đa hóa thông tin về hình ảnh. Ở cấp độ đầu tiên, mạng trích xuất các thông tin cơ bản, có cấu trúc nhất yếu tố đơn giản người ta có thể nói, những bức tranh là những đơn vị xây dựng: ranh giới, nét vẽ, phân đoạn, độ tương phản. Lên cao hơn đã là sự kết hợp ổn định của các yếu tố ở cấp độ đầu tiên, v.v. Tôi muốn nhấn mạnh một lần nữa tính năng chính học sâu: các mạng tự hình thành các yếu tố này và quyết định yếu tố nào quan trọng hơn và yếu tố nào không. Điều này rất quan trọng vì trong khu vực học máy, việc tạo ra các tính năng là điều quan trọng và bây giờ chúng ta đang chuyển sang giai đoạn mà máy tính tự học cách tạo và chọn các tính năng. Bản thân máy xác định một hệ thống phân cấp các tính năng thông tin.

Vì vậy, trong quá trình học (xem hàng trăm bức ảnh), mạng tích chập hình thành một hệ thống phân cấp các đặc điểm nhiều cấp độ khác nhauđộ sâu. Ở cấp độ đầu tiên, họ có thể làm nổi bật, chẳng hạn như các yếu tố như vậy (phản ánh độ tương phản, góc, đường viền, v.v.).


Ở cấp độ thứ hai, đây sẽ là một yếu tố từ các yếu tố của cấp độ đầu tiên. Vào ngày thứ ba - từ thứ hai. Chúng ta phải hiểu rằng bức ảnh này- chỉ là biểu tình thôi. Hiện nay được sử dụng trong công nghiệp, các mạng như vậy có từ 10 đến 30 lớp (cấp độ).

Sau khi mạng như vậy được huấn luyện, chúng ta có thể sử dụng nó để phân loại. Sau khi đưa ra một số hình ảnh làm đầu vào, các nhóm nơ-ron ở lớp đầu tiên sẽ chạy dọc theo hình ảnh, kích hoạt ở những nơi có thành phần hình ảnh tương ứng với một thành phần cụ thể. Những thứ kia. Mạng này phân tích hình ảnh thành các phần - đầu tiên là các đường, nét, góc nghiêng, sau đó là các phần phức tạp hơn và cuối cùng đưa ra kết luận rằng hình ảnh là từ kiểu kết hợp này yếu tố cơ bản- khuôn mặt này.

Thông tin thêm về mạng tích chập -

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

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

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

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

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

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 ra bởi máy học.

Một trong những điều nhất những cách đơn giản Cách để mô tả quá trình trí tuệ của máy móc 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 thu thập các biểu đồ này lại với nhau bằng cách sử dụng nguyên tắc tương tự như POPNN được thu thập. Thư viện chứa một bộ nhiều loại khác nhau các đỉnh cho nguyên thủy tổng quát.

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

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

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

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

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


Đồ thị ResNet-50

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

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

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

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

Một lượng lớn bộ nhớ bị chiếm dụng là một trong những vấn đề lớn nhất vấn đề lớn mạng lưới thần kinh sâu. Các nhà nghiên cứu đang cố gắng giải quyết những hạn chế thông lượng Các thiết bị DRAM nên đượ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 vẫn 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ìn chung rõ ràng là không có kho lưu trữ bộ nhớ lớn riêng biệt. Chức năng của trí nhớ dài hạn và ngắn hạn trong não người được cho là gắn liền với cấu trúc của tế bào thần kinh + khớp thần kinh. Ngay cả những sinh vật đơn giản như giun, với cấu trúc não thần kinh chỉ hơn 300 tế bào thần kinh, cũng có một số chức năng ghi nhớ.

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

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

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

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

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

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

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

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

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

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