Вложения предложений Берта

Я пытаюсь получить вложения предложений для Берта, но я не совсем уверен, правильно ли я делаю это ... и да, я знаю, что такие инструменты уже существуют, такие как bert-as-service, но я хочу сделать это сам и понять, как это работает.

Допустим, я хочу извлечь вложение предложения из вложений слов из следующего предложения «Я есть.». Как я понял Берт выводит в виде (12, seq_lenght, 768). Я извлек каждое вложение слова из последнего слоя кодировщика в виде (1, 768). Теперь я сомневаюсь в том, чтобы извлечь предложение из этих двух векторов слов. Если у меня (2,768), должен ли я суммировать dim = 1 и получить вектор (1,768)? Или, возможно, объедините два слова (1, 1536) и примените (среднее) объединение и получите вектор предложения в форме (1, 768). Я не уверен, что это правильный подход к получению вектора предложения для данного примера.


person Salvan    schedule 30.09.2019    source источник
comment
Я бы использовал Bert как службу или просто использовал технику, которую они используют для объединения представлений github.com/ hanxiao / bert-as-service   -  person Sam H.    schedule 09.10.2019


Ответы (1)


насколько я знаю, в исходном коде BERT была строка комментария:

Для задач классификации первый вектор (соответствующий [CLS]) используется как «вектор предложения». Обратите внимание, что это имеет смысл только потому, что вся модель настроена точно.

[CLS], предоставленный BERT для встраивания предложений без какой-либо комбинации или обработки всех векторов слов в предложении.

Надеюсь, это поможет.

person Dracoshield    schedule 31.10.2019