www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Глубокое обучение для НЛП: объяснения ANN, RNN и LSTM!

Дата публикации Jul 8, 2019

Вы когда-нибудь мечтали о том, чтобы иметь своего личного помощника, чтобы ответить на любые вопросы, которые вы можете задать, или поговорить с? Ну, благодаря машинному обучению иГлубокие Нейронные СетиЭто не так далеко от происходящего. Подумайте об удивительных возможностях Apple Siri или Amazon Alexa.

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

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

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

Рисунок с двумя разными изображениями с текстовым описанием, сделанным человеком-аннотатором.

Выполнено? Тогда давай покончим с этим!

Начало - Искусственные Нейронные Сети

Чтобы построить модель нейронной сети, которая будет использоваться для создания чат-бота,Kerasбудет использоваться очень популярная библиотека Python для нейронных сетей. Однако, прежде чем идти дальше, мы сначала должны понять, что такое искусственная нейронная сеть или ANN.

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

Перцептрон

Простейшая модель ANN состоит из одного нейрона и носит название Star-Trek.Perceptron, Он был изобретен в 1957 году Фрэнком Россенблаттом и состоит из простого нейрона, который берет взвешенную сумму своих входных данных (которые в биологическом нейроне были бы дендритами), применяет к ним математическую функцию и выводит свой результат (выходной будет эквивалент аксона биологического нейрона). Мы не будем вдаваться в детали различных функций, которые можно применять здесь, поскольку цель поста - не стать экспертами, а скорее получить общее представление о том, как работает нейронная сеть.

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

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

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

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

Изображение большой нейронной сети, состоящей из множества отдельных нейронов и слоев: входной слой, 2 скрытых слоя и выходной слой.

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

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

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

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

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

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

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

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

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

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

Другая важная личность на поле,Джефф Дин(один из зачинщиков принятияГлубокое обучение в Google), говорит следующее о глубоком обучении:

Когда вы слышите термин «глубокое обучение», просто подумайте о большой глубокой нейронной сети. Глубокий относится к числу слоев, как правило, и это своего рода популярный термин, который был принят в прессе. Я думаю о них как о глубоких нейронных сетях вообще.

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

Хорошо, отлично, я все это понял, но как на самом деле учатся нейронные сети?

Ну, вы, наверное, уже догадались: они учатся на данных.

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

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

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

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

Изучение последовательных данных - Рекуррентные нейронные сети

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

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

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

Рекуррентный нейрон, где выходные данные умножаются на вес и возвращаются на вход

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

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

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

Расширение нашей памяти - сети краткосрочной памяти

Сети долговременной памяти илиLSTMsявляются вариантом RNN, который решает проблему долговременной памяти первого. Мы закончим этот пост кратким объяснением того, как они работают.

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

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

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

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

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

Вывод

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

Ох, и, кстати, помните это изображение?

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

Ну, просто чтобы доказать, насколько крутые Deep Neural Networks, я должен кое-что признать.Я солгал о том, как были созданы описания для изображений.

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

Безумно верно?

Если вы хотите узнать, как использовать Deep Learning для создания потрясающего чат-бота,следуй за мной на среднеми следите за обновлениями для моего следующего поста!

А пока береги себя и наслаждайся ИИ!

Дополнительные ресурсы:

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

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

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map