Knowledge Accumulator
5.45K subscribers
138 photos
277 links
Реалистичный взгляд на технологии и мир
Download Telegram
Alpha-beta pruning - ускорение минимакс-алгоритма

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

Как же так? Советую поглядывать на картинку, пока вы это читаете:

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

А в какой ситуации из этого следует то, что вы никогда не окажетесь в этой вершине при оптимальной игре? Это происходит тогда, когда у вашего противника выше по дереву есть варианты, которые хуже X. Ведь если они есть, зачем пускать вас туда, где вам будет лучше?

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

Судя по википедии, количество вершин в лучшем случае становится вместо N^d равным sqrt(N^d). Судя по данному рандому со stackexchange, в шахматах 4.8x10^44 легальных позиций. То есть можно предположить, что в правильном порядке "обойти дерево шахмат" можно было бы за примерно 10^22 операций, что звучит гораздо реалистичнее, чем 10^44. Может быть, нейросеть способна упорядочить вершины так удачно?

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

Раз и два - видео с примером

@knowledge_accumulator
👍9🔥31
Регистры в нашей голове

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

Поговорим сегодня про так называемую рабочую память (working memory) в нашей голове. Она хранит сущности, которыми мы оперируем в конкретный момент. Её объём измеряется всего лишь "единицами", например, вы точно не сможете запомнить набор из 10 случайных слов, написанных в ряд, за один взгляд.

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

Рассмотрим задачу "n-назад", которую используют для тренировки. Вам называют, например, буквы по одной, и вы должны каждый раз говорить, повторяет ли буква ту, что была n букв назад - тривиальная задача для очереди длины n. После тренировок производительность людей растёт и создаётся иллюзия роста рабочей памяти, но это не так:

1) Это не переносится на другие задачи на рабочую память
2) На самом деле мозг человека упаковывает последовательности встречаемых сущностей в новые сущности и начинает хранить их в рабочей памяти "группами". Например, вам не нужна большая память, чтобы запомнить ABCDEFGHIJK. После длительных тренировок вы придумываете паттерны для упаковки всевозможных последовательностей.

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

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

@knowledge_accumulator
👍16🤯42🤔1
Generator and Critic: A Deep Reinforcement Learning Approachfor Slate Re-ranking in E-commerce - аналог RLHF в рекомендательных системах

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

Один из способов это решить - авторегрессионная генерация последовательности, прямо как в языковых моделях. Для этого нам нужны 2 составляющие:

Critic, она же reward model.
Для её обучения мы собираем датасет пар (последовательность, таргет). Можно обучить модель любой сложности, поскольку она не будет применяться в проде. Это может быть трансформер, применяющийся поверх последовательности документов, и выдающий агрегированный результат по всей выдаче. Таргет нужно выбрать согласно логике бизнеса.

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

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

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

@knowledge_accumulator
👍14🔥2👏1
LlamaRec: Two-Stage Recommendation using Large Language Models for Ranking [2023] - о том, как рекомендации превратили в ЕГЭ

Итак, какой пайплайн применения LLM для ранжирования придумали товарищи из NVIDIA:

1) Кандидатогенерация без LLM - сначала рекуррентная модель под названием LRURec кушает историю пользователя и в конце выдаёт распределение на следующий документ, из которого берётся топ-20. Обучается такая модель просто с помощью next item prediction.

2) На последней стадии работает уже языковая модель в формате теста.
В качестве промпта в модель подают список названий документов, с которыми взаимодействовал пользователь. Далее модель просят предсказать наилучший следующий документ.

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

Имеет ли смысл применять такой подход в реальной рекомендательной системе? Давайте посмотрим, чем отличается данная нейросеть от того, что мы используем у нас. Если в нашем рекомендательном трансформере вместо мешка токенов будем брать их последовательность, и склеим все эти последовательности из истории в одну, мы получим такой же формат входа, как у LlamaRec. При этом сам трансформер от LLM на порядок больше, чем тот, что мы используем у нас.

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

@knowledge_accumulator
👍132🔥1
Не люблю геройские подвиги

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

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

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

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

Аккумулируя свой опыт, дам непрошенный совет:

1) Регулярно спрашивайте себя - есть ли у меня какая-то привычка, которая на длинной дистанции приводит к потерям? (Сколько часов я теряю за год, смотря тикток?)
2) Делайте постепенное изменение в положительную сторону - такое, которое не составит большого труда соблюдать (поставьте ограничение на время использования, равное 50-80% от текущего)
3) Используйте вашу силу воли, чтобы удержать это изменение. Когда вы решили изменить свою жизнь, вы были заряжены на успех, но когда импульс пройдёт, вы захотите вернуться к статусу кво.
4) Обязательно наградите себя в случае успеха. Пообещайте себе заранее что-нибудь за успешное удержание (в течение месяца, к примеру) - купите себе подарок / съешьте дорогой стейк. Порадуйтесь тому, что вы молодец. Только не подведите себя, откатив изменение потом.

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

Забудьте про подвиги, они никому не нужны.

@knowledge_accumulator
👍466🔥2
Towards General-Purpose In-Context Learning Agents [2023] - перспективное направление или тупик?

Не смог обойти стороной новую статью автора VSML, посвящённую In-Context трансформерам (ICT).
В его другой статье была проанализирована способность ICT обучаться обучаемости, а не запоминать все задачи. Иногда это происходит, и те же факторы были перенесены в контекст RL.

По сути данная работа - это модификация Algorithm Distillation. Его идея состоит в том, что мы обучаем ICT на траекториях, сгенерированных при обучении PPO. Таким образом мы хотим научить ICT подражать алгоритму, и по каким-то странным причинам он иногда учится быстрее изначального алгоритма.

В модифицированном же подходе было обнаружено, что если увеличить разнообразие тренировочных задач, т.е. случайно проецировать пространство состояний, то ICT начинает лучше работать на задачах, не похожих на тренировочные.

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

Чтобы ICT умел в совсем out-of-distribution задачи, ему нужно безумное распределение задач, и шагом в этом направлении является AdA, но пока нет свидетельств, что AdA обобщается за пределы XLand 2.0. А это всего лишь 265M-модель!

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

Возможно, всё дело в том, что это лаба Шмидхубера, и в ней запрещено развивать перспективные направления, чтобы потом можно было говорить, что придумал всё 20 лет назад. В принципе, и на этом спасибо, если что, смогу сам потом масштабированием заняться, как будет возможность 😁

@knowledge_accumulator
👍7🔥2
GAIA: a benchmark for General AI Assistants [2023] - достойное испытание или очередной тест на запоминание?

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

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

Человек решает 90% вопросов, тогда как GPT-4 с настроенными вручную плагинами набирает только 30% на первом уровне сложности. На третьем уровне сложности та же модель показывает нулевой результат.

На мой взгляд, бенчмарк интересный. С одной стороны, он не проверяет интеллект, как обучаемость, то есть успешное прохождение не гарантирует нам тот самый AGI. Но это отличный тест на применимость AI в реальной жизни в качестве ассистента. Однако, и тут есть одно но.

Это всё будет иметь смысл только в случае, если GAIA будет black-box бенчмарком!

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

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

@knowledge_accumulator
👍16🔥4
Что там с AlphaCode 2

На днях был опубликован отчёт о потомке AlphaCode. В работе нет фундаментально новых идей, в основном, какие-то улучшения по мелочи. Из большого только то, что в основе лежит Gemini Pro, новая гугловская языковая модель. На упаковке написано "решает в 1.7 раз больше проблем и работает на уровне 85-й перцентили людей". Так ли всё гладко?

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

Больше всего людям в глаза бросился следующий пример - в одном из соревнований модель решила задачи A,B,C и G, т.е. самые простые и одну крайне сложную задачу, о чём даже не постеснялись упомянуть в своём видео про Gemini (репутация которых уже подорвана).

На картинке вы можете видеть решение из туториала по соревнованию и код от AC2, который плохо пахнет. На это один из авторов ответил в X примерно следующее:
- Про претрейн точно сказать нельзя, но их проверки на recitation показали отрицательный результат.
- Без файнтюна модель не может решить данную задачу, а про файнтюн они точно знают, что там этой задачи нет.

Добавлю ещё одну деталь - главная фича AlphaCode - генерация огромного количества программ (т.е. миллионов) с их последующей мощной постобработкой и фильтрацией, которая выкидывает 95% программ. И даже несмотря на это, итоговыми посылками становится огромное количество неработающих программ, падающих на публичных претестах (за это не штрафуют на баллы). Это я к тому, чтобы вы не обманывались рассказами о способности модели к high-level reasoning, противопоставляя её LLM, как в том же видео.

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

@knowledge_accumulator
👍22🔥3
Почему я люблю и ненавижу походы

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

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

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

1) Бытовой ад
Я очень люблю цивилизацию и её достижения. Эта любовь достигла своего пика, когда мне нужно было отковырять вилкой пригорелую к ведру гречку, и в помощь вам только болото недалеко от палаток. Да, сцена, напоминающая то самое культовое кино. Помимо кухни вас ждут пешие переправы через реку пешком, клещи и многое другое.

2) Нестабильность
Если вы очень позитивно всё воспринимаете, вы будете с удовольствием вспоминать о том, как вашу палатку затопило, а воду для питья вы фильтровали через снятый только что носок (потому что так лучше, чем никак). Кто-то назовёт это интересными приключениями, но в моменте большинство людей будет очень страдать.

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

https://t.iss.one/itbomj
😁14💩8💯6👍4🤣4🤔2
Весёлый поиск от Deepmind [2023]

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

Есть такая сфера, как оптимизация/поиск программ - мы задаём набор базовых команд и ищем их последовательность, дающую максимальный профит на задаче. Я уже разбирал AutoML-Zero, в которой ищут последовательность векторно-матричных операций, максимизирующую точность нейросети, обученной с её помощью. Тот же подход использовали для создания оптимизатора Lion.

Работает это всё в форме генетического алгоритма. Мы можем легко оценить качество конкретной программы, и у нас есть популяция программ, из которых пробуем создавать новые программы с помощью мутаций. В AutoML-Zero / Lion мутации были случайные - мы добавляли / изменяли / удаляли случайную команду в ней. А это слишком неэффективно и глупо.

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

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

Добавлю, что есть и альтернатива генетике - это AlphaZero-подход, а именно AlphaTensor и AlphaDev, на счету которых тоже уже есть открытия. При этом важно, что область применения и AlphaZero, и FunSearch весьма специфична, так что, сингулярность ещё не близко.

@knowledge_accumulator
👍303🔥3
GPT-4 vs ARC: как оно сейчас и конец ли это?

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

Вы нечасто увидите проверку на нём, поскольку в вопросах обучаемости наши алгоритмы ужасно отстают от человека и просвета в этом вопросе нет. Давайте посмотрим на последние результаты проверки моделей GPT-4 и GPT-4V на нём.

Итак, тестирование проводят на 480 задачках из 16 категорий. Люди решают в среднем 91% задач. Первое место с kaggle-соревнования по ARC набирает около 52% - это по сути полный перебор всевозможных коротких "программ" из 4 преобразований. GPT-4 при новом улучшенном дизайне промпта с примерами решения других задач набирает 33%.

Далее из 480 задач выбирают 48 самых простых, требующих "одношагового" понимания концепта и прогоняют на них ещё и мультимодальную GPT-4V - если до этого задачки преобразовывали в текст, теперь показывают оригинал. Результаты становятся ещё более печальными - 95% человек / 69% GPT-4 / 25% GPT-4V.

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

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

@knowledge_accumulator
👍18🔥5🤔4
Наука не заслуживает вашей веры

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

Обычно для проверки гипотез используют p-value, посчитанный по данным - вероятность получить такое или более экстремальное отклонение, если нулевая гипотеза верна. Нулевая гипотеза - это априорное утверждение, например - "лекарство не работает". Если p-value маленький, значит, это маловероятно, и, скорее всего, "работает". В исследованиях принято использовать порог в 0.05, так что, может показаться, что 5% исследований порождают неправильный вывод. Но картина совершенно иная.

Проведём мысленный эксперимент. Учёные по всему миру одновременно тестируют много "лекарств", скажем, 1000. Из них, допустим, 100 реально работает, и все они покажут значимое отличие. А из 900 ненастоящих? Как раз 900 * 0.05 = 45! То есть из 145 позитивов почти треть будет враньём даже при идеальной методике! А как вы думаете, 10% настоящих - это оценка, близкая к реальности?

Учёные - тоже люди, и есть другие факторы, ухудшающие положение:
1) Из данных выгодно выжимать результат, потому что наличие статьи выгодно учёному. Это толкает на осознанные или не очень ошибки в методологии, подгонку и т.д. Здесь можно почитать про методы так называемого p-hacking.
2) Наблюдательные исследования - это скам. Если вы просто берёте данные из реального мира и сравниваете какие-то показатели, невозможно доказать, что это именно причинно-следственная связь, а не просто корреляция - математический факт. Я уже писал пост про causal inference - сферу, изучающую, как делать правильные выводы из данных. Чтобы делать корректный вывод, нужно проводить контролируемое исследование, когда вы случайно влияете на переменную, но во многих областях науки этого почти не делают из-за этических соображений.

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

Более подробно про всё это рассказывает Veritasium.

@knowledge_accumulator
👍28😁4👏2🔥1🤔1💯1
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