Собраны из интернет-ресурсов
sudo ldconfig /usr/local/cuda-9.0/lib64
sudo ln -sf /usr/local/cuda-9.0/lib64/libcudnn.so.7.0.5 /usr/local/cuda-9.0/lib64/libcudnn.so.7
Добавьте следующий код в начало программы:
import sys
sys.path.append('/project_path/module')
Основные концепции LSTM включают ячейку состояния и структуры "дверей". Ячейка состояния представляет собой путь передачи информации, позволяющий информации передаваться по всей последовательности. Можно рассматривать её как "память" сети. Теоретически, ячейка состояния может передавать информацию по всей последовательности.
LSTM имеет три типа структур "дверей": забывающую дверь, входную дверь и выходную дверь.
Забывающая дверь
Забывающая дверь используется для определения, какие данные следует забыть или сохранить. Информация из предыдущего скрытого состояния и текущего входа передается в сигмоидную функцию, которая выдает значения от 0 до 1. Чем ближе к 0, тем больше следует забыть информацию, а чем ближе к 1, тем больше следует сохранить.
Входная дверь
Входная дверь используется для обновления ячейки состояния. Сначала информация из предыдущего скрытого состояния и текущего входа передается в сигмоидную функцию, чтобы определить, какие данные следует обновить. Затем информация из предыдущего скрытого состояния и текущего входа передается в функцию tanh, чтобы создать новый кандидат для обновления. В конце результат сигмоидной функции умножается на результат функции tanh, чтобы определить, какие данные важны и должны быть сохранены.
Ячейка состояния
Далее вычисляется ячейка состояния. Сначала предыдущая ячейка состояния умножается на забывающий вектор поэлементно. Если умножение происходит на значение близкое к 0, это означает, что данные следует забыть в новом состоянии ячейки. Затем результат умножается на выход входной двери поэлементно, чтобы обновить ячейку состояния новыми данными, обнаруженными нейронной сетью. Таким образом, обновленное состояние ячейки состояния получено.
Выходной канал
Выходной канал используется для определения значений следующего скрытого состояния. Сначала мы передаем предыдущее скрытое состояние и текущий ввод в сигмоидную функцию, а затем передаем новое состояние ячейки в функцию tanh.В конце умножаем выход tanh на выход сигмоида, чтобы определить информацию, которую скрытое состояние должно передать. Затем передаем скрытое состояние как выход текущей ячейки и передаем новое состояние ячейки и новое скрытое состояние в следующий временной шаг.
1. Генерация новых данных: пересampling малых классов (SMOTE), undersampling больших классов
2. Изменение весов исходных данных
3. Решение с помощью комбинации интегрированных методов
4. Через выбор признаков
Переобучение можно уменьшить, предотвратив синергетическое действие некоторых признаков. В каждый момент обучения каждый нейрон имеет 50% шанс быть удален, что позволяет появлению одного нейрона быть как можно менее зависимым от другого нейрона. Кроме того, можно рассматривать Dropout как среднее модели.
Если используется Dropout, время обучения увеличивается. Dropout не рекомендуется использовать при небольшом объеме данных, так как его эффективность не будет особенно высокой. Обычно значение Dropout принимается равным 0.5.
Исчезающие градиенты: глубокие нейронные сети и обратное распространение.Исчезающие градиенты часто возникают в глубоких сетях и при использовании неподходящих функций потерь, например, сигмоиды (градиент сигмоиды не превышает 0.25, поэтому она легко исчезает, tanh аналогично).
Взрывные градиенты обычно возникают в глубоких сетях и при слишком больших начальных значениях весов.Решение:
исчезновение градиентов и взрыв градиентов
net/qq_25737169/article/details/78847691), объясняет тему достаточно подробно.## 9. Что означает "случайный" в Случайном градиентном спуске?При использовании градиентного спуска по пакетам, для каждого обновления w требуется вычисление по всему набору данных, что при очень больших наборах данных становится слишком ресурсоемким. Поэтому используется случайный градиентный спуск (SGD), который благодаря шуму и случайности выборки не всегда обновляет w в направлении уменьшения E, но в целом движется в этом направлении.
Случайность здесь означает, что обновление w происходит с некоторой случайностью в направлении, а не случайным выбором образцов. Для непрямых функций существует множество локальных минимумов. Случайность помогает нам избегать некоторых очень плохих локальных минимумов, что позволяет получить лучшую модель.
Dropout временно исключает нейроны из сети;
DropConnect расширяет Dropout, случайным образом исключая веса, а не активации;
Вариационный Dropout использует одинаковые маски Dropout для каждого временного шага входов, выходов и циклических слоев;
Циклический Dropout регуляризует подсеть, используя скрытые состояния сети для вычисления дверей и обновлений ячеек;
Zoneout случайным образом заменяет активации некоторых нейронов на их активации с предыдущего временного шага, а не устанавливает их в 0.> Из Применение Dropout в LSTM / GRU рекурсивных нейронных сетях
В статье Batch Normalization описывается как решение всех проблем, но давайте рассмотрим каждое из них:
(1) Можно использовать более высокие скорости обучения. Если масштабирование каждого слоя неодинаково, фактически каждому слою требуется свой собственный уровень скорости обучения. Внутри одного слоя разные размеры масштабирования также требуют различных скоростей обучения. Обычно требуется использовать минимальную скорость обучения, чтобы гарантировать эффективное уменьшение функции потерь. Batch Normalization поддерживает одинаковое масштабирование для каждого слоя и каждого измерения, что позволяет использовать более высокие скорости обучения для оптимизации.(2) Удаление или использование более низкого Dropout. Dropout — это распространенный метод предотвращения переобучения, которое обычно происходит на границе данных. Если начальные веса уже находятся внутри данных, переобучение может быть значительно уменьшено. В статье конечная модель была обучена с использованием Dropout 10%, 5% и 0%, что значительно ускоряет процесс обучения по сравнению с предыдущими 40-50%.
(3) Уменьшите коэффициент затухания L2-весов. Такая же проблема: локальные оптимумы на границе часто имеют несколько больших весов (наклонов), и использование L2-затухания может смягчить эту проблему. Теперь, с использованием Batch Normalization, можно уменьшить этот коэффициент, как указано в статье, до пятикратного уменьшения. (4) Удалите слой локальной нормализации отклика. Поскольку используется одна форма нормализации, дополнительное использование LRN становится менее необходимым. Кроме того, LRN на практике не работает так эффективно.
(5) Уменьшите использование искажений изображений. Поскольку количество эпох обучения уменьшено, следует уменьшить количество искажений, применяемых к входным данным, чтобы нейронная сеть могла больше видеть реальных данных.
На данный момент нет эффективных методов для оценки качества embedding, поэтому можно использовать некоторые разумные подходы для выборочной проверки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )