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

Статьи рассказывающие про строение нейронных сетей, их виды и выполняемые ими действия.

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

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

Нейронные сети возникли из исследований в области искусственного интеллекта, а именно, из попыток воспроизвести способность биологических нервных систем обучаться и исправлять ошибки, моделируя низкоуровневую структуру мозга (Patterson, 1996). Основной областью исследований по искусственному интеллекту в 60-е – 80-е годы были экспертные системы. Такие системы основывались на высокоуровневом моделировании процесса мышления (в частности, на представлении, что процесс нашего мышления построен на манипуляциях с символами). Скоро стало ясно, что подобные системы, хотя и могут принести пользу в некоторых областях, не ухватывают некоторые ключевые аспекты человеческого интеллекта. Согласно одной из точек зрения, причина этого состоит в том, что они не в состоянии воспроизвести структуру мозга. Чтобы создать искусственных интеллект, необходимо построить систему с похожей архитектурой.

Июль, 2017

    Описание процессов машинного перевода основанного на базе правил (Rule-Based), машинного перевода на базе фраз (Phrase-Based) и нейронного перевода В этой публикации нашего цикла step-by-step статей мы объясним, как работает нейронный машинный перевод и сравним его с другими методами: технологией перевода на базе правил и технологией фреймового перевода (PBMT, наиболее популярным подмножеством которого является статистический машинный [...]

    Умоляю перестань мне сниться Я люблю тебя моя невеста Белый иней на твоих ресницах Поцелуй на теле бессловесномКогда-то в школе мне казалось, что писать стихи просто: нужно всего лишь расставлять слова в нужном порядке и подбирать подходящую рифму. Следы этих галлюцинаций (или иллюзий, я их не различаю) встретили вас в эпиграфе. Только это стихотворение, конечно, [...]

    Хороший виртуальный ассистент должен не только решать задачи пользователя, но и разумно отвечать на вопрос «Как дела?». Реплик без явной цели очень много, и заготовить ответ на каждую проблематично. Neural Conversational Models - сравнительно новый способ создания диалоговых систем для свободного общения. Его основа - сети, обученные на больших корпусах диалогов из интернета. Борис Янгель [...]

    В этой серии статей приведу краткий перевод с английского языка первой главы книги Майкла Нильсона “Neural Networks and Deep Learning”. Перевод я разбил на несколько статей на хабре, чтобы было удобнее читать: Часть 1) Введение в нейронные сети Часть 2) Построение и градиентный спуск Часть 3) Реализация сети для распознавания цифр Часть 4) …

Ноябрь, 2016

    В компании Microsoft придумали, как сделать машинный перевод неотличимым от выполненного человеком. Результаты можно увидеть уже сейчас. Перевод с иностранного языка является одной из самых сложных компьютерных задач. Хотя качество машинного перевода значительно выросло за последнее время, оно ещё сильно отстаёт от качества перевода, выполненного человеком. Поэтому компания Microsoft начала использовать в своём переводчике самые современные [...]

    Разработки в области нейронных сетей в этом году пережили настоящий бум. Свои алгоритмы мы продемонстрировали в Artisto и Vinci, Google - в AlphaGo, Microsoft - в ряде сервисов для идентификации изображений, были запущены такие стартапы, как MSQRD, Prisma и другие. Приложения на основе нейросетей мгновенно занимали первые строчки рейтингов, в первые десять дней после релиза [...]

    В 1960-х годах появился новый подраздел информатики - искусственный интеллект (ИИ). Полвека спустя инженеры продолжают развивать обработку естественного языка и машинное обучение, чтобы оправдать надежды на появление сильного ИИ. Мы в 1cloud пишем в блоге не только о себе [клиентоориентированность, безопасность], но и разбираем занимательные темы вроде ментальных моделей или систем хранения данных на основе [...]

    Научно – практической конференции

    «Шаг в будущее»

    Андрейчук Андрей учащийся 9 класса А

    МБОУ «СОШ №47» г.Читы

    Научный руководитель: Михайлов Е.И. учитель информатики и физики МБОУ «СОШ №47» г.Читы (высшая категория)

    г.Чита – 2018

    Нейронные сети. Искусственный интеллект


    Андрейчук Андрей

    МБОУ «СОШ №47»

    9 класс «А»

    Краткая аннотация

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

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

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

    Нейронные сети. Искусственный интеллект


    Андрейчук Андрей

    Россия, Забайкальский край, город Чита

    МБОУ «СОШ №47»

    9 класс «А»

    Аннотация

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

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

      алгоритм решения неизвестен или не может быть использован из-за ограниченности ресурсов компьютера;

      задача не может быть определена в числовой форме;

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

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

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

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

    Научно доказано – мозг состоит из огромного числа нервных клеток (нейронов). Количество структурных связей в человеческом мозге, создаваемых только одним нейроном, варьируется от десятка до ста тысяч. Таким образом, создается нейронная сеть, по которой проходят нервные сигналы. Эти сигналы выступают причиной изменений состояния нейронов и их соединений. От количества нервных сигналов зависит активность мозга.

    Цель данной работы – это создание и дальнейшее совершенствование прототипа нейронных сетей (допиши с учетом твоей программы)

    Поставленная цель включает в себя несколько задач :

      Анализ имеющейся информации по данному направлению;

      Разработка и отладка приложения ;

      Применение и демонстрация законом и принципов нейронный сетей и искусственного интеллекта;

      Проведение исследований и экспериментов.

    Объект исследования: искусственный интеллект;

    Предмет исследования: нейронная сеть – один из способов реализации искусственного интеллекта;

    Методы исследования:

    - исследования направлений связанных с искусственным интеллектом, машинным обучением и нейросетями;

    Обобщение полученных данных;

    Экспериментальные исследования модели нейронных сетей;

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

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

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

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

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

    Работа состоит из трех глав. В первой главе рассмотрены понятия нейронных сетей, искусственного интеллекта. Представлена история нейронных сетей и искусственного интеллекта, приведены классификации.

    Во второй главе, представлена технология разработки программного комплекса, рассмотрены основные приемы работы .

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

    Нейронные сети. Искусственный интеллект


    Андрейчук Андрей

    Россия, Забайкальский край, город Чита

    МБОУ «СОШ №47»

    9 класс «А»

    План исследования

      Определение проблемы и вопроса подлежащего исследованию;

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

      Ход исследования:

      • Постановка темы исследования, выявление актуальности исследования;

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

        Выявление источников информации, необходимых для проведения исследования;

        Изучение источников информации, выявление базовых понятий, терминов;

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

        Разработка и составления плана исследовательской работы;

        Обработка и анализ информации;

        Написание исследовательской работы;

        Оформление плана и порядка выступления.

        Защита в рамках школьной конференции.

    Нейронные сети. Искусственный интеллект


    Андрейчук Андрей

    Россия, Забайкальский край, город Чита

    МБОУ «СОШ №47»

    9 класс «А»

    Содержание

      Введение;

      Основная часть;

      Исследовательская часть;

      Заключение;

      Список источников информации.

    Нейронные сети. Искусственный интеллект


    Андрейчук Андрей

    Россия, Забайкальский край, город Чита

    МБОУ «СОШ №47»

    9 класс «А»

    Введение

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

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

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

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

    Основная часть

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

    Термин «нейронная сеть» появился в середине XX века. Первые работы, в которых были получены основные результаты в данном направлении, были проделаны Мак-Каллоком и Питтсом. В 1943 году ими была разработана компьютерная модель нейронной сети на основе математических алгоритмов и теории деятельности головного мозга. Они выдвинули предположение, что нейроны можно упрощённо рассматривать как устройства, оперирующие двоичными числами, и назвали эту модель «пороговой логикой». Подобно своему биологическому прототипу нейроны Мак-Каллока–Питтса были способны обучаться путём подстройки параметров, описывающих синаптическую проводимость. Исследователи предложили конструкцию сети из электронных нейронов и показали, что подобная сеть может выполнять практически любые вообразимые числовые или логические операции. Мак-Каллок и Питтс предположили, что такая сеть в состоянии также обучаться, распознавать образы, обобщать, т. е. обладает всеми чертами интеллекта.

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

      в 1949 году канадский физиолог и психолог Хебб высказал идеи о характере соединения нейронов мозга и их взаимодействии;

      в 1954 году в Массачусетском технологическом институте с использованием компьютеров Фарли и Кларк разработали имитацию сети Хебба. Также исследования нейронных сетей с помощью компьютерного моделирования были проведены Рочестером, Холландом, Хебитом и Дудой в 1956 году;

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

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

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

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

      алгоритм параллельной распределённой обработки данных в середине 1980 годов стал популярен под названием коннективизма. В 1986 году в работе Руммельхарта и Мак-Клелланда коннективизм был использован для компьютерного моделирования нейронных процессов.

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

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

    Базовая структура искусственных нейронных сетей (ИНС)

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

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

    Типы искусственных нейронных сетей

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

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

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

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

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

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

    Рисунок 1 Устройство нейронной сети

    Нейронные сети с прямой связью

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

    Рисунок 2 Нейронные сети с прямой связью

    Рисунок 3 Нейронные сети с обратной связью

    Машинное обучение в искусственных нейронных сетях

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

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

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

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

    Байесовские сети (БС)

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

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

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

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

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

    Популярность нейронных сетей

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

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

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

    Результатов в решении этой проблемы в 2006 году добились три независимых группы ученых. Во-первых, Джеффри Хинтон реализовал предобучение сети при помощи , обучая каждый слой отдельно. Во-вторых, Ян ЛеКан предложил использование для решения проблем распознавания изображений. Наконец, Иошуа Бенджио разработал каскадный автокодировщик, позволивший задействовать все слои в глубокой нейронной сети.

    Успешное применение нейронных сетей

    Таблица 1 Применение нейронных сетей

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

    Финансы

    Японская страховая компания Fukoku Mutual Life Insurance заключила контракт с IBM. Софгласно нему, 34 сотрудников японской компании заменит система IBM Watson Explorer AI.

    Бизнес

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

    Транспорт

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

    Промышленность

    разработка синтетических молекул, выплавка стали, переработка стекла.

    Сельское хозяйство

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

    Искусство

    обработки фото и видео, нейронные сети компании уже записали два альбома, Японский алгоритм написал книгу “День, когда Компьютер написал роман”, программа обыграла сильнейшего игрока в го в мире

    Безопасность

    поиск акул в прибрежных водах и предупреждение людей на пляжах

    Практическая часть

    Вставить скриншоты и подробное описание процесса работы программы!

    Заключение

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

    Однако не везде, куда приходит машинное обучение, оно вытесняет людей. Если нейросеть ставит диагнозы лучше живого врача, это не значит, что в будущем нас будут лечить исключительно роботы. Вероятнее, врач будет работать вместе с нейросетью. Аналогично, суперкомпьютер IBM Deep Blue выиграл в шахматы у Гарри Каспарова еще в 1997 году, однако люди из шахмат никуда не делись, а именитые гроссмейстеры до сих пор попадают на обложки глянцевых журналов.

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

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

    Список используемой литературы

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

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

    Как все начиналось

    Прошло много лет прежде чем в 50-е годы XX века Фрэнк Розенблатт изобрел персептрон - математическую модель связанных объектов, где входным сигналом для одного объекта служили выходные сигналы от других.

    Самым главным свойством персептрона было так называемое обратное распространение ошибки. Это поле элементов (узлов), связанных друг с другом в сеть (матрица). Первоначально они одинаково реагируют на входящий сигнал - например оставляют его таким, как он был. Но допустим, мы хотим научить персептрон отличать буквы друг от друга. Мы подаем на вход то А, то Б, то Г в случайном порядке. Модель изначально не знает ничего ни про один из объектов, но ей дается обратная связь, по которой создается функция ошибки, определяющая, сильно ли ошиблась модель. В случае угадывания буквы функция выдает ноль (это значит, что ошибки нет). По мере того, насколько далек персептрон от правильного ответа, значение функции увеличивается. Сигнал об ошибке подается обратно на вход, что приводит к коррекции модели: у узлов в матрице менялись веса. В итоге персептрон запоминал свое состояние при определенных наборах входных объектов, то есть обучался.

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

    Дальнейшее развитие теории нейросетей переживало многочисленные взлеты и падения на протяжении десятилетий. Среди наиболее известных открытий были первая модель искусственного интеллекта - Logic Theorist (LT, «логический теоретик»), изобретенная в 1956 году Алленом Ньюуэлом и Гербертом Саймоном, и «Элиза» - программа, поддерживающая разговор на английском языке на любую тему, созданная в 1965 году Джозефом Вайзенбаумом. Однако оказалось, что компьютерные возможности того времени не позволяли применять нейронные сети для более практических целей. В частности, для распознавания техники вероятного противника, на что так надеялись военные.

    На 1990-е годы пришелся новый расцвет нейросетей. Достижения исследователей в области Data Mining (извлечения данных), машинного понимания и перевода языка, компьютерного зрения и других областях снова сделали актуальными изучение возможностей искусственного интеллекта. Развитие скорости процессоров и снижение стоимости памяти дали ученым возможность обучать нейросети быстрее и на более или менее реальных задачах. Но оказалось, что данных и ресурсов для обучения было мало, нейросети были «недостаточно разумны» - выдавали большой процент ошибок. Поэтому они нашли применение в специализированных задачах, например, распознавании символов, а общий интерес к искусственному интеллекту снова упал.

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

    Имеют ли нейросети какое-то отношение к нейронам в голове человека и можно ли называть их интеллектом?

    Современное представление о процессе мышления человека основывается на том, что нейроны в коре головного мозга могут связываться друг с другом своими отростками-аксонами, периодически получая от «соседей» сигналы и переходя из базового в возбужденное состояние. В головном мозге человека насчитывается около 85-86 млрд нейронов, и один нейрон может иметь связи со многими (до 20 тысяч) другими нейронами. Тот факт, что эта структура способна мыслить, всегда привлекал внимание ученых.

    Термин «искусственный интеллект» («artificial intelligence») был изобретен и впервые озвучен в 1956 году американским ученым Джоном Маккарти. В описание модели персептрона, о которой было рассказано выше, уже в 50-х – 60-х были введены статистические понятия узлов, сети и весов, и эти узлы под влиянием работ того времени по изучению человеческого мозга назвали нейронами.

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

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

    Наши дни

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

    Сейчас крупнейшие компании мира зарабатывают за счет нейросетей: соцсети (и их партнеры, как печально известная Cambridge Analitica) таргетируют рекламу при помощи аналитики, Nvidia и другие разработчики создают платформы для использования в автомобилях-автопилотах , способных качественно распознавать знаки и пешеходов на дорогах и реагировать на ситуацию. Однако ИИ применяют и в ближайшее время будут применять в основном для юридически не обязывающих действий. Они могут предупредить о появлении незнакомого лица на объекте или мошенника-рецидивиста в банке, упростят вождение, но не возьмут на себя ответственность за финальное решение.

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

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

    19 декабря в рамках лекционного проекта Фонда Егора Гайдара состоялось выступление кандидата физико-математических наук, руководителя проекта iPavlov и заведующего лабораторией нейронных систем и глубокого обучения Московского физико-технического института (МФТИ) Михаила Бурцева, в рамках которого он рассказал о перспективах построения искусственного интеллекта, работающего по образцу человеческого мозга. Модератором мероприятия выступил экономический обозреватель Борис Грозовский. Подробности лекции эксперта - в видео “Ъ” и стенограмме доклада.


    Фонд Егора Гайдара при информационной поддержке “Ъ” запустил курс лекционного проекта «Экономический факультет» «Экономика наступившего будущего». В курс вошли четыре лекции, посвященные высоким технологиям,- криптовалютам, блокчейну, искусственному интеллекту и нейронным сетям, большим данным.

    Первая лекция цикла «Экономика наступившего будущего», посвященная криптовалютам, состоялась 21 ноября. Подробнее - в материале “Ъ” «Криптовалюты: новая экономика или новая пирамида?» .

    Вторая лекция состоялась 5 декабря и была посвящена перспективам внедрения искусственного интеллекта. Подробнее - в материале “Ъ” «Человек и машина - выгодный союз или жесткая конкуренция?» .

    Стенограмма лекции


    Когда меня пригласили прочитать лекцию, мне очень понравилось название цикла - «Экономика наступившего будущего». Я занимаюсь нейросетями больше десяти лет, но последние два-три года часто возникает ощущение, что будущее неотвратимо наступает. В этом плане название цикла как нельзя лучше отражает то, о чем я хотел бы рассказать и что мы могли бы пообсуждать после лекции. Соответственно, я планирую рассказать вам о том, что собой представляют нейронные сети и как они используются сегодня для создания интеллектуальных систем. Было также заявлено «как они изменят нашу жизнь», но об этом мы как раз сможем поговорить в более интерактивной форме, потому что тут, я думаю, вопрос открытый. Мне самому интересно, какие вы видите возможности, которых не вижу я.

    Давайте начнем с того, что же такое искусственный интеллект. Попробуем определить предмет, про который мы говорим. Классическое определение искусственного интеллекта - это построение некоторых машин, которые будут обладать интеллектом, сопоставимым с интеллектом человека. Но возникает вопрос: зачем мы этим занимаемся? Зачем общество этим занимается? Здесь, мне кажется, есть две грани. Первая грань - это прикладная цель, которая в первую очередь приходит в голову, когда мы слышим об искусственном интеллекте. Мы хотим получить помощника, который, скажем так, дополнит наш естественный интеллект, позволив нам решать какие-то задачи. Как калькулятор сильно упростил нам жизнь, позволив сделать то, что еще сто лет назад считалось сильно интеллектуальным,- умножение, сложение, деление больших чисел. Это предок искусственного интеллекта. Вторая грань - если мы посмотрим на искусственный интеллект как на фундаментальную программу исследования, то на самом деле, так как мы хотим построить машину, сопоставимую по интеллекту с человеком, то мы неизбежно задаемся вопросом: что же представляет собой интеллект человека? Как говорил Ричард Фейнман: «Чтобы что-то понять, мне нужно знать, как это построить». Так и здесь. Строя искусственный интеллект, мы в каком-то смысле лучше разбираемся, как устроен естественный интеллект. И в этом смысле мы проникаем в область философии, то есть мы разбираемся с природой человека. Как устроен человек, какие у него мотивы, почему он ведет себя тем или иным образом. То есть это очень интересно именно с исследовательской точки зрения. Это, как мне кажется, основные причины, почему мы занимаемся искусственным интеллектом.

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

    Вкратце история - как вообще появилось такое направление исследований, как искусственный интеллект. В середине прошлого века Норберт Винер придумал науку, которая называлась кибернетикой. Это наука, которая попыталась формализовать и построить модель организации, при этом отделив саму модель организации от субстрата, на которой эта организация может разворачиваться. То есть это может быть организация клеток в организме, может быть организация людей в обществе или организация каких-то механических артефактов, которые образует искусственный интеллект. Соответственно, зарождение искусственного интеллекта началось с кибернетики, с построения робототехнических машин, которые могли решать какие-то задачи. Они могли ехать на свет или, наоборот, прятаться от света, объезжать препятствия. Когда появились компьютеры, это открыло возможность для появления искусственного интеллекта именно в том виде, в котором мы его наблюдаем сегодня - как некоторой программы, которая управляет компьютером и может, например, давать осмысленные ответы. Бурная попытка применить алгоритм искусственного интеллекта к решению практических задач показала, что какие-то простые задачи мы можем решить достаточно быстро даже на тех примитивных компьютерах, которые появились в середине 1950-х - начале 1960-х годов. Одно из известных достижений того времени - программа «Логик-теоретик», которая на основании аксиомы смогла доказать все теоремы школьной геометрии.

    У людей были очень высокие ожидания. Можно сказать, что был такой хайп искусственного интеллекта. Военные и правительства вкладывали кучу денег, и это вылилось в то, что мы называем «золотые годы искусственного интеллекта». Параллельно в тени развивался наш нейросетевой искусственный интеллект. При этом если мы почитаем, какие прогнозы давали ведущие исследователи в то время, то увидим, что в 1960-е годы они говорили, что через десять лет компьютер сможет выполнять работу среднестатистического человека. Такие заявления делались на регулярной основе всеми, и понятно, почему им давалось так много денег. Кто откажется от того, чтобы у него был робот, который через десять лет будет делать все, что делает человек? В связи с этим так же понятно, почему исследования искусственного интеллекта были заморожены. Когда те люди, которые давали деньги, через десять лет не увидели того, что им обещали, они решили, что все это пустое, и прикрыли финансирование.

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

    Начиная с конца 1990-х годов и до последнего времени в течение двадцати лет, мы наблюдали такую вялотекущую ситуацию, когда слово «искусственный интеллект» вышло из употребления нормальными учеными. Считалось, что если кто-то говорит, что он занимается искусственным интеллектом, это, наверное, не профессиональный ученый, а такой увлекающийся мыслитель-любитель, который пытается что-то сочинить. То есть человек не мог признаться, даже если он занимался искусственным интеллектом, что он занимается искусственным интеллектом. Поэтому это стали называть машинным обучением. Что значит машинное обучение? Это такой прагматический подход. Допустим, у нас есть набор методов - математическая статистика, методы оптимизации и так далее. Мы будем их использовать для решения практических задач и все это назовем машинным обучением. При этом удалось решить много интересных прикладных задач, и так продолжалось до 2012 года. А в 2012 году появился замечательный термин - «глубокое обучение».

    Оказалось, что начиная с середины 2000-х годов нейросети снова стали набирать эффективность и показывать в лабораториях хорошие результаты. Есть задача категоризации изображений, когда имеется несколько миллионов изображений и тысяча категорий, и вам нужно по изображению определить, к какой категории оно относится. Соответственно, в 2010 году самый лучший алгоритм такой классификации давал ошибку около 27%. Но между 2010 и 2012 годом произошло очень сильное падение этой ошибки. То есть алгоритмы стали качественно лучше решать эту задачу. И если человек неправильно классифицирует изображения в конкретном наборе в 5% случаев, то алгоритм тогда делал 4,5% ошибок, а сейчас - уже 3%. Такой быстрый прогресс в данной области был связан с тем, что как раз здесь были впервые применены нейросетевые методы. А затем уже каждое решение, которое улучшало результат предыдущего года, было основано на нейросетях. Почему они называются глубокими, мы узнаем позже.

    Так что же такое искусственные нейронные сети? Давайте попробуем разобраться. Начнем с того, что посмотрим, как устроены естественные нейронные сети. Обычно для этого изучается мозг лабораторных мышей С57black6 - такая линейка черных мышей. Одна из областей мозга называется гиппокамп. Чем она интересна? Тем, что это область, от которой очень сильно зависит эпизодическая память. В гиппокампе есть подобласть, которая называется «зубчатая фасция». Она позволяет распознавать очень близко лежащие друг к другу контексты, и, что самое интересное, в этой области происходит нейрогенез. То есть там на протяжении всей жизни у взрослого животного рождаются нейроны. Утверждение, что нейроны не восстанавливаются, на самом деле ошибочно - в мозге человека и других животных нейроны делятся и растут.

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

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

    Теперь давайте попробуем смоделировать наш мозг. Как будет выглядеть простейшая, самая примитивная модель нервной клетки. Сверху у нас есть дендритное дерево, там же входы некоторого нашего алгоритма. На вход подаются значения Х1, Х2 Х3, Х4 и Х5. Число пропорционально тому объему нейромедиатора, который на нас выбросила другая клетка. Понятно, что какие-то клетки в момент времени могут этого вещества выбросить больше, какие-то - меньше. Соответственно, каждый раз эти Х1, Х2 Х3, Х4 и Х5 могут быть разными. Но чтобы почувствовать эти молекулы, нам нужен рецептор с другой стороны. Потому что если рецепторов ноль, то сколько бы на нас ни выбрасывали этого химического вещества, наша клетка ничего не почувствует. Чтобы смоделировать нашу чувствительность к этому веществу, мы ее описываем при помощи некоторого коэффициента W. Это называется - вес связи. Соответственно, если значение большое и вес большой, то мы их перемножаем и получаем большое влияние данного входа на нашу активность. Если же химический сигнал, который нам послали, нулевой, несмотря на то, что в другом месте может быть хороший синапс, то этот вход никак не повлияет на нашу активность. С другой стороны, при одинаковом объеме нейромедиатора тот вход, который имеет больший вес, сильнее повлияет на активность нашего нейрона.

    То есть что мы делаем? Мы считаем, насколько каждый вход повлиял на нашу активность - просто берем, суммируем, перемножаем каждое значение на вес и подсчитываем их сумму. Затем мы должны определить Y. Обычно в машинном обучении то, что у нас поступает на вход нашей программы, называется Х, а то, что мы получаем на выходе - Y. Чтобы посчитать наш Y, делаем некоторое преобразование и рассчитываем функцию от суммы воздействия для того, чтобы смоделировать пороговое действие нейрона. То есть пока у нас порог воздействия не преодолен, наш нейрон не активен. Когда эта суммарная активность превышает порог, то в зависимости от функции - она называется функцией активации - мы можем регулировать порог, например, смещением, которое обычно называется W. При этом мы можем посчитать, какой выход будет у нашего нейрона. Обычно если у нас порог, про который я говорил, превышен, то значение Y будет большим, ну или стремиться к единице, а если маленьким, то будет либо минус единица, либо ноль, либо уходить в минус бесконечность, в зависимости от того, какую активационную функцию мы выберем.

    Хорошо, мы поняли, что представляет собой отдельный нейрон. Но мозг состоит не из одного нейрона - у нас 80 миллиардов, а у мыши несколько сот миллионов. Теперь мы должны объединить эти нейроны в сеть. Что у нас происходит? Когда мы погружены в окружающий мир, то если мы посмотрим на зрительную систему, то у нас есть палочки, колбочки, фотоактивируемые клетки, которые в зависимости от того, сколько на них попало света, моделируют свою активность. Естественно, затем эти сигналы передаются по цепочке все глубже в мозг, и мозг пытается восстановить картину мира, который нас окружает. Соответственно, у нас есть входной слой нашей сети и есть некоторый скрытый слой. То есть вы идете по улице, переходите улицу, обернулись и вдруг увидели, что на вас мчится машина. У вас сигнал поступил, перешел в скрытый слой, ваша модель мира сработала и предсказала, что машина может в вас врезаться, если вы не ускорите шаг или не отскочите назад. И есть выходные элементы. Это мотонейроны, которые управляют вашим движением. Они приводят к изменению поведения - вы не идете спокойно, а пытаетесь отскочить в сторону или как-то грозите кулаком водителю, то есть предпринимаете какие-то действия. Таким образом, мы строим из наших нейронов многослойную нейронную сеть. Чем больше у нее слоев, тем она глубже. Поэтому глубокие сети - это те сети, в которых больше пяти, может быть, сотни слоев и очень много нейронов. Так мы принимаем решения.

    Давайте немного упростим задачу, скажем, на примере классификации изображений. Как мы ее рассматриваем? У нас есть изображение. Что мы будем подавать на вход нашей нейросети? Мы будем подавать описание пикселей. То есть если у нас есть изображение 10х10, то там 100 пикселей. Предположим, у нас есть красный, зеленый и синий - соответственно, у нас есть 300 значений: Х1, Х2 - и до Х300. Предположим, мы решаем задачу: у нас есть много изображений, и нам для нашего бизнеса необходимо отличать кошек от Незнайки. Кошку мы пропускаем, а Незнайку не пропускаем. Потому что кошка должна ловить в подвале мышей, а Незнайка может сломать водопровод. Мы строим систему видеонаблюдения, где на вход подаем изображение, и есть два выхода - система должна выдать 1, если Незнайка, и 0, если кошка.

    Чем задается правильность функционирования сети? Функция активации обычно фиксирована, соответственно, у нас есть пороги и W - вот эти веса. Вначале, когда у нас есть фотографии, мы не знаем, какие веса соответствуют в этой сети правильному решению. Нам нужно подобрать эти веса таким образом, чтобы ошибка по отличению Незнайки от кошки была минимальной. Здесь мы видим, чем нейросеть отличается от стандартного программирования. Потому что если программирование стандартное, мы подойдем к этой задаче как ИТ-программист: «Ага, я должен придумать, по каким признакам кошка отличается от Незнайки. Потом я напишу программу, которая в изображениях будет искать эти признаки кошки или Незнайки и при помощи условий - вот это кошка, вот это Незнайка - вычислять эту функцию». Мы же говорим, что мы не хотим знать, чем кошка отличается от Незнайки, нам плевать. Мы сделаем специальный алгоритм обучения, который сам построит такую функцию, которая будет решать нашу задачу. То есть мы не пишем программу руками, а мы как бы обучаем программу получать тот функционал, который нам необходим.

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

    Как мы можем изменять веса? Мы их можем изменять следующим образом. Мы подали картинку, рассчитали все активности всех нейронов сначала в одном слое, потом в другом, и так во всех промежуточных слоях, пока не дойдем до выхода. На выходе мы имеем некоторый ответ, где Незнайка, а где кошка. Мы сравниваем тот ответ, который дала нейронная сеть, с тем ответом, который является у нас истинным. Потому что мы уже знаем все ответы для всех картинок в обучающей выборке. И рассчитываем ошибку. Если, например, у нас на выходе было 0,5, а нужно, чтобы была единица, следовательно, у нас ошибка минус 0,5. То есть мы как бы говорим о том, что нам не хватает минус 0,5 для того, чтобы дать правильный ответ по данному выходу. Или, наоборот, если у нас был слишком маленький выход, а мы его хотим увеличить, то у нас будет положительная ошибка. Затем нам нужно как-то учесть вклад весов в эту ошибку. Теперь нам надо узнать, как эти два нейрона и два веса повлияли на вклад в ошибку. Какие допущения мы можем сделать, чтобы посчитать разницу, насколько нам нужно каждый из весов изменить? На самом деле, мы видим, во-первых, активность этих нейронов, во-вторых, вес, и можем посчитать, какой из нейронов какой вклад в эту ошибку внес. Например, если этот нейрон не был активен, он был равен нулю, то он никакого вклада в эту ошибку не внес. С другой стороны, чем более активен нейрон, тем больший вклад он внес. Но если они были одинаково активны, то больший вклад в ошибку внес тот, у кого вес больше. Соответственно, изменение веса должно быть пропорционально ему самому, плюс пропорционально активности нейрона с предыдущего слоя и пропорционально производной нашей функции активации. Почему важна производная? Потому что мы можем вес как увеличить, так и уменьшить. И чтобы сместиться в правильную сторону, нам нужно учесть производную.

    Значит, раньше у нас была ошибка только на выходе. Теперь мы посчитали ошибку для первого слоя нашей нейросети. Теперь вопрос в том, как мы посчитаем ошибку для следующего слоя? Мы применяем тот же самый метод, пока не дойдем до самых первых весов. Таким образом, у нас ошибка как бы растекается по нашей нейросети и веса корректируются. Этот алгоритм получил название метода обратного распространения ошибки, потому что ошибка распространяется как бы от выхода к началу. И это очень мощный алгоритм (метод обратного распространения ошибки.- “Ъ”), потому что его придумали в начале 1970-х годов, и с тех пор все нейросети только этим алгоритмом тренируются. То есть все, что я буду сегодня рассказывать, натренировано алгоритмом, который принципиально работает по такому же принципу. Как я говорил, нейросети возникли еще в 1950-х годах, но для того, чтобы изобрести этот алгоритм, потребовалось двадцать лет. А после понадобилось еще двадцать-тридцать лет, чтобы возникло глубокое обучение. Там были собственные проблемы. Все те архитектуры, которые вы сегодня увидите, очень сложные. Они все натренированы алгоритмом обратного распространения ошибки. Самые сложные пытаются даже смоделировать машину Тьюринга, то есть сделать универсальный компьютер на нейросетях.

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

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

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

    А теперь представьте, что вы хотите распознавать сложные изображения, которые состоят из многих признаков. Что вы делаете? Фактически это у вас как один нейрон. У нейрона есть девять входов, выход, веса. Ваш паттерн - это веса. Вход - это фактически ваше значение яркостей. Вы перемножаете веса на вход этого нейрона, складываете их и получаете некое значение. Это значение - выход вашего нейрона, то значение свертки, которое вы хотите получить. Соответственно, вы делаете много нейронов, случайно задаете им веса. То есть изначально, когда вы решаете задачу, вы не знаете, какие признаки позволят вам отличить кошку от Незнайки. В принципе вы знаете, что у кошки есть полоски, а у Незнайки - шляпа. Для какой-то другой задачи будут другие признаки. И вы хотите универсальный алгоритм, который будет находить те признаки, которые будут наиболее информативны для разделения двух категорий. Соответственно, вы строите такую сеть, в которой на вход подается задача распознавания, соответственно, у вас есть некоторое число входных сверточных нейронов. Каждый из них строит свою карту признаков. Затем происходит определенная операция сжатия этих карт признаков, а потом эти карты признаков подаются на другие сверточные нейроны, и они ищут признаки уже в этих картах признаков. И так мы эту операцию можем проводить несколько раз, постепенно выискивая признаки все более и более высоко уровня абстракции. А затем эти карты признаков подаются на нашу полносвязную сеть прямого распространения, в которой наш сигнал передается от входных к выходным нейронам, и в конце у нас стоит классификатор. Вот так, очень просто, устроены сверточные нейронные сети.

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

    Можно делать другие интересные вещи. Наверняка вы все слышали о приложении Prisma. Что мы можем сделать с его помощью? Мы можем перенести стиль одного изображения на содержание другого. Это как раз позволяют сделать наши сверточные слои. Мы можем найти, как признаки скоррелированы друг с другом в одном изображении, а потом перенести эту корреляцию признаков на содержание другого изображения. Ну и есть примеры того, как мы можем Храм Василия Блаженного раскрасить под хохлому. Такой быстрый инструмент, при помощи которого дизайнеры, например, могут совмещать какие-то две разные идеи. Мы можем научить нейросеть читать по губам. Если у нас есть субтитры и видео с человеком, который говорит, то мы можем отобразить его речь в тексте и построить такую нейросеть, которая предсказывает текст. Если у вас есть видео без звука, но видно, как человек говорит, то вы можете восстановить текст автоматически.

    Но, оказывается, можно сделать и более сумасшедшие вещи. Есть такой подход - генеративные соревновательные сети (generative adversarial network - GAN). Это такой тип нейросетей, который использует автоэнкодеры - когда мы сначала кодируем изображение, а потом его восстанавливаем. Мы можем их использовать для того, чтобы натренировать хитрые генераторы изображений. То есть мы сначала преобразуем изображение в некое скрытое представление из нашего внутреннего скрытого слоя - это называется энкодер-часть, а потом подаем наше скрытое представление на вход декодера, и оно выдает картинку. Мы можем взять три картинки с изображением лица мужчины в очках, для каждого из них у нас будет скрытое изображение внутри нашей нейросети. Это будет некий вектор в некоем пространстве изображений. Теперь мы сложим эти три вектора и усредним. Получится некое усредненное изображение мужчины в очках. Потом мы возьмем три изображения мужчин без очков, подадим их скрытые представления на вход нашей нейросети, усредним векторы - и получим усредненное изображение мужчины без очков. То же самое мы можем проделать для женщины без очков. Итого у нас получилось три вектора. Теперь мы можем взять вектор мужчины в очках, вычесть из него вектор мужчины без очков и прибавить вектор женщины без очков. Тот вектор, который у нас получился, мы подадим на декодер, и наша сеть сама сгенерирует изображение женщины в очках, хотя она этой картинки никогда не видела. Могут быть варианты - очки с разной яркостью, женщина слегка не та, что мы прибавляли, но в целом эффект может получаться очень интересный.

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

    Следующая задача - рекуррентные нейронные сети. Они могут предсказывать последовательности. Чтобы предсказать последовательность, нам нужно знать некую историю. В стандартных нейросетях у нас есть Х на входе, есть некоторый слой нашей нейросети, есть выход, и информация распространяется все время прямо. Если же мы возьмем другой отсчет времени, то наша нейросеть забудет о том, что она знала в предыдущем отсчете. Но для того, чтобы иметь возможность предсказывать, нам как раз нужно, чтобы нейросеть помнила о многих отсчетах времени. Как это сделать? Обычно это решается так: мы берем выход нашей нейросети за предыдущий момент времени и подаем эти значения ей же на вход, на слой нейросети. Что-то пришло в момент времени T, но пришло не только то, что передал ей предыдущий момент Т, но и то, что она сама выдавала в момент времени Т-1. Таким образом, мы сразу подаем параллельно два вектора. И на основании этого вычисляем значение выхода для момента времени Т. Получается, что нейросеть может сама себе передавать то, что она «думала» в предыдущий момент времени. Это позволяет сохранить информацию о предыдущих входах. Такой тип нейросетей и называется рекуррентным, потому что они имеют рекуррентные связи. Если мы подойдем в лоб к решению этой задачи, то рекуррентные нейросети работают не очень хорошо, потому что когда мы разворачиваем эту обратную петлю, то фактически наращиваем слои нашей нейронной сети. От момента времени 0 наша нейросеть будет погружаться все глубже и глубже - в момент времени 100 нейросеть наша тоже будет глубиной 100. Поскольку ошибка в обратную сторону распространяется, она постоянно растекается по нашей сети и затухает. Поэтому наша нейросеть очень плохо учится, так как каждый раз происходит умножение на некоторые коэффициенты и наши ошибки затухают.

    Чтобы избавиться от этого затухания градиентов, в 1997 году исследователь Юрген Шмидхубер предложил заменить один нейрон на подсеть из пяти нейронов. То есть теперь слой нейросети состоит из «юнитов». Смоделируем ячейку памяти. У нас есть некоторые значения, которые хранятся в этой ячейке. Есть нейроны, которые могут управлять тем, что мы можем что-то в эту ячейку памяти записать, что-то из нее считать и вывести наружу. При этом управление ячейкой осуществляется индивидуально своим набором нейронов. Веса этих нейронов тоже обучаются - и в этом вся красота полученной архитектуры. Когда мы из этих ячеек построим большую нейросеть, они все будут обучаться с помощью алгоритма обратного распространения ошибки. То есть алгоритм у нас остается тот же самый, даже несмотря на то, что сеть у нас значительно усложнилась.

    Это позволило, например, создать систему машинного перевода. Буквально год назад Google заменил свою старую систему машинного перевода на нейросетевую - значительно лучшего качества. По сравнению со старой версией машинного перевода Google 2015 года человеческий перевод получал гораздо больше оценок. Но по сравнению с новым нейросетевым алгоритмом Google, который используется сегодня, оценки человеческого перевода сопоставимы. На самом деле переводом вы пользуетесь каждый день - когда забиваете что-то в поиске, то второй и третий по значимости сигнал по тому, какой ресурс вы получите в выдаче на первой странице, тоже определяется нейросетями. Представители Google все время показывают график, в котором с каждым годом все больше и больше внутренних проектов используют нейросети и глубокое обучение. Если в 2012 году это были один-два проекта, то сегодня - около 5 тыс. Фактически нейросети - это та технология, которой вы пользуетесь каждый день, хотя, быть может, даже этого не подозреваете. Некоторые люди, которые этим занимаются, провозгласили, что нейросети и искусственный интеллект - это новое электричество. В том смысле, что это та технология, которой мы пользуемся, не замечая, но она плотно вошла в нашу жизнь.

    Какого же эффекта мы можем достичь с помощью этих рекуррентных нейросетей? Я покажу вам результаты, которые поразили меня до глубины души. Если бы мне кто-то сказал за месяц до этого, что такое возможно, а это было летом 2015 года, я бы ответил, мол, ребята, я занимаюсь нейронными сетями десять лет, не надо мне рассказывать сказки. Но когда мы сами взяли нейросеть, провели ее обучение и увидели результат, который она выдает, то убедились, что это на самом деле так. Мы решали задачу моделирования языка. Формально это задача предсказания следующего символа. Например, у нас есть куча текстов Достоевского. Мы подаем на вход нашей нейросети 100 символов (букв, включая пробелы и знаки препинания) из произведений Достоевского, и ее задача - предсказать следующий символ. Этот символ мы можем снова подать на вход и предсказать следующий - и так далее. Но нам не хотелось экспериментировать на Достоевском, поэтому мы взяли субтитры к сериалу - примерно 10 млн слов из «Хроник вампиров» и еще чего-то. На этом материале сеть училась предсказывать следующие символы.

    Итак, задача: есть 100 символов, нужно предсказать 101-й. Мы выложили в интернет интерфейс, где можно было забить какую-то начальную фразу, а нейросеть пыталась ее продолжить. Я отобрал наиболее интересные результаты. Человек пишет: «Ты глупый». То есть на вход нейросети подаются все эти буквы, пробел между «ы» и «г», а также перевод строки. И она предсказывает следующий символ: «К» большое. Мы подаем эту «К» ей на вход, она предсказывает следующий символ «а», подаем на вход «а» и т. д. - в результате получаем сгенерированную фразу: «Как насчет “привет”». Когда мы анализирует этот ответ, он выглядит абсолютно логично. Причем у него есть особенности: почему нейросеть сказала про привет? Если это начало диалога, то логично, что с фразы «ты глупый» не начинают. Поэтому нейросеть говорит: «Как насчет “привет”», причем слово «привет» закавычивает, давая понять, что это слово относится не к ней самой. Так что пусть у нашей нейросети и нет научной степени по филологии, но уж знания русского языка у нее глубокие.

    Другой пример. Я попытался задать более сложный контекст, чтобы нейросети было непросто ответить. Вопрос: «Какой чудный вечер. Не правда ли?» Это довольно длинная последовательность символов, два предложения, много пробелов, знак вопроса. Вот ее ответ: «Ты действительно думаешь, что я буду помнить об этом?» Здесь ничего про вечер не сказано, ответ вопросом на вопрос. Но если мы попытаемся проинтерпретировать, то это вполне осмысленно. То есть если вечер чудесный, то подразумевается, что тот, кому про это сказали, захочет это запомнить. Отсюда такой ответ нейросети. И отдельно обратите внимание, что она (нейросеть.- “Ъ”) еще и знаки препинания правильно расставляет, и ошибок в словах не делает. И это при том, что мы в нее не закладывали правил русского языка, словаря слов, никаких грамматических основ - мы дали нейросети только последовательность символов. Мне кажется, что в таких условиях выдача подобных ответов - просто поразительный феномен. Я до сих пор удивляюсь: как она может это генерировать?

    Еще один пример. Здесь вообще получился очень жизненный диалог. Человек: «Ты дура». Машина: «Так почему тебе не все равно?» Человек: «Потому что мне с тобой жить!» Машина: «Ты совсем не такой!» Человек: «Ты обиделась?» Машина: «Угу». Покажу еще пример ее работы. Человек: «Забавно, но ты всего лишь программа и никогда не сможешь мыслить». Машина: «Конечно, дело в том, что сейчас не лучшее время». Все логично, да? Но это ваша интерпретация, нам не известно, что на самом деле нейросеть имела в виду, это же все из сериалов.

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

    Но, видимо, в субтитрах все-таки больше про женщин, потому что на женские затравки она отвечает более осмысленно, а на мужские, наверное, не хватает статистики. «Джон теперь счастлив». - «Да, на дворе 800 фунтов на каждом месте», «Преступление в тысячу тысяч градусов по матче», «В самом деле собирался позволить себе просто бросить все на свои места». То есть осмысленность ответов сильно пострадала, хотя предложения изначально схожие. А вот «Джон попал в беду» - совсем тяжело: «Свиньи собираются в Старлинк-сити», «И когда он вернулся, я выбросил его в офис», «Он был не таким как был в прошлом году», «Сверхъестественное, ваша честь, это был не мы».

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

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

    В 2016 году в журнале Nature вышла статья, где был описан достаточно универсальный алгоритм, который научили играть в игры Atari. И он попал на обложку журнала Nature. Если вы знаете, журнал Nature - это один из наиболее авторитетных и престижных еженедельников в мире науки, где публикуются действительно научные статьи. Если ты напечатал статью в Nature, то твой авторитет среди ученых очень сильно возрастает. Бывают, конечно, исключения, но в основном там действительно публикуются очень важные с точки зрения науки работы. Как ставится задача? У нас есть 49 игр Atari, мы подаем на вход нашей нейросети картинки из этих игр, но никак не объясняем правила. Мы будем одну и ту же нейросеть учить на разных играх и хотим, чтобы она на всех играх училась хорошо. Но нейросеть одна, и под конкретную игру она подстраивается только в процессе обучения. Заранее мы ничего не закладываем.

    Соответственно, у нас есть картинки, которые попадают на вход нашей нейросети, но вы все знаете, что такое сверточные сети - я рассказывал полчаса назад. Сверточные нейросети преобразуют картинки, выделяют признаки, и на выходе нейросети она выдает действие, которое управляет джойстиком. Соответственно, команды от джойстика передаются в симулятор игры, и он управляет поведением игры. Когда вы набираете очки, ваш агент получает подкрепление, и задача агента - увеличить эти очки. То есть здесь мы не говорим ему напрямую, какие действия выбирать, а просто в тот момент, когда он увеличил очки, говорим, что это хорошо. И задача - обучить этот алгоритм. Например, нейросеть управляет подводной лодкой. Задача: рыб - уничтожать, водолазов - подбирать и время от времени, когда кислород заканчивается, всплывать и заряжаться кислородом. Нейросети это удается не всегда, иногда она погибает. Но оказывается, что этот результат нашел не только научное признание и попал на обложку журнала Nature, а был получен некоторым стартапом, и за пару месяцев до того, как это было опубликовано, этот стартап купила компания Google. При этом из результатов у этого стартапа были только те, которые они публиковали в журнале Nature. Как вы думаете, за сколько компания Google купила этот стартап? За 600 миллионов.

    Следующий вопрос. Что связывает Гарри Каспарова и Ли Седоль, чемпиона по го (игра.- “Ъ”)? Правильно. Их обоих победил искусственный интеллект. В 1997 году DeepBlue обыграл Каспарова, а чемпиона го обыграли в прошлом году. Почему так? До последнего времени считалось, что го - очень сложная игра. Это связано с количеством вариантов, которые нужно перебрать, чтобы рассчитать все возможные исходы игры, и описывается так называемым коэффициентом ветвления. То есть во сколько возможных состояний игры мы можем перейти из текущего состояния игры, совершая разрешенные в игре действия. Для шахмат средний коэффициент ветвления - около 35. А в го этот коэффициент ветвления - 250. Соответственно, вы понимаете, что когда мы идем вглубь, то каждый раз мы умножаем на это число. И понятно, что для го мы очень быстро получаем такое количество вариантов, которое превышает число частиц в наблюдаемой вселенной, и перебрать их не представляется возможным. Нужен какой-то другой вариант решения этой задачи. Если в шахматах мы можем в лоб рассчитать варианты для очень большого числа позиций и тупо знать те ходы, которые нужно сделать, чтобы выиграть или не проиграть, то в го это гораздо сложнее. Многие люди говорили, чтобы распознавать все ситуации, нужна интуиция.

    Тот же самый стартап, который купили за 600 миллионов, через год снова появился на обложке журнала Nature. Теперь он предложил алгоритм, который, глядя на доску, мог выдавать оценку того, насколько эта позиция хороша, то есть достаточно быстро предсказывать. Вы можете скомбинировать это предсказание с алгоритмом поиска по дереву и при помощи нейросети оценивать позиции и раскрывать только те, которые являются наиболее выигрышными. Таким образом, вы делаете не полный перебор, а только под дерево, которое является наиболее перспективным в данный момент. Этот алгоритм - версия AlphaGo (в статья была опубликована версия AlphaGo Fan) - и обыграл Ли Седоля в Го. Тогда программы в го играли на уровне хорошего любителя, но не профессионала. Чтобы обучить эту версию, нужно было 176 графических процессоров на распределенном кластере. И она выиграла у чемпиона Европы со счетом 5:0.

    Затем появилась адаптированная версия программы - AlphaGoLee. Она использовала 48 Tensor Processing Unit - это типа TPU, но специально адаптированных под нейросети. У Ли Седоля она выиграла со счетом 4:1. Потом была AlphaGoMaster на 4 TPU, которая выигрывала у профессиональных игроков со счетом 60:0. Буквально месяц назад появилась программа AlphaGoZero, которая на 4 TPU на одном компьютере (уже не на кластере) обыграла со счетом 100:0 ту версию программы, которая обыграла Ли Седоля, и со счетом 89:11 - версию AlphaGoMaster. Следующую версию опубликовали несколько дней назад - AlphaZero. Она, опять же, на четырех TPU со счетом 60:40 сыграла против AlphaGoZero. Первая версия программы AlphaGoLee сначала тренировалась на реальных играх. То есть была взята база данных игр, и на ней программа училась играть, как человек. А вот программы AlphaGoZero и AlphaZero - почему Zero? Потому что они вообще не использовали никакой информации от человека. Как они училась? Просто играли сами с собой и обучались на своих играх. И вот так хорошо обучились.

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

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

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

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

    Таким образом, цель этого проекта - как раз создать такую открытую платформу, которая могла бы быть использована компаниями для создания продуктов в этой области. То есть мы создаем технологию, отдаем ее компаниям и говорим: «Мы вас будем поддерживать, мы будем вам помогать эту технологию внедрять, а вы, пожалуйста, делайте свои бизнесы и вносите свой вклад в экономику». Каковы стейкхолдеры нашего проекта? С точки зрения NTI, это компании на высокотехнологичных рынках. Например, Сбербанк, который хочет, имея эту технологию в качестве основы, создать решения для автоматизации каких-то сервисов, например, call-центров или служб поддержки. Это Физтех, которому интересно развивать внутри себя компетенцию по искусственному интеллекту. Это исследователи и разработчики, которым нужны инструменты для того, чтобы быстро создавать таких интеллектуальных диалоговых агентов.

    Этот проект мы начали летом этого года и назвали его iPavlov в честь Ивана Петровича Павлова, знаменитого русского нейрофизиолога, который занимался исследованием условных рефлексов. То есть мозгом. Соответственно, два основных результата нашей деятельности с точки зрения технологии - это открытая библиотека, которую мы назвали DeepPavlov, и это как раз набор инструментов для создания диалоговых систем, а также набор сервисов Сбербанка, который они будут встраивать в свои продукты, например, каких-то финансовых помощников. У нас есть исследования, есть разработка нашей библиотеки, есть приложения этой библиотеки для каких-то конкретных бизнес-кейсов. Что мы хотим сделать? Мы хотим сделать набор некоторых нейросетевых блоков, из которых мы можем собрать разных агентов под разные задачи. Например, агентов, которые могут решать конкретные задачи типа бронирования билетов, или агентов, которые могут отвечать на вопросы по какой-то тематике, или агентов, которые могут просто поддерживать беседу. И потом эти агенты могут комбинироваться для каждой конкретной области, чтобы оптимально решать поставленную задачу. Это то, как мы планируем реализовывать архитектуру с точки зрения ее нейросетевого и исследовательского содержания. И, с одной стороны, наша библиотека состоит из компонентов для создания этих ботов. С другой стороны, у нас есть некоторый инструмент Bildert, при помощи которого мы можем собирать из этих ботов разговорных агентов, есть коннекторы, которые соединяют нас с мессенджерами, и есть данные, на которых мы тренируем. То есть это некоторый набор инструментов, при помощи которых можно разрабатывать и внедрять такие решения.

    Наверное, на этом можно закончить. Спасибо всем.

    Евгения Чернышева


    Они были разработаны по подобию естественных нейронных сетей нервной системы человека.

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

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

    Базовая структура искусственных нейронных сетей (ИНС)

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

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

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

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


    Типы искусственных нейронных сетей

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

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


    Здесь, допускаются петли обратной связи.

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

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

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

    Машинное обучение в искусственных нейронных сетях

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

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

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

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

    Алгоритм обратного распространения

    Байесовские сети (БС)

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

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

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

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

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

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

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

      Аэрокосмические — автопилот самолета;

      Автомобильные — автомобильные системы наведения;

      Военные — сопровождение цели, автопилот, распознавание сигнала/изображения;

      Электроника — прогнозирование, анализ неисправностей, машинное зрение, синтез голоса;

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

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



     

    Возможно, будет полезно почитать: