Да, в autogen интересные примеры есть, думал сначала их вставить как пример, но потом поменял на GitHub copilot. А по поводу знаний кодинга - можно тот же ChatGPT UI взять, он все больше и больше обрастает свойствами агента.
Раньше датасет у нас состоял из 0/1 и мы учили бинарную классификацию с LogLoss. Во время инференса использовали predict_proba, получали скоры, на которых могли строить калибровочные модели или просто отсекать по порогу. Теперь датасет состоял из 0/1 а также чисел p \ in (0, 1) -- ответов от "большой" модели. И финальный бустинг уже обучался на регрессию минимизировать MSE.
Ты имеешь в виду завести сетку с metric learning подходом? Это интересная мысль, просто бустинг заводится в разы легче :) Но идеи с сетками держим в голове!
Фидбэк от пользователя не используется конкретно в задаче матчинга, не очень понимаю, как он может помочь здесь.
А почему это лучше? Мы смотрели в сторону этих инструментов, но их использование означает деплой и дальнейшую поддержку, своих сил это потребует сильно больше.
Если по делу, то идея взять поисковую выдачу конечно хорошая) Но под собой это тоже поиск похожих товаров через, например, Apache Lucene. И это выступает как один из источников пар для финальной модели матчинга. А как показывает практика, то при использовании других алгоритмов поиска товаров (knn на картинках, графовый поиск на товарах, где ребро -- наличие матча, и т.д.) мы приносим очень много дополнительных пар.
Можно представить эмбеддинги товаров как вершины графа. Тогда мы не ищем пути, а находим в этом графе ближайших соседей для каждой вершины. А далее найденные соседи дополнительно обрабатываются. Из алгоритмического программирования здесь именно поиск этих соседей: необязательно делать полный перебор всех вершин. Есть интересный алгоритм, где как раз используется теория графов (HNSW)
Если просто сконкатенировать векторы картинок и текстов, кнн будет давать не очень хорошее качество. Картиночные и текстовые модели переводят данные в разные пространства, поэтому расстояние сконкаченным векторам не следует считать.
Можно попробовать какой-нибудь руклип бейзд. Насколько я знаю, он хорошо переводит картинки и тексты в одно пространство
Да, это так, если мы возьмём лёгкие модели, то скорость инференса моделей мы получим примерно такую же, как и prod2vec
Но вот ранжирующая модель все равно будет работать дольше. Представьте мы делаем кнн: в случае prod2vec нам нужно сделать его на одних векторах. В случае нескольких моделей нужно сделать knn отдельно для картинок, отдельно для текстов
Сети, которые использовали в Prod2Vec стали значительно легче (resnet + tiny bert). Но вообще в тексте я писал про ускорение инференса ранжирующей модели, а не инференса самих сеток. Под ранжирующей моделью я имею в виду knn. Ускорение получилось за счёт двух вещей:
Вместо векторов картинок и текстов, теперь есть один вектор prod2vec
Эксперимент удачный, но есть ощущение, что при грамотной настройке metric learning может дать результаты ещё лучше. Сделаем эксперименты в ближайшее время.
По отдельности не убирали CE_i, но было прилично экспериментов с \alpha (коэффициент весов при лоссах CE1, CE2, CE3; в частности, пробовали \alpha = 0, сеть тогда начинала учиться значительно медленнее)
По поводу конкатенации согласен, грубовато, хотя и работает. Вообще приходила мысль использовать attention при объединении эмбеддингов, но уже после выкатки модели. Кажется, что это очень интересный подход, и мы такое обязательно попробуем. За статью спасибо! Я ее не видел, с удовольствием прочитаю.
Согласен, metric learning здесь приходит на ум первым. Но в этой задаче захотели попробовать новые подходы и посмотреть, как это будет работать. Модели с contrastive/triplet loss у нас есть, и там мы уже более-менее знаем, какое качество у моделей.
Про metric learning: у нас есть модели, обученные на триплетах, где позитивами были уже найденные пары товаров (матчи). Или что-то более конкретное интересует?
Инференс примерно такой, да: кнн на векторах + faiss. Но есть крутые наработки, чтобы делать анн на цпу и параллелить на спарке, используя другие индексы.
А практикуют SOM для такого рода задач? Нам же нужно его (SOM) применять уже на фичах, а для этого нужно векторизовать текста и атрибуты. А нам хотелось тренировать все как end-to-end. И кажется классические сети лучше всего подходят под это. Вообще я не так хорошо знаком с примерами использования этого алгоритма, почитаю поподробнее, спасибо!
Все так, с помощью :)
А как вы думаете?
Recency, то есть актуальность с точки зрения новизны информации.
Про rel и imp все верно.
Спасибо, интересные примеры!
Да, в autogen интересные примеры есть, думал сначала их вставить как пример, но потом поменял на GitHub copilot. А по поводу знаний кодинга - можно тот же ChatGPT UI взять, он все больше и больше обрастает свойствами агента.
Только начинаем, там довольно много работы.
Раньше датасет у нас состоял из 0/1 и мы учили бинарную классификацию с LogLoss. Во время инференса использовали predict_proba, получали скоры, на которых могли строить калибровочные модели или просто отсекать по порогу. Теперь датасет состоял из 0/1 а также чисел p \ in (0, 1) -- ответов от "большой" модели. И финальный бустинг уже обучался на регрессию минимизировать MSE.
Ты имеешь в виду завести сетку с metric learning подходом? Это интересная мысль, просто бустинг заводится в разы легче :) Но идеи с сетками держим в голове!
Фидбэк от пользователя не используется конкретно в задаче матчинга, не очень понимаю, как он может помочь здесь.
Рад, что было интересно!
А почему это лучше?
Мы смотрели в сторону этих инструментов, но их использование означает деплой и дальнейшую поддержку, своих сил это потребует сильно больше.
Если по делу, то идея взять поисковую выдачу конечно хорошая)
Но под собой это тоже поиск похожих товаров через, например, Apache Lucene. И это выступает как один из источников пар для финальной модели матчинга. А как показывает практика, то при использовании других алгоритмов поиска товаров (knn на картинках, графовый поиск на товарах, где ребро -- наличие матча, и т.д.) мы приносим очень много дополнительных пар.
Можно представить эмбеддинги товаров как вершины графа. Тогда мы не ищем пути, а находим в этом графе ближайших соседей для каждой вершины. А далее найденные соседи дополнительно обрабатываются. Из алгоритмического программирования здесь именно поиск этих соседей: необязательно делать полный перебор всех вершин. Есть интересный алгоритм, где как раз используется теория графов (HNSW)
А можешь пояснить, что ты имеешь в виду под ребрами и вертексами? Про какой граф идет речь?
Если просто сконкатенировать векторы картинок и текстов, кнн будет давать не очень хорошее качество. Картиночные и текстовые модели переводят данные в разные пространства, поэтому расстояние сконкаченным векторам не следует считать.
Можно попробовать какой-нибудь руклип бейзд. Насколько я знаю, он хорошо переводит картинки и тексты в одно пространство
Да, это так, если мы возьмём лёгкие модели, то скорость инференса моделей мы получим примерно такую же, как и prod2vec
Но вот ранжирующая модель все равно будет работать дольше. Представьте мы делаем кнн: в случае prod2vec нам нужно сделать его на одних векторах. В случае нескольких моделей нужно сделать knn отдельно для картинок, отдельно для текстов
Сети, которые использовали в Prod2Vec стали значительно легче (resnet + tiny bert). Но вообще в тексте я писал про ускорение инференса ранжирующей модели, а не инференса самих сеток. Под ранжирующей моделью я имею в виду knn. Ускорение получилось за счёт двух вещей:
Вместо векторов картинок и текстов, теперь есть один вектор prod2vec
Размерность векторов стала меньше
Эксперимент удачный, но есть ощущение, что при грамотной настройке metric learning может дать результаты ещё лучше. Сделаем эксперименты в ближайшее время.
Пробовали, это конечно работает! Но остаётся огромная часть товаров, где такой информации нет, но хочется находить матчи и там
По отдельности не убирали CE_i, но было прилично экспериментов с \alpha (коэффициент весов при лоссах CE1, CE2, CE3; в частности, пробовали \alpha = 0, сеть тогда начинала учиться значительно медленнее)
По поводу конкатенации согласен, грубовато, хотя и работает. Вообще приходила мысль использовать attention при объединении эмбеддингов, но уже после выкатки модели. Кажется, что это очень интересный подход, и мы такое обязательно попробуем.
За статью спасибо! Я ее не видел, с удовольствием прочитаю.
Согласен, metric learning здесь приходит на ум первым. Но в этой задаче захотели попробовать новые подходы и посмотреть, как это будет работать.
Модели с contrastive/triplet loss у нас есть, и там мы уже более-менее знаем, какое качество у моделей.
Про metric learning: у нас есть модели, обученные на триплетах, где позитивами были уже найденные пары товаров (матчи). Или что-то более конкретное интересует?
Инференс примерно такой, да: кнн на векторах + faiss. Но есть крутые наработки, чтобы делать анн на цпу и параллелить на спарке, используя другие индексы.
А практикуют SOM для такого рода задач? Нам же нужно его (SOM) применять уже на фичах, а для этого нужно векторизовать текста и атрибуты. А нам хотелось тренировать все как end-to-end. И кажется классические сети лучше всего подходят под это.
Вообще я не так хорошо знаком с примерами использования этого алгоритма, почитаю поподробнее, спасибо!