WAZOWSKIRECOMMENDS Telegram 9
Как известно, экзамен прошёл хорошо — это когда ты не просто его сдал, но ещё и узнал на нём что-то новое.

Полгода назад я собеседовался в Microsoft. На одном из собеседований мне задали вопрос, на который я не очень-то хорошо ответил. И даже когда мне сказали ответ, я его не понял. (Возможно, просто сказалась сложность в понимании языка/произношения.) Но, подумав ещё пару дней после этого, я понял, что же имелось в виду. (Ну, или просто понял возможный разумный вариант ответа, а имелось в виду что-то ещё.)

А вопрос был такой. Вот есть много моделей для рекомендаций (и не только), которые устроены как произведение эмбеддинга пользователя/запроса на эмбеддинг объекта/документа. Матричная факторизация, например. Или two tower neural networks (их ещё не очень корректно называют DSSM в определенном кругу 😉). Вот рассмотрим последние. В качестве операции произведения этих эмбеддингов можно использовать dot product (скалярное произведение) или косинус. Так вот и вопрос — что лучше, dot product или косинус?

Опыт в Яндексе у нас был не всегда однозначный — иногда косинус работал стабильнее для обучения, потом вроде бы и dot product стал нормально обучаться и чуть лучше работать. У косинуса же ограниченная область допустимых значений (даже если после этого применяется афинное преобразование), а это не очень хорошо. Но вопрос оказался не совсем про это — т.е. не про качество предсказания самой модели. А про какое-то дополнительное использование обученных эмбеддингов документов. Например, для составления быстрого индекса или для кластеризации. Но и тут я тоже не очень понял, в чём может быть проблема. Для косинуса это вроде попроще, но и для dot product вполне работает (по крайней мере быстрый индекс).

А теперь представим модель, обученную с dot product. Первую координату у всех документных эмбеддингов умножим на большую константу (скажем, 1000), а у всех пользовательских — разделим на эту же константу. Результат произведения не поменяется, т.е. качество предсказания модели не изменится. Однако, если мы будем измерять расстояния между документами (а это обычно тоже через произведение/косинус делается), то всё будет определяться только лишь этой первой координатой, у всех остальных будет сильно меньший масштаб. И значит, кластеризация таких документов будет работать очень плохо. Понятно, что во время обучения модель не будет какую-то координату умножать на такую большую константу. Но в процессе градиентного спуска все координаты (а точнее, направления в этом пространстве) каким-то случайным образом растянутся. Пользовательские эмбеддинги адаптируются к таким растяжениям, но междокументные расстояния — нет.

Если же мы обучаем модель с косинусом, то такого эффекта нет. Косинус — это же то же самое, что и dot product нормированных эмбеддингов. Т.е. мы как будто все эмбеддинги нормируем в конце. И тогда нельзя просто перемасштабировать одну координату, не меняя других. Т.е. нельзя просто всю важность в документных расстояниях перенести в одно направление, не испортив пользовательско-документных расстояний. Кстати, в матричной факторизации, в отличие от нейросетей, даже несмотря на dot product, такой проблемы тоже нет — из-за регуляризации.

Если кто-то на практике это проверял, расскажите в комментариях.



tgoop.com/WazowskiRecommends/9
Create:
Last Update:

Как известно, экзамен прошёл хорошо — это когда ты не просто его сдал, но ещё и узнал на нём что-то новое.

Полгода назад я собеседовался в Microsoft. На одном из собеседований мне задали вопрос, на который я не очень-то хорошо ответил. И даже когда мне сказали ответ, я его не понял. (Возможно, просто сказалась сложность в понимании языка/произношения.) Но, подумав ещё пару дней после этого, я понял, что же имелось в виду. (Ну, или просто понял возможный разумный вариант ответа, а имелось в виду что-то ещё.)

А вопрос был такой. Вот есть много моделей для рекомендаций (и не только), которые устроены как произведение эмбеддинга пользователя/запроса на эмбеддинг объекта/документа. Матричная факторизация, например. Или two tower neural networks (их ещё не очень корректно называют DSSM в определенном кругу 😉). Вот рассмотрим последние. В качестве операции произведения этих эмбеддингов можно использовать dot product (скалярное произведение) или косинус. Так вот и вопрос — что лучше, dot product или косинус?

Опыт в Яндексе у нас был не всегда однозначный — иногда косинус работал стабильнее для обучения, потом вроде бы и dot product стал нормально обучаться и чуть лучше работать. У косинуса же ограниченная область допустимых значений (даже если после этого применяется афинное преобразование), а это не очень хорошо. Но вопрос оказался не совсем про это — т.е. не про качество предсказания самой модели. А про какое-то дополнительное использование обученных эмбеддингов документов. Например, для составления быстрого индекса или для кластеризации. Но и тут я тоже не очень понял, в чём может быть проблема. Для косинуса это вроде попроще, но и для dot product вполне работает (по крайней мере быстрый индекс).

А теперь представим модель, обученную с dot product. Первую координату у всех документных эмбеддингов умножим на большую константу (скажем, 1000), а у всех пользовательских — разделим на эту же константу. Результат произведения не поменяется, т.е. качество предсказания модели не изменится. Однако, если мы будем измерять расстояния между документами (а это обычно тоже через произведение/косинус делается), то всё будет определяться только лишь этой первой координатой, у всех остальных будет сильно меньший масштаб. И значит, кластеризация таких документов будет работать очень плохо. Понятно, что во время обучения модель не будет какую-то координату умножать на такую большую константу. Но в процессе градиентного спуска все координаты (а точнее, направления в этом пространстве) каким-то случайным образом растянутся. Пользовательские эмбеддинги адаптируются к таким растяжениям, но междокументные расстояния — нет.

Если же мы обучаем модель с косинусом, то такого эффекта нет. Косинус — это же то же самое, что и dot product нормированных эмбеддингов. Т.е. мы как будто все эмбеддинги нормируем в конце. И тогда нельзя просто перемасштабировать одну координату, не меняя других. Т.е. нельзя просто всю важность в документных расстояниях перенести в одно направление, не испортив пользовательско-документных расстояний. Кстати, в матричной факторизации, в отличие от нейросетей, даже несмотря на dot product, такой проблемы тоже нет — из-за регуляризации.

Если кто-то на практике это проверял, расскажите в комментариях.

BY Wazowski Recommends


Share with your friend now:
tgoop.com/WazowskiRecommends/9

View MORE
Open in Telegram


Telegram News

Date: |

Telegram has announced a number of measures aiming to tackle the spread of disinformation through its platform in Brazil. These features are part of an agreement between the platform and the country's authorities ahead of the elections in October. While the character limit is 255, try to fit into 200 characters. This way, users will be able to take in your text fast and efficiently. Reveal the essence of your channel and provide contact information. For example, you can add a bot name, link to your pricing plans, etc. Read now Joined by Telegram's representative in Brazil, Alan Campos, Perekopsky noted the platform was unable to cater to some of the TSE requests due to the company's operational setup. But Perekopsky added that these requests could be studied for future implementation. Done! Now you’re the proud owner of a Telegram channel. The next step is to set up and customize your channel.
from us


Telegram Wazowski Recommends
FROM American