Общие вопросы и ответы на собеседованиях по НЛП

NLP

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

основной вопрос

1. Каковы общие задачи НЛП

  • Задачи маркировки последовательностей: POS, NER,...
  • Задачи классификации: анализ настроений, распознавание намерений,...
  • Классные задания на отношения предложений: интеллектуальные ответы на вопросы, переписывание,...
  • Задачи генерации текста: машинный перевод, реферирование документов, ...

2. Расскажите, пожалуйста, об известном вам методе представления текста (слово-вектор).

  • На основе one-hot, tf-idf, textrank;
  • Тематические модели: LSA (SVD), pLSA, LDA;
  • Исправлены представления на основе векторов слов: Word2vec, FastText, GloVe;
  • Динамическое представление на основе векторов слов: ELMo, GPT, BERT

3. Как генерировать векторы предложений?

  • doc2vec
  • bert
  • Сращивание векторов слов, среднее, средневзвешенное значение tf-idf

4. Как рассчитать сходство текста

На основе символов: минимальное расстояние редактирования На основе вектора: после преобразования в вектор слова или вектор предложения используйте косинусное расстояние или евклидово расстояние для расчета Контролируемые методы: создание классификатора

5. Решение дисбаланса выборки?

  • передискретизация
  • недостаточная выборка
  • улучшение текста

6. Каковы проявления переобучения и как его решить?

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

  • Увеличить объем данных
  • увеличение данных
  • Присоединяйтесь к L1, L2 регулярно
  • Dropout
  • Batch Normalization
  • early stopping

7. Вы когда-нибудь использовали причастие jiaba? Вы понимаете принцип?

  • Реализовать эффективное сканирование графа слов на основе словаря префиксов и создать направленный ациклический граф (DAG), состоящий из всех возможных словообразований китайских иероглифов в предложении.
  • Динамическое программирование используется для поиска пути с максимальной вероятностью, и находится максимальная комбинация сегментации на основе частоты слов.
  • Для незарегистрированных слов используется модель HMM, основанная на способности китайских иероглифов образовывать слова, и применяется алгоритм Витерби.

8. Разбираетесь ли вы в распознавании именованных объектов? Какой метод обычно используется и каковы характеристики каждого из них?

  • CRF. Нужно вручную писать функции, скорость обучения выше
  • BiLSTM_CRF. Автоматическое извлечение признаков, низкая скорость обучения и необходимость большого количества размеченных данных.
  • BERT_CRF. Автоматическое извлечение признаков, низкая скорость обучения и необходимость большого количества размеченных данных.

9. Знаете ли вы HMM и CRF?

  • Оба относятся к вероятностным графическим моделям и обычно используются в задачах маркировки последовательностей. CRF обычно работают лучше, чем HMM.
  • HMM относится к генеративной модели, CRF относится к дискриминативной модели.

10. Знаете ли вы RNN?А как насчет LSTM?Каковы характеристики LSTM по сравнению с RNN?

  • RNN, Recurrent Neural Network (Рекуррентная нейронная сеть) — это нейронная сеть для обработки данных последовательности. По сравнению с обычными нейронными сетями он может обрабатывать данные с изменением последовательности.
  • LSTM, Long Short-Term Memory (Долгая кратковременная память) — это специальная RNN, предназначенная в основном для решения проблемы исчезновения градиента и взрыва градиента при длительном обучении последовательностей. Проще говоря, LSTM может работать лучше в более длинных последовательностях, чем обычные RNN.

11. Умеете ли вы использовать регулярные выражения? В чем разница между re.match() и re.search()?

  • Первый соответствует началу строки, успешно возвращает объект Match, возвращает None в случае сбоя и соответствует только одному
  • Последний выполняет поиск в строке, возвращает объект Match в случае успеха, возвращает None в случае неудачи и находит только один объект.

Два сложных вопроса

1. В чем разница между elmo, GPT и bert?

  • Та же точка
    • И elmo, и BERT являются двусторонними моделями, но на самом деле elmo представляет собой объединение выходных данных двух односторонних нейронных сетей.Возможность объединять функции слабее, чем у BERT.
    • Ввод - это все предложения, а не слова
    • Elmo, GPT, BERT могут решить проблему полисемии
    • Предварительно обученные модели, обученные крупномасштабному тексту
  • Не то же самое:
    • GPT — это односторонняя модель
    • BERT маскирует ввод
    • elmo использует LSTM в качестве слоя нейронной сети, в то время как GPT и BERT используют Transformer в качестве слоя нейронной сети.

2. Знаете BERT? Подскажите принцип? Вы использовали его?

  • Структура трансформаторной сети
  • Принцип самоконтроля, процесс расчета

3. В чем разница между word2vec и fastText

  • Тот же пункт:
    • неконтролируемые алгоритмы
    • может тренировать векторы слов
  • Не то же самое:
    • fastText можно обучать с учителем, а структура аналогична CBOW (CBOW принимает контекст целевого слова в качестве входных данных, целевое слово используется в качестве метки, а skip-gram - наоборот), но цель обучения помечается вручную. этикетки.
    • fastText будет учитывать подслова для длинных слов, что может в некоторой степени облегчить проблему oov (слова из сумки).
    • fastText представляет N-грамму, которая будет учитывать особенности порядка слов.

4. Временная сложность LSTM, временная сложность трансформатора

  • Временная сложность LSTM: длина последовательности * длина вектора²
  • Временная сложность преобразователя: длина последовательности²*длина вектора

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

5. Как уменьшить время вывода обученной нейронной сети?

  • Обслуживание на GPU/TPU/FPGA
  • Обрезка для уменьшения параметров
  • Дистилляция знаний (для небольших моделей трансформаторов или простых нейронных сетей)
  • Иерархический софтмакс