Нейросеть что это

Нейросеть что это

Нейронные сети: как работают и где используются

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

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

История появления нейронных сетей

Началом работы ученых в этом направлении можно считать статью Уорена Маккалока и Уолтера Питтса, вышедшую в 1943 году. Они разработали компьютерную модель нейронной сети, опираясь на математические алгоритмы и теорию деятельности головного мозга. Следующим шагом стала книга Дональда Хебба «Организация поведения» 1949 года, в которой канадский нейропсихолог описал процесс самообучения искусственной нейронной сети.

Спустя 8 лет Фрэнком Розенблаттом была представлена математическая модель обработки информации человеческим мозгом, получившая название персептрон. Еще через три года, в 1960, этот американский ученый продемонстрировал электронное устройство, которое имитировало работу мозга, в частности, распознавала отдельные символы на карточках, которое оно «видело» своими «глазами»-камерами.

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

Нейросеть что этоИстория появления нейронных сетей

Однако это направление по-прежнему представлялось весьма перспективным многим исследователям, продолжавшим попытки сформулировать принцип работы самообучаемой системы. Метод обратного распространения ошибки, предложенный в 1974 году Полом Вербосом, стал еще одним шагом на пути создания нейросети. Через год Фукусима разработал первую многослойную НС – когнитрон. В 1982 году Хопфилд добился двусторонней передачи информации между нейронами, что еще больше подогрело интерес ученых к поискам новый решений в этой отрасли.

С начала 1990-х были сделаны важнейшие шаги в деле создания нейронных сетей, а в 2007 году Джеффри Хинтон ввел понятие глубокого обучения, что позволило приступить к использованию возможностей нейросетей в утилитарных целях, например, для распознавания лиц.

Понятие и принцип работы нейронной сети

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

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

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

Главное отличие ИНС от традиционных алгоритмов состоит в их способности обучаться. Эта возможность обусловлена тем, что у каждого нейрона есть собственный весовой коэффициент, определяющий его значимость для остальных нейронов.

Плюсы и минусы нейронных сетей

Перечислим главные достоинства ИНС:

Скачивайте и используйте уже сегодня:

Нейросеть что это

Нейросеть что это

Топ-30 самых востребованных и высокооплачиваемых профессий 2022

Поможет разобраться в актуальной ситуации на рынке труда

Нейросеть что это

Подборка 50+ ресурсов об IT-сфере

Только лучшие телеграм-каналы, каналы Youtube, подкасты, форумы и многое другое для того, чтобы узнавать новое про IT

Нейросеть что это

ТОП 50+ сервисов и приложений от Geekbrains

Безопасные и надежные программы для работы в наши дни

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

Задачи и области применения нейронных сетей

Сфера использования ИНС – решение аналитических задач, сопоставимых с теми, которые постоянно возникают перед человеческим мозгом. Чаще всего нейросети помогают быстро получать результаты в следующих областях:

Перечисленными сферами использование нейросетей не ограничивается, есть и другие существующие и перспективные способы задействовать их для решения различных задач:

Виды нейросетей

Любая ИНС включает первый, или входной, слой нейронов, который принимает сигналы и распределяет их по другим нейронам. Этот признак объединяет все сети, а разные типы выделяются в зависимости от того, какова дальнейшая ее структура и по какому принципу различные слои нейронной сети взаимодействуют межу собой.

Нейросеть что это

Нейросеть что это

Для этой структуры характерно движение сигнала строго от входного слоя к последнему. ИНС такого типа прекрасно зарекомендовали себя при решении таких задач, как распознавание, прогнозирование и кластеризация.

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

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

После обучение такая нейросеть определит, какие признаки обязательно должны присутствовать у собаки, но при этом каждый раз будет проводить анализ с нуля.

Нейросеть что этоРекуррентные нейронные сети

Для рекуррентных нейросетей характерно наличие памяти: они способно провести аналогию между текущим состоянием и предшествующим ему. Такая ИНС сопоставит предложенное изображение собаки с тем, которое «видела» ранее.

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

Интенсив «Путь в IT» поможет:

Нейросеть что это

Тест, в котором вы оцениваете свои качества и узнаете, какая профессия в IT подходит именно вам

Нейросеть что это

«Критические ошибки, которые могут разрушить карьеру»

Собрали 7 типичных ошибок, четвертую должен знать каждый!

Нейросеть что это

Тест «Есть ли у вас синдром самозванца?»

Мини-тест из 11 вопросов поможет вам увидеть своего внутреннего критика

Нейросеть что это

Гайд по профессиям в IT

5 профессий с данными о навыках и средней заработной плате

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

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

Подходы к обучению нейронных сетей

Принципиальное отличие ИНС от классического машинного обучения заключается в ее способности к самообучению. Если нейросеть создается для распознавания лиц, нет необходимости писать с этой целью специальный алгоритм.

При классическом подходе к решению этой задачи понадобятся совершенно разные алгоритмы для распознавания лиц и для отделения кошек от собак.

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

В результате ИНС, которая способна распознавать человеческие лица, и та, что может отличить кошек от собак, будут очень похожи между собой, отличия будут несущественными.

Говоря о возможности нейронных сетей приобретать навыки, нельзя не рассказать о глубоком обучении (Deep Learning). Чтобы не связывать с этим термином неких загадочных характеристик, как это часто бывает при недостатке информации, разберемся, что скрывается за этим модным понятием.

Небольшая ИНС с малым количеством слоев не подходит для решения сложных задач, ее мощности не хватит для того, чтобы проанализировать объекты по многим параметрами.

Нейросеть что это

Нейросеть что это

Нейросеть что это

Нейросеть что это

Нейросеть что это

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

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

Далеко не всегда для решения текущей задачи требуется deep learning. Сеть со структурой, превосходящей по сложности анализируемое явление, будет использовать избыточные ресурсы на свое переобучение, то есть начнет запоминать признаки, не имеющие значения для достижения стоящей перед ИНС цели. Из этого следует, что модель нейросети для конкретной задачи необходимо подбирать с учетом уровня ее сложности.

Нейросеть что этоПодходы к обучению нейронных сетей

К тому же очень часто элементарные двуслойные сети проявляют себя гораздо лучше, чем глубокие и сложно устроенные. Все дело в соответствии структуры ИНС тому аналитическому процессу, для которого она используется.

Но если говорить о приоритетном направлении, в котором будут развиваться нейронные сети, можно с уверенностью прогнозировать их преобладание над традиционным машинным обучением, а также бо́льшую востребованность сложных многослойных ИНС по сравнению в простыми.

Сбор данных для обучения нейронной сети

Чтобы решить какую-либо задачу, используя ИНС, нужны данные, на основе которых она будет обучаться. С этой целью необходимо собрать комплекс наблюдений и указать значения входных и выходных параметров. В первую очередь нужно определить, в каком объеме потребуются сведения для обучения нейросети, и какие именно.

Нечисловые данные в целом считаются для нейронной сети более сложным вариантом решения поставленной задачи. В качестве примера можно привести номинальные переменные типа Пол = <Муж, Жен>.

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

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

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

Точного ответа на этот вопрос не существует. Сложность отображения, которое будет воспроизведено ИНС, сложно предсказать. К тому же нет линейной связи между количеством переменных и необходимых для этого наблюдений. Даже если входных данных будет немного, для обучения нейронной сети может понадобиться очень много примеров и шаблонов.

Нейросеть что этоСбор данных для обучения нейронной сети

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

3 проблемы функционирования нейронных сетей

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

Следующая проблема состоит в необходимости создавать новую ИНС под каждую конкретную задачу, поскольку нейронная сеть плохо подходят для работы в постоянно меняющихся условиях. Предположим, перед ней стоит задача по прогнозированию поведения акций на фондовом рынке. Возможно, какое-то время она будет довольно успешно справляться со своей функцией, но со временем достоверность предлагаемых нейронной сетью вариантов может значительно понизиться.

Чтобы обойти эту проблему, разработчики тестируют различные архитектуры ИНС в попытках найти оптимальную, которая сможет подстраиваться под меняющиеся параметры, а также создают динамические нейронные сети, способные отслеживать появление новых условий во внешней среде и вносить коррективы в свою архитектуру. В этом случае применяется MSO (multi-swarm optimization) и аналогичные ему алгоритмы.

Нейросеть что это

Нейросеть что это

Нейронную сеть сравнивают с непрозрачным ящиком, в который закладывается набор переменных, а на выходе получается некий результат. Ни процесс принятия решений, ни промежуточная статистика, ни принцип работы ИНС наблюдателю не доступны. Исключением являются только сверточные нейронные сети, используемые для распознавания. Здесь есть возможность отследить возбуждение отдельных микропроцессоров, поскольку некоторые внутренние слои имеют смысл карт признаков.

В качестве предлагаемых исследователями способов решения этой проблемы можно назвать работу над алгоритмами изъятия правил (rule-extraction algorithms), нацеленную на повышение прозрачности архитектур. В результате использования таких алгоритмов удается извлечь информацию из ИНС в виде символьной логики, математических выражений или деревьев решений.

Компании, активно использующие и разрабатывающие нейронные сети

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

В числе наиболее активных разработчиков – Google, в подразделении которого Google DeepMind создана сеть AlphaGo, а также Google Brain. У Microsoft работы в этом направлении ведутся лабораторией Microsoft Research. Собственные ИНС проектируют и выпускают IBM, Facebook* (а именно Facebook* AI Research), Baidu (Baidu Institute of Deep Learning). Во многих технических университетах есть лаборатории, занятые созданием ИНС.

Нейросеть что этоКомпании, активно использующие и разрабатывающие нейронные сети

Стартаперов это направление привлекает тоже довольно часто. В качестве одного из наиболее успешных примеров вспомним компанию ClarifAI, основанную выходцами из Google. Их нейросеть признана лучшим инструментом распознавания изображений. Кроме этих разработчиков есть MSQRD, Prisma и другие стартапы, в том числе в России.

В нашей стране серьезное внимание созданию и обучению нейронных сетей уделяет холдинг Mail.Ru Group, которые использует их для анализа картинок, а также обработки и классификации текстов в собственном поисковом алгоритме. Этой же компанией проводятся эксперименты с диалоговыми системами и ботами.

Яндекс также не обходит стороной тему нейросетей, активно применяя их для работы со звуком и изображениями. Перспективным считается задействование возможностей ИНС для работы с текстами, этим направлением занимаются лаборатории нескольких вузов – МФТИ, МГУ, ВШЭ, Сколтех и т. д.

Сферы для перспективного развития нейронных сетей

Со временем ИНС с их способностью к самообучению смогут выполнять функции таких специалистов, как корректоры, редакторы, копирайтеры, ведь уже сейчас они умеют качественно и быстро работать с текстами. Затем придет очередь модераторов, администраторов пабликов в соцсетях, сотрудников техподдержки и колл-центров: боты способны анализировать контент, отвечать на типичные вопросы, общаться с клиентами по заранее выученному скрипту.

В других отраслях нейронным сетям тоже найдется дело.

ИНС, внедренная в сельскохозяйственную технику, возьмет на себя функции, которые сейчас выполняют десятки работников. Комбайны, управляемые на расстоянии, будут сканировать окружающую местность, а нейросеть, изучив полученные изображения, примет решение о поливе, прополке, рыхлении, внесении удобрений.

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

Персональный подход к каждому потребителю – верный путь к росту продаж и укреплению лояльности клиентов. Сегодня нейросети моментально принимают решение, какой тип контента интересен тому или иному пользователю. В недалеком будущем поведение человека в Интернете будет для ИНС тем набором исходных данных, на основе которого предсказываются его потребности, предлагаются подходящие товары и услуги, не дожидаясь, пока потенциальный покупатель сам начнет искать нужный продукт.

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

Обучение созданию нейронных сетей

HeadHunter заявляет, что за последние два года спрос на Data Scientist вырос минимум в два раза. Бизнес заинтересован в специалистах, которые при помощи методов машинного обучения прогнозируют развитие ситуации и повышают эффективность деятельности компании. В GeekBrains эту востребованную профессию можно освоить даже без предварительной подготовки.

По окончании курсов вы сможете претендовать на такие вакансии, как:

Государственная лицензия № 040485 гарантирует полную легитимность нашей деятельности и высокий уровень профессионального обучения. Вам будет выдан официальный документ, который убедит любого работодателя в вашей компетентности и готовности решать поставленные перед вами задачи.

Можно выбрать подходящие форматы обучения:

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

*Facebook — организация, деятельность которой признана экстремистской на территории Российской Федерации.

Источник

Что такое нейронные сети и зачем они нужны

Нейросеть что это

Нейросеть что это

Что такое нейронные сети

Искусственные нейронные сети — это программный код, который имитирует работу мозга и способен к самообучению. Как и биологическая сеть, искусственная состоит из нейронов, но они отличаются тем, что имеют более простую структуру.

Если соединить нейроны в достаточно большую сеть с управляемым взаимодействием, то они способны выполнять довольно сложные задачи. Например, определять, что нарисовано на картинке, или самостоятельно создавать фотореалистичное изображение по текстовому описанию.

Этот человек в реальности не существует, его портрет сгенерировала нейронная сеть Artbreeder, ориентируясь на запросы из контекстного меню справа

Нейросети не всегда выдают приемлемые результаты. Например, эту картинку нейросеть ruDALL-E нарисовала по запросу «Щенки на поле»

Как работает нейронная сеть

Искусственный нейрон принимает сигналы через несколько входов, затем преобразует их и передает другим нейронам. То есть работа нейрона заключается в том, чтобы преобразовать несколько параметров в один.

Например, нейронная сеть пытается определить, есть ли на картинке изображение полосатого кота. Она уже изучила сотни тысяч фотографий котов и знает, что цвет их шерсти ― это сочетание определенных оттенков, например черного, серебристого и тигрового. К нейрону поступают сигналы, что на картинке преобладают три этих цвета, значит, высока вероятность, что на ней изображен кот. Дальше нейросеть проверяет, есть ли на картинке глаза, уши и хвост. Если все четыре фактора совпали, она может уверенно заявить, что на картинке изображен кот.

Если сильно упростить, схема работы нейросети выглядит таким образом. Представим, что за каждый ответ «да» мы получаем 1 балл, а за «нет» — 0 баллов. Если в результате проверки нейросеть получает 4 балла, то она полностью уверена, что на картинке есть изображение кота. Если результат 2–3 балла, высока вероятность, что кот на картинке есть, но мог спрятать хвост. Если результат 1–0 баллов, то кота на картинке точно нет. Или он хорошо спрятался.

На следующем примере разработчики Сбера демонстрируют, как их нейросеть соотносит текстовые описания с картинками. Она вычислила, что наибольшая вероятность увидеть кота есть на третьей фотографии.

Но не обошлось и без ошибок: нейросеть решила, что картинка с силуэтом лошади ― это фотография страницы книги

Зачем нужны нейросети

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

Нейросети также используют для прогнозирования, распознавания образов, управления, распознавания скрытых закономерностей в большом объеме данных, а также для решения задач в области искусственного интеллекта, машинного и глубокого обучения.

Какие задачи решают нейронные сети

В зависимости от того, какую задачу выполняет нейросеть, ее можно отнести к одному из пяти типов.

Классификация

Нейросеть распознает человека по лицу или определяет, что изображено на картинке. Например, нейросеть Google угадывает, что вы рисуете мышкой на холсте

Регрессия

Нейросеть прогнозирует рост акций, стоимость недвижимости или возраст по фотографии.

Нейронная сеть, определяющая пол по фотографии, поможет избежать ошибок при заполнении документов

Прогнозирование временных рядов

Нейросеть составляет прогноз погоды, роста цен или объема потребления электроэнергии.

Сюда же относятся нейросети, управляющие беспилотными автомобилями. Они прогнозируют поведение других участников дорожного движения на основе анализа миллионов часов записей с видеорегистраторов

Кластеризация

Нейросеть объединяет в группы большие объемы данных по определенным признакам.

Нейросеть DeepCluster раскладывает фотографии по темам: закаты, самолеты, лес и автобусы

Генерация

Нейросеть создает музыку, картинки, видео или текст по заданным параметрам.

Нейросеть Яндекса не только создает стихотворения из поисковых запросов пользователей, но и зачитывает их вслух

Как обучают нейросети

Главное преимущество нейросетей ― способность к самообучению. Если вернуться к примеру с поиском кота на фотографии, то, несколько раз перепутав его с лисой, нейросеть сделает вывод, что заостренные уши ― не самый характерный признак кота. И тогда она начнет выдавать за ответ «да» не 1, а 0,5 балла. Хорошо обученная нейросеть может распознавать данные, которых не было в наборе для обучения, а также искаженные или неполные данные. Например, узнает кота на фото, даже если видна только часть его морды.

Нейронные сети обучаются тремя методами:

Контролируемое обучение

Человек обучает нейросеть на готовой подборке данных. Например, подборке фото, на которых у людей подписан пол и возраст. Основываясь на этих данных, нейросеть начинает сама определять параметры по фото.

Бесконтрольное обучение

Этот алгоритм позволяет обойтись без готовых данных. Нейросеть сама проверяет свой анализ на точность. Если она недостаточная, нейросеть повторяет операцию.

Усиленное обучение

Модель, при которой нейронная сеть усиливается при получении положительного результата и наказывается за неправильные расчеты.

Выводы

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

Если вы хотите получить одну из самых востребованных IT-профессий и стать разработчиком нейронных сетей, мы ждем вас на Факультете искусственного интеллекта GeekBrains, где вы за 18 месяцев получите все необходимые знания, чтобы начать работать по этой специальности.

Люди давно размышляли, как создать компьютер, который мог бы думать, как человек. Появление искусственных нейронных сетей ― значительный шаг в этом направлении. Наш мозг состоит из нейронов, которые принимают информацию от органов чувств и обрабатывают ее: мы узнаем знакомых по лицу, а при виде вкусной еды ощущаем голод. Все это результат работы нейронов мозга, взаимодействующих между собой. На этом принципе основаны искусственные нейронные сети, которые моделируют процессы, происходящие в человеческом мозге.

Что такое нейронные сети

Искусственные нейронные сети — это программный код, который имитирует работу мозга и способен к самообучению. Как и биологическая сеть, искусственная состоит из нейронов, но они отличаются тем, что имеют более простую структуру.

Если соединить нейроны в достаточно большую сеть с управляемым взаимодействием, то они способны выполнять довольно сложные задачи. Например, определять, что нарисовано на картинке, или самостоятельно создавать фотореалистичное изображение по текстовому описанию.

Этот человек в реальности не существует, его портрет сгенерировала нейронная сеть Artbreeder, ориентируясь на запросы из контекстного меню справа

Нейросети не всегда выдают приемлемые результаты. Например, эту картинку нейросеть ruDALL-E нарисовала по запросу «Щенки на поле»

Как работает нейронная сеть

Искусственный нейрон принимает сигналы через несколько входов, затем преобразует их и передает другим нейронам. То есть работа нейрона заключается в том, чтобы преобразовать несколько параметров в один.

Например, нейронная сеть пытается определить, есть ли на картинке изображение полосатого кота. Она уже изучила сотни тысяч фотографий котов и знает, что цвет их шерсти ― это сочетание определенных оттенков, например черного, серебристого и тигрового. К нейрону поступают сигналы, что на картинке преобладают три этих цвета, значит, высока вероятность, что на ней изображен кот. Дальше нейросеть проверяет, есть ли на картинке глаза, уши и хвост. Если все четыре фактора совпали, она может уверенно заявить, что на картинке изображен кот.

Если сильно упростить, схема работы нейросети выглядит таким образом. Представим, что за каждый ответ «да» мы получаем 1 балл, а за «нет» — 0 баллов. Если в результате проверки нейросеть получает 4 балла, то она полностью уверена, что на картинке есть изображение кота. Если результат 2–3 балла, высока вероятность, что кот на картинке есть, но мог спрятать хвост. Если результат 1–0 баллов, то кота на картинке точно нет. Или он хорошо спрятался.

На следующем примере разработчики Сбера демонстрируют, как их нейросеть соотносит текстовые описания с картинками. Она вычислила, что наибольшая вероятность увидеть кота есть на третьей фотографии.

Но не обошлось и без ошибок: нейросеть решила, что картинка с силуэтом лошади ― это фотография страницы книги

Зачем нужны нейросети

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

Нейросети также используют для прогнозирования, распознавания образов, управления, распознавания скрытых закономерностей в большом объеме данных, а также для решения задач в области искусственного интеллекта, машинного и глубокого обучения.

Какие задачи решают нейронные сети

В зависимости от того, какую задачу выполняет нейросеть, ее можно отнести к одному из пяти типов.

Классификация

Нейросеть распознает человека по лицу или определяет, что изображено на картинке. Например, нейросеть Google угадывает, что вы рисуете мышкой на холсте

Регрессия

Нейросеть прогнозирует рост акций, стоимость недвижимости или возраст по фотографии.

Нейронная сеть, определяющая пол по фотографии, поможет избежать ошибок при заполнении документов

Прогнозирование временных рядов

Нейросеть составляет прогноз погоды, роста цен или объема потребления электроэнергии.

Сюда же относятся нейросети, управляющие беспилотными автомобилями. Они прогнозируют поведение других участников дорожного движения на основе анализа миллионов часов записей с видеорегистраторов

Кластеризация

Нейросеть объединяет в группы большие объемы данных по определенным признакам.

Нейросеть DeepCluster раскладывает фотографии по темам: закаты, самолеты, лес и автобусы

Генерация

Нейросеть создает музыку, картинки, видео или текст по заданным параметрам.

Нейросеть Яндекса не только создает стихотворения из поисковых запросов пользователей, но и зачитывает их вслух

Как обучают нейросети

Главное преимущество нейросетей ― способность к самообучению. Если вернуться к примеру с поиском кота на фотографии, то, несколько раз перепутав его с лисой, нейросеть сделает вывод, что заостренные уши ― не самый характерный признак кота. И тогда она начнет выдавать за ответ «да» не 1, а 0,5 балла. Хорошо обученная нейросеть может распознавать данные, которых не было в наборе для обучения, а также искаженные или неполные данные. Например, узнает кота на фото, даже если видна только часть его морды.

Нейронные сети обучаются тремя методами:

Контролируемое обучение

Человек обучает нейросеть на готовой подборке данных. Например, подборке фото, на которых у людей подписан пол и возраст. Основываясь на этих данных, нейросеть начинает сама определять параметры по фото.

Бесконтрольное обучение

Этот алгоритм позволяет обойтись без готовых данных. Нейросеть сама проверяет свой анализ на точность. Если она недостаточная, нейросеть повторяет операцию.

Усиленное обучение

Модель, при которой нейронная сеть усиливается при получении положительного результата и наказывается за неправильные расчеты.

Выводы

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

Если вы хотите получить одну из самых востребованных IT-профессий и стать разработчиком нейронных сетей, мы ждем вас на Факультете искусственного интеллекта GeekBrains, где вы за 18 месяцев получите все необходимые знания, чтобы начать работать по этой специальности.

Источник

Что такое нейросеть

Нейросеть что это

Выясняем, что представляют собой нейросети, зачем они нужны и в каких сферах бизнеса их сейчас используют.

Что такое нейронная сеть?

Под нейросетью понимается скопление нейронов, способное в совокупности распознавать какие-либо явления или объекты. Это скопление обучается, действует последовательно, запоминает данные, умеет обрабатывать запросы и выдавать информацию. По такому принципу работают нейронные связи в человеческом мозге, поэтому нейросети называют искусственным интеллектом.

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

Где используются нейронные сети?

Сценариев использования ИИ тысячи.

Поиск Google и Яндекс анализирует данные в интернете, используя модели машинного обучения.

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

Фоторедакторы позволяют без последствий удалить со снимка любой объект благодаря искусственному интеллекту.

Чат-боты на множестве сайтов и в банковских приложениях представляют собой реальных роботов на базе нейросетей.

Ролики, где президенты разных стран поют опенинг-треки из аниме, тоже сделаны искусственным интеллектом.

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

Какие задачи решают нейросети?

Если рассматривать ИИ в глобальном плане, то зачастую он упрощает и ускоряет решение задачи.

К примеру, нейросеть помогает персонализировать контент под интересы человека. Такое применение нейросети нашли в рекламе. Машинное обучение помогает находить целевую аудиторию и показывать ей релевантные рекламные блоки в автоматическом режиме исключительно за счет полученных ранее данных о пользователях. Аналогичные системы используются в любых сервисах, где необходимо рекомендовать людям определенный контент. Похожую музыку, похожие видео, похожую одежду и так далее. Все это ловко подбирают бездушные машины.

Нейросеть что это

Также нейронные сети берут на себя творческие задачи. Пытаются создавать логотипы и шрифты, например. Это помогает быстро подготовить уникальный дизайн для своего сайта, не нанимая специалистов и не тратя слишком много ресурсов на работу с живым человеком.

Есть и другие варианты решаемых задач, но всех их объединяет тот факт, что нейросети пытаются вытеснить из какой-либо индустрии живых людей.

Как можно использовать нейросети?

Теперь рассмотрим более конкретные примеры использования ИИ.

Коммерческие варианты

Здесь описаны основные способы применения искусственного интеллекта в e-commerce.

Искусственный интеллект, стоящий за спиной Яндекса или Google, постепенно учится распознавать хорошие материалы, не ориентируясь на ключевые слова. В связи с этим изменился подход к написанию контента. Его надо писать не для поисковиков, а для реальных людей.

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

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

На нейронные сети можно перевесить общение с людьми. Они отвечают на базовые вопросы, помогают с подбором товаром и услуг, с решением многих типовых проблем и выдачей требуемых данных. Во многих случаях живой «консультант» вовсе не нужен. Чат-боты и голосовые боты (Сбер, например) отлично справляются со своей работой.

Нейросеть можно заставить заниматься дизайном. Например, Турболого умеет генерировать логотипы по названию бренда. Нейросеть что это

Существуют сервисы в духе Shikari, способные взять на себя поиск клиентов в социальных сетях, на форумах, в блогах и т.п.

А еще искусственный интеллект может самостоятельно заниматься почтовой рассылкой.

Некоммерческие варианты

Нейросети можно использовать не только в бизнесе. Они и в повседневной жизни могут пригодиться, то есть не для развития сайтов или получения прибыли.

Нейросеть Nvidia позволяет удалять с фотографий любые объекты онлайн. Прямо в браузере, без использования специального программного обеспечения! Все происходит на серверах компании и обрабатывается искусственным интеллектом.

ИИ от компании Mail.ru может любой ролик озвучить дикторским голосом. Этим активно пользуются пранкеры.

Нейронная сеть Boring может увеличить качество изображения, восстанавливая деталь за деталью. Нейросеть что это

Проект AutoDraw от Google превращает любые каракули в полноценную иллюстрацию. Достаточно сделать набросок, а нейросеть уже додумает, что вы пытались нарисовать, и превратит это в аккуратный рисунок.

Существуют приложения, которым можно на английском языке объяснить, как должен выглядеть сайт, а они из этого сделают реальную страницу с HTML-разметкой и JavaScript-кодом. Причем это действительно работает в популярных IDE наподобие VS Code.

Вместо заключения

Как видите, возможности нейросетей ограничиваются только фантазией человека. Роботы пишут музыку, создают сайты, генерируют лозунги, притворяются людьми, публикуют статьи, продают дорогостоящие логотипы государству и вместе с докторами ищут способ излечить рак. Это крайне перспективное направление, которое одинаково полезно как в коммерческой деятельности, так и в повседневной жизни.

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

Источник

Нейросети: что это такое и как работает

Нейросеть что это

Нейросеть что это

Нейросеть что это

Нейросеть что это

Нейросеть что это

Нейросеть что это

Конечно, уже из названия можно догадаться, что в нейросетях разработчики попытались скопировать устройство человеческого мозга: как известно, он состоит из множества простых клеток-нейронов, которые обмениваются друг с другом электрическими сигналами. Но чем тогда нейросети отличаются от обычного компьютера, который тоже собран из примитивных электрических деталей? И почему до современного подхода не додумались ещё полвека назад?

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

Что такое нейронная сеть

Идея нейросети заключается в том, чтобы собрать сложную структуру из очень простых элементов. Вряд ли можно считать разумным один-единственный участок мозга — а вот люди обычно на удивление неплохо проходят тест на IQ. Тем не менее до сих пор идею создания разума «из ничего» обычно высмеивали: шутке про тысячу обезьян с печатными машинками уже сотня лет, а при желании критику нейросетей можно найти даже у Цицерона, который ехидно предлагал до посинения подбрасывать в воздух жетоны с буквами, чтобы рано или поздно получился осмысленный текст. Однако в XXI веке оказалось, что классики ехидничали зря: именно армия обезьян с жетонами может при должном упорстве захватить мир.

Нейросеть что это Нейросеть что это

Красота начинается, когда нейронов много

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

Работает перцептрон проще некуда: он получает несколько исходных чисел, умножает каждое на «ценность» этого числа (о ней чуть ниже), складывает и в зависимости от результата выдаёт 1 или –1. Например, мы фотографируем чистое поле и показываем нашему нейрону какую-нибудь точку на этой картинке — то есть посылаем ему в качестве двух сигналов случайные координаты. А затем спрашиваем: «Дорогой нейрон, здесь небо или земля?» — «Минус один, — отвечает болванчик, безмятежно разглядывая кучевое облако. — Ясно же, что земля».

«Тыкать пальцем в небо» — это и есть основное занятие перцептрона. Никакой точности от него ждать не приходится: с тем же успехом можно подбросить монетку. Магия начинается на следующей стадии, которая называется машинным обучением. Мы ведь знаем правильный ответ — а значит, можем записать его в свою программу. Вот и получается, что за каждую неверную догадку перцептрон в буквальном смысле получает штраф, а за верную — премию: «ценность» входящих сигналов вырастает или уменьшается. После этого программа прогоняется уже по новой формуле. Рано или поздно нейрон неизбежно «поймёт», что земля на фотографии снизу, а небо сверху, — то есть попросту начнёт игнорировать сигнал от того канала, по которому ему передают x-координаты. Если такому умудрённому опытом роботу подсунуть другую фотографию, то линию горизонта он, может, и не найдёт, но верх с низом уже точно не перепутает.

Нейросеть что это

Чтобы нарисовать прямую линию, нейрон исчеркает весь лист

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

Первые нейросети

Перцептроны устроены не намного сложнее, чем любые другие элементы компьютера, которые обмениваются единицами и нулями. Неудивительно, что первый прибор, устроенный по принципу нейросети — Mark I Perceptron, — появился уже в 1958 году, всего через десятилетие после первых компьютеров. Как было заведено в ту эпоху, нейроны у этого громоздкого устройства состояли не из строчек кода, а из радиоламп и резисторов. Учёный Фрэнк Розенблатт смог соорудить только два слоя нейросети, а сигналы на «Марк-1» подавались с импровизированного экрана размером в целых 400 точек. Устройство довольно быстро научилось распознавать простые геометрические формы — а значит, рано или поздно подобный компьютер можно было обучить, например, чтению букв.

Нейросеть что это Нейросеть что это

Розенблатт и его перцептрон

Розенблатт был пламенным энтузиастом своего дела: он прекрасно разбирался в нейрофизиологии и вёл в Корнеллском университете популярнейший курс лекций, на котором подробно объяснял всем желающим, как с помощью техники воспроизводить принципы работы мозга. Учёный надеялся, что уже через несколько лет перцептроны превратятся в полноценных разумных роботов: они смогут ходить, разговаривать, создавать себе подобных и даже колонизировать другие планеты. Энтузиазм Розенблатта вполне можно понять: тогда учёные ещё верили, что для создания ИИ достаточно воспроизвести на компьютере полный набор операций математической логики. Тьюринг уже предложил свой знаменитый тест, Айзек Азимов призывал задуматься о необходимости законов роботехники, а освоение Вселенной казалось делом недалёкого будущего.

Впрочем, были среди пионеров кибернетики и неисправимые скептики, самым грозным из которых оказался бывший однокурсник Розенблатта, Марвин Минский. Этот учёный обладал не менее громкой репутацией: тот же Азимов отзывался о нём с неизменным уважением, а Стэнли Кубрик приглашал в качестве консультанта на съёмки «Космической одиссеи 2001 года». Даже по работе Кубрика видно, что на самом деле Минский ничего не имел против нейросетей: HAL 9000 состоит именно из отдельных логических узлов, которые работают в связке друг с другом. Минский и сам увлекался машинным обучением ещё в 1950-х. Просто Марвин непримиримо относился к научным ошибкам и беспочвенным надеждам: недаром именно в его честь Дуглас Адамс назвал своего андроида-пессимиста.

Нейросеть что это

В отличие от Розенблатта, Минский дожил до триумфа ИИ

Сомнения скептиков того времени Минский подытожил в книге «Перцептрон» (1969), которая надолго отбила у научного сообщества интерес к нейросетям. Минский математически доказал, что у «Марка-1» есть два серьёзных изъяна. Во-первых, сеть всего с двумя слоями почти ничего не умела — а ведь это и так уже был огромный шкаф, пожирающий уйму электричества. Во-вторых, для многослойных сетей алгоритмы Розенблатта не годились: по его формуле часть сведений об ошибках сети могла потеряться, так и не дойдя до нужного слоя.

Минский не собирался сильно критиковать коллегу: он просто честно отметил сильные и слабые стороны его проекта, а сам продолжил заниматься своими разработками. Увы, в 1971 году Розенблатт погиб — исправлять ошибки перцептрона оказалось некому. «Обычные» компьютеры в 1970-х развивались семимильными шагами, поэтому после книги Минского исследователи попросту махнули рукой на искусственные нейроны и занялись более перспективными направлениями.

Эпоха застоя

Развитие нейросетей остановилось на десять с лишним лет — сейчас эти годы называют «зимой искусственного интеллекта». К началу эпохи киберпанка математики наконец-то придумали более подходящие формулы для расчёта ошибок, но научное сообщество поначалу не обратило внимания на эти исследования. Только в 1986 году, когда уже третья подряд группа учёных независимо от других решила обнаруженную Минским проблему обучения многослойных сетей, работа над искусственным интеллектом наконец-то закипела с новой силой.

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

Нейросеть что это

1993 год: капча уже морально устарела

К середине 1990-х исследователи сошлись на том, что самое полезное свойство нейросетей — их способность самостоятельно придумывать верные решения. Метод проб и ошибок позволяет программе самой выработать для себя правила поведения. Именно тогда стали входить в моду соревнования самодельных роботов, которых программировали и обучали конструкторы-энтузиасты. А в 1997 году суперкомпьютер Deep Blue потряс любителей шахмат, обыграв чемпиона мира Гарри Каспарова.

Нейросеть что это

Строго говоря, Deep Blue не учился на своих ошибках, а попросту перебирал миллионы комбинаций

Увы, примерно в те же годы нейросети упёрлись в потолок возможностей. Другие области программирования не стояли на месте — вскоре оказалось, что с теми же задачами куда проще справляются обычные продуманные и оптимизированные алгоритмы. Автоматическое распознавание текста сильно упростило жизнь работникам архивов и интернет-пиратам, роботы продолжали умнеть, но разговоры об искусственном интеллекте потихоньку заглохли. Для действительно сложных задач нейросетям по-прежнему не хватало вычислительной мощности.

Вторая «оттепель» ИИ случилась, только когда изменилась сама философия программирования.

Нейросети наших дней

В последнее десятилетие программисты — да и простые пользователи — часто жалуются, что никто больше не обращает внимания на оптимизацию. Раньше код сокращали как могли — лишь бы программа работала быстрее и занимала меньше памяти. Теперь даже простейший интернет-сайт норовит подгрести под себя всю память и обвешаться «библиотеками» для красивой анимации.

Конечно, для обычных программ это серьёзная проблема, — но как раз такого изобилия и не хватало нейросетям! Учёным давно известно, что если не экономить ресурсы, самые сложные задачи начинают решаться словно бы сами собой. Ведь именно так действуют все законы природы, от квантовой физики до эволюции: если повторять раз за разом бесчисленные случайные события, отбирая самые стабильные варианты, то из хаоса родится стройная и упорядоченная система. Теперь в руках человечества наконец-то оказался инструмент, который позволяет не ждать изменений миллиарды лет, а обучать сложные системы буквально на ходу.

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

Так и произошло третье пришествие перцептронов — на этот раз уже под знакомыми нам названиями «нейросети» и «глубинное обучение». Неудивительно, что новостями об успехах ИИ чаще всего делятся такие крупные корпорации как Google и IBM. Их главный ресурс — огромные дата-центры, где на мощных серверах можно тренировать многослойные нейросети. Эпоха машинного обучения по-настоящему началась именно сейчас, потому что в интернете и соцсетях наконец-то накопились те самые big data, то есть гигантские массивы информации, которые и скармливают нейросетям для обучения.

В итоге современные сети занимаются теми трудоёмкими задачами, на которые людям попросту не хватило бы жизни. Например, для поиска новых лекарств учёным до сих пор приходилось долго высчитывать, какие химические соединения стоит протестировать. А сейчас существует нейросеть, которая попросту перебирает все возможные комбинации веществ и предлагает наиболее перспективные направления исследований. Компьютер IBM Watson успешно помогает врачам в диагностике: обучившись на историях болезней, он легко находит в данных новых пациентов неочевидные закономерности.

Нейросеть что это

Люди классифицируют информацию с помощью таблиц, но нейросетям незачем ограничивать себя двумя измерениями — поэтому массивы данных выглядят примерно так

В сфере развлечений компьютеры продвинулись не хуже, чем в науке. За счёт машинного обучения им наконец поддались игры, алгоритмы выигрыша для которых придумать ещё сложнее, чем для шахмат. Недавно нейросеть AlphaGo разгромила одного из лучших в мире игроков в го, а программа Libratus победила в профессиональном турнире по покеру. Более того, ИИ уже постепенно пробирается и в кино: например, создатели сериала «Карточный домик» использовали big data при кастинге, чтобы подобрать максимально популярный актёрский состав.

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

Нейросеть что это

«Ты всего лишь машина. Только имитация жизни. Разве робот сочинит симфонию? Разве робот превратит кусок холста в шедевр искусства?» («Я, робот»)

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

Игры с ботами

Развлекаться с недоученными нейросетями очень весело: они порой выдают такие ошибки, что в страшном сне не приснится. А если ИИ начинает учиться, появляется азарт: «Неужто сумеет?» Поэтому сейчас набирают популярность интернет-игры с нейросетями.

Одним из первых прославился интернет-джинн Акинатор, который за несколько наводящих вопросов угадывал любого персонажа. Строго говоря, это не совсем нейросеть, а несложный алгоритм, но со временем он становился всё догадливее. Джинн пополнял базу данных за счёт самих пользователей — и в результате его обучили даже интернет-мемам.

Другое развлечение с «угадайкой» предлагает ИИ от Google: нужно накалякать за двадцать секунд рисунок к заданному слову, а нейросеть потом пробует угадать, что это было. Программа очень смешно промахивается, но порой для верного ответа хватает всего пары линий — а ведь именно так узнаём объекты и мы сами.

Ну и, конечно, в интернете не обойтись без котиков. Программисты взяли вполне серьёзную нейросеть, которая умеет строить проекты фасадов или угадывать цвет на чёрно-белых фотографиях, и обучили её на кошках — чтобы она пыталась превратить любой контур в полноценную кошачью фотографию. Поскольку проделать это ИИ старается даже с квадратом, результат порой достоин пера Лавкрафта!

Революция откладывается

При таком обилии удивительных новостей может показаться, что искусственный интеллект вот-вот осознает себя и сумеет решить любую задачу. На самом деле не так всё радужно — или, если встать на сторону человечества, не так мрачно. Несмотря на успехи нейросетей, у них накопилось столько проблем, что впереди нас вполне может ждать очередная «зима».

Главная слабость нейросетей в том, что каждая из них заточена под определённую задачу. Если натренировать сеть на фотографиях с котиками, а потом предложить ей задачку «отличи небо от земли», программа не справится, будь в ней хоть миллиард нейронов. Чтобы появились по-настоящему «умные» компьютеры, надо придумать новый алгоритм, объединяющий уже не нейроны, а целые сети, каждая из которых занимается конкретной задачей. Но даже тогда до человеческого мозга компьютерам будет далеко.

Сейчас самой крупной сетью располагает компания Digital Reasoning (хотя новые рекорды появляются чуть ли не каждый месяц) — в их творении 160 миллиардов элементов. Для сравнения: в одном кубическом миллиметре мышиного мозга около миллиарда связей. Причём биологам пока удалось описать от силы участок в пару сотен микрометров, где нашлось около десятка тысяч связей. Что уж говорить о людях!

Нейросеть что это

Один слой умеет узнавать людей, другой — столы, третий — ножи…

Нейросеть что это

Такими 3D-моделями модно иллюстрировать новости о нейросетях, но это всего лишь крошечный участок мышиного мозга

Кроме того, исследователи советуют осторожнее относиться к громким заявлениям Google и IBM. Никаких принципиальных прорывов в «когнитивных вычислениях» с 1980-х годов не произошло: компьютеры всё так же механически обсчитывают входящие данные и выдают результат. Нейросеть способна найти закономерность, которую не заметит человек, — но эта закономерность может оказаться случайной. Машина может подсчитать, сколько раз в твиттере упоминается «Оскар», — но не сможет определить, радуются пользователи результатам или ехидничают над выбором киноакадемии.

Теоретики искусственного интеллекта настаивают, что одну из главных проблем — понимание человеческого языка — невозможно решить простым перебором ключевых слов. А именно такой подход до сих пор используют даже самые продвинутые нейросети.

Сказки про Скайнет

Нейросеть что это

Хотя нам самим сложно удержаться от иронии на тему бунта роботов, серьёзных учёных не стоит даже и спрашивать о сценариях из «Матрицы» или «Терминатора»: это всё равно что поинтересоваться у астронома, видел ли он НЛО. Исследователь искусственного интеллекта Элиезер Юдковски, известный по роману «Гарри Поттер и методы рационального мышления», написал ряд статей, где объяснил, почему мы так волнуемся из-за восстания машин — и чего стоит опасаться на самом деле.

Прежде всего, «Скайнет» приводят в пример так, словно мы уже пережили эту историю и боимся повторения. А всё потому, что наш мозг не умеет отличать выдумки с киноэкранов от жизненного опыта. На самом-то деле роботы никогда не бунтовали против своей программы, и попаданцы не прилетали из будущего. С чего мы вообще взяли, что это реальный риск?

Бояться надо не врагов, а чересчур усердных друзей. У любой нейросети есть мотивация: если ИИ должен гнуть скрепки, то, чем больше он их сделает, тем больше получит «награды». Если дать хорошо оптимизированному ИИ слишком много ресурсов, он не задумываясь переплавит на скрепки всё окрестное железо, потом людей, Землю и всю Вселенную. Звучит безумно — но только на человеческий вкус! Так что главная задача будущих создателей ИИ — написать такой жёсткий этический кодекс, чтобы даже существо с безграничным воображением не смогло найти в нём «дырок».

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

Сделай сам

Нейросеть что это

Нейронную сеть можно сделать с помощью спичечных коробков — тогда у вас в арсенале появится фокус, которым можно развлекать гостей на вечеринках. Редакция МирФ уже попробовала — и смиренно признаёт превосходство искусственного интеллекта. Давайте научим неразумную материю играть в игру «11 палочек». Правила просты: на столе лежит 11 спичек, и в каждый ход можно взять либо одну, либо две. Побеждает тот, кто взял последнюю. Как же играть в это против «компьютера»? Очень просто.

Теперь начинается игра.

Ну а теперь начинается самое интересное: обучение. Если сеть выиграла партию, то её надо наградить: кинуть в те «нейроны», которые участвовали в этой партии, по одному дополнительному камешку того же цвета, который выпал во время игры. Если же сеть проиграла — возьмите последний использованный коробок и выньте оттуда неудачно сыгравший камень. Может оказаться, что коробок уже пустой, — тогда «последним» считается предыдущий походивший нейрон. Во время следующей партии, попав на пустой коробок, нейросеть автоматически сдастся.

Вот и всё! Сыграйте так несколько партий. Сперва вы не заметите ничего подозрительного, но после каждого выигрыша сеть будет делать всё более и более удачные ходы — и где-то через десяток партий вы поймёте, что создали монстра, которого не в силах обыграть.

А можно сыграть в эту игру прямо здесь

Нейросеть что это

Игра: из спичек и нейросетей

Нейросети — это настолько просто, что их можно строить даже из спичечных коробков. Мы решили наглядно показать, как это работает, и сделали для вас маленькую браузерную игру. Попробуйте обучить собственный ИИ!

Источник

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элементов состоит ИНС, как она работает и как ее создать самому.

Нейросеть что это
В этой статье будут представлены некоторые понятия, а также немного кода и математики, с помощью которых вы сможете построить и понять простые нейронные сети. Для ознакомления с материалом нужно иметь базовые знания о матрицах и дифференциалах. Код будет написан на языке программирования Python с использованием библиотеки numpy. Вы построите ИНС, используя Python, которая с высокой точностью классифицировать числа на картинках.

1 Что такое искусственная нейросеть?

Неконтролируемое обучение в ИНС пытается «заставить» ИНС «понять» структуру передаваемой входной информации «самостоятельно». Мы не будем рассматривать это в данном посте.

2 Структура ИНС

2.1 Искусственный нейрон

Нейросеть что это

Которая выглядит следующим образом:

Нейросеть что это

2.2 Узлы

Как было упомянуто ранее, биологические нейроны иерархически соединены в сети, где выход одних нейронов является входом для других нейронов. Мы можем представить такие сети в виде соединенных слоев с узлами. Каждый узел принимает взвешенный вход, активирует активационную функцию для суммы входов и генерирует выход.

Нейросеть что это

Круг на картинке изображает узел. Узел является «местоположением» активационной функции, он принимает взвешенные входы, складывает их, а затем вводит их в активационную функцию. Вывод активационной функции представлен через h. Примечание: в некоторых источниках узел также называют перцептроном.

Что такое «вес»? По весу берутся числа (не бинарные), которые затем умножаются на входе и суммируются в узле. Иными словами, взвешенный вход в узел имеет вид:

Нейросеть что это

где wi— числовые значения веса ( b мы будем обсудим позже). Весы нам нужны, они являются значениями, которые будут меняться в течение процесса обучения. b является весом элемента смещения на 1, включение веса b делает узел гибким. Проще это понять на примере.

2.3 Смещение

Рассмотрим простой узел, в котором есть по одному входу и выходу:

Нейросеть что это

Ввод для активационной функции в этом узле просто x1w1. На что влияет изменение в w1 в этой простой сети?

Нейросеть что это

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

Нейросеть что это

Нейросеть что это

Из графика можно увидеть, что меняя «вес» смещения b, мы можем изменять время запуска узла. Смещение очень важно в случаях, когда нужно имитировать условные отношения.

2.4 Составленная структура

Выше было объяснено, как работает соответствующий узел / нейрон / перцептрон. Но, как вы знаете, в полной нейронной сети находится много таких взаимосвязанных между собой узлов. Структуры таких сетей могут принимать мириады различных форм, но самая распространенная состоит из входного слоя, скрытого слоя и выходного слоя. Пример такой структуры приведены ниже:

Нейросеть что это

2.5 Обозначение

3 Процесс прямого распространения

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

Нейросеть что это

3.1 Пример прямого распространения

Нейросеть что это

Представим эту матрицу через массивы библиотеки numpy.

Мы просто присвоили некоторые рандомные числовые значения весу каждой связи с Ш1. Аналогично можно сделать и с Ш2:

Нейросеть что это

Мы можем присвоить некоторые значения весу смещения в Ш1 и Ш2:

Наконец, перед написанием основной программы для расчета выхода нейронной сети, напишем отдельную функцию для активационной функции:

3.2 Первая попытка реализовать процесс прямого распространения

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

Функция сначала проверяет, чем является входной массив для соответствующего слоя с узлами / весами. Если рассматривается первый слой, то входом для второго слоя является входной массив xx, Умноженный на соответствующие веса. Если слой не первый, то входом для последующего будет выход предыдущего.
Вызов функции:

возвращает результат 0.8354. Можно проверить правильность, вставив те же значения в систему уравнений:

Нейросеть что это

3.3 Более эффективная реализация

В данном случае процесс прямого распространения с циклами занимает около 40 микросекунд. Это довольно быстро, но не для больших нейронных сетей с > 100 узлами на каждом слое, особенно при их обучении. Если мы запустим этот алгоритм на нейронной сети с четырьмя слоями, то получим результат 70 микросекунд. Эта разница является достаточно значительной.

3.4 Векторизация в нейронных сетях

Нейросеть что это

, где n- количество узлов в Ш1. Используя это обозначение, систему уравнений можно сократить:

Нейросеть что это

Обратите внимание на W, что означает матричную форму представления весов. Помните, что теперь все элементы в уравнении сверху являются матрицами / векторами. Но на этом упрощение не заканчивается. Данные уравнения можно свести к еще более краткому виду:

Нейросеть что это

3.5 Умножение матриц

Распишем z (l+1) =W (l) h (l) +b (l) на выражение из матрицы и векторов входного слоя ( h (l) =x):

Нейросеть что это

Для тех, кто не знает или забыл, как перемножаются матрицы. Когда матрица весов умножается на вектор, каждый элемент в строке матрицы весов умножается на каждый элемент в столбце вектора, после этого все произведения суммируются и создается новый вектор (3х1). После перемножения матрицы на вектор, добавляются элементы из вектора смещения и получается конечный результат.

Каждая строка полученного вектора соответствует аргументу активационной функции в оригинальной НЕ матричной системе уравнений выше. Это означает, что в Python мы можем реализовать все, не используя медленные циклы. К счастью, библиотека numpy дает возможность сделать это достаточно быстро, благодаря функциям-операторам над матрицами. Рассмотрим код простой и быстрой версии функции simple_looped_nn_calc:

Обратите внимание на строку 7, в которой происходит перемножение матрицы и вектора. Если вместо функции умножения a.dot (b) вы используете символ *, то получится нечто похожее на поэлементное умножение вместо настоящего произведения матриц.

Если сравнить время работы этой функции с предыдущей на простой сети с четырьмя слоями, то мы получим результат лишь на 24 микросекунды меньше. Но если увеличить количество узлов в каждом слое до 100-100-50-10, то мы получим гораздо большую разницу. Функция с циклами в этом случае дает результат 41 миллисекунду, когда у функции с векторизацией это занимает лишь 84 микросекунды. Также существуют еще более эффективные реализации операций над матрицами, которые используют пакеты глубинного обучения, такие как TensorFlow и Theano.

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

4 Градиентный спуск и оптимизация

Расчеты значений весов, которые соединяют слои в сети, это как раз то, что мы называем обучением системы. В контролируемом обучении идея заключается в том, чтобы уменьшить погрешность между входом и нужным выходом. Если у нас есть нейросеть с одним выходным слоем и некоторой вход xx и мы хотим, чтобы на выходе было число 2, но сеть выдает 5, то нахождение погрешности выглядит как abs(2-5)=3. Говоря языком математики, мы нашли норму ошибки L 1 (Это будет рассмотрено позже).

Нейросеть что это

y (1) в этом случае может представлять собой единое скалярное значение, например, 1 или 0, обозначающий, было сообщение спамом или нет. В других приложениях это также может быть вектор с K измерениями. Например, мы имеем вход xx, Который является вектором черно-белых пикселей, считанных с фотографии. При этом y может быть вектором с 26 элементами со значениями 1 или 0, обозначающие, какая буква была изображена на фото, например (1,0. 0)для буквы а, (0,1. 0) для буквы б и т. д.

В обучении сети, используя (x,y), целью является улучшение нахождения правильного y при известном x. Это делается через изменение значений весов, чтобы минимизировать погрешность. Как тогда менять их значение? Для этого нам и понадобится градиентный спуск. Рассмотрим следующий график:

Нейросеть что это

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

Метод градиентного спуска использует градиент, чтобы принимать решение о следующей смены в w для того, чтобы достичь минимального значения кривой. Он итеративным методом, каждый раз обновляет значение w через:

Нейросеть что это

, где wн означает новое значение w, wст— текущее или «старое» значение w, ∇error является градиентом погрешности на wст и α является шагом. Шаг α также будет означать, как быстро ответ приближается к минимальной погрешности. При каждой итерации в таком алгоритме градиент должен уменьшаться. Из графика выше можно заметить, что с каждым шагом градиент «стихает». Как только ответ достигнет минимального значения, мы уходим из итеративного процесса. Выход можно реализовать способом условия «если погрешность меньше некоторого числа». Это число называют точностью.

4.1 Простой пример на коде

Мы будем находить градиент нейронной сети, используя достаточно популярный метод обратного распространения ошибки, о котором будет написано позже. Но сначала нам нужно рассмотреть функцию погрешности более детально.

4.2 Функция оценки

Нейросеть что это

Выражение является функцией оценки учебного экземпляра zth, где h (nl) является выходом последнего слоя, то есть выход нейронной сети. h (nl) можно представить как yпyп, Что означает полученный результат, когда нам известен вход xz. Две вертикальные линии означают норму L 2 погрешности или сумму квадратов ошибок. Сумма квадратов погрешностей является довольно распространенным способом представления погрешностей в системе машинного обучения. Вместо того, чтобы брать абсолютную погрешность abs(ypred(x z )-y z ), мы берем квадрат погрешности. Мы не будем обсуждать причину этого в данной статье. 1/2 в начале просто константой, которая нормализует ответ после того, как мы продифференцируем функцию оценки во время обратного распространения.

Обратите внимание, что приведенная ранее функция оценки работает только с одной парой (x,y). Мы хотим минимизировать функцию оценки со всеми mm парами вход-выход:

Нейросеть что это

Тогда как же мы будем использовать функцию J для обучения наших сетей? Конечно, используя градиентный спуск и обратное распространение ошибок. Сначала рассмотрим градиентный спуск в нейронных сетях более детально.

4.3 Градиентный спуск в нейронных сетях

Градиентный спуск для каждого веса w(ij) (l) и смещение bi(l) в нейронной сети выглядит следующим образом:

Нейросеть что это

Значения ∂/∂wij (l) и ∂/∂bi (l) являются частными производными функции оценки, основываясь на значениях веса. Что это значит? Вспомните простой пример градиентного спуска ранее, каждый шаг зависит от наклона погрешности / оценки по отношению к весу. Производная также имеет значение наклона / градиента. Конечно, производная обозначается как d/dx. x в нашем случае является вектором, а это значит, что наша производная тоже будет вектором, который является градиент каждого измерения x.

4.4 Пример двумерного градиентного спуска

Рассмотрим пример стандартного двумерного градиентного спуска. Ниже представлены диаграмму работы двух итеративных двумерных градиентных спусков:

Нейросеть что это

Синим обозначены контуры функции оценки, они обозначают области, в которых значение погрешности примерно одинаковы. Каждый шаг (p1→p2→p3) В градиентном спуске используют градиент или производную, которые обозначаются стрелкой / вектором. Этот вектор проходит через два пространства [x1, x2][x1,x2]и показывает направление, в котором находится минимум. Например, производная, исчисленная в p1 может быть d/dx=[2.1,0.7], Где производная является вектором с двумя значениями. Частичная производная ∂/∂x1 в этом случае равна скаляру →[2.1]- иными словами, это значение градиента только в одном измерении поискового пространства (x1).

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

4.5 Углубляемся в обратное распространение

Если математика вам не очень хорошо дается, то вы можете пропустить этот раздел. В следующем разделе вы узнаете, как реализовать обратное распространение языке программирования. Но если вы не против немного больше поговорить о математике, то продолжайте читать, вы получите более глубокие знания по обучению нейронных сетей.

Сначала, давайте вспомним базовые уравнения для нейронной сети с тремя слоями из предыдущих разделов:

Нейросеть что это

Выход этой нейронной сети находится по формуле:

Нейросеть что это

Нейросеть что это

Нейросеть что это

Если присмотреться, то правая часть полностью сокращается (по принципу 2552=22=1). ∂J∂w12(2) были разбиты на три множителя, два из которых можно прекрасно заменить. Начнем с ∂z1 (2) /∂w12 (2) :

Нейросеть что это

Нейросеть что это

Нейросеть что это

здесь y1 является ожидаемым выходом для выходного узла. Опять используем правило дифференцирования сложной функции:

Нейросеть что это

Мы выяснили, как находить ∂J/∂w12 (2) по крайней мере для весов связей с исходным слоем. Перед тем, как перейти к одному из скрытых слоев, введем некоторые новые значения δ, чтобы немного сократить наши выражения:

Нейросеть что это

, где i является номером узла в выходном слое. В нашем примере есть только один узел, поэтому i=1. Напишем полный вид производной функции оценки:

Нейросеть что это

, где выходной слой, в нашем случае, l=2, а i соответствует номеру узла.

4.6 Распространение в скрытых слоях

Что делать с весами в скрытых слоях (в нашем случае в слое 2)? Для весов, которые соединены с выходным слоем, производная ∂J/∂h=-(yi-hi (nl) )имела смысл, т.к. функция оценки может быть сразу найдена через сравнение выходного слоя с существующими данными. Но выходы скрытых узлов не имеют подобных уже существующих данных для проверки, они связаны с функцией оценки только через другие слои узлов. Как мы можем найти изменения в функции оценки из-за изменений весов, которые находятся глубоко в нейронной сети? Как уже было сказано, мы используем метод обратного распространения.

Нейросеть что это

Как можно понять из рисунка, выходной слой соединяется со скрытым узлом из-за веса. В случае, когда в исходном слое есть только один узел, общее выражение скрытого слоя будет выглядеть так:
Нейросеть что это

, где j номер узла в слое l. Но что будет, если в исходном слое находится много выходных узлов? В этом случае δj (l) находится по взвешенной сумме всех связанных между собой погрешностей, как показано на диаграмме ниже:

Нейросеть что это

Нейросеть что это

Отлично, теперь мы знаем, как реализовать градиентный спуск в нейронных сетях:

Нейросеть что это

Однако, для такой реализации, нам нужно будет снова применить циклы. Как мы уже знаем из предыдущих разделов, циклы в языке программирования Python работают довольно медленно. Нам нужно будет понять, как можно векторизовать такие подсчеты.

4.7 Векторизация обратного распространения

Для того, чтобы понять, как векторизовать процесс градиентного спуска в нейронных сетях, рассмотрим сначала упрощенную векторизованную версию градиента функции оценки (внимание: это пока неправильная версия!):

Нейросеть что это

Нейросеть что это

Используя операцию трансформирования, мы можем достичь результата, который нам нужен.

Еще одно трансформирование нужно сделать с суммой погрешностей в обратном распространении:

Нейросеть что это

символ (∙) в предыдущем выражении означает поэлементное умножение (произведение Адамара), не является умножением матриц. Обратите внимание, что произведение матриц (((W (l) ) T δ(l+1))требует еще одного сложения весов и значений δ.

4.8 Реализация этапа градиентного спуска

Как тогда интегрировать векторизацию в этапы градиентного спуска нашего алгоритма? Во-первых, вспомним полный вид нашей функции оценки, который нам нужно сократить:

Нейросеть что это

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

Нейросеть что это

Нейросеть что это

Нейросеть что это

4.9 Конечный алгоритм градиентного спуска

Нейросеть что это

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

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

5 Имплементация нейросети языке Python

Нейросеть что это

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

01. Масштабировать данные.
02. Разделить данные на тесты и учебные тесты.

5.1 Масштабирование данных

Почему нам нужно масштабировать данные? Во-первых, рассмотрим представление пикселей одного из сетов данных:

Заметили ли вы, что входные данные меняются в интервале от 0 до 15? Достаточно распространенной практикой является масштабирование входных данных так, чтобы они были только в интервале от [0, 1], или [1, 1]. Это делается для более легкого сравнения различных типов данных в нейронной сети. Масштабирование данных можно легко сделать через библиотеку машинного обучения scikit learn:

5.2 Создание тестов и учебных наборов данных

Опять же, scikit learn легко разбивает данные на учебные и тестовые наборы:

5.3 Настройка выходного слоя

В данных MNIST нужны результаты от изображений записаны как отдельное число. Нам нужно конвертировать это единственное число в вектор, чтобы его можно было сравнивать с исходным слоем с 10 узлами. Иными словами, если результат в MNIST обозначается как «1», то нам нужно его конвертировать в вектор: [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]. Такую конвертацию осуществляет следующий код:

Этот код конвертирует «1» в вектор [0, 1, 0, 0, 0, 0, 0, 0, 0, 0].

5.4 Создаем нейросеть

Мы снова используем сигмоидальную активационную функцию, так что сначала нужно объявить эту функцию и ее производную:

Сейчас мы не имеем никакого представления, как выглядит наша нейросеть. Как мы будем ее учить? Вспомним наш алгоритм из предыдущих разделов:
Рандомно инициализируем веса для каждого слоя W (l) Когда итерация (l) б. Найдите значение δ ( nl) выходного слоя. Обновите ΔW (l) и Δb ( l ) для каждого слоя.
03. Запустите процесс градиентного спуска, используя:

Нейросеть что это

Значит первым этапом является инициализация весов для каждого слоя. Для этого мы используем словари в языке программирования Python (обозначается через <>). Рандомные значения предоставляются весам для того, чтобы убедиться, что нейросеть будет работать правильно во время обучения. Для рандомизации мы используем random_sample из библиотеки numpy. Код выглядит следующим образом:

Следующим шагом является присвоение двум переменным ΔW и Δb нулевых начальных значений (они должны иметь такой же размер, что и матрицы весов и смещений)

Далее запустим процесс прямого распространения через нейронную сеть:

И наконец, найдем выходной слой δ (nl) и значение δ (l) в скрытых слоях для запуска обратного распространения:

Теперь мы можем соединить все этапы в одну функцию:

И наконец, после того, как мы прошлись по всем учебным экземплярам, накапливая значение tri_W и tri_b, мы запускаем градиентный спуск и меняем значения весов и смещений:

После окончания процесса, мы возвращаем полученные вес и смещение со средней оценкой для каждой итерации. Теперь время вызвать функцию. Ее работа может занять несколько минут, в зависимости от компьютера.

Мы можем увидеть, как функция средней оценки уменьшилась после итерационной работы градиентного спуска:

Нейросеть что это

Выше изображен график, где показано, как за 3000 итераций нашего градиентного спуска функция средней оценки снизилась и маловероятно, что подобная итерация изменит результат.

5.5 Оценка точности модели

Теперь, наконец, мы можем оценить точность результата (процент раз, когда сеть выдала правильный результат), используя функцию accuracy_score из библиотеки scikit learn:

Мы получили результат 86% точности. Звучит довольно неплохо? На самом деле, нет, это довольно низкая точностью. В наше время точность алгоритмов глубинного обучения достигает 99.7%, мы немного отстали.

Источник

Что такое нейросети и как использовать их в интернет-торговле: инструкция, советы, примеры

Нейросети, или искусственный интеллект, активно применяется в маркетинге. Крупные корпорации уже используют их для своих нужд. Давайте узнаем, как нейросети могут помочь владельцу интернет-магазина уже сейчас.

Что такое нейронные сети и как они работают?

Страшно? Наверное, вспомнили фильмы про то, как искусственный интеллект завоевывает мир? Не надо бояться, антиутопиям свойственно нагнетать краски. На самом деле, по крайней мере сейчас, нейросети прекрасно управляются человеком и служат на благо общества. Приведем несколько примеров:

Нейросеть что это

Чем хороши нейросети?

Во-вторых, будущее этих механизмов имеет огромные перспективы. Если сейчас, за прошедшие несколько лет, нейросети из предмета разработки программистов перешли в народ и стали использоваться повсеместно, трудно представить, что же ждет нас в будущем. В любом случае надо использовать открывающиеся возможности по полной программе.

Нейросеть что это

Итак, давайте посмотрим, какую выгоду могут принести нейросети в сфере электронной коммерции уже сейчас.

2. Нейросети распознают изображения. Этот механизм работал и ранее: зайдите в Яндекс.Картинки и поищите любое изображение. Система отфильтрует самые подходящие запросу картинки и выдаст похожие изображения.

Нейросеть что это

Как это использовать в электронной коммерции?

Нейросеть что это

Что делать? Адаптируйте сайт интернет-магазина под это нововведение: во-первых, создайте удобную мобильную версию, которая не виснет и хорошо читается, а во-вторых, включитесь в систему голосового поиска. Следите за тем, чтобы в статьях, карточках товара, описании и надписями под фото фигурировала обычная человеческая речь. Представьте, что вы сами ищете те самые шторы. Что вы спросите? Вот эти выражения и вставляйте в контент.

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

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

Пример: Google Inbox использует нейросети, чтобы общаться с пользователями. Система анализирует переписку и предлагает уже не один вариант ответа, а несколько.

Что делать? Устанавливать системы автоматизации на сайт интернет-магазина. Привлекать виртуальных помощников к общению. Этим вы оптимизируете время ваших реальных сотрудников и избавите их от ежедневной рутины общения с клиентами.

Нейросеть что это

6. Нейросети умеют делать рассылки. Сколько времени уходит на создание и рассылку писем? Очень много, если делать это вручную, поручив какому-нибудь сотруднику. Время летит вперед, и теперь этим успешно занимаются нейросети. Они умеют делать рассылки и уведомлять пользователей о распродажах, акциях и скидках, поступлении нового товара или другом заманчивом предложении.

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

Что делать? Искать подобные сервисы и пользоваться их услугами. Это не реклама, а один из примеров того, как нейросети служат на благо малого бизнеса.

Нейросеть что это

8. Нейросети могут автоматизировать техподдержку. Мы уже писали, что гарантом отличного сервиса служит круглосуточная работа техподдержки, которая помогает клиенту в любое время дня и ночи и дает действительно полезные советы. Помогут те же чат-боты, которых можно научить отвечать на распространенные ответы пользователей.

Что ждет нас в будущем?

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

И напоследок

Источник

Как работает нейронная сеть: алгоритмы, обучение, функции активации и потери

Нейросеть что это

Нейронная сеть — попытка с помощью математических моделей воспроизвести работу человеческого мозга для создания машин, обладающих искусственным интеллектом.

Искусственная нейронная сеть обычно обучается с учителем. Это означает наличие обучающего набора (датасета), который содержит примеры с истинными значениями: тегами, классами, показателями.

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

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

Раньше люди генерировали признаки вручную. Чем больше признаков и точнее подобраны веса, тем точнее ответ. Нейронная сеть автоматизировала этот процесс.

Нейросеть что это

Искусственная нейронная сеть состоит из трех компонентов:

Нейросеть что это

Во время прямого распространения ошибки делается предсказание ответа. При обратном распространении ошибка между фактическим ответом и предсказанным минимизируется.

Прямое распространение ошибки

Зададим начальные веса случайным образом:

Умножим входные данные на веса для формирования скрытого слоя:

Выходные данные из скрытого слоя передается через нелинейную функцию (функцию активации), для получения выхода сети:

Обратное распространение

Нейросеть что это

Полученный результат затем вычитается из соответствующих весов.

В результате получатся следующие обновленные веса:

То, что мы предполагаем и инициализируем веса случайным образом, и они будут давать точные ответы, звучит не вполне обоснованно, тем не менее, работает хорошо.

Нейросеть что этоПопулярный мем о том, как Карлсон стал Data Science разработчиком

Нейросеть что этоЕсли вы знакомы с рядами Тейлора, обратное распространение ошибки имеет такой же конечный результат. Только вместо бесконечного ряда мы пытаемся оптимизировать только его первый член.

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

Частные производные

Частные производные можно вычислить, поэтому известно, какой был вклад в ошибку по каждому весу. Необходимость производных очевидна. Представьте нейронную сеть, пытающуюся найти оптимальную скорость беспилотного автомобиля. Eсли машина обнаружит, что она едет быстрее или медленнее требуемой скорости, нейронная сеть будет менять скорость, ускоряя или замедляя автомобиль. Что при этом ускоряется/замедляется? Производные скорости.

Разберем необходимость частных производных на примере.

Предположим, детей попросили бросить дротик в мишень, целясь в центр. Вот результаты:

Нейросеть что это

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

Нейросеть что это

Ошибка нескольких детей может уменьшиться, но общая ошибка все еще увеличивается.

Найдя частные производные, мы узнаем ошибки, соответствующие каждому весу в отдельности. Если выборочно исправить веса, можно получить следующее:

Нейросеть что это

Гиперпараметры

Нейронная сеть используется для автоматизации отбора признаков, но некоторые параметры настраиваются вручную.

Скорость обучения (learning rate)

Скорость обучения является очень важным гиперпараметром. Если скорость обучения слишком мала, то даже после обучения нейронной сети в течение длительного времени она будет далека от оптимальных результатов. Результаты будут выглядеть примерно так:

Нейросеть что это

С другой стороны, если скорость обучения слишком высока, то сеть очень быстро выдаст ответы. Получится следующее:

Нейросеть что это

Функция активации (activation function)

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

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

Нейросеть что это

Функция потери (loss function)

Функция потерь находится в центре нейронной сети. Она используется для расчета ошибки между реальными и полученными ответами. Наша глобальная цель — минимизировать эту ошибку. Таким образом, функция потерь эффективно приближает обучение нейронной сети к этой цели.

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

Функция потерь одномерна и не является вектором, поскольку она оценивает, насколько хорошо нейронная сеть работает в целом.

Некоторые известные функции потерь:

Cреднеквадратичное отклонение – самая простая фукция потерь и наиболее часто используемая. Она задается следующим образом:

Нейросеть что это

Функция потерь в нейронной сети должна удовлетворять двум условиям:

Глубокие нейронные сети

Глубокое обучение (deep learning) – это класс алгоритмов машинного обучения, которые учатся глубже (более абстрактно) понимать данные. Популярные алгоритмы нейронных сетей глубокого обучения представлены на схеме ниже.

Нейросеть что этоПопулярные алгоритмы нейронных сетей (http://www.asimovinstitute.org/neural-network-zoo)

Более формально в deep learning:

Пример

Рассмотрим однослойную нейронную сеть:

Нейросеть что это

Здесь, обучается первый слой (зеленые нейроны), он просто передается на выход.

В то время как в случае двухслойной нейронной сети, независимо от того, как обучается зеленый скрытый слой, он затем передается на синий скрытый слой, где продолжает обучаться:

Нейросеть что это

Следовательно, чем больше число скрытых слоев, тем больше возможности обучения сети.

Нейросеть что это

Не следует путать с широкой нейронной сетью.

В этом случае большое число нейронов в одном слое не приводит к глубокому пониманию данных. Но это приводит к изучению большего числа признаков.

Изучая английскую грамматику, требуется знать огромное число понятий. В этом случае однослойная широкая нейронная сеть работает намного лучше, чем глубокая нейронная сеть, которая значительно меньше.

В случае изучения преобразования Фурье, ученик (нейронная сеть) должен быть глубоким, потому что не так много понятий, которые нужно знать, но каждое из них достаточно сложное и требует глубокого понимания.

Главное — баланс

Очень заманчиво использовать глубокие и широкие нейронные сети для каждой задачи. Но это может быть плохой идеей, потому что:

Проклятье размерности

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

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

Компромисс

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

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

Нейросеть что это

алгоритмы с большим смещением обычно в основе более простых моделей, которые не склонны к переобучению, но могут недообучиться и не выявить важные закономерности или свойства признаков. Модели с маленьким смещением и большой дисперсией обычно более сложны с точки зрения их структуры, что позволяет им более точно представлять обучающий набор. Однако они могут отображать много шума из обучающего набора, что делает их прогнозы менее точными, несмотря на их дополнительную сложность.

Следовательно, как правило, невозможно иметь маленькое смещение и маленькую дисперсию одновременно.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *