Pull to refresh
19
0
Send message

Наверное невозможно, но рекомендательные системы как-то работают.

Средневзвешанный. Я часто находил в сети куски кодов, из которых собиралось предлагаемое мне нерабочее решение.

Формально да. Просто на гитхабе есть приватные и открытые проекты. Пересылка рабочего кода программе (неважно какой) увеличивает количество источников возможных несогласованных утечек кода в случае, если ваш проект приватен.

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

К сожалению, тут разные подходы. Мне конечно нужен работающий код, это да. Но он мне нужен работающий и простой, и я не хочу лопатить море подозрительных решений, зачастую с багами, которые часто реализуют не то, что мне надо, а зачастую выдают неработающий код. Банальные вещи (темплаты) действительно можно либо легко найти в первой десятке ссылок, либо АИ выдаст их по запросу. Но какие-то специальные решения всегда проще сделать самому - мне АИ редко выдавал рабочий код под мою задачу.

Можно и дальше пойти. Пишете вы код, а на втором мониторе окошко: "о, какой интересный код написали, молодец! Перешлю-ка я его тихонько дяде Васе, он над похожей проблемой уже 2й год бьется и решить не может, а ему ваш код пригодится."

Кожаных мешков заменят на ржавые железяки, а им смартфоны не нужны - будут по интернету общаться. По 8G.

Интересно пилит: попробовал сгеренить ирландский танец без скрипки, но на гитаре и пианино - ужаснулся. Звук жуткий - скорее на пиле кто-то пытается что-то играть. Видимо, это была гитара. А вообще - забавные вещи генерит, текст понимает.

А где CIFG брали, сами писали? На чем сеть реализовывали?

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

Фейнман это показывал, курс лекций по физике, третий том, глава 30, параграф 1. Он эти два термина вообще не различал - это одно и то же. Просто термин "дифракция" используют чаще в применении к интегралам (непрерывным источникам), а "интерференция" - к суммам (дискретным источникам). А физический смысл у них одинаков - суммирование волн от различных источников с учетом фаз и поляризаций.

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

Так все-таки где CFG-scale в алгоритме SD, и как оно работает с математической точки зрения? За статьи и доки спасибо, но вы обещали "Самое понятное объяснения"

Насчет умножения - это зависит от того, какой тип внимания вы используете, там их много разных вариантов (https://arxiv.org/abs/1508.04025v5). Если вы посмотрите, на (https://arxiv.org/pdf/1706.03762.pdf , eq.1), то там видно, что максимум софтмакса достигается тогда, когда Q является перестановкой K. По-моему, умножения как такового там нет, просто очень хитрый подбор оптимальной перестановки координат вектора V. Хотя я могу ошибаться. Но в той-же location-based attention (https://arxiv.org/abs/1508.04025v5, eq.8) вообще этот перестановочный характер внимания очевиден: никакого умножения там нет, просто подбор матрицы оптимальной перестановки координат.

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

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

С вниманием все может объясняться с такой точки зрения: самая простая интерпретация внимания - это оптимальная перестановка значений входной величины (немонотонное преобразование), и поэтому если за вниманием стоит простая модель, типа регрессии (или полносвязного слоя, например), регрессия будет работать эффективнее, чем без внимания. Если за вниманием стоит модель более сложная, чем регрессия - возможно внимание и не даст такого сильного эффекта, как в случае с регрессией, но эффект все-равно по идее должен быть не хуже (предполагаем, что мы можем обучить корректно это внимание, а здесь дополнительные свободные параметры требуют дополнительного объема датасета и более аккуратной тренировки. И конечно помним, что "не хуже" не означает "лучше", и поэтому нет гарантии, что увеличение параметров/добавление внимания даст эффект) - для любой последующей сети должна существовать оптимальная перестановка входных значений, при которой модель работает наилучшим образом, хотя возможно внимание в каких-то слоях работает впустую. Поэтому мне внимание нравится - его использование иногда позволяет мне использовать более простые сети после него, хотя с очень сложными сетями я его не использовал.

И статья интересная, спасибо - сети сейчас действительно бурно растут в смысле не только результатов, но и размера. И уже не всегда понятно - стоит предлагаемое увеличение размеров сети полученных результатов, или нет: может 99% элементов сети работает вхолостую. Мне приходилось сталкиваться со случаями, когда сильное увеличение размера сети не приводило к улучшению результатов, а иногда и ухудшало их.

Хорошо, что вы еще не за полярным кругом. Там этого восходно-закатного солнечного света вообще почти нет, ни зимой, ни летом - солнце то круги нарезает над головой, то под ногами.

Честно - не знаю, возможно вы действительно правы, и ваш метод эффективен. Особенно с нейронкой, как я уже говорил - он мне понравился - просто и эффективно.

Но всегда сети сравниваются на одинаковых обучающих и тестовых датасетах и одинаковых метриках. Метрики вы уравняли, но насколько мне известно, 15М датасет дает не меньшую точность, чем 1М, просто за счет большего объема обучающего датасета. Поэтому я-бы обучил ваше решение на том, на котором тренировали Чанг и Чен и сравнил результаты. Насколько мне известно, именно этого требуют журналы для публикации решений.

The famous SVD algorithm, as popularized by Simon Funk during the Netflix Prize. SVD алгоритм использовался для предсказаний оценок фильмов в Netflix Prize.

Ну, в 2006 году не было активных исследований графовых нейронных сетей, которые и сводятся к большим матрицам смежности, и не было рекомендаций Pinterest. Работы Лесковца появились в 2017.

На мой взгляд, у вас там две главные ошибки, почему все так плохо:

  1. Вход SVD у вас 3хX мерный - UserID,MovieID,Rating. А должен быть NxM-мерной матрицей, где N-общее число фильмов, M-количество пользователей

  2. SVD здесь не годится, поскольку у вас матрица разреженная, и большую часть фильмов большая часть пользователей не смотрела. По теории тут вроде нужно использовать что-то типа взвешанного NMF (https://github.com/asn32/weighted-nmf), чтобы не учитывать при факторизации те оценки, которых нет, да и рейтинги у вас неотрицательные, то-есть SVD как-то совсем не при чем. Что будет делать SVD - искать линейные комбинации номеров пользователей и номеров фильмов для регрессии на оценки? Это выглядит не очень. Размерность матрицы должна быть равна количеству фильмов, в общем, и нужно взвешивание с неотрицательным разложением, тогда что-то заработает, и он будет искать веса с которым суммировать рейтинги похожих пользователей. Вроде по теории как-то так.

    С нейронкой поинтереснее, но к concatenate по смыслу лучше добавить механизм внимания, должно получше работать - внимание подберет эмбеддинги похожие у пользователей и фильмов (как в мультимодальных моделях), и по идее даст лучшее профилирование, и заодно позволит оценить, сколько вам нужно данных и какой должна быть размерность эмбеддинга, чтобы более-менее эффективно обучить схему.

Information

Rating
Does not participate
Registered
Activity