Читаем Разберись в Data Science полностью

С точки зрения вычислений сеть можно рассматривать как серию моделей логистической регрессии, заключенных в каждом из нейронов[129]. В скрытом слое присутствуют три модели логистической регрессии, каждая из которых придает разный вес таким параметрам, как средний балл, курс, специализация и количество внеклассных занятий. (Чтобы не усложнять визуализацию, мы указали не все связи с нейронами скрытого слоя, проигнорировав те, которые имели бы несущественные веса.) Выходные сигналы этих трех моделей становятся входными для последнего нейрона, который взвешивает комбинацию входных данных и выдает окончательный результат.

При этом получаются уравнения в уравнениях – математическое подобие матрешки. Вот как это может выглядеть.

«Внешняя» функция представляет собой функцию активации в последнем слое сети. Для сети, изображенной на рис. 12.2, это будет:

Вероятность приглашения =



Однако каждый из признаков в этом уравнении – достижения, опыт и набор навыков – представляют собой отдельные уравнения. Если мы заменим в приведенном выше уравнении только «Достижения», то получим (не пугайтесь):



И это если мы ограничимся только признаком «Достижения»! Мы не стали заменять остальные, но надеемся, что нам удалось проиллюстрировать высказанную ранее мысль о том, что нейронные сети представляют собой гигантские математические уравнения.

Результат этой вложенной структуры – огромное уравнение с множеством параметров, которое принимает входной набор данных и различными способами их комбинирует. Именно наслоение этих функций и позволяет сети выявлять более сложные представления в данных, что делает возможным более детальные предсказания.

Описать процесс работы нейронной сети так же сложно, как и процесс мышления. На практике скрытый слой, скорее всего, не будет выдавать понятные для людей представления, показанные здесь (достижения, опыт и набор навыков). Хуже того, сложность будет возрастать по мере добавления дополнительных слоев и нейронов. Иногда эти модели называют черными ящиками из-за сложности понимания процесса их работы на уровне слоев и нейронов.

Поэтому при объяснении принципа работы нейронных сетей не стоит прибегать к драматическим сравнениям с человеческим мозгом. Более реалистично представление о нейронных сетях как о больших математических уравнениях, обычно используемых при решении задач контролируемого обучения (классификация или регрессия) и способных находить новые представления входных данных, упрощая тем самым процесс прогнозирования.

Что же такое глубокое обучение?

Применение глубокого обучения

Глубокое обучение – это семейство алгоритмов, использующих структуру искусственной нейронной сети с двумя или более скрытыми слоями. (Другими словами, это искусственная нейронная сеть с улучшенным брендингом.) Идея углубления (или расширения, как показано на рис. 12.3) нейронной сети состоит в последовательном наложении скрытых слоев, при котором выходные сигналы одного слоя становятся входными сигналами для следующего. В каждом слое реализуются новые абстракции и представления данных, в результате чего из набора входных данных создаются все более нюансированные признаки.

Это сложный процесс, который не всегда было легко осуществить. В 1989 году исследователи под руководством Янна ЛеКуна[130] создали модель глубокого обучения, которая принимала в качестве входных данных рукописные цифры и автоматически присваивала им соответствующую выходную числовую метку. Это было сделано для автоматического распознавания индексов на почтовых отправлениях.

Эта сеть содержала более 1200 нейронов и почти 10 000 параметров. (Только задумайтесь об этом. Модель в уравнении 12.2 содержит всего пять параметров.) Команде исследователей требовался обучающий набор данных, содержащий тысячи рукописных цифр с метками. Все это нужно было осуществить, используя технологии 1980-х годов.

Казалось, что новейшие компьютеры, большой набор размеченных данных и терпение должны были гарантировать успех в сфере глубокого обучения. Но несмотря на некоторый прогресс в этой области, настоящих прорывов пришлось ждать еще несколько лет, потому что (1) обучение глубокой нейронной сети происходило мучительно медленно даже на самых мощных и дорогих компьютерах того времени, и (2) доступ к наборам размеченных входных-выходных данных был ограничен. А на одном терпении далеко не уедешь.


Рис. 12.3. Глубокая нейронная сеть с двумя скрытыми слоями


Перейти на страницу:

Все книги серии Мировой компьютерный бестселлер

Похожие книги

1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных
C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
Programming with POSIX® Threads
Programming with POSIX® Threads

With this practical book, you will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. The primary advantage of threaded programming is that it enables your applications to accomplish more than one task at the same time by using the number-crunching power of multiprocessor parallelism and by automatically exploiting I/O concurrency in your code, even on a single processor machine. The result: applications that are faster, more responsive to users, and often easier to maintain. Threaded programming is particularly well suited to network programming where it helps alleviate the bottleneck of slow network I/O. This book offers an in-depth description of the IEEE operating system interface standard, POSIX (Portable Operating System Interface) threads, commonly called Pthreads. Written for experienced C programmers, but assuming no previous knowledge of threads, the book explains basic concepts such as asynchronous programming, the lifecycle of a thread, and synchronization. You then move to more advanced topics such as attributes objects, thread-specific data, and realtime scheduling. An entire chapter is devoted to "real code," with a look at barriers, read/write locks, the work queue manager, and how to utilize existing libraries. In addition, the book tackles one of the thorniest problems faced by thread programmers-debugging-with valuable suggestions on how to avoid code errors and performance problems from the outset. Numerous annotated examples are used to illustrate real-world concepts. A Pthreads mini-reference and a look at future standardization are also included.

David Butenhof

Программирование, программы, базы данных