1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/willalex-nlp-journey

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
fq.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 02.06.2025 10:16 35e70af

Часто задаваемые вопросы

Собраны из интернет-ресурсов

1. Решение проблем с использованием CUDA

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

2. Невозможность найти собственные модули

Добавьте следующий код в начало программы:

import sys
sys.path.append('/project_path/module')

3. Способ вычисления карты признаков CNN

cnn

4. Как вычисляется скрытый статус в RNN cell?

rnn_cell

5. Какие функции выполняют различные двери в LSTM?

Основные концепции LSTM включают ячейку состояния и структуры "дверей". Ячейка состояния представляет собой путь передачи информации, позволяющий информации передаваться по всей последовательности. Можно рассматривать её как "память" сети. Теоретически, ячейка состояния может передавать информацию по всей последовательности.

LSTM имеет три типа структур "дверей": забывающую дверь, входную дверь и выходную дверь.

Забывающая дверь

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

Входная дверь

Входная дверь используется для обновления ячейки состояния. Сначала информация из предыдущего скрытого состояния и текущего входа передается в сигмоидную функцию, чтобы определить, какие данные следует обновить. Затем информация из предыдущего скрытого состояния и текущего входа передается в функцию tanh, чтобы создать новый кандидат для обновления. В конце результат сигмоидной функции умножается на результат функции tanh, чтобы определить, какие данные важны и должны быть сохранены.

input_gate

Ячейка состояния

Далее вычисляется ячейка состояния. Сначала предыдущая ячейка состояния умножается на забывающий вектор поэлементно. Если умножение происходит на значение близкое к 0, это означает, что данные следует забыть в новом состоянии ячейки. Затем результат умножается на выход входной двери поэлементно, чтобы обновить ячейку состояния новыми данными, обнаруженными нейронной сетью. Таким образом, обновленное состояние ячейки состояния получено.

cell_state

Выходной канал

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

output_gate

6. Как решать проблему дисбаланса выборки?

1. Генерация новых данных: пересampling малых классов (SMOTE), undersampling больших классов

2. Изменение весов исходных данных

3. Решение с помощью комбинации интегрированных методов

4. Через выбор признаков

7. Почему Dropout решает проблему переобучения?

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

Если используется Dropout, время обучения увеличивается. Dropout не рекомендуется использовать при небольшом объеме данных, так как его эффективность не будет особенно высокой. Обычно значение Dropout принимается равным 0.5.

8. Как возникают и как решаются проблемы исчезающих и взрывных градиентов?

Исчезающие градиенты: глубокие нейронные сети и обратное распространение.Исчезающие градиенты часто возникают в глубоких сетях и при использовании неподходящих функций потерь, например, сигмоиды (градиент сигмоиды не превышает 0.25, поэтому она легко исчезает, tanh аналогично).

Взрывные градиенты обычно возникают в глубоких сетях и при слишком больших начальных значениях весов.Решение:

  • Предобучение и мелкотuning: каждый раз обучаем одну скрытую слой, после завершения предобучения, затем выполняем "мелкотuning" для всего сети.
  • Скалирование градиентов и регуляризация: устанавливаем порог для скалирования градиентов, при обновлении градиентов, если градиент превышает этот порог, его принудительно ограничивают в этом диапазоне. С помощью регуляризационного термина можно частично ограничить возникновение взрывного роста градиентов.
  • Функции активации: ReLU, LeakyReLU, ELU и т. д.: если производная функции активации равна 1, то проблема исчезновения или взрыва градиентов не возникает.
  • Batch normalization: нормализация по батчам, которая обеспечивает стабильность сети путем нормализации выходного сигнала x. Устраняет влияние увеличения или уменьшения, вызванное w, путем нормализации выхода каждого слоя к среднему значению и дисперсии, что решает проблему исчезновения и взрыва градиентов.
  • Структура с пропусками: короткие пути могут без потерь передавать градиенты, в то время как градиенты с пропусками проходят через слои с весами. Градиенты не всегда равны -1, и даже если они малы, наличие 1 предотвращает исчезновение градиентов.
  • LSTM: LSTM использует "ворота" внутри себя для "запоминания" остаточных памятей предыдущих тренировок при последующих обновлениях. > Эта статья, исчезновение градиентов и взрыв градиентовnet/qq_25737169/article/details/78847691), объясняет тему достаточно подробно.## 9. Что означает "случайный" в Случайном градиентном спуске?

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

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

10. Dropout, DropConnect, вариационный Dropout, циклический Dropout, Zoneout

Dropout временно исключает нейроны из сети;

DropConnect расширяет Dropout, случайным образом исключая веса, а не активации;

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

Циклический Dropout регуляризует подсеть, используя скрытые состояния сети для вычисления дверей и обновлений ячеек;

Zoneout случайным образом заменяет активации некоторых нейронов на их активации с предыдущего временного шага, а не устанавливает их в 0.> Из Применение Dropout в LSTM / GRU рекурсивных нейронных сетях

11. Преимущества Batch Normalization

В статье Batch Normalization описывается как решение всех проблем, но давайте рассмотрим каждое из них:

(1) Можно использовать более высокие скорости обучения. Если масштабирование каждого слоя неодинаково, фактически каждому слою требуется свой собственный уровень скорости обучения. Внутри одного слоя разные размеры масштабирования также требуют различных скоростей обучения. Обычно требуется использовать минимальную скорость обучения, чтобы гарантировать эффективное уменьшение функции потерь. Batch Normalization поддерживает одинаковое масштабирование для каждого слоя и каждого измерения, что позволяет использовать более высокие скорости обучения для оптимизации.(2) Удаление или использование более низкого Dropout. Dropout — это распространенный метод предотвращения переобучения, которое обычно происходит на границе данных. Если начальные веса уже находятся внутри данных, переобучение может быть значительно уменьшено. В статье конечная модель была обучена с использованием Dropout 10%, 5% и 0%, что значительно ускоряет процесс обучения по сравнению с предыдущими 40-50%.

(3) Уменьшите коэффициент затухания L2-весов. Такая же проблема: локальные оптимумы на границе часто имеют несколько больших весов (наклонов), и использование L2-затухания может смягчить эту проблему. Теперь, с использованием Batch Normalization, можно уменьшить этот коэффициент, как указано в статье, до пятикратного уменьшения.  (4) Удалите слой локальной нормализации отклика. Поскольку используется одна форма нормализации, дополнительное использование LRN становится менее необходимым. Кроме того, LRN на практике не работает так эффективно.

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

12. Как оценивать качество embedding?

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

  1. Связность: посмотрите, соответствуют ли пространственные расстояния между словами вашим ожиданиям.
  2. Аналогия: известная задача аналого-сравнения A - B = C - D.
  3. Категоризация: проверьте вероятности слов в каждом классе.
  4. Алгоритмы кластеризации (визуализация): используйте k-means для кластеризации и проверьте распределение кластеров. Если размерность вектора высокая, выполните уменьшение размерности и визуализацию.

13. Нарисуйте схему работы LSTM

lstm

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/willalex-nlp-journey.git
git@api.gitlife.ru:oschina-mirror/willalex-nlp-journey.git
oschina-mirror
willalex-nlp-journey
willalex-nlp-journey
master