Knowledge Accumulator – Telegram
Knowledge Accumulator
5.45K subscribers
138 photos
277 links
Реалистичный взгляд на технологии и мир
Download Telegram
Как и зачем делать exploration в рекомендациях

В схеме Learning to Rank мы обучаем модель Score(user, item), выдающую оценку релевантности каждого из кандидатов. Рассмотрим пример сценария применения такой модели:

Этап кандидатогенерации, к примеру, HNSW, принёс нам 1000 кандидатов. К каждому мы применили нашу модель релевантности и получили 1000 чисел. В качестве результата выполнения запроса мы должны отдать пользователю 10 объектов. Простейшая опция - это отдать пользователю 10 объектов с наибольшей релевантностью. Но у этого есть проблема.

Дело в том, что для качественного обучения модели Score(user, item) у неё должен быть разнообразный набор данных. Если мы всем пользователям выдаём только самые релевантные треки, то может образоваться много треков, которые вообще не попадали в выдачу никому, и тогда модель на них может выдавать нереалистично маленький или большой результат - обе эти ситуации нежелательны и могут привести к плохой выдаче в будущем.

Возникает trade-off - с одной стороны, мы хотим формировать релевантную выдачу, с другой, мы хотим её немного разнообразить для улучшения качества датасета. Этот баланс на практике можно регулировать таким образом:
1) 1000 скоров кандидатов превращаются в вероятности попадания в выдачу: p = exp(score/T) / Z, где T - температура, а Z - нормировочная константа.
2) Применяется специальный алгоритм по генерации выборки из такого распределения.
Если T равна 0, мы получаем просто топ-10, и чем она больше, тем больше всё сглаживается в сторону равномерной выдачи.

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

Сначала предполагаем на глаз, какой уровень "гладкости" выдачи мы хотим. А затем уже подгоняем T, чтобы был нужный эффект, и по надобности иногда переподгоняем. Вот такая наука.

@knowledge_accumulator
👍10🔥2🤔1
Как злодеи используют язык, чтобы управлять миром

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

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

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

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

Но текущая ситуация с ИИ уникальна. Помимо описанного выше, существует козырь - риск апокалипсиса. Благодаря этому каждый, кто говорит вслух "ИИ должен быть зарегулирован, потому что представляет угрозу всему человечеству", даже если имеет ввиду только один, самый главный риск, будет записан в сторонники обязательных watermark-ов на сгенерированных картинках. Манипуляторы будут на голубом глазу приравнивать эти вещи, но далеко не все увидят этот обман. Государство постоянно пользуется этим приёмом для расширения своей власти и прекрасно подыграет в данной ситуации.

Лавина уже сошла с гор.
Andrew Ng, Yann LeCun, François Chollet понимают, к чему всё идёт, но я не вижу, что общество достаточно сопротивляется надвигающейся катастрофе, чтобы она не случилась.

@knowledge_accumulator
👍15💯9🤔3👎2🔥2😢1💩1🤡1💅1
Почему я люблю лотереи больше, чем ML-лаборатории

- Лотереи честнее и понятнее финансируются

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

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

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

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

А вы что думаете?

@knowledge_accumulator
😁26👍16💯8👎5🤔2🤡2
Как выигрывать в любой игре

Уже очень давно математики знают способ построения оптимальной стратегии в любой игре с дискретным пространством состояний и с полной информацией. Многие его знают как Minimax-алгоритм, логика работы следующая:

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

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

3) Рекурсивно разметить все вершины в графе
Эта функция работает для данной вершины v так:
- Вызываем её сначала для всех вершин, в которые из v есть ребро
- В зависимости от того, чей ход в данном состоянии игры, выбираем среди этих вершин результат, наиболее желаемый для него, и присваиваем его вершине v.
- Так как обычно в играх 2 игрока и они ходят по очереди, получается, что выбор результата чередуется: если в вершине v выбирается "максимальный" результат для игрока 1, то в его детях уже будет выбираться "минимальный" для него результат, т.к. ходит противник. Получается Minimax.

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

@knowledge_accumulator
👍17🔥4💯1
Почему идеальный шахматный алгоритм был бы бесполезен

Несмотря на то, что современные шахматные алгоритмы, например, Stockfish, невероятно сильнее любого человека, люди играют в шахматы ради развлечения, в том числе и я. Именно Stockfish - алгоритм, не основанный на AlphaZero - сейчас является самым сильным алгоритмом. Грубо говоря, он работает так:

1) Строим дерево состояний игры из текущей вершины, как описано в предыдущем посте, заданной глубины d. Этот параметр - регулятор баланса скорости и качества работы.
2) Проставляем оценку каждому листу дерева. Если это конец игры, то проставляем +∞ / -∞ или ноль, если ничья. Иначе состояние игры оценивает ансамбль алгоритмов, в том числе и нейросети, которые считают "score" позиции - число, где 0.0 - равная позиция.
3) По логике Minimax-алгоритма пересчитываем score всех вершин в дереве, в том числе и корневой, получая таким образом оценку текущей позиции и оценку всех возможных ходов.

Stockfish активно используют игроки при анализе партий и комментаторы профессиональных матчей. Удобным его делает возможность навигации по разным возможным последовательностям ходов, когда игроки могут отследить, что один ход ведёт к состоянию "+5.5", а другой к "+1.3", и на основе этого можно анализировать происходящее.

Но что, если бы Stockfish мог работать с d=∞, как полный Minimax? Мы бы получили весьма бесполезную систему по простой причине - игроки не играют оптимально. Алгоритм будет вам говорить в дебюте - "Из 26 вариантов, вот эти 17 ведут к ничье, в остальных случаях противник поставит тебе мат за 53 хода". Или про немного выигрышную позицию - "Тут можно ходить, как хочешь, всё равно выиграешь, так будет мат в 43 хода, так мат в 47, а так мат в 48". А какая вам разница, если вы мат в 2 хода в половине случаев не видите, а противник не будет оптимально обороняться? Для анализа партий, играемых людьми, алгоритм становится бесполезен.

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

@knowledge_accumulator
👍20🔥21
Про Emergent Complexity

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

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

Это позволяет миру функционировать именно так, как есть.

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

Короткие программы на том же C++, состоящие из простых команд, способны задавать невероятно сложные алгоритмы.

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

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

А знаете, что печально? Мозг человека попросту не заточен под интуитивное понимание этой сложности. Каждый раз нам приходится применять наши жалкие методы, такие как "разбивать задачу на более мелкие". Но emergent complexity зачастую наблюдается в системах, в которых решение оптимизируется, а не проектируется, и поэтому оно не познаваемо нашим ограниченным мышлением. Для нас это неотличимо от магии.

Почему это важно осознать? Человеческий интеллект возник как результат оптимизации системы из кучи нейронов, и потому является примером emergent complexity. И у нас гораздо меньше шансов повторить этот успех, проектируя интеллект вручную. Люди уже поняли, что не нужно проектировать признаки объектов, но мы всё ещё проектируем архитектуры и обучающие алгоритмы. Рано или поздно мы перестанем делать и это, и тогда шансы на успех резко возрастут.

@knowledge_accumulator
👍23🤔9👎4🔥4🤣2
Слабо прочитать весь arXiv?

Лично мне - да. Но я знаю, кому нет. Хочу вам порекомендовать канал Кирилла - моего руководителя в Яндексе, который читает все статьи (или как минимум все заголовки) на тему рекомендаций, которые появляются на архиве. Теперь он пишет обзоры на иногда найденные интересные работы в своём канале, предлагаю вам его заценить.

Нет, меня не обещали уволить, если я не сделаю эту рекламу, честно-честно.

https://news.1rj.ru/str/inforetriever
😁22🤣8👍6🌚21🔥1
Как вам такой парадокс

Иногда мы натыкаемся на так называемые парадоксы. "Это предложение ложно", Парадокс Монти Холла про 3 двери или что-то ещё в этом роде. Обычно изучения пояснения хватает, чтобы понять, что парадокса никакого и нет, это простая задача с немного контринтуитивным решением.

Однако, как-то раз один неназванный профессор, занимающийся байесовскими методами, скинул в чатик видео про "Парадокс двух конвертов" и написал что-то вроде "Я не понимаю, какого хрена". В тот вечер в том чате было потрачено много человекочасов на обсуждение данной задачи, так что, думаю, и вам тоже будет интересно.

https://www.youtube.com/watch?v=EiVzbmBa9Kw
🔥6👍5🤔2
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://news.1rj.ru/str/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