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

Главный вопрос – какими должны быть эти параметры для достижения оптимума? Ответ на него превращает нейронную сеть в полезную машину для прогнозирования. Однако в самом начале процесса обучения параметры могут быть любыми. Поэтому наш алгоритм присваивает им случайные значения в качестве отправной точки. Если бы вам нужно было вымыть руки под краном, который вы видите впервые и у которого отсутствуют метки горячей и холодной воды, то вы просто включили бы его, оценили температуру и отрегулировали ее. То же самое и здесь.

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

На этом этапе модель анализирует истинные значения выходных параметров (1 и 1) и отправляет сообщение о том, что текущие параметры неверны, и их необходимо скорректировать. Но как именно мы должны изменить каждый вес? Алгоритм, называемый обратным распространением ошибки[127], корректирует эти веса и решает, на сколько их необходимо увеличить или уменьшить. Может быть, придать большее значение среднему баллу? А может быть, стоит уменьшить важность курса? Затем процесс повторяется: обновленные веса снова применяются для оценки данных Уилла и Элли, и на этот раз выдаются результаты 0,4 и 0,6. Уже лучше, но еще не идеально. Алгоритм обратного распространения ошибки отправляет сигнал обратно по сети и снова корректирует веса, после чего процесс повторяется. Со временем параметры приближаются к своему гипотетическому оптимуму, при котором предсказанные значения в среднем наиболее близки к фактическим меткам[128].

Чуть более сложная нейронная сеть

В предыдущем примере мы просто взяли логистическую регрессию и превратили ее в визуализацию нейронной сети. Математика была идентичной. В связи с этим возникает вопрос: зачем вообще это делать? Зачем представлять логистическую регрессию в виде чего-то нового, называемого нейронной сетью?

Ответ на этот вопрос и реальная польза нейронных сетей заключается в том, что происходит, когда мы добавляем в сеть «скрытые» слои. Итак, давайте добавим в предыдущую сеть скрытый слой с тремя нейронами, каждый из которых содержит логистическую функцию активации. В результате мы получим сетевую структуру, показанную на рис. 12.2.


Рис. 12.2. Нейронная сеть со скрытым слоем. Средний слой «спрятан» между основным входным слоем слева и выходным слоем справа


Идея состоит в том, что нейроны в скрытом слое будут «изучать» новые и совершенно иные представления входных данных, что упростит задачу прогнозирования. Давайте посмотрим на верхний нейрон скрытого слоя: находится в середине и состоит из трех нейронов. Предположим, что в результате обучения на исторических данных верхний нейрон «научился» понимать, что средний балл кандидата, его специализация и количество внеклассных занятий – важные факторы, влияющие на вероятность получения приглашения. Это значит, что данные кандидата с высоким средним баллом, большим количеством внеклассных занятий и сложной специализацией заставят этот нейрон «активироваться» и послать сигнал, обозначающий новый признак в данных. Этот признак можно было бы назвать достижением. С математической точки зрения это означает, что в функции активации этого нейрона веса таких параметров, как средний балл, специализация и внеклассные занятия, являются «большими».

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

Напомним, что четыре исходных входных параметра подаются на скрытый слой и выводятся в виде трех новых признаков. Затем признаки «достижения», «опыт» и «набор навыков» становятся входными данными для последнего нейрона, который берет взвешенную комбинацию этих входных данных, пропускает ее через еще одну функцию активации и выдает прогноз.

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

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

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

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

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