Неуслышанное имя подсказки (4)

алгоритм

Это 23-й день моего участия в ноябрьском испытании обновлений. Узнайте подробности события:Вызов последнего обновления 2021 г.

Непрерывные подсказки

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

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

Prefix TuningПервоначально предложенный Ли и др., это метод добавления набора непрерывных векторов перед входным предложением.Этот метод сохраняет параметры PLM неизменными и обучает только вектор префикса. Предложение Prefix Tuning в основном предназначено для создания задач, поэтому оно определяет различные методы объединения подсказок в соответствии с различными структурами модели.Модель авторегрессии (авторегрессии) класса GPT принимает[Prefix;x;y][\text{Prefix}; x; y]метод, модель Encoder-Decoder класса T5 принимает[Prefix;x;Prefix';y][\text{Prefix};x;\text{Prefix}';y]Путь

раздел вводаPrefix,x,y\text{Prefix},x,yИдентификатор позиции записывается какPidx,Xidx,Yidx\text{P}_{\text{idx}},\text{X}_{\text{idx}},\text{Y}_{\text{idx}}. Prefix Tuning инициализирует обучаемую матрицу, обозначаемую какPθеRPidx×dim(hi)P_\theta \in \mathbb{R}^{\lvert P_{\text{idx}}\rvert \times \dim (h_i)}

hi={Pθ[i,:],if iеPidxLMϕ(zi,h<i),otherwiseh_i = \begin{cases}P_\theta [i,:],\quad &\text{if}\ i \in \text{P}_{\text{idx}}\\ \mathbf{LM}_{\phi}(z_i,h_{<i}), \quad &\text{otherwise} \end{cases}

Смысл вышеприведенной формулы в том, что индексiiЕсли это часть префикса, отPθP_\thetaизвлечь вектор;iiЕсли не префиксная часть, то поПредварительно обученные модели с фиксированными параметрамиСгенерируйте соответствующий вектор. Целями обучения являются:

maxϕ logpϕ(yx)=iеYidxlogpϕ(zih<i)\mathop{\text{max}}\limits_{\phi} \ \log p_{\phi}(y\mid x) = \sum\limits_{i\in \text{Y}_{\text{idx}}} \log p_{\phi} (z_i\mid h_{<i})

PθP_{\theta}По сути, это матрица, и есть много способов создать матрицу, вы можете использоватьnn.Embedding(),илиnn.Linear()

То же самое для поиска Prompt в непрерывном пространстве,OptiPromptПостроенный «шаблон» не ограничивается префиксами, но может находиться и в середине предложения.

Сначала определите шаблон подсказки в соответствии с AutoPrompt:

[x] [v]1 [v]2 ... [v]m [MASK][x]\ [v]_1\ [v]_2\ ...\ [v]_m\ [\text{MASK}]

в[v]i[v]_iявляется непрерывным вектором (согласуется с входной размерностью BERT). OptiPrompt также рассматривает искусственно созданную дискретную подсказку в качестве отправной точки для поиска в непрерывном пространстве для создания лучшей подсказки. Например[x] is [MASK] citizen[x]\ \text{is}\ [\text{MASK}]\ \text{citizen}может быть преобразован в

[x] [v]1 [MASK] [v]2[x]\ [v]_1\ [\text{MASK}]\ [v]_2

будетisиcitizenСоответствующий вход Embedding используется как[v]1[v]_1и[v]2[v]_2инициализация

Можно сказать, что метод гибридной настройки Hard-Soft Prompt представляет собой комбинацию ручного проектирования и автоматического обучения.Обычно он не просто использует обучаемый шаблон Prompt, но вставляет некоторое обучаемое встраивание в созданный вручную шаблон. На самом деле, с учетом вышеизложенного мы все знаем, что непрерывная подсказка немного лучше, чем дискретная подсказка, но есть ли возможности для улучшения на этой основе? ** предложено Liu et al.P-Tuning**Решена проблема ассоциации между токенами Prompt.

Предыдущий метод непрерывной генерации подсказок представляет собой не что иное, как обучение матрицы, а затем объединение некоторых векторов-строк матрицы путем индексирования. Честно говоря, мы надеемся, что между этими вложениями токенов подсказок существует хорошая корреляция, а не независимое обучение.Чтобы решить эту проблему, P-Tuning вводит кодировщик подсказок (как показано на рисунке b ниже).

На рисунке а выше показана традиционная дискретная подсказка, мы называем то, что генерирует дискретный токен подсказки Генератор подсказок; рисунок б выше сначала передает некоторые виртуальные (псевдо) токены, такие как [неиспользуемый1], [неиспользуемый2]... Конечно , количество токенов здесь является гиперпараметром, и положение вставки также можно настроить. Передайте эти псевдотокены через кодировщик подсказок, чтобы получить непрерывный вектор.h0,...,hmh_0,...,h_m

\begin{align} h_i &= \text{MLP}([\overrightarrow{\mathop{h_i}};\overleftarrow{\mathop{h_i}}])\\ &= \text{MLP}([\text{LSTM}(h_{0:i}):\text{LSTM}(h_{i:m})]) \end{align}

То есть Prompt Encoder — это простая сеть, состоящая из BiLSTM+MLP. Автор также обнаружил, что добавление некоторых токенов привязки (токенов, связанных с доменом или задачей) может помочь оптимизировать шаблоны. Например, в задаче текстового следования исходными данными являются посылка и предположение, и судят, является ли оно следствием или нет. Непрерывный шаблон

[PRE][continuous tokens][HYP][continuous tokens][MASK]\text{[PRE]} [\text{continuous tokens}][\text{HYP}][\text{continuous tokens}] [\text{MASK}]

Добавьте к нему токен привязки:[?]Эффект будет лучше, в это время шаблон становится

[PRE][continuous tokens][HYP]?[continuous tokens][MASK]\text{[PRE]} [\text{continuous tokens}][\text{HYP}]?[\text{continuous tokens}] [\text{MASK}]

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

  1. Менее размеченные данные. В этом случае мы фиксируем параметры PLM и оптимизируем только[P0][Pm][\text{P}_0]\sim [\text{P}_m]Встраивание этих токенов. Другими словами, мы просто хотим обновить параметры Prompt Encoder.
  2. Аннотированных данных много. В этом случае сразу отпустите всю тонкую настройку параметров.