Контрастное обучение между языками

алгоритм

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

Доклад Юаньфудао на EMNLP2021Aligning Cross-lingual Sentence Representations with Dual Momentum ContrastПредлагается контрастный метод обучения на основе двойных сетей Momentum. Контрастное обучение в последнее время очень популярно, особенно средиSimCESПервый предложенный метод обучения без учителя с использованием Dropout в качестве положительного образца. Эта статья Юаньфудао отличается от SimCES тем, что она в основном начинается с общей сетевой архитектуры и предлагает контролируемый метод вычисления сходства межъязыковых предложений на основе сети Momentum.

Dual Momentum Contrast

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

Для имиджевых задачxqx^{q}представляет картину,xkx^{k}Представляет набор из нескольких изображений (включая изображенияxqx^q),вxkx^kКромеxqx^qкроме картинок, дляxqx^qВсе образцы отрицательные.qqзаxqx^qВектор после сети энкодера,kkпредставляют собой несколько векторов после прохождения через сеть кодировщика Momentum

Возвращаясь к исходной статье, учитывая набор параллельных предложений на разных языках.{xi,yi}i=1n\{x_i,y_i\}_{i=1}^n, для каждого языкового предложения используйте модель BERT для конкретного языка, чтобы закодировать его и извлечь среднее значение всех выходных токенов в последней строке.L2L_2Регуляризация как векторы предложенийhxi,hyiеR768h_{x_i},h_{y_i}\in \mathbb{R}^{768}

Очень остроумно здесь то, что дваL2L_2нормализованный векторhxi,hxjh_{x_i},h_{x_j}Результатом скалярного произведения является косинусное сходство двух векторов, потому чтоL2L_2Регуляризация помогает нам разделить каждый вектор на сумму квадратов знаменателя

Схема структуры сети, разработанная в статье, показана ниже, на которойsgsgУказывает на «остановить градиент», то есть без обратного распространения;xxиyyэто предложения из двух разных языков

BERT для каждого языка имеет параметрθ\boldsymbol{\theta}Кодировщик Momentum можно понимать как копию исходного BERT, но вместо параметров копируется структура.Эти кодировщики Momentum не обновляют параметры посредством обратного распространения.Их формулы обновления параметров

θ=mθ+(1m)θbase(1)\boldsymbol{\theta} = m\boldsymbol{\theta} + (1-m)\boldsymbol{\theta}_{\text{base}}\tag{1}

Каждый язык имеет две очереди памяти для хранения самых последних пакетов, закодированных соответствующим кодировщиком Momentum.KKвектор. На каждом шаге оптимизации самый старый пакет векторов заменяется текущим пакетом векторов. Коэффициент импульсаmе[0,1]m\in [0,1], обычно вы устанавливаете значение очень близкое к 1 (например, 0,999).KKВообще набор очень большой(>105> 10^5), чтобы убедиться, что для обучения модели достаточно отрицательных выборок. В качестве целевой функции автор использует InfoNCE Loss.

L(x,y)=logexp(hxhy/т)i=0Kexp(hxhyi/т)(2)\mathcal{L}(x,y) = -\log \frac{\exp(\mathbf{h}_x\cdot \mathbf{h}_{y}/\tau)}{\sum_{i=0}^K \exp(\mathbf{h}_x\cdot \mathbf{h}_{y_i}/\tau)}\tag{2}

т\tauявляется гиперпараметром, а о его роли вы можете прочитать в этой моей статье:Понимание параметра τ в контрастной потере. На самом деле формула (2) являетсяK+1K+1Классификация Softmax, где,xxПараллельный корпус , то есть положительная выборкаy=y0y=y_0, все отрицательные образцы{yi}i=1K\{y_i\}_{i=1}^Kнаходятся в очереди на хранение

Симметрично можно определитьL(y,x)\mathcal{L}(y,x), поэтому в конечном итоге наша цель

min L(x,y)+L(y,x)(3)\min\ \mathcal{L}(x,y)+\mathcal{L}(y,x)\tag{3}

После обучения мы напрямую отбрасываем кодировщики Momentum и оставляем только два BERT для извлечения векторов предложений на двух языках.

Хотя метод, предложенный автором, и последующие эксперименты основаны на кросс-языковости, фактически он применим к одному и тому же языку, например, заданной паре предложений одного языка.(xi,xj)(x_i,x_j), пусть предложениеyjy_jпо приговоруxjx_jПеревод получается, если модель хорошо обучена, то для предложенияxjx_jиyjy_jВекторное представление должно иметь

hxjhyj\mathbf{h}_{x_j}\approx \mathbf{h}_{y_j}

Умножьте обе стороны одновременноhxi\mathbf{h}_{x_i}придется

hxihxjhxihyj\mathbf{h}_{x_i}\cdot \mathbf{h}_{x_j}\approx \mathbf{h}_{x_i}\cdot \mathbf{h}_{y_j}

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

Персональное резюме

Экспериментальный эффект очень хороший, сильно превосходит BERT-Whitening и BERT-flow, но мне лень выкладывать здесь карту результатов, т.к. я не видел в статье адреса их исходного кода