Эффективный способ получить наиболее подходящие пары, учитывая нейронную сеть, выводящую сходство? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь найти нейронную сеть, которая ранжирует две короткие пары текста (например, stackexchange title и body).Следуя примеру кулинарной книги по глубокому изучению, сеть будет выглядеть примерно так:

enter image description here

Итак, у нас есть два входа (заголовок и тело), ​​встраиваем их, затем вычислите косинусное подобие между вложениями.Входные данные модели должны быть [title, body], выходные данные - [sim].

Теперь я хотел бы найти наиболее подходящее тело для данного заголовка.Мне интересно, есть ли более эффективный способ сделать это, который не включает в себя итерацию по каждой возможной паре (название, тело) и вычисление соответствующего сходства?Потому что для очень больших наборов данных это просто невозможно.

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 20 февраля 2019

Действительно, не очень эффективно перебирать каждую возможную пару данных.Вместо этого вы можете использовать вашу модель для извлечения всех вложений ваших заголовков и текстовых тел и сохранения их в базе данных (или просто в файле .npy).Таким образом, вы не используете свою модель для вывода показателя сходства, а вместо этого используете свою модель для вывода вложения (из вашего слоя встраивания).

Во время вывода вы можете использовать библиотеку для эффективного поиска сходства, напримеркак faiss .Получив название, вы просто посмотрите его вложение и выполните поиск во всем пространстве встраивания всех встраиваний тела, чтобы увидеть, какие из них получают наивысший балл.Я сам использовал этот подход и смог найти векторы 1М всего за 100 мс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...