Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
Nils Reimers and Iryna Gurevych
Technische Universitat Darmstadt
#EMNLP2019 #BERT #siamese #sentenceembeddings
Статья: https://arxiv.org/abs/1908.10084
Код: https://github.com/UKPLab/sentence-transformers
При решении с помощью BERT-а (и других трансформеров) классификационных задач на парах предложений, например, semantic similarity или entailment, приходится подавать оба предложения вместе на вход. Расчётная сложность при этом растёт как квадрат от числа входных токенов, поэтому для задач типа массивных кластеризаций такой подход не годится. Удобнее разово построить sentence embeddings для предложений по одному, а потом уже над парами таких эмбеддингов делать классификатор или считать расстояние, такой способ сильно более эффективен.
Традиционно, в таких случаях применяется усреднение пословных эмбеддингов для получения эмбеддинга предложения. Другой известный подход -- использовать финальный эмбеддинг на специальном токене (CLS) в качестве эмбеддинга всего предложения. Так или иначе, на практике, на обычном BERT-е это работает не очень хорошо.
Авторы предлагают доучить сеть с помощью известных подходов: siamese и triplet networks. А именно: используя предобученный BERT делают двойную или тройную сеть с общими весами, получают эмбеддинг каждого предложения, и строят softmax-классификатор поверх конкатенации этих эмбеддингов (+возможно, простых функций от них). Учат на парах похожих предложений или на тройках с положительным и отрицательным примерами. В режиме использования просто считают cosine similarity между эмбеддингами.
Сравниваются со всевозможнымии эмбеддингами до кучи, как с довольно старыми типа GloVe и USE, так и с BERT-based (но без доучивания). Показывают, что даже доучивание на немного другой задаче (учились на SNLI-датасете, где разметка на логическое вытекание/противоречие, а проверялись потом на задаче семантической схожести) даёт почти столько же, сколько доучивание на целевой задаче, и это даёт почти везде лучшее качество, чем в бейзлайных.
Много сравнений на разных датасетах с разными sentence эмбеддингами по качеству и скорости, а также ablation study на тему того, какой пулинг использовать и что давать на вход финальному классификатору при обучении. В итоге, почти на всех тестах победили основных практических конкурентов InferSent и USE по качеству, а с помощью хака "smart batching" (группировки в батч предложений с похожей длиной) обошли и по скорости.
Nils Reimers and Iryna Gurevych
Technische Universitat Darmstadt
#EMNLP2019 #BERT #siamese #sentenceembeddings
Статья: https://arxiv.org/abs/1908.10084
Код: https://github.com/UKPLab/sentence-transformers
При решении с помощью BERT-а (и других трансформеров) классификационных задач на парах предложений, например, semantic similarity или entailment, приходится подавать оба предложения вместе на вход. Расчётная сложность при этом растёт как квадрат от числа входных токенов, поэтому для задач типа массивных кластеризаций такой подход не годится. Удобнее разово построить sentence embeddings для предложений по одному, а потом уже над парами таких эмбеддингов делать классификатор или считать расстояние, такой способ сильно более эффективен.
Традиционно, в таких случаях применяется усреднение пословных эмбеддингов для получения эмбеддинга предложения. Другой известный подход -- использовать финальный эмбеддинг на специальном токене (CLS) в качестве эмбеддинга всего предложения. Так или иначе, на практике, на обычном BERT-е это работает не очень хорошо.
Авторы предлагают доучить сеть с помощью известных подходов: siamese и triplet networks. А именно: используя предобученный BERT делают двойную или тройную сеть с общими весами, получают эмбеддинг каждого предложения, и строят softmax-классификатор поверх конкатенации этих эмбеддингов (+возможно, простых функций от них). Учат на парах похожих предложений или на тройках с положительным и отрицательным примерами. В режиме использования просто считают cosine similarity между эмбеддингами.
Сравниваются со всевозможнымии эмбеддингами до кучи, как с довольно старыми типа GloVe и USE, так и с BERT-based (но без доучивания). Показывают, что даже доучивание на немного другой задаче (учились на SNLI-датасете, где разметка на логическое вытекание/противоречие, а проверялись потом на задаче семантической схожести) даёт почти столько же, сколько доучивание на целевой задаче, и это даёт почти везде лучшее качество, чем в бейзлайных.
Много сравнений на разных датасетах с разными sentence эмбеддингами по качеству и скорости, а также ablation study на тему того, какой пулинг использовать и что давать на вход финальному классификатору при обучении. В итоге, почти на всех тестах победили основных практических конкурентов InferSent и USE по качеству, а с помощью хака "smart batching" (группировки в батч предложений с похожей длиной) обошли и по скорости.