содержание
3. Каковы основные области применения RNN?
5. Стандартный процесс прямого вывода RNN
1. Один ко многим (вектор к последовательности)
2. Многие к одному (последовательность к вектору)
3. Многие ко многим (кодировщик-декодер)
7. Сходства и различия между CNN и RNN
8. Почему исчезает градиент в RNN? Как решить?
9. Как понять механизм внимания RNN
1. Определение
Рекуррентная нейронная сеть (RNN) — это класспоследовательность(последовательность) данные вводятся, и это выполняется в направлении эволюции последовательностирекурсия(рекурсия) и все узлы (циклические единицы) связаны в цепочкуРекуррентная нейронная сеть(рекурсивная нейронная сеть).
Исследования рекуррентных нейронных сетей начались в 1980-х и 1990-х годах, а в начале 2000-х превратились вглубокое обучение(глубокое обучение) один из алгоритмов , среди которых двунаправленные РНС (Bi-RNN) и сети с долговременной кратковременной памятью (Long Short-Term Memory network,LSTM) — обычная рекуррентная нейронная сеть.
2. С CNN, зачем вам RNN?
Данные обучающих выборок в сети CNN представляют собой данные IID (независимые и одинаково распределенные данные), а решаемая задача также является проблемой классификации, или проблемой регрессии, или проблемой выражения признаков. Но больше данных не удовлетворяет IID, например, языковой перевод, автоматическая генерация текста. Это проблема последовательности, включая временные ряды и пространственные ряды. Например, данные временных рядов, этот тип данных представляет собой данные, собранные в разные моменты времени, отражающие состояние или степень изменения определенной вещи, явления и т. д. во времени. Для общей нейронной сети, когда данных для обучения достаточно, а модель алгоритма превосходна, при заданном x можно получить ожидаемое y. Обычно он имеет дело с одним входом, и предыдущий ввод совершенно не связан со следующим вводом, но в практических приложениях некоторые задачи должны иметь возможность лучше обрабатывать информацию о последовательности, то есть предыдущий ввод и последний ввод связаны. В настоящее время используется сеть RNN, структура RNN следующая:
Образцы последовательностей обычно делятся на: «один ко многим» (создание описания изображения), «многие к одному» (видеокомментарии, классификация текста), «многие ко многим» (перевод на другой язык). RNN может не только обрабатывать ввод последовательности, но и получать вывод последовательности, где последовательность относится к последовательности векторов. То, что узнает RNN, — это программа или конечный автомат, а не функция.
3, основной РННОбласть примененияКакие есть?
Есть много областей применения RNN.Можно сказать, что RNN можно использовать для решения проблемы временной последовательности.Вот некоторые общие области применения:
① Обработка естественного языка (NLP): в основном обработка видео, генерация текста, языковая модель, обработка изображений.
② Машинный перевод, машинное написание статей
③ Распознавание речи
④ Генерация описания изображения
⑤ Расчет схожести текста
⑥ Система рекомендаций. Например: рекомендации по музыке, рекомендации по продукту NetEase koala, рекомендации по видео на Youtube и другие новые области применения.
4. Процесс расчета RNN
Прежде чем узнать больше о RNN, сначала дается самая основная структура однослойной сети.x
, после преобразованияWx+b
и функция активацииf
получить выводy
:
В практических приложениях мы также столкнемся с большим количеством последовательных данных, таких как:
-
Проблемы обработки естественного языка. x1 можно рассматривать как первое слово, x2 можно рассматривать как второе слово и так далее.
-
обработка речи. В это время x1, x2, x3... являются звуковыми сигналами каждого кадра.
-
проблема временных рядов. такие как ежедневные курсы акций и т. д.
Его единственная последовательность показана на следующем рисунке:
Ранее было указано, что такие данные последовательности трудно моделировать с помощью исходной нейронной сети.Основываясь на этом, RNN вводит скрытое состояние h (скрытое состояние), которое может извлекать признаки из данных последовательности, а затем преобразовывать их в выходные данные.
Для простоты понимания сначала вычислите h_1:
Примечание. Круг на рисунке представляет вектор, а стрелка представляет собой преобразование вектора.
В RNN параметры, используемые на каждом шагеU,W,b
то же,h_2
метод расчета иh_1
Аналогично, результаты расчета следующие:
Расчет h_3, h_4 тоже аналогичен, можно получить:
Далее вычисляем выход y_1 RNN, используя Softmax в качестве функции активации, согласно y_n=f(Wx+b), получаем y_1:
Используя те же параметры, что и y_1, V,c, получите выходную структуру y_1, y_2, y_3, y_4:
Выше приведена самая классическая структура RNN.Его входы x_1, x_2, x_3, x_4, а выходы y_1, y_2, y_3, y_4.Конечно, фактическое максимальное значение y_n.Здесь, чтобы облегчить понимание и дисплей, рассчитываются и выводятся только 4 входа. Из приведенной выше структуры видно, что вход и выход структуры RNN имеют одинаковую длину.
5. Стандартный процесс прямого вывода RNN
Пусть x представляет вход, h — единица скрытого слоя, o — выход, L — функция потерь, а y — метка обучающего набора. t представляет состояние в момент времени t, V, U, W — веса, и один и тот же тип связи имеет одинаковый вес. На следующем рисунке показан пример, иллюстрирующий алгоритм прямого распространения стандартного RNN:
Для времени т:
вДля функции активации обычно выбирается функция тангенса, а b представляет собой смещение.
Выход в момент времени t:
Прогнозируемый результат модели:
вэто функция активации, обычно для классификации используется RNN, поэтому здесь обычно используется функция softmax.
6. Метод моделирования RNN
Образцы последовательностей обычно делятся на: «один ко многим» (генерация описания изображения), «многие к одному» (видеокомментарий, классификация текста), «многие ко многим» (языковой перевод), и методы моделирования для разных последовательностей различаются. .
1. Один ко многим (вектор к последовательности)
Вход представляет собой одно значение, а выход представляет собой последовательность. На данный момент существует два основных способа моделирования:
Метод 1: Расчет может быть выполнен только в одной из последовательностей, например, входной расчет выполняется в первой последовательности, а метод моделирования следующий:
Метод 2: входная информация X используется в качестве входных данных каждого этапа, и метод моделирования выглядит следующим образом:
Сценарии применения:
1. Сгенерируйте текст из изображений, введите характеристики изображения и выведите предложение.
2. Многие к одному (последовательность к вектору)
Вход представляет собой последовательность, выход — одно значение, а выходное преобразование обычно выполняется с последней последовательностью, которая моделируется следующим образом:
Сценарии применения:
1. Выведите фрагмент текста и оцените его категорию 2. Введите предложение и оцените его эмоциональную направленность 3. Введите видео и оцените его категорию
3. Многие ко многим (кодировщик-декодер)
Этапы моделирования следующие:
шаг первый: Кодировать входные данные в вектор контекста c. Эта часть называется Encoder. Есть много способов получить c. Самый простой способ — присвоить c последнее скрытое состояние Encoder, и вы также можете выполнить преобразование на последнее скрытое состояние.Чтобы получить c, вы также можете преобразовать все скрытые состояния. Его индикация следующая:
Шаг 2: Закодируйте его с помощью другой сети RNN (мы называем это декодером).Первый метод заключается в том, чтобы ввести c на шаге 1 в качестве начального состояния декодера.Схема выглядит следующим образом:
Второй метод заключается в использовании c в качестве входа каждого шага декодера.Схема выглядит следующим образом:
1. Машинный перевод, ввод текстовой последовательности на одном языке, вывод текстовой последовательности на другом языке, ввод информации о голосовой последовательности, вывод текстовой последовательности.
7. Сходства и различия между CNN и RNN
категория | Описание функции |
---|---|
Та же точка | 1. Расширение традиционной нейронной сети. 2. Прямой расчет дает результаты, а обратный расчет модели обновляется. 3. Каждый слой нейронной сети может сосуществовать с несколькими нейронами по горизонтали и может иметь несколько слоев соединений нейронной сети по вертикали. |
разница | 1. Пространственное расширение CNN, свертка нейронов и признаков, временное расширение RNN, вычисление нейронов и многократного вывода по времени 2. RNN может использоваться для описания вывода непрерывного состояния во времени с функцией памяти, CNN используется для статического вывода |
8. Почему исчезает градиент в RNN? Как решить?
Причина исчезающего градиента: диапазон производной сигмовидной функции составляет (0, 0,25), диапазон производной функции тангенса составляет (0, 1], а их производные не превышают не более 1. Если тангенс или сигмовидная функция используется в качестве функция активации должна быть вложена в RNN, тогда это должна быть группа десятичных знаков, выполняющих умножение, и в результате умножение становится меньше.По мере того, как временной ряд продолжает углубляться, кумулятивное умножение десятичных знаков приведет к тому, что градиент станет меньше и меньше, пока не приблизится к 0, что является явлением «исчезновения градиента».
На практике предпочтение отдается функции тангенса, потому что функция тангенса имеет больший градиент, чем сигмовидная функция, которая сходится быстрее и вызывает более медленное исчезновение градиента.
Основные методы решения проблемы исчезновения градиента в RNN:
1. Выберите лучшую функцию активации, например функцию активации Relu. Левая производная функции ReLU равна 0, а правая производная всегда равна 1, что позволяет избежать «исчезновения градиента». Однако производная от константы 1 может легко привести к «градиентному взрыву», но установка подходящего порога может решить эту проблему.
2. Преимущества добавления слоя BN включают в себя ускорение сходимости, контроль переобучения, использование меньшего количества или отсутствие отсева и регуляризации, снижение нечувствительности сети к весам инициализации и возможность использования большей скорости обучения и т. д.
2. Измените структуру распространения и выберите более продвинутую модель, такую как: Структура LSTM может эффективно решить эту проблему.
9. Как понять механизм внимания RNN
В вышеупомянутой структуре Encoder-Decoder Encoder кодирует все входные последовательности в единый семантический признак c, а затем декодирует его, поэтому c должен содержать всю информацию исходной последовательности, а его длина становится ограничивающей моделью. узкое место производительности. Например, в задаче машинного перевода, когда переводимое предложение длинное, cможет содержать не так много информации, что приведет к снижению точности перевода. Механизм Attention решает эту проблему, каждый раз вводя разные c.
В декодере, который представил механизм внимания, есть разные c, и каждый c автоматически выбирает контекстную информацию, которая лучше всего соответствует текущему выводу.Схема выглядит следующим образом:
Пример, например, входная последовательность «Я люблю Китай», чтобы перевести этот ввод на английский язык:
Если a{ij} используется для измерения корреляции между h_j на j-м этапе кодировщика и i-м этапе декодирования, a{ij} изучается из модели, а скрытое состояние i-1-го этапа Декодер и кодировщик jth Скрытое состояние сцены связано Например, вычисление a_{3j}выполняется следующим образом:
Входная контекстная информация c_i i-го этапа в конечном декодере получается из взвешенной суммы всех пар h_j a_{ij}.
Его принципиальная схема показана на следующем рисунке:
В кодировщике h_1, h_2, h_3, h_4 представляют информацию, представленную «Я», «Любовь», «Китай» и «Страна» соответственно. В процессе перевода c_1 будет выбирать утреннюю и дневную информацию, которая наиболее актуальна для «меня». Как показано на рисунке выше, он отдает приоритет a{11} и т. д., c_2 отдает приоритет a{ 22}, что более актуально, c_3 предпочтительнее выберет {33}, {34} с большей корреляцией, что является механизмом внимания.