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

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

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

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

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

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

Они делают это, возвращая информацию в цикл, позволяя ей сохраняться.

Все Rnn состоят из повторяющихся единиц, имеющих одинаковую, но простую структуру. Вышеупомянутый узел представляет собой узел rnn, состоящий из функции tanh.

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

Войдите в сети с долговременной краткосрочной памятью

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

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

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

Строительные блоки LSTM

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

Забудьте о воротах

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

Входные ворота

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

Состояние ячейки

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

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

Заключение

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

использованная литература