SimCSE: контрастное обучение, только отсев (1)

алгоритм

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

Сказать, что самые популярные работы по НЛП в первой половине 2021 года, нельзя.SimCSE: простое сравнительное изучение вложений предложенийНикто. Полное название SimCSE:Simple Contrastive Sentence Embedding

Sentence Embedding

Встраивание предложений всегда было острой проблемой в области NLP, в основном из-за его широкого спектра приложений и краеугольного камня многих задач. Существует множество способов получения векторов предложений.Обычные из них включают прямое использование выходных данных позиции [CLS] в качестве вектора предложений или суммирование или усреднение выходных данных всех слов. Однако было доказано, что вышеупомянутые методы имеют проблему анизотропии. Вообще говоря, проблема непоследовательного представления Word Embedding в различных измерениях будет возникать в процессе обучения модели, поэтому полученные векторы предложений нельзя сравнивать напрямую.

Наиболее популярными способами решения этой проблемы являются:

  1. Линейные преобразования: BERT-поток, BERT-отбеливание. Эти два больше похожи на постобработку, которая облегчает проблему анизотропии, выполняя определенные преобразования векторов предложений, извлеченных BERT.
  2. Контрастное обучение: SimCSE. Идея контрастного обучения состоит в том, чтобы закрыть похожие образцы и оттолкнуть разнородные образцы, тем самым улучшив способность модели к представлению предложений.

Unsupervised SimCSE

SimCSE использует самоконтролируемое обучение для улучшения представления предложений. Поскольку SimCSE не имеет размеченных данных (неконтролируемых), каждое предложение рассматривается как похожее предложение. Грубо говоря, по существу(Своя,Своя)(\текст{собственный},\текст{собственный})В качестве положительного примера,(Своя,другие люди)(\текст{собственный},\текст{другие})в качестве негативных примеров для обучения модели контрастивного обучения. Конечно, это далеко не просто: если в качестве положительных примеров использовать только два одинаковых образца, то способность к обобщению будет сильно снижена. Вообще говоря, мы будем использовать некоторые методы увеличения данных, чтобы сделать два образца положительного примера разными, но как сделать увеличение данных в НЛП, также является проблемой SimCSE предлагает очень простое и элегантное решение:Думайте о Dropout как о расширении данных!

Конкретно,NNПредложения получают вектор через Encoder с Dropouth1(0),h2(0),...,hN(0)\boldsymbol{h}_1^{(0)},\boldsymbol{h}_2^{(0)},...,\boldsymbol{h}_N^{(0)}, а затем снова пропустите пакет предложений через Encoder (на этот раз еще один случайный Dropout), чтобы получить векторh1(1),h2(1),...,hN(1)\boldsymbol{h}_1^{(1)},\boldsymbol{h}_2^{(1)},...,\boldsymbol{h}_N^{(1)}, мы можем положить(hi(0),hi(1))(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_i^{(1)})рассматривается как пара (немного отличающихся) положительных примеров, то цель обучения

i=logesim(hi(0),hi(1))/тj=1Nesim(hi(0),hj(1))/т(1)\ell_i=-\log \frac{e^{\text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_i^{(1)})/\tau}}{\sum_{j=1}^N e^{\text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_j^{(1)})/\tau}}\tag{1}

в,sim(h1,h2)=h1Th2h1h2\text{sim}(\boldsymbol{h}_1, \boldsymbol{h}_2)=\frac{\boldsymbol{h}_1^T\boldsymbol{h}_2}{\Vert \boldsymbol{h}_1\Vert \cdot \Vert \boldsymbol{h}_2\Vert}. В самом деле, если формула (1) не виднаlog-\logит\tauчасть, остальное очень нравитсяSoftmax\text{Softmax}. установить в диссертациит=0.05\tau = 0.05, что касается этогот\tauЧто он делает, я видел некоторые объяснения в Интернете:

  1. Если вы используете косинусное сходство непосредственно в качестве входных логитов дляSoftmax\text{Softmax}, поскольку диапазон сходства косинусов равен[1,1][-1,1], диапазон слишком малSoftmax\text{Softmax}Дать достаточно большой разрыв между положительными и отрицательными образцами невозможно, и в итоге получается, что модель недостаточно обучена, поэтому ее нужно корректировать, делить на достаточно малый параметрт\tauУвеличьте значение
  2. Гиперпараметрыт\tauОсновное внимание в обновлении модели будет сосредоточено на сложных отрицательных примерах, и они будут соответственно наказаны.Чем больше сложность, тем сложнее.hi(0)\boldsymbol{h}_i^{(0)}Чем ближе, тем больше выделение к наказанию. На самом деле, это лучше понять, мы будемsim(hi(0),hj(1))\text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_j^{(1)})разделить нат\tauЭто эквивалентно увеличению логит-значения отрицательной выборки из года в год, еслит\tauдостаточно малы, то теsim(hi(0),hj(1))\text{sim}(\boldsymbol{h}_i^{(0)},\boldsymbol{h}_j^{(1)})Отрицательные образцы ближе к 1, послет\tauбудет доминировать при увеличении