Knowledge Accumulator – Telegram
Knowledge Accumulator
5.45K subscribers
138 photos
277 links
Реалистичный взгляд на технологии и мир
Download Telegram
AutoNumerics-Zero: Automated Discovery of State-of-the-Art Mathematical Functions [2023] - ещё одно AI-открытие уходящего года

Продолжаем тему оптимизации программ. Почти одновременно с FunSearch вышла другая работа от Deepmind, правда, не применяющая LLM, и поэтому попавшая только в Just Links. Идеологически она похожа на AutoML-Zero, про который я уже тоже писал пост.

Итак, мы умеем легко и быстро производить на компьютере 4 базовые арифметические операции. Однако, "трансцендентные" функции, например, экспоненту, нельзя легко посчитать. Компьютер их считает приближённо, например, с помощью ряда Тейлора. При этом, нам достаточно уметь приближать её на промежутке [0;1], т.к. в целую степень мы умеем легко возводить и таким образом получить любую степень.

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

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

В результате, алгоритм не оставляет камня на камне от бейзлайнов, созданных приматами. Количество операций сокращается примерно в 2 раза, но это не самое крутое. Алгоритм подбирает функции так, чтобы компилятор оптимизировал их наиболее выгодно, в итоге скорость возрастает в >3 раза.

И вновь кожанные мешки показывают свою несостоятельность в сложных многослойных задачах, которые нельзя разбить на изолированные кусочки. End-to-end алгоритмическая оптимизация не оставляет нам никаких шансов.

@knowledge_accumulator
👍24🔥7❤‍🔥2😢1
Обычно я не придаю новому году большого значения, но так уж вышло, что практически в конце 2023-го года произошло много масштабных изменений в жизни, можно сказать, началась другая эпоха. Подробнее я об этом напишу как-нибудь в другой раз.

С праздничком вас! 🌲
🎄58🔥6
Automating Continual Learning [2023] - пример мета-мета-лёрнинга

После недельного новогоднего перерыва возвращаемся в строй!

В данной работе авторы по-другому применяют уже разобранные мной самомодифицирующиеся матрицы весов.
Напомню идею механизма - у нас есть матрица весов W, в которую мы подаём вход x. А эта матрица не только выдаёт выход y, но и векторы, с помощью которых мы рассчитываем добавку к матрице W, и обновляем её.
У любой нейросети можно просто заменить обычный полносвязный слой на такой. Если заменить все слои, тогда сетка будет сама менять свои веса без специальной процедуры "обучения". Единственное, что в сетку в этом случае нужно подавать правильный ответ на вход при обучении.

Авторы взяли небольшую свёрточную нейросеть и заменили полносвязный слой в конце на самообучающийся слой. Итоговую сеть обучают мета-обучаться следующим образом:

1) Конструируется последовательность ML-задач, с примерами и своими метками
2) Примеры из этих задач последовательно скармливают сетке
3) В качестве таргета используется логлосс на тестовых примерах всех задач. Причём производительность на каждой задаче проверяется после каждой следующей задачи тоже, чтобы мета-обучать сетку не забывать предыдущие умения - то есть отсутствию "catastrophic forgetting" - известной проблемы нейросетей.
4) Вся эта конструкция дифференцируема и может обучаться градиентным спуском

Как я уже писал ранее, meta-meta-learning - это именно то, что нам нужно для получения "AGI". Я очень рад, что хотя бы некоторые исследователи видят правильную постановку задачи, которую нужно ставить перед моделью.

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

@knowledge_accumulator
👍10🔥63
Мой рецепт изучения английский слов

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

База метода - это spaced repetition - для откладывания в долгосрочной памяти слово должно использоваться несколько раз, с увеличивающимися промежутками. Например, вы выучили слово, повторяете его через день, потом через 2,3,5,8,13, ну, вы поняли... Этот функционал уже реализовали за вас на сайте Mochi - на нём можно создавать карточки с передней и обратной стороной и по этой методике сайт вам будет их отдавать каждый день.

Мы не создаём карточку со словом и переводом. Когда вы хотите выучить какое-то слово, потратьте минуту-две-три на поиск в интернете - определение в словаре, примеры предложений. Прочувствуйте значение на основе этих примеров. И выберите / сконструируйте полное предложение, в котором есть нужное вам слово. В нём все слова, кроме желаемого, должны быть вам знакомы.

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

Слова для изучения можно брать где угодно. Лично я читаю книжку и каждое встретившееся незнакомое слово обрабатываю указанным образом. Да, получается страница и 15 новых слов в день, но, что поделать... 15 слов каждый будний день - это около 4000 слов в год, так что, за несколько лет можно решить вопрос, занимаясь по 30-60 минут в день.

Самое интересное, что после изучения слова "внезапно" начали появляться постоянно в потребляемом мной контенте. Например, одним из первых я выучил слово Perpetrator, и с тех пор встретил его за месяц раз 10 в самых разных местах, а до этого его, видимо, мозг просто игнорировал. 2 дня назад я выучил слово "гвоздь" и подумал - когда его встречу ещё хоть раз? На следующий день в сериале персонажа прибили гвоздями к стене...

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

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

@knowledge_accumulator
👍3141💯1
AlphaGeometry [2024] - ещё один пример дружбы поиска и нейросети, но не совсем

В предыдущих Alpha-работах, основанных на AlphaZero, мы встречали комбинацию нейросети и символьного поиска / поиска по дереву, в которой нейросеть отвечала за более удачный порядок перебора. Здесь баланс их взаимодействия смещён в сторону именно поиска. ML тут является важной, но не настолько ключевой компонентой, давайте разберёмся, почему.

В задачах по геометрии есть набор утверждений в качестве условия - заданы такие-то треугольники, окружности и т.д., и нужно доказать какое-то утверждение про заданные объекты. Для конструирования доказательств используется набор правил. На основе него работает не-ML-ный "symbolic deduction engine", пытающийся решить задачу. Сам по себе он уже решает 14/30 задач, что довольно круто для перебора. Это показывает, что наши мозги плохо заточены под геометрические задачи.

Ещё 11 задач приносит как раз ML, но как? В геометрических задачах часто используются "дополнительные конструкции" при решении - это когда мы сами вводим какой-то вспомогательный объект в задачу, который используется в доказательстве. Модель научили генерировать дополнительные конструкции, которые потом будет использовать символьный движок.

Отдельной программой сэмплировали наборы изначальных условий, для них генерировали доказательства всевозможных утверждений про заданные объекты, получился огромный датасет. Для конкретного доказанного факта смотрели - какие изначальные условия являются необязательными для него? Эти условия и будут размечены, как дополнительные конструкции. Далее на этом обучили LLM на их генерацию.

Думаю, что генерация огромного датасета синтетических задач станет основой создания нейросетевого математика. С нетерпением жду, когда её адаптируют под негеометрический домен. Однако, это не единственное, что сейчас нас останавливает от доказательства того, что P != NP, если такого математика вообще получится создать с помощью вручную спроектированного алгоритма.

@knowledge_accumulator
👍18🔥10🤔3💯1
Ухожу из Яндекса

Пришла пора делиться новостями! Завтра мой последний день работы в компании, и в честь этого подведу итоги прошедших ~3 лет.

Перед Яндексом я занимался ML-исследованиями в совершенно разных областях - NLP, RL и потом квантизации GAN-ов. После прихода сюда жизнь практически началась заново, на этот раз в качестве разработчика рекомендательных систем. Долгое время было тяжело писать нормальный код и вообще привыкать к хорошим инженерным практикам. Самую большую благодарность за терпение меня хочу выразить Диане и Мише, вы из меня сделали +- функционирующего работника 😁

После их ухода я перекочевал в команду к Кириллу, который обладает чёрным поясом по применению трансформеров в проде. Переняв эти навыки настолько, насколько смог, за примерно год мне удалось сыграть важную роль в 2 внедрениях оффлайн-модели в Маркете и Кинопоиске, а также во внедрении real-time трансформера в Маркете. Последнее было сущим кошмаром, надо сказать, но в итоге всё закончилось удачно.

Самое важное изменение, закрепившееся в голове в результате работы над продом - я перестал фокусироваться на технологии и начал фокусироваться на результате:
- Дебажить модель во время и после внедрения не менее важно, чем её разрабатывать.
- Чинить / добавлять исходные данные полезнее, чем долго думать над архитектурой.
- Налаживание процессов (например, регулярное применение оффлайн-модели) не нужно воспринимать как помеху "настоящей" работе, наоборот, отсутствие проблем в них важнее самой модели.

Желаю удачи всем, с кем работал в команде и над сервисами! Надеюсь, после моего ухода они будут развиваться ещё быстрее (правда, тогда это будет означать, что я только мешался).

Вооружившись всем этим опытом, я двигаюсь дальше и иду делать рекомендации в новом месте. Но про это расскажу в другом посте.
👍7125🔥9🏆5🎉3🤮3😱2🫡2💩1🤡1
А что там про Foundational Model в роботике?

Начнём с того, у меня к физическим роботам интерес (пока что) ограниченный по ряду причин:
1) Роботы это не про решение интеллектуальных задач, а про ассистирование человеку в "бытовых" вопросах, и поэтому такого революционного влияния на мир, как "AGI", они не окажут. "AGI"-роботы тоже окажут, но дело тут в не роботах.
2) До недавних пор не было ощущения, что технология "домашних роботов-помощников" достижима в ближайшем будущем

В последнее время на глаза мне попадались статьи, ставящие под сомнение второй пункт, поэтому я решил об этом подумать. Для начала обсудим образ цели:

Если у нас будет робот со способностями, аналогичными ChatGPT-4, то это уже будет сильно более полезная технология, чем сама ChatGPT-4. Нам не требуется никакая "интеллектуальная" деятельность от робота, нам нужно, чтобы он делал вам кофе и готовил еду в вашей квартире, на которой он не обучался. Это аналогично умению ChatGPT-4 отвечать на какие-то вопросы и делать простые выводы в заданном контексте.

Что позволяет этому происходит на текущем уровне развития ML-алгоритмов? Прежде всего, колоссальный объём данных. Пространство текстов настолько плотно ими покрыто, что это позволяет возникнуть какой-то генерализации при работе с текстом. С роботами есть ряд проблем на этот счёт:

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

С другой стороны, нам может помочь transfer learning. Пример RT-2 показывает, что каких-то результатов можно достичь, переиспользуя данные из других доменов, и технологии этого трансфера будут продолжать развиваться.
Кроме того, существует и эффект снежного кома - в случае поднятия интереса к теме и появления новых результатов в работу над датасетами / алгоритмами могут начать инвестировать миллиарды долларов, и это перестанет быть нишевой сферой, как в своё время NLP.

А вы что думаете? Напишите, чем вы бы заставили заниматься своего домашнего робота.

@knowledge_accumulator
👍165🔥2
Про компанию X, в которую иду делать рекомендации

К
сожалению, более удачного каламбура не придумал на эту тему. Да, с конца февраля я Senior ML Engineer в том самом x.com!

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

- Масштаб
Наверное, тут останавливаться не надо, сервисом пользуются сотни миллионов людей каждый день.
- Фокус на продукте
Теперь я работаю над одним продуктом, что позволит сильнее эмоционально вложиться в его улучшение. Раньше я был разработчиком в "инструментальных" командах, рассматривающих продукты, как своих "клиентов". Это не резонирует с моими взглядами, о которых говорил в позапрошлом посте.
- Небольшой размер
После массовых сокращений во всей компании работает всего ~1500 человек, что на порядок меньше Яндекса и тем более бигтеха. Уверен, только рекомендациями в YouTube или Spotify занимаются сотни людей, и в такой толкотне свободы действий никакой практически нет.
- Полезность для мира
Я полностью поддерживаю желание Маска создать платформу с высокой степенью свободы слова в противовес демпартийной цензуре, процветающей в сервисах бигтеха. Буду очень рад сделать всё возможное для успеха этого проекта вопреки атакам политических противников.
- Оффер
Помимо того, что он в целом крайне достойный, большой кусок составляют акции компании. Это крупная ставка, но сейчас люди сомневаются в успехе X, и есть неплохой шанс того, что в случае решения проблем всё выстрелит. Замечу, что сейчас компания стоит в 50 раз дешевле Meta и даже дешевле Slack.
- Буду работать вместе с хорошими знакомыми
Мне было бы очень страшно идти работать туда, где я никого не знаю. К счастью, в этот раз ситуация совсем иная.
- Антихайп
Моё внимание и интерес в целом в жизни привлекает наличие хейта, так он всегда сопровождает любую по-настоящему созидательную деятельность. В свою очередь, горячие темы, даже если они оправданы, вызывают небольшое отторжение. У такого bias есть и практический смысл - работать в одной из миллиардов LLM-команд и конкурировать с кучей инженеров может оказаться плохой карьерной стратегией, а вот продолжать работать над рекомендациями, реально приносящими кучу добавленной стоимости, в компании, которую недолюбливают другие инженеры - это мне по душе!

Напоследок добавлю, что есть желание больше писать в канале про свою работу, встречающиеся проблемы и решения, но мне ещё предстоит узнать, где проходит граница NDA. Так что, посмотрим!

Подписывайтесь на меня там, кстати!
👍79🔥35🎉104🥴4💩3🤡2
Я обожаю детский труд

Не так давно у Артёма был пост про чувака, получившего в 19 лет PhD и ставшего в 20 лет Research Director в Stability AI. Помимо этого, не так давно наткнулся в X на общественность, бомбящую от видео с ~14-летним кассиром в Burger King. Считаю, что это прекрасная возможность обсудить детский труд.

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

Начнём с того, что на поверхности. Во-первых, почти вся работа в 21 веке вне бедных стран не наносит физического вреда, и все разговоры о том, что ребёнок поработал в шахте и вырос больным, давно потеряли актуальность. Во-вторых, почему-то у людей в голове представление о детской работе, как о рабстве, но между детскими и взрослыми трудовыми отношениями нет никакой разницы - это двусторонний добровольный договор с правом выхода. Отношение к работе как к "эксплуатации" перекочевало в головы откуда-то из коммунизма, но в случае взрослых все нормальные люди понимают, что это не так.

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

Конечно, работа, которая требует специального обучения, может не быть доступна сразу. Но учиться её делать самостоятельно или в рамках каких-то курсов вполне легко. Даже, как в упомянутом примере, в теории, ничего не мешает учиться в универе не с 17, а с 10-12 лет. Но в малой доле профессий реально нужно несколько лет учиться для работы.

Ну, ладно, допустим, запретили мы людям работать до 18 лет. Что предлагается взамен? В большинстве школ происходит как раз настоящая эксплуатация - детей против воли собирают в компании людей, которых они не выбирали, и заставляют насильно изучать то, что им в основном неинтересно, и в результате такого "обучения" в голове остаётся ~0 навыков и информации, только покалеченная личность. Почти всё, чего так боятся в детском труде, происходит в реальности, но мало кто про это так сильно беспокоится.

Конечно, я не говорю, что всем людям нужно идти работать как можно раньше с ~12 лет, я говорю, что у них должно быть такое право (а у компаний должно быть право их не брать). В бедных семьях это возможность выправить финансовое положение, в особенности, по сравнению с тратой времени в государственной школе. А в части случаев, если человек уже в 10-14 знает, чего он хочет, это возможность не ждать много лет и сразу начать развиваться в своей сфере.

Расскажите, сколько лет своего детства вы потеряли в рамках школьной эксплуатации?

@knowledge_accumulator
👍32👎22😁7🤡7🥴54🤔3💯2🤨2🌚1🗿1
Model-Agnostic Meta-Learning [2017] - признанная классика мета-обучения

Давно у меня на канале не было почётных баянов.

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

Отличие MAML от других работ по мета-обучению заключается в простоте. Мы не учим никакой "мета-алгоритм", не используем никаких дополнительных конструкций. Мы просто учим удачную инициализацию весов нейросети, из которой она быстро выучит новую задачу.

Итак, берём нашу архитектуру и какой-то вектор весов W. Итерируемся, пока не надоест:

1) Сэмплируем задачу из распределения p(T). Берём из неё K+1 батчей образцов
2) Инициализируем сетку вектором W. На K батчах делаем шаги градиетного спуска, получаем W'
3) С помощью W' считаем ошибку на тестовом батче
4) Считаем производную этой ошибки по изначальным параметрам W
5) Обновляем вектор-инициализацию W

Как можно заметить, применять результат на практике тоже элементарно - вам нужно просто инициализировать сетку мета-обученным вектором.

Благодаря этому, MAML не только стал топ-статьёй по цитированиям, но и присутствует как базовая опция в различных meta-learning библиотеках. Тем не менее, стоит понимать ключевые проблемы алгоритма, не позволяющие быть ему быть окончательным решением интеллектуального вопроса:

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

Тем не менее, MAML это классика, это знать надо!

@knowledge_accumulator
👍12🔥2💯1
Почему я собираюсь брать кредит на еду после переезда в Лондон

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

Раньше я думал, что кредиты работают примерно так:
1) Вы берёте у банка фиксированную сумму денег
2) Для вас строят расписание возврата с процентной ставкой немного выше ставки по вкладам
3) Если вернёте вовремя, вы в небольшом минусе, иначе вас похищают и пытают коллекторы

Дальше надо оговориться - в разных странах и банках может быть по-разному, но вот как это, оказывается, видимо, работает в странах первого мира:
1) Вам дают кредитную карточку, и вы тратите с неё деньги в минус
2) Если вы вернёте деньги банку в срок, то вы не платите вообще никаких процентов.
3) Если вы продолбались по лимиту или времени, вас ждёт от 20% годовых (да, в долларах)

Главная аксиома в моей голове, оказавшаяся неверной - "банк зарабатывает проценты на каждом кредите". Но на самом деле банк заманивает большое количество клиентов и выходит в плюс благодаря тем, кто продолбался. Немного напоминает казино, но с другой структурой и шансами выигрыша.
То есть, если у вас гарантированно присутствует сумма денег, чтобы отдать все ваши долги, то для вас взятие кредита - это безопасно. Но зачем вообще это делать?

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

Итак, это был результат моего предварительного ресёрча. Буду очень благодарен, если жители западного мира прокомментируют и укажут на недочёты в моём понимании. Вероятно, в СНГ банки работают иначе и там к кредитам действительно лучше не подходить на пушечный выстрел.

В скором времени планирую затестить кредитную систему в UK, взяв такую карточку, посмотрим, правда ли это так работает :)

P.S. Замечу, что крайне отрицательно отношусь к взятию денег под проценты и не собираюсь даже брать ипотеку, так как считаю покупку недвижимости плохой инвестицией.

@knowledge_accumulator
👍25🌚124💯3😁1🐳1🗿1
Только AI поможет нам понять самих себя

Человеческий интеллект достаточно ограничен. Его узкое место - это способность оперировать большим количеством сущностей. Это уже сегодня видно по нашему отставанию в решении некоторых математических задач.

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

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

Именно в этот момент нам на помощь будут приходить системы типа AlphaFold. Только AI способен что-то понять в той мешанине, которую сотворила живая оптимизация. Обучая его делать полезные выводы из неинтепретируемых для нас данных, мы будем использовать его советы для победы над нейродегенеративными заболеваниями, даже не понимая, почему эти советы верны.

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

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

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

Порабощать людей пока что стремятся только другие люди, во имя благих целей, конечно же. Лучше бояться этого.

@knowledge_accumulator
👍236🔥3💯1
Mastering Diverse Domains through World Models [2023] - как ещё можно быстро учить в RL

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

Я уже писал про EfficientZero - внука AlphaZero, делающего поиск по дереву предсказанных "скрытых состояний" среды. Сегодня поговорим про другой подход, называемый Dreamerv3.

В большом количестве RL-методов при обучении используются цепочки состояний - траектории, встреченные в реальной среде. На основе этих траекторий считаются различные RL-лоссы, и часто после сделанного шага обучения эти траектории выбрасываются, потому что перестают быть корректными с точки зрения алгоритма. Отсюда и низкая data-эффективность.

Dreamer решает данную проблему, полностью обучаясь на воображаемых траекториях, генерируемых текущей стратегией. Алгоритм состоит из 2 частей (см. картинки):

1) World Model Learning
Здесь мы обучаем энкодер наблюдения в вектор, декодер вектора в наблюдение, а также динамику мира - рекурретную сеть, предсказывающую следующее скрытое состояние по текущему скрытому состоянию, вектору наблюдения и сделанному действию. Обучают всё это на предсказание наград, концов эпизода, а также на восстановление наблюдения из скрытого вектора.

2) Actor Critic Learning
Имея на руках модель среды, мы можем генерировать те самые воображаемые траектории состояний вместе с действиями и полученными наградами. К ним применяется Actor-Critic лосс - один из базовых RL-ных способов обучения агента.

В результате, алгоритм не дотягивает по производительности до EfficientZero, но при этом проще устроен. Интересно, насколько все эти алгоритмы далеко от "теоретического" максимума скорости обучения, мне кажется, что ещё очень далеко. Но мы так и будем продолжать подбирать эвристики для существующих алгоритмов, ускоряющих сходимость, пока не начнём обучать весь RL-алгоритм целиком в виде одной модели.

@knowledge_accumulator
👍124🔥1
Главное, что мы должны делать в такие моменты - это копить ненависть и перенаправлять её в продуктивное русло. Желаю вам научиться этому.
😢65🤡20👍116👎6🤮6🤬1🥱1
Чё там в Лондоне

Пока у меня первые дни на новом рабочем месте и не до глубокомысленных рассуждений, скажу пару слов про Лондон.

Основополагающая особенность города - наличие большого количества обеспеченных людей, что создаёт массовый спрос на товары и услуги высокого уровня:

- Вы найдёте здесь много потрясающих ЖК, возле которых будет и фонтан, и огромная ТЦшка, всё вокруг будет очень красиво и безопасно, и при этом в получасе от центра. Заплатить за это придётся немало - не меньше 2к долларов в месяц за студию.
- Везде в супермаркетах огромное количество качественной готовой еды. Стоит это не особо дорого - долларов 5-8. Для хейтеров готовки типа меня это потрясающая возможность никогда не прикасаться к плите, при этом не мучаясь с доставкой и ожиданием в кафе.
- Количество развлечений и мероприятий зашкаливает - все воюют между собой за ваши лишние фунтики. Вам не будет здесь скучно, можно забивать свой график до отказа очень качественным досугом на любой вкус. Хорошей еды в ресторанах полно - но это уже от 20 долларов.

Если вы не можете это всё себе позволить - придётся идти на большие компромиссы, поэтому, без хорошего дохода / оффера тут делать нечего.

Помимо всего этого, после жизни в РФ и года скитаний по миру в глаза бросается комфорт легальной принадлежности к экономике первого мира - когда у тебя есть нормальное резиденство, постоянный адрес и т.д., можно завести нормальный счёт в банке и у брокера, заказывать амазон, посылки, и твоя квартира найдётся прямо в выпадающем списке при вводе индекса - больше никакой головной боли от попытки понять, что такое Address Line 1/2, как правильно написать транслитом твою улицу.

Конечно, в UK есть свои минусы, главный лично для меня - это, естественно, огромные налоги (около 40%), ну и от моего политического идеала эта страна далека. Однако, на текущий момент я очень доволен той жизненной ситуацией, которая складывается.

А на этом пока всё, телеграм уменьшил максимальную длину постов! Если хотите больше узнать про что-нибудь, пишите в комментариях.
👍41🔥54👎2🤡1
Наука о персептронах

Представьте, что у вас есть объекты с кучей фичей, бесконечно много данных и вы хотите предсказывать несколько таргетов. В этом случае вам подойдёт не что иное, как нейросеть. Все знают про стандартную архитектуру - последовательность домножений на матрицу и каких-нибудь ReLU.

Но что, если я вам скажу, что ML-исследователи изобрели целую науку, в рамках которой перебирают различные модификации в этой схеме? Не поймите меня неправильно: оптимизировать архитектуру - это важно, но вот писать тексты о глубинных смыслах и мотивациях тех или иных матричных умножений - это странновато, а многие статьи этим грешат. Давайте взглянем на парочку предложенных модификаций:

MaskNet [2021]:
output = Relu(W3 x ((W2 x (Relu(W1 x input + B1)) + B2) * input) + B3)


DCN-V2 [2020]:
output = model_input * (W x layer_input + b) + layer_input


GDCN [2023]:
output = model_input * (W1 x layer_input + b1) * Sigmoid(W2 x layer_input) + layer_input


У этих всех бойцов есть и лидерборд (в нём лидирует как раз GDCN), там таких статей ещё 33:
https://paperswithcode.com/sota/click-through-rate-prediction-on-criteo

Выглядит всё это так, как будто нужно просто натравить на эту задачу AutoMLZero и перестать генерировать статьи про каждую конкретную точку в пространстве перебора, ну а пока наслаждаемся тем, что есть...

@knowledge_accumulator
👍22😁4💯31
Почему никакого сознания не существует

О сознании многие говорят, как о секретном ингредиенте человеческой нервной системы. О том, что это именно такое, исписаны миллионы страниц. Есть разные "взгляды", и один из них так и называется - illusionism - он заключается в том, что есть только иллюзия сознания, создаваемая нами, и я придерживаюсь именно этой позиции.

Начнём с простого мысленного эксперимента. Можно ли точно симулировать физику на компьютере? Не вижу причины, почему нет. Раз можно симулировать физику, то есть ли что-то, что помешает симулировать человека? Также склонен верить, что нет. Обладает ли точная симуляция человеческого мозга сознанием? Если нет, то наличие сознания невозможно ни доказать, ни опровергнуть, таким образом, эту сущность я убиваю своей бритвой Оккама.

Если сознание присутствует в симулируемом мозге, оно уже теряет некую загадочность и шарм, не находите? Оно является просто частью процесса обработки информации, которой является человеческий мозг. Теперь самое интересное - какую именно наблюдаемую функцию человека выполняет сознание? Постановка задач? Любопытство? Учитывание своего присутствия при планировании поведения? Всем этим давно обладают RL-алгоритмы. Обладают ли RL-алгоритмы сознанием? Кто-то скажет, что да, но такой нагруженный термин, как сознание, в данном случае лучше заменить конкретной функцией, к которой вы его приравниваете.

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

Бритва Оккама - вещь. Не нужно плодить бессмысленные сущности. Понимаю ваше желание почувствовать себя особенными, не такими, как нейросети и кошки, но, к сожалению, вы просто биороботы с углеродным компьютером в черепе. И свободы воли тоже нет никакой, если вы вдруг забыли.

Если кто-то хочет побольше узнать на тему сознания, держите статью на Вики с описанием разных взглядов и подкаст.

@knowledge_accumulator
👎29👍27🤡13😁84🥱4🗿4🤔2💯1
Об авторе

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

Я зарабатываю на хлеб в роли Senior ML Engineer в x.com. Занимаюсь внедрением новых ML-технологий в его рекомендательную систему, временами пишу про эту область.

Помимо рекомендаций, в ML меня интересует в основном развитие интеллекта, как такового, а не какие-то приложения. Здесь почти нет обзоров самых хайповых статей по LLM и диффузионным моделям, зато есть про RL, meta-learning и всё то, что помогает лучше понять суть интеллекта.

Так сложилось, что периодически я пишу посты не про ML. Ставя под сомнение мейнстримные представления, я поднимаю острые вопросы и запускаю дискуссии в комментариях, из которых узнаю много интересного про для себя. И нет, мне не страшно, что обо мне плохо подумают.

Приятного чтения!
👍5614❤‍🔥8🔥75🌚1
Knowledge Accumulator pinned «Об авторе Пора сделать новый закреп для новоприбывших. Каналу как раз почти исполнился год, с тех пор очень многое изменилось, но старый закреп хочется оставить в роли исторического артефакта. Я зарабатываю на хлеб в роли Senior ML Engineer в x.com. Занимаюсь…»
REINFORCE - главное оружие против недифференцируемых задач

Все мы в жизни сталкиваемся с ситуациями, когда есть какая-то функция полезности J, зависящая от параметров Theta. Если можно посчитать производную, то мы в шоколаде - пользуемся градиентным спуском. Но что, если нет?

Рассмотрим такую абстракцию - параметры системы Theta влияют на распределение действий A, а результатом этих действий является J. Если распределение на A не полностью сконцентрировано в одной точке, то существует способ получить несмещённую оценку на градиент J по Theta!

Тут-то и появляется REINFORCE / Policy Gradient. На картинке вывод формулы, сразу же применённый к ситуации, когда действий несколько и они составляют траекторию - tau. Буквой pi обозначается распределение действий A - его и называют стратегией (policy).

Итак, метод в теории рабочий, но дальше он сталкивается с жестокой реальностью - дисперсия оценки градиента безумна, требуется слишком много данных. Во многом RL сводится к тому, чтобы найти способ уменьшить дисперсию оценки. Тот же самый PPO, обычно используемый для RLHF - всего лишь костыль, позволяющий переиспользовать данные, шагая весами Theta несколько раз.

Ситуация с REINFORCE напоминает одну щекотливую тему. Казалось бы - у нас есть окончательное решение недифференцируемого вопроса - просто собирай данные и шагай по этому градиенту. Строго доказано, что достаточно отмасштабировать алгоритм, дать ему больше ресурсов, и он обучит всё, что угодно.

Но реальность печальнее. Можно сколько угодно рассказывать, что масштабирование решит все фундаментальные проблемы, но в конце концов придётся улучшать и сам алгоритм. Готовым кинуть в меня Bitter Lesson-ом предлагаю почитать мой пост про него, там есть о том, как этот урок многие понимают неправильно. Через десятки лет все будут смеяться над тем, что люди хотели с помощью предсказания следующего токена и RL поверх человеческой разметки обучить интеллект, как сейчас над тем, что люди пытались вручную придумывать фичи для компьютерного зрения.

@knowledge_accumulator
👍165🐳3
На какой лосс учить рекомендательную систему?

В рекомендациях доминирует парадигма "Learning to Rank" - учится модель, получающая на вход (пользователь, контекст, документ) и выдающая число - предсказание релевантности, по которому потом сортируем.

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

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

Но в реальности наша модель обладает ограниченной ёмкостью, данные конечны, и поэтому модель не будет выдавать свой "теоретический" максимум. И тут важным является то, какого рода ошибки наша модель допускает, а это уже зависит от способа обучения.

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

Самый простой пример - Pair-Wise Logloss. Идея - вместо предсказании метки класса будем формировать пары из документов внутри одной выдачи с разными значениями отклика, и logloss применять к разнице логитов - предсказывать в качестве класса "порядок". Можно по-разному обучать эти разницы логитов, на картинке другой пример - PairwiseLogisticLoss. Больше примеров здесь.

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

@knowledge_accumulator
👍223🔥2