Обновить

Один мозг на миллион пользователей: чему backend-разработчик может научиться у мозга мухи

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели8.2K
Всего голосов 3: ↑2 и ↓1+2
Комментарии10

Комментарии 10

Прикольно, мушиный recsys. Без понятия, что из этого выйдет, но эксперимент интересный.

Сразу пару предложений по улучшению:

  1. Вместо того чтобы обучать персональную логистическую регрессию с нуля для каждого юзера (у которого мало данных т. е. холодный старт), лучше использовать общую предобученную модель для "скелета" (глобальные паттерны поведения людей) и небольшой вектор персональных поправок (адаптивных весов), которые накапливаются локально через LoRA-адаптацию.

  2. Механизм забывания, чтобы модель подстраивалась под актуальное состояние пользователя, а не учитывала события полугодовой давности с тем же весом. Обычно это реализуется через L2-регуляризацию (weight decay) или экспоненциальное затухание коэффициентов со временем. Что будет лучше в вашем случае не знаю, надо тестить.

Заметил, что в последнее время интересные матералы и авторов по ML минусят, как будто это ии-слоп. Будем это исправлять по мере сил и возможностей. Спасибо за статью.

Спасибо вам, но но большая часть предложений уже мной была реализована кроме лоры)
Общая предобученная модель и небольшие персональные поправки уже используются: логистическая регрессия из листинга обучается на общей когорте, а новый пользователь начинает с нулевой поправки к её прогнозу. Возможно, в статье недостаточно ясно это разделил.

Забывание тоже есть. Экспоненциальное затухание по времени, быстрая и медленная память, плюс L2 при обновлениях. Но пока остаётся проверить, какой вклад даёт каждый механизм и насколько удачно выбраны параметры.

LoRA еще не пробовал. Сейчас персональная память корректирует логит общего прогноза через вектор весов поверх фиксированного представления. Нужно будет сформулировать сопоставимые эксперименты.

В ML не шарю, но идея с отдельной памятью под каждого юзера прикольная. А если человек резко сменил режим и начал работать по ночам, то система быстро подхватит или ещё долго будет жить его старыми привычками?

Да!!!))) вот это и хочется проверить, cможет ли система подхватить новый режим за один-два примера? Но пока такого результата у меня нет.

Хочу попробовать и вариант со спайковыми сетями, посмотреть, будет ли толк. Надеюсь, если кто-то уже делал похожее то подскажут, куда копать

Со спайковыми намучаетесь, но если подберете параметры LIF и добавите пластичность Хебба, то прям огонь будет. Если что у меня первые 3 статьи тут на Хабре были на эту тему, вдруг поможет.

Ок пойду читать )

Спасибо за наводку, попробовал 🙂 Взял LIF, перебрал настройки и добавил STDP, в том числе с учётом ошибки прогноза. Проверял пока на искусственных данных.

Мой вариант обычную персональную память не обошёл. Зато интересно: при смене режима первые улучшения после 1–2 новых ответов появились и без спайков. Правда, прошлый опыт у модели уже был — это не обучение с нуля.

Так что преимущества пока не получил, но спайки списывать рано: возможно, дело в том, как я перенёс идею в свою задачу. Код и результаты V10 выложил, буду рад замечаниям.

Я добавлял к STDP small world топологию (модель Ваттса-Строгаца), но не знаю, поможет ли она в вашем случае. Код посмотреть нормально не могу, т. к. в поездке, под рукой только телефон.

Ну будет время и желаение код открытый

Интересная статья, лайк!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации