Инфоурок Информатика КонспектыКонспект лекций по теме "Нейронные сети" - 4

Конспект лекций по теме "Нейронные сети" - 4

Скачать материал

Рекуррентные нейронные сети

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

https://habrastorage.org/files/c4b/636/534/c4b636534fdd477aa4ca8bde35e946cf.png

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

 

Справа – это просто развертка по времени. x0, x1, x2 и так далее. И сеть еще помнит свое предыдущее состояние. И то, как она анализирует каждый входной объект, зависит не только от этого объекта, но и от предыдущей истории.


https://habrastorage.org/files/964/d08/31a/964d0831a6b34782bf08dfdc16a6a733.png


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


https://habrastorage.org/files/f52/25d/50c/f5225d50c9804f6ea9953f6d0817231c.png


 

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

https://habrastorage.org/files/dde/089/792/dde089792d0d4fa18b3e739d1e74a57a.png

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

 

— Откуда берется число нейронов, и что они из себя представляют?

— Нейрон – это просто такой сумматор, у которого есть какие-то входы и есть веса, с которыми он их взвешенно суммирует. Это очень простой элемент.

 

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

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

https://habrastorage.org/files/6ef/dd1/7f0/6efdd17f02e146b8840f0ba4fa4a73c5.png

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

 

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

https://habrastorage.org/files/608/981/b36/608981b36a1f44b9858018f6f4a949cf.png

 

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

https://habrastorage.org/files/c19/8ac/8e9/c198ac8e92a1443b9ca061cce610dcc7.png

 

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

 

Просмотрено: 0%
Просмотрено: 0%
Скачать материал
Скачать материал "Конспект лекций по теме "Нейронные сети" - 4"

Методические разработки к Вашему уроку:

Получите новую специальность за 2 месяца

Специалист по учету энергопотребления

Получите профессию

Менеджер по туризму

за 6 месяцев

Пройти курс

Рабочие листы
к вашим урокам

Скачать

Краткое описание документа:

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

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

Скачать материал

Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:

6 672 364 материала в базе

Материал подходит для УМК

Скачать материал

Другие материалы

Вам будут интересны эти курсы:

Оставьте свой комментарий

Авторизуйтесь, чтобы задавать вопросы.

  • Скачать материал
    • 27.04.2018 589
    • DOCX 2.8 мбайт
    • Оцените материал:
  • Настоящий материал опубликован пользователем Яковлев Николай Михайлович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт

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

    Удалить материал
  • Автор материала

    Яковлев Николай Михайлович
    Яковлев Николай Михайлович
    • На сайте: 6 лет и 7 месяцев
    • Подписчики: 3
    • Всего просмотров: 2308751
    • Всего материалов: 1812

Ваша скидка на курсы

40%
Скидка для нового слушателя. Войдите на сайт, чтобы применить скидку к любому курсу
Курсы со скидкой

Курс профессиональной переподготовки

Бухгалтер

Бухгалтер

500/1000 ч.

Подать заявку О курсе
  • Сейчас обучается 29 человек из 22 регионов

Курс повышения квалификации

Особенности подготовки к сдаче ЕГЭ по информатике и ИКТ в условиях реализации ФГОС СОО

36 ч. — 180 ч.

от 1700 руб. от 850 руб.
Подать заявку О курсе
  • Сейчас обучается 106 человек из 40 регионов
  • Этот курс уже прошли 582 человека

Курс профессиональной переподготовки

Педагогическая деятельность по проектированию и реализации образовательного процесса в общеобразовательных организациях (предмет "Информатика")

Учитель информатики

300 ч. — 1200 ч.

от 7900 руб. от 3650 руб.
Подать заявку О курсе
  • Этот курс уже прошли 20 человек

Курс повышения квалификации

Теоретические и методологические основы преподавания информатики с учётом требований ФГОС ООО

72 ч. — 180 ч.

от 2200 руб. от 1100 руб.
Подать заявку О курсе
  • Сейчас обучается 153 человека из 49 регионов
  • Этот курс уже прошли 1 721 человек

Мини-курс

Сельский и индустриальный туризм

4 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Психологическая диагностика и коррекция

2 ч.

780 руб. 390 руб.
Подать заявку О курсе

Мини-курс

Экономика и управление

6 ч.

780 руб. 390 руб.
Подать заявку О курсе