ГЛУБОКОЕ ОБУЧЕНИЕ

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

Понимание RNN, LSTM менее 5 минут

Мы всегда слышали, что нейронные сети (NN) созданы на основе биологических нейронных сетей. Это огромное представление было выполнено фантастическим образом.

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

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

Эти функции активации могут быть такими же простыми, как сигмовидная функция.

Преимущества нейронных сетей перед традиционными алгоритмами машинного обучения

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

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

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

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

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

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

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

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

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

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

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

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

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



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

Реализация

Реализовать эти полные нейронные сети Keras и TensorFlow упростили.

Мы реализуем двунаправленный LSTM с функцией активации ReLU.

#Importing necessary libraries
import tensorflow as tf
from keras.layers import LSTM, Activation, Bidirectional
#Addding Bi-directional LSTM
model.add(Bidirectional(tf.keras.layers.LSTM(64)))
#Relu allows converging quickly and allows backpropagation
model.add(Dense(16, activation='relu'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Создание каждого слоя - это всего лишь одна строка кода.

Резюме

В этой статье мы узнали, как нейронные сети связаны с биологическими нейронными сетями и как работают нейронные сети с памятью (а именно, RNN, LSTM).

Спасибо за прочтение. Я собираюсь писать больше постов для новичков в будущем. Следите за мной на Medium, чтобы быть в курсе о них. Я приветствую обратную связь, и с ней можно связаться в Twitter ramya_vidiyala и LinkedIn RamyaVidiyala. Удачного обучения!