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

Данные и задачи для маркировки последовательностей

Давайте сначала обсудим цель маркировки последовательностей — здесь для каждого слова во входном предложении модель предсказывает вывод.

Скажем, вход состоит из ряда последовательностей, табличное представление одного и того же будет иметь форму (пост-токенизация)

И для каждого слова каждого предложения/строки есть соответствующий вывод

Например, для первого предложения первое слово «The» является определителем, затем второе слово «first» является прилагательным, третье слово « половина» — это «существительное» и так далее.

Для каждого слова во входных данных будет свой соответствующий истинный вывод — по сути, «отображение 1:1 в том смысле, что каждое входное слово будет иметь некоторый вывод». А поскольку входное предложение может содержать переменное количество слов, а между входными и выходными данными существует соответствие 1:1, это означает, что «выходные данные также будут иметь переменную длину

И «входные и выходные данные должны быть преобразованы в числа», поскольку модель принимает числовые входные данные.

Давайте посмотрим на операции, которые должны быть охвачены предварительной обработкой данных:

Вот как будет выглядеть ввод, вывод после включения специальных символов

Следует заметить, что если входное слово является специальным символом (скажем, «начало последовательности», «конец последовательности» или «закладка»), соответствующий вывод также отражает тот же символ

Произнесите макс. длина предложения составляет 10 во всех входных предложениях, и во входных данных есть «m» строк данных, затем «размер матрицы входных данных» будет иметь размерность «m x 10», и каждый из 10 индексов будет ссылаться на индекс в вектор с горячим кодированием, где значение равно 1

И поскольку между входом и выходом будет сопоставление 1:1, размерность «размер выходной матрицы» также будет «m x 10» (здесь 10 действует как индексы меток в предложении), и здесь также фреймворк, такой как PyTorch, Tensorflow может просто захватить индекс, где значение равно 1 индексу хранения фактический вектор с горячим кодированием

  • Подготовка данных для преобразования в форму с горячим кодированием

Опубликуйте включение специальных символов в каждое предложение, идея будет заключаться в том, чтобы «подготовить текущий список всех уникальных слов в обучающих данных» и «присвоить ему уникальный индекс для каждого слова » — эта таблица затем будет использоваться для «подготовки вектора горячего кодирования для каждого слова».

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

Процесс вычисления:

Первое слово первого ввода («x1») передается в модель и будет использоваться для вычисления «s1». », и из этого «y1_hat» вычисляется с использованием «функции softmax», и поскольку это скорее проблема обучения с учителем, истинное распределение «y» уже доступно, и истинный прогнозируемый результат можно сравнить для вычисления значения потерь.

Здесь также «s0» берется как вектор со всеми элементами как 0

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

Здесь также включение заполнения не испортит ввод, оно добавлено, чтобы убедиться, что размеры согласованы во всех входных предложениях, а фактические вычисления будут выполняться только до истинная длина (опять же, вектор с истинной длиной для всех входных данных передается в качестве входных данных модели)

Референции: ПадхАй