Как оптимально пользоваться страховками?
Мы часто вынуждены принимать решение о покупке той или иной страховки, например, Каско. Периодически различные сервисы, например, продающие авиабилеты, предлагают заплатить им дополнительные деньги за покупку возвратной версии билета.
Есть ли стратегия оптимального поведения в подобных ситуациях? Когда выгодно перестраховаться, а когда сэкономить? Чтобы ответить на этот вопрос, давайте вспомним, по какой логике работает страховой продукт:
У множества людей есть независимые риски потери
А какое поведение со стороны клиента является оптимальным? Этот вопрос важен, поскольку последовательное следование той или иной стратегии долгосрочно отразится на вашем состоянии.
Представим, что есть набор фичей про вас - A и B, где B - информация, доступная всем, а A знаете только вы. Работа страховой компании - построить правдивую модель
Например - вы покупаете билет на самолёт, но знаете, что есть конкретная причина, по которой с высокой вероятностью вы не сможете полететь. Тогда нужно брать возврат. А вот если вы водитель, и у вас есть основание считать, что вы водите аккуратнее других людей с такими же открытыми характеристиками, то вам невыгодно страховать машину.
Самое смешное в этом всём то, что если все люди начинают продумывать свою стратегию, то появляется фича C - пришёл ли человек за страховкой. Она будет сигнализировать о том, что вероятность риска недооценена и вызовет бесконечный цикл повышения цены, вплоть до коллапса, прямо как в той игре, в которой нужно загадать число, в 2 раза меньшее, чем среднее у всех остальных. Но, скорее всего, в реальности C мало зависит от A и проблемы нет.
А какую стратегию используете вы?
@knowledge_accumulator
Мы часто вынуждены принимать решение о покупке той или иной страховки, например, Каско. Периодически различные сервисы, например, продающие авиабилеты, предлагают заплатить им дополнительные деньги за покупку возвратной версии билета.
Есть ли стратегия оптимального поведения в подобных ситуациях? Когда выгодно перестраховаться, а когда сэкономить? Чтобы ответить на этот вопрос, давайте вспомним, по какой логике работает страховой продукт:
У множества людей есть независимые риски потери
X_i
денег, что вносит дисперсию в распределение будущего состояния. В ответ на это появляется агент, который оценивает вероятности этих потерь p_i
, и предлагает людям заплатить p_i * X_i + delta
. Эти собранные деньги он возвращает людям, если их риски сыграли. Если присутствует свободная конкуренция, то есть давление в сторону точной оценки p_i
и уменьшения delta
.А какое поведение со стороны клиента является оптимальным? Этот вопрос важен, поскольку последовательное следование той или иной стратегии долгосрочно отразится на вашем состоянии.
Представим, что есть набор фичей про вас - A и B, где B - информация, доступная всем, а A знаете только вы. Работа страховой компании - построить правдивую модель
p(X_i | B)
. Например, в расчёте стоимости Каско она будет использовать ваш стаж, возраст и т.д. Чем больше она про вас знает "хорошего", тем ниже будет оценка и стоимость страховки, и наоборот. Теперь предположите, что входит в A, и подумайте - как друг с другом соотносятся p(X_i | B)
и p(X_i | A, B)
. Если плохие факты, о которых знаете только вы, сильно перевешивают хорошие - это означает, что компания недооценивает ваш риск, и вам выгодно его переложить. Например - вы покупаете билет на самолёт, но знаете, что есть конкретная причина, по которой с высокой вероятностью вы не сможете полететь. Тогда нужно брать возврат. А вот если вы водитель, и у вас есть основание считать, что вы водите аккуратнее других людей с такими же открытыми характеристиками, то вам невыгодно страховать машину.
Самое смешное в этом всём то, что если все люди начинают продумывать свою стратегию, то появляется фича C - пришёл ли человек за страховкой. Она будет сигнализировать о том, что вероятность риска недооценена и вызовет бесконечный цикл повышения цены, вплоть до коллапса, прямо как в той игре, в которой нужно загадать число, в 2 раза меньшее, чем среднее у всех остальных. Но, скорее всего, в реальности C мало зависит от A и проблемы нет.
А какую стратегию используете вы?
@knowledge_accumulator
👍15🔥6❤2😁1🤔1💯1
Structurally Flexible Neural Networks: Evolving the Building Blocks for General Agents [2024]
Наткнулся на ещё одну работу, в которой обучают модель-алгоритм. Её используют тут же для решения RL-задач, с результатами, по графикам сильно превосходящими VSML.
Авторы придерживаются тех же базовых принципов - мало мета-параметров (обучающихся генетикой), большое скрытое состояние. Различие в том, в какую именно архитектуру всё это запаковано. У VSML это несколько "слоёв" LSTM, сцепленных, как обычная нейронная сеть, со связями вперёд и назад.
В данной работе авторы используют более гибкую схему:
1) Есть 3 вида нейронов - входные, скрытые и выходные
2) Каждый входной нейрон может быть связан с каждым скрытым, каждый скрытый с каждым выходным
3) Перед началом обучения (то есть внутри эволюционной итерации) сэмплируются бинарные маски IxH и HxO, обозначающие наличие связи между каждым input и hidden, а также между каждым hidden и output.
А что, собственно, обучается? Чем является в данном случае "нейрон"?
Каждый нейрон принимает на вход векторы сигналов, складывает их и получает свой "Pre-neuron". Далее он домножается поэлементно на вектор w и получается post-neuron. После этого pre-neuron, post-neuron и награда из среды подаются в GRU, которая выдаёт дельту для вектора w.
Вектор w у каждого нейрона свой, а вот веса GRU у всех скрытых нейронов одинаковые. То же и с входными, и с выходными группами, но у каждой группы своя GRU.
Мне лично нравится, что такая плотно связанная сеть нейронов позволяет легко пробрасывать информацию по всей модели и быстрее обучаться своей задаче. Она содержит ещё меньше априорных допущений, чем предыдущий подход, что соответствует выводам из Bitter Lesson. Прорыв в итоге совершит подход, лучше всего балансирующий между гибкостью и эффективностью исполнения на современных GPU - иначе он падёт жертвой hardware lottery.
Из минусов статьи - нет кода, нет meta-testing (хотя сомнений в успехе у меня нет), нет описания затраченных на обучение ресурсов.
@knowledge_accumulator
Наткнулся на ещё одну работу, в которой обучают модель-алгоритм. Её используют тут же для решения RL-задач, с результатами, по графикам сильно превосходящими VSML.
Авторы придерживаются тех же базовых принципов - мало мета-параметров (обучающихся генетикой), большое скрытое состояние. Различие в том, в какую именно архитектуру всё это запаковано. У VSML это несколько "слоёв" LSTM, сцепленных, как обычная нейронная сеть, со связями вперёд и назад.
В данной работе авторы используют более гибкую схему:
1) Есть 3 вида нейронов - входные, скрытые и выходные
2) Каждый входной нейрон может быть связан с каждым скрытым, каждый скрытый с каждым выходным
3) Перед началом обучения (то есть внутри эволюционной итерации) сэмплируются бинарные маски IxH и HxO, обозначающие наличие связи между каждым input и hidden, а также между каждым hidden и output.
А что, собственно, обучается? Чем является в данном случае "нейрон"?
Каждый нейрон принимает на вход векторы сигналов, складывает их и получает свой "Pre-neuron". Далее он домножается поэлементно на вектор w и получается post-neuron. После этого pre-neuron, post-neuron и награда из среды подаются в GRU, которая выдаёт дельту для вектора w.
Вектор w у каждого нейрона свой, а вот веса GRU у всех скрытых нейронов одинаковые. То же и с входными, и с выходными группами, но у каждой группы своя GRU.
Мне лично нравится, что такая плотно связанная сеть нейронов позволяет легко пробрасывать информацию по всей модели и быстрее обучаться своей задаче. Она содержит ещё меньше априорных допущений, чем предыдущий подход, что соответствует выводам из Bitter Lesson. Прорыв в итоге совершит подход, лучше всего балансирующий между гибкостью и эффективностью исполнения на современных GPU - иначе он падёт жертвой hardware lottery.
Из минусов статьи - нет кода, нет meta-testing (хотя сомнений в успехе у меня нет), нет описания затраченных на обучение ресурсов.
@knowledge_accumulator
👍11🔥4❤2🤷1
Когда нужно переезжать на Марс?
Иногда я задаю себе этот вопрос, и он хорошо помогает вам разобраться в себе, поэтому об этом есть смысл задумываться. В технические детали вдаваться пока рано, но общие рассуждения можно проводить уже сейчас.
Есть категория людей, которые захотят полететь в первой группе. Это будут те, кто склонен к риску, те, кто ценят достижение новых высот и целей выше своей жизни. Те же люди хотели первыми забраться на Эверест, опуститься на дно Марианской впадины, достичь Южного полюса.
Им придётся много работать на месте, налаживать инфраструктуру для выживания, они рискнут умереть, но они станут звёздами своего времени. Полный их список будет написан на памятниках и в википедии, про них снимут документальное кино, которое станет вечной классикой. Кто-то из них родит первого марсианина. Как вам такой обмен?
Предположим, что колония начнёт развиваться. По каким показателям она должна превзойти Землю, чтобы вы решились на переезд? Что для вас является самым важным в жизни? Низкая преступность будет сразу, а вот голым купаться в океане под голубым небом вы ещё долго там не сможете.
Мой подход таков: если Земля надолго придёт в упадок или в стагнацию (я в это скорее верю, чем нет, но про это в другой раз), а Марс станет новой Америкой, с экономикой, близкой к свободному рынку (не безденежным раем под руководством колонии), а также населённой лучшими людьми, я сразу захочу туда поехать. Но у меня есть несколько ограничивающих критериев:
1) Должно появиться достаточно свидетельств отсутствия значимого вреда здоровью от перелёта и нахождения там. К сожалению, нужны годы для появления таких данных, а проблемы типа космической радиации пока, вроде бы, не решены.
2) Маршрут должен стать двухсторонний и с рыночным ценообразованием, чтобы я пользовался им, как клиент, когда пожелаю.
3) Количество бытовых неудобств не будет несопоставимо больше, чем во время жизни на Земле.
В принципе, для меня этого достаточно. Да, сначала там будет не всё, что есть на Земле, но под давлением спроса со временем на Марсе обязательно появится всё недостающее. И этот расцвет новой цивилизации я хотел бы наблюдать вживую. А вы что думаете?
@knowledge_accumulator
Иногда я задаю себе этот вопрос, и он хорошо помогает вам разобраться в себе, поэтому об этом есть смысл задумываться. В технические детали вдаваться пока рано, но общие рассуждения можно проводить уже сейчас.
Есть категория людей, которые захотят полететь в первой группе. Это будут те, кто склонен к риску, те, кто ценят достижение новых высот и целей выше своей жизни. Те же люди хотели первыми забраться на Эверест, опуститься на дно Марианской впадины, достичь Южного полюса.
Им придётся много работать на месте, налаживать инфраструктуру для выживания, они рискнут умереть, но они станут звёздами своего времени. Полный их список будет написан на памятниках и в википедии, про них снимут документальное кино, которое станет вечной классикой. Кто-то из них родит первого марсианина. Как вам такой обмен?
Предположим, что колония начнёт развиваться. По каким показателям она должна превзойти Землю, чтобы вы решились на переезд? Что для вас является самым важным в жизни? Низкая преступность будет сразу, а вот голым купаться в океане под голубым небом вы ещё долго там не сможете.
Мой подход таков: если Земля надолго придёт в упадок или в стагнацию (я в это скорее верю, чем нет, но про это в другой раз), а Марс станет новой Америкой, с экономикой, близкой к свободному рынку (не безденежным раем под руководством колонии), а также населённой лучшими людьми, я сразу захочу туда поехать. Но у меня есть несколько ограничивающих критериев:
1) Должно появиться достаточно свидетельств отсутствия значимого вреда здоровью от перелёта и нахождения там. К сожалению, нужны годы для появления таких данных, а проблемы типа космической радиации пока, вроде бы, не решены.
2) Маршрут должен стать двухсторонний и с рыночным ценообразованием, чтобы я пользовался им, как клиент, когда пожелаю.
3) Количество бытовых неудобств не будет несопоставимо больше, чем во время жизни на Земле.
В принципе, для меня этого достаточно. Да, сначала там будет не всё, что есть на Земле, но под давлением спроса со временем на Марсе обязательно появится всё недостающее. И этот расцвет новой цивилизации я хотел бы наблюдать вживую. А вы что думаете?
@knowledge_accumulator
👍9😁4❤3👎2🔥1💯1
Continual Few-Shot Learning Using HyperTransformers [2023] - учим трансформер генерировать нейросети
Я уже рассказывал про meta-meta-learning (он же continual learning) - постановка, в которой мы учимся решать много задач, получая их по одной и переиспользуя знания из предыдущих. В данном случае у нас few-shot вариант.
Если мы просто обучаем нейросеть подряд на этих задачах, нейросеть будет забывать предыдущие - это побочный эффект обычно используемого обучающего алгоритма. В данной работе вместо обучающего алгоритма используется HyperTransformer. Схема такова:
- Есть архитектура свёрточной нейросети, её веса задаются вектором
- Гипертрансформер получает на вход тренировочные данные текущей задачи (N сэмплов из K классов) и предыдущий
- Получившуюся свёрточную нейросеть прогоняют на валидации всех уже показанных задач и считают лосс. Вся процедура получается дифференцируемой и гипертрансформер обучают этот лосс минимизировать.
Несмотря на выигрыш по сравнению с бейзлайном, у меня есть сомнения по поводу такой параметризации этой схемы. Трансформер над вектором весов и задачей выглядит не очень естественной конструкцией. При этом, в теории оно должно выучиться при достаточных ресурсах и данных.
Авторы не проверяют свою модель в сценарии meta-testing, когда мы запускаем только инференс hypertransformer на новом датасете. Интуитивно, оно и не должно зажечь, поскольку количество параметров в таком трансформере наверняка достаточно, чтобы обучаться задачам самому, и поэтому он переобучился на meta-трейне.
С другой стороны, в целом, концепт генерации маленькой модели при помощи большой модели, обученной на больших объёмах данных, вызывает интерес. Но победить дистилляцию из большой модели в маленькую будет непросто. Посмотрим.
@knowledge_accumulator
Я уже рассказывал про meta-meta-learning (он же continual learning) - постановка, в которой мы учимся решать много задач, получая их по одной и переиспользуя знания из предыдущих. В данном случае у нас few-shot вариант.
Если мы просто обучаем нейросеть подряд на этих задачах, нейросеть будет забывать предыдущие - это побочный эффект обычно используемого обучающего алгоритма. В данной работе вместо обучающего алгоритма используется HyperTransformer. Схема такова:
- Есть архитектура свёрточной нейросети, её веса задаются вектором
wcnn
. Для классификации используют Prototypical Loss, поскольку число классов заранее неизвестно. Это позволяет нейросети выдавать для картинки один вектор f(x)
.- Гипертрансформер получает на вход тренировочные данные текущей задачи (N сэмплов из K классов) и предыдущий
wcnn
. На выходе у него следующая версия wcnn
- Получившуюся свёрточную нейросеть прогоняют на валидации всех уже показанных задач и считают лосс. Вся процедура получается дифференцируемой и гипертрансформер обучают этот лосс минимизировать.
Несмотря на выигрыш по сравнению с бейзлайном, у меня есть сомнения по поводу такой параметризации этой схемы. Трансформер над вектором весов и задачей выглядит не очень естественной конструкцией. При этом, в теории оно должно выучиться при достаточных ресурсах и данных.
Авторы не проверяют свою модель в сценарии meta-testing, когда мы запускаем только инференс hypertransformer на новом датасете. Интуитивно, оно и не должно зажечь, поскольку количество параметров в таком трансформере наверняка достаточно, чтобы обучаться задачам самому, и поэтому он переобучился на meta-трейне.
С другой стороны, в целом, концепт генерации маленькой модели при помощи большой модели, обученной на больших объёмах данных, вызывает интерес. Но победить дистилляцию из большой модели в маленькую будет непросто. Посмотрим.
@knowledge_accumulator
👍10🔥4❤3🤷♂1
Если вам постоянно страшно от того, что вы упускаете какую-то возможность, то вы абсолютно правы
Многие слышали про такой термин, как FOMO (Fear Of Missing Out) - страх упущенной выгоды/возможности. Кто-то говорит, что он иррационален и нужно эти мысли просто отбрасывать. Я предлагаю сегодня разобраться в том, так ли это, с помощью RL.
Наша жизнь - это движение по пространству состояний мира
У вас есть ваша стратегия
Всё становится ещё более пугающим, когда мы обращаем внимание на оптимальную стратегию -
Для неё тоже есть оценка состояния и оценка действия в состоянии -
Для них выполняется правило:
Проще говоря - что бы вы ни делали, вы в самом лучшем случае будете не терять свой потенциал. С огромной вероятностью каждое ваше действие уменьшает его. Он непрерывно утекает у вас сквозь пальцы. Вы не можете это обернуть, только остановить, и то только в теории. В конце жизни гарантированно окажется, что из-за накопленных ошибок вы достигли только крошечную долю того, что могли бы.
Вы спросите - и что мне с этим делать? Отвечаю - забейте 👍
@knowledge_accumulator
Многие слышали про такой термин, как FOMO (Fear Of Missing Out) - страх упущенной выгоды/возможности. Кто-то говорит, что он иррационален и нужно эти мысли просто отбрасывать. Я предлагаю сегодня разобраться в том, так ли это, с помощью RL.
Наша жизнь - это движение по пространству состояний мира
S
. У любого состояния s
существует оценка того, насколько оно "хорошее": V(s)
. Это величина, которая показывает, какую суммарную награду вы получите, стартуя из данного состояния и действуя всё последующее время своей стратегией. Есть аналогичное определение Q(s,a)
- такая же оценка состояния, но уже при условии того, что вы сейчас совершите действие a
.У вас есть ваша стратегия
p(a | s)
, которой вы придерживаетесь. Легко показать, что V(s) = E_p(a|s) [Q(s, a)]
. Теперь давайте посмотрим на конкретный момент времени и состояние s
. Существует какое-то распределение на действия p'(a|s)
, максимизирующее E_p'(a|s) [Q(s, a)]
. Это оптимальное распределение с вашей точки зрения, и наверняка ваше текущее распределение с ним не совпадает. В отличие от пошаговых игр, отсутствие действия это тоже одно из возможных действий. Таким образом, каждый миг то, что вы делаете, скорее всего, приносит вам упущенную выгоду.Всё становится ещё более пугающим, когда мы обращаем внимание на оптимальную стратегию -
p*(a|s)
. Это стратегия, идеально максимизирующая суммарную награду. Такая стратегия точно существует. Для неё тоже есть оценка состояния и оценка действия в состоянии -
V*(s)
и Q*(s, a)
. Их можно использовать как "потенциал" агента - то, какой существует теоретический потолок суммарной награды. То, что можно достичь, принимая оптимальные решения.Для них выполняется правило:
V*(s) = E_p*(a|s) Q*(s, a)
. Это соотношение показывает потенциал до и после выбора действия в каждый момент времени. Если вы придерживаетесь стратегии p*(a|s)
, то ваш потенциал не уменьшится. В большинстве случаев ваш выбор ведёт к уменьшению потенциала. Если предположить, что вся награда подсчитывается в конце жизни, то мат. ожидание V*(s)
в следующую секунду будет почти гарантированно ниже, чем в предыдущую. Проще говоря - что бы вы ни делали, вы в самом лучшем случае будете не терять свой потенциал. С огромной вероятностью каждое ваше действие уменьшает его. Он непрерывно утекает у вас сквозь пальцы. Вы не можете это обернуть, только остановить, и то только в теории. В конце жизни гарантированно окажется, что из-за накопленных ошибок вы достигли только крошечную долю того, что могли бы.
Вы спросите - и что мне с этим делать? Отвечаю - забейте 👍
@knowledge_accumulator
👍37🗿10🔥5❤2🤔1💩1
Genie: Generative Interactive Environments [2024] - обучаем нейросеть-игру
Часть людей, работающих c RL, считает, что для развития более общего интеллекта нам нужно сделать задачу, для которой он понадобится. Но не одну, а большое распределение на эти задачи, которое будет достаточно большим, чтобы очень плотно покрыть то, что встречается в жизни. Шагом в эту сторону является модель Genie.
Исследователи собрали датасет из 30к часов неразмеченных видео с платформерами из интернета. Далее обучили генеративную модель следующего кадра при условии предыдущих кадров и сделанного действия.
Конечно, есть проблема в том, что данные о действиях не размечены. Чтобы это обойти, при обучении используют автоэнкодер с небольшим дискретным боттлнеком (т.е. VQ-VAE) с размером словаря 8 - количеством возможных действий.
Как в итоге происходит инференс Genie - вы подаёте промпт-картинку в модель в качестве первого кадра игры. Далее вы каждый шаг должны подавать ей действие и она будет генерировать вам следующий кадр. Таким образом, с учётом датасета, можно сгенерировать платформер на основе чего угодно - сгенерированной картинки, рисунка, фотографии, и играть в него. Судя по видео с сайта, качество не огонь, но как-то работает.
Авторы упоминают Ada, как площадку для тестирования RL-агентов, но утверждают, что она ограничена, а их подход при должном масштабировании и развитии приведёт к тому, что у нас будет возможность сгенерировать любую вообразимую задачу. С такой средой, мы сможем обучать гига-мега-агентов, умеющих играть в любую игру, а значит, что-то, близкое к AGI.
Я с этим подходом не согласен. Это дублирует логику из LLM - закинем побольше данных, компьюта в текущие методы и получим модель, умеющую "всё", потому что мы учили её на "всём". Но как раз опыт GPT нам показывает, что способность к обучаемости у такой системы слаба. Да, можно будет получить роботов-уборщиков, роботов-поваров, но это будет всё ещё маленькое обобщение трейнсета.
А вот игры по промпту - это весело.
@knowledge_accumulator
Часть людей, работающих c RL, считает, что для развития более общего интеллекта нам нужно сделать задачу, для которой он понадобится. Но не одну, а большое распределение на эти задачи, которое будет достаточно большим, чтобы очень плотно покрыть то, что встречается в жизни. Шагом в эту сторону является модель Genie.
Исследователи собрали датасет из 30к часов неразмеченных видео с платформерами из интернета. Далее обучили генеративную модель следующего кадра при условии предыдущих кадров и сделанного действия.
Конечно, есть проблема в том, что данные о действиях не размечены. Чтобы это обойти, при обучении используют автоэнкодер с небольшим дискретным боттлнеком (т.е. VQ-VAE) с размером словаря 8 - количеством возможных действий.
Как в итоге происходит инференс Genie - вы подаёте промпт-картинку в модель в качестве первого кадра игры. Далее вы каждый шаг должны подавать ей действие и она будет генерировать вам следующий кадр. Таким образом, с учётом датасета, можно сгенерировать платформер на основе чего угодно - сгенерированной картинки, рисунка, фотографии, и играть в него. Судя по видео с сайта, качество не огонь, но как-то работает.
Авторы упоминают Ada, как площадку для тестирования RL-агентов, но утверждают, что она ограничена, а их подход при должном масштабировании и развитии приведёт к тому, что у нас будет возможность сгенерировать любую вообразимую задачу. С такой средой, мы сможем обучать гига-мега-агентов, умеющих играть в любую игру, а значит, что-то, близкое к AGI.
Я с этим подходом не согласен. Это дублирует логику из LLM - закинем побольше данных, компьюта в текущие методы и получим модель, умеющую "всё", потому что мы учили её на "всём". Но как раз опыт GPT нам показывает, что способность к обучаемости у такой системы слаба. Да, можно будет получить роботов-уборщиков, роботов-поваров, но это будет всё ещё маленькое обобщение трейнсета.
А вот игры по промпту - это весело.
@knowledge_accumulator
👍9❤3🔥1
Почему параметризация вашего поведения имеет значения
В недавнем посте я упоминал о поведении - том, какие действия вы совершаете в каждой ситуации. Очень большую роль играет не оно само, а его параметризация.
В RL самым простым способом задать policy является "таблица" - это когда на каждый возможный случай есть независимая реакция. В реальной жизни этот подход работает ужасно. Но почему?
Представим жизнь, как цепочку состояний, в каждом из которых вы должны выбрать действие. Реальные состояния никогда не повторяются, и поэтому при "табличном" подходе вы будете каждый раз принимать отдельное решение. У этого есть две проблемы:
1) Одно действие оказывает околонулевое влияние на результат. Никакой отдельный день игры в доту или поход в KFC не испортит вам жизнь
2) Затраты силы воли на "полезное" маленькое решение отнюдь не очень маленькие
Таким образом, у вашего мозга нет почти никакой причины поступать правильно в каждый момент. Но суммарно это выливается в плохие последствия. А как это починить?
Необходимо группировать состояния по общим признакам и обучить свой мозг принимать решение в зависимости от обобщённых признаков, а не конкретной ситуации. Рассмотрим простой пример - каждый день вы идёте на работу и проходите мимо кофейни, где ваш любимый капучино стоит 3.5 фунта.
Все эти разы можно объединить по контексту в одну ситуацию, тогда вашим действием будет ответ на "беру ли я кофе по пути на работу?" Цена такого действия гораздо выше - вместо 3.5 фунтов это будет 70 фунтов в месяц, 840 фунтов в год. При этом, вам достаточно один раз применить силу воли и через месяц вам будет ничего не стоить поступать правильно в каждый отдельный момент.
Объединять действия по контексту можно и более широко - "покупаю ли я то, зачем бы специально не приехал сюда из дома?". Чем более грамотно вы упакуете вашу стратегию, тем меньше затрат силы воли и неоптимальности вы получите. Иначе говоря, вам нужно выработать правильную мета-стратегию - "как я группирую ситуации и принимаю решения?" - её параметризация оказывает безумное влияние на результат.
Однако, не забывайте, что всё это только тактическое планирование. Принятие стратегических решений - о вашем переезде, выборе карьеры и места работы оказывает куда большее влияние, чем любая стратегия про покупки. Неэкономный ML-инженер переиграет экономного музыканта.
Бывают также и стратегические обобщённые решения - "Как сильно я готов менять свою карьеру на более выгодную?", "Беру ли я недвижимость в аренду или в ипотеку?" и т.д.
Желаю вам хороших мета-стратегий, дорогие читатели.
@knowledge_accumulator
В недавнем посте я упоминал о поведении - том, какие действия вы совершаете в каждой ситуации. Очень большую роль играет не оно само, а его параметризация.
В RL самым простым способом задать policy является "таблица" - это когда на каждый возможный случай есть независимая реакция. В реальной жизни этот подход работает ужасно. Но почему?
Представим жизнь, как цепочку состояний, в каждом из которых вы должны выбрать действие. Реальные состояния никогда не повторяются, и поэтому при "табличном" подходе вы будете каждый раз принимать отдельное решение. У этого есть две проблемы:
1) Одно действие оказывает околонулевое влияние на результат. Никакой отдельный день игры в доту или поход в KFC не испортит вам жизнь
2) Затраты силы воли на "полезное" маленькое решение отнюдь не очень маленькие
Таким образом, у вашего мозга нет почти никакой причины поступать правильно в каждый момент. Но суммарно это выливается в плохие последствия. А как это починить?
Необходимо группировать состояния по общим признакам и обучить свой мозг принимать решение в зависимости от обобщённых признаков, а не конкретной ситуации. Рассмотрим простой пример - каждый день вы идёте на работу и проходите мимо кофейни, где ваш любимый капучино стоит 3.5 фунта.
Все эти разы можно объединить по контексту в одну ситуацию, тогда вашим действием будет ответ на "беру ли я кофе по пути на работу?" Цена такого действия гораздо выше - вместо 3.5 фунтов это будет 70 фунтов в месяц, 840 фунтов в год. При этом, вам достаточно один раз применить силу воли и через месяц вам будет ничего не стоить поступать правильно в каждый отдельный момент.
Объединять действия по контексту можно и более широко - "покупаю ли я то, зачем бы специально не приехал сюда из дома?". Чем более грамотно вы упакуете вашу стратегию, тем меньше затрат силы воли и неоптимальности вы получите. Иначе говоря, вам нужно выработать правильную мета-стратегию - "как я группирую ситуации и принимаю решения?" - её параметризация оказывает безумное влияние на результат.
Однако, не забывайте, что всё это только тактическое планирование. Принятие стратегических решений - о вашем переезде, выборе карьеры и места работы оказывает куда большее влияние, чем любая стратегия про покупки. Неэкономный ML-инженер переиграет экономного музыканта.
Бывают также и стратегические обобщённые решения - "Как сильно я готов менять свою карьеру на более выгодную?", "Беру ли я недвижимость в аренду или в ипотеку?" и т.д.
Желаю вам хороших мета-стратегий, дорогие читатели.
@knowledge_accumulator
👍17❤6🔥4
AlphaStar Unplugged: Large-Scale Offline Reinforcement Learning [2024]
Я уже писал про AlphaStar - RL-агента, которого обучили играть в старкрафт на уровне 99.8 перцентили. На это было потрачено сумасшедшее количество времени в режиме "онлайн"-обучения.
Человек умеет вырабатывать навыки просто засчёт наблюдения за действиями других. Насколько хорошо это делают текущие алгоритмы? Для измерения этого авторы предлагают следующий бенчмарк оффлайн-RL-алгоритмов.
Берём 30 лет данных, 1.4 миллиона игр и пытаемся обучить наиболее сильный алгоритм. Весь код для подготовки данных и всякого прочего, кстати, выложен, что не сильно свойственно Deepmind.
В качестве архитектуры берём ~того же гигамонстра, что и в оригинале, который умеет переварить всевозможные входы и выдать одно из огромного числа возможных действий. Но архитектура здесь - дело десятое.
Главное, что замеряют авторы - это разные способы обучения такой модели. Самый глупый бейзлайн - обучение повторять поведение игрока на всём датасете (
В статье также прогоняют всякие изощрённые оффлайн-RL-штуки, такие, как Offline Actor-Critic. И что тут сказать - насколько же они не впечатляют в сравнении с
Самым лучшим алгоритмом оказался
Существует фундаментальный предел производительности агента в подобном сетапе. Я слабо верю, что он находится на уровне, сопоставимом с простой имитацией лучших игроков. Тем интереснее то, что ни один из текущих методов не достигает большого прорыва по сравнению с ней. А вы как считаете, есть ли алгоритм, который посмотрит на такой датасет и сразу выдаст superhuman performance?
@knowledge_accumulator
Я уже писал про AlphaStar - RL-агента, которого обучили играть в старкрафт на уровне 99.8 перцентили. На это было потрачено сумасшедшее количество времени в режиме "онлайн"-обучения.
Человек умеет вырабатывать навыки просто засчёт наблюдения за действиями других. Насколько хорошо это делают текущие алгоритмы? Для измерения этого авторы предлагают следующий бенчмарк оффлайн-RL-алгоритмов.
Берём 30 лет данных, 1.4 миллиона игр и пытаемся обучить наиболее сильный алгоритм. Весь код для подготовки данных и всякого прочего, кстати, выложен, что не сильно свойственно Deepmind.
В качестве архитектуры берём ~того же гигамонстра, что и в оригинале, который умеет переварить всевозможные входы и выдать одно из огромного числа возможных действий. Но архитектура здесь - дело десятое.
Главное, что замеряют авторы - это разные способы обучения такой модели. Самый глупый бейзлайн - обучение повторять поведение игрока на всём датасете (
BC
). Чуть более умный - это зафайнтюнить такую модель на играх более сильной части игроков (FT-BC
).В статье также прогоняют всякие изощрённые оффлайн-RL-штуки, такие, как Offline Actor-Critic. И что тут сказать - насколько же они не впечатляют в сравнении с
FT-BC
. У меня давно есть вопрос к тому, насколько эта технология работает, т.к. уже не первый раз наблюдаю подобную картину.Самым лучшим алгоритмом оказался
MuZero Unplugged + inference MCTS
, про который я расскажу в другой раз, он немного лучше FT-BC. Так или иначе, все они безнадёжно отстают от онлайн-алгоритма, т.к играют на уровне ~85 перцентили.Существует фундаментальный предел производительности агента в подобном сетапе. Я слабо верю, что он находится на уровне, сопоставимом с простой имитацией лучших игроков. Тем интереснее то, что ни один из текущих методов не достигает большого прорыва по сравнению с ней. А вы как считаете, есть ли алгоритм, который посмотрит на такой датасет и сразу выдаст superhuman performance?
@knowledge_accumulator
👍9🔥4❤2
Почему человечество может надолго прийти в упадок
Не знаю, как вы, но у меня нет слепого оптимизма по отношению к будущему нашей цивилизации. Есть ряд долгосрочных фактов и тенденций, которые могут говорить совершенно об обратном.
- Процветание - это аномалия
Бурное развитие цивилизации - скорее редкость, чем правило, так было далеко не всегда. "Тёмные века" - период упадка Европы после падения Римской империи - так называют период аж в 500 лет. При этом налаживание механизмов, открывших путь к сегодняшнему богатству, произошло всего лишь несколько столетий назад.
- Деградация свободного рынка
Сторонники левых взглядов по всему миру одерживают победу за победой. Они последовательно уничтожают экономические лифты и позволяют сверхбогатым цементировать своё текущее положение. Безумные налоги на средний/обеспеченный класс и выставление барьеров для нового бизнеса показали себя отличными инструментами в этом деле.
- Уничтожение положительных стимулов, введение отрицательных стимулов
Здесь также левые одерживают масштабные победы. Государственные пособия, медстраховки, пенсии всё больше вознаграждают тех, кто вносит наименьший положительный вклад в экономику, а платят за это те, кто вносят наиболее положительный вклад.
- Слабое положение сторонников рынка
Оппозицию увеличению государства часто составляют люди, которые тоже хотят увеличить государство, но по-другому. В США, вместо того, чтобы противопоставлять демократам свободу, республиканцы запрещают аборты и искусственное мясо, чем только отпугивают людей. В странах первого мира нет больших про-рыночных политических сил. При этом много людей поддерживают свободный рынок неявно, но они не объединены между собой вокруг этой идеологии.
- Почти исчез положительный отбор
Оптимизация в генетическом алгоритме двигает популяцию в ту сторону, которая в среднем оставляет больше потомства, чем другие. На сегодняшний день это отрицательное (с точки зрения долгосрочного развития) направление. "Идиократия", конечно, всего лишь комедия, но у людей есть скилл перенимать в реальность элементы антиутопий.
- Кризис демократической концепции
Уязвимости демократии всё больше эксплуатируются властью стран первого мира. Импорт избирателей, увеличение доли "бюджетников" - всё это укрепляет текущую власть, и она будет этим пользоваться.
Эти вопросы необходимо будет решать в политической плоскости, чтобы избежать отрицательных сценариев. Надеюсь, у меня получится к этому приложить руку в какой-то момент, но для этого нужны ресурсы, которых у меня пока, к сожалению, нет.
@knowledge_accumulator
Не знаю, как вы, но у меня нет слепого оптимизма по отношению к будущему нашей цивилизации. Есть ряд долгосрочных фактов и тенденций, которые могут говорить совершенно об обратном.
- Процветание - это аномалия
Бурное развитие цивилизации - скорее редкость, чем правило, так было далеко не всегда. "Тёмные века" - период упадка Европы после падения Римской империи - так называют период аж в 500 лет. При этом налаживание механизмов, открывших путь к сегодняшнему богатству, произошло всего лишь несколько столетий назад.
- Деградация свободного рынка
Сторонники левых взглядов по всему миру одерживают победу за победой. Они последовательно уничтожают экономические лифты и позволяют сверхбогатым цементировать своё текущее положение. Безумные налоги на средний/обеспеченный класс и выставление барьеров для нового бизнеса показали себя отличными инструментами в этом деле.
- Уничтожение положительных стимулов, введение отрицательных стимулов
Здесь также левые одерживают масштабные победы. Государственные пособия, медстраховки, пенсии всё больше вознаграждают тех, кто вносит наименьший положительный вклад в экономику, а платят за это те, кто вносят наиболее положительный вклад.
- Слабое положение сторонников рынка
Оппозицию увеличению государства часто составляют люди, которые тоже хотят увеличить государство, но по-другому. В США, вместо того, чтобы противопоставлять демократам свободу, республиканцы запрещают аборты и искусственное мясо, чем только отпугивают людей. В странах первого мира нет больших про-рыночных политических сил. При этом много людей поддерживают свободный рынок неявно, но они не объединены между собой вокруг этой идеологии.
- Почти исчез положительный отбор
Оптимизация в генетическом алгоритме двигает популяцию в ту сторону, которая в среднем оставляет больше потомства, чем другие. На сегодняшний день это отрицательное (с точки зрения долгосрочного развития) направление. "Идиократия", конечно, всего лишь комедия, но у людей есть скилл перенимать в реальность элементы антиутопий.
- Кризис демократической концепции
Уязвимости демократии всё больше эксплуатируются властью стран первого мира. Импорт избирателей, увеличение доли "бюджетников" - всё это укрепляет текущую власть, и она будет этим пользоваться.
Эти вопросы необходимо будет решать в политической плоскости, чтобы избежать отрицательных сценариев. Надеюсь, у меня получится к этому приложить руку в какой-то момент, но для этого нужны ресурсы, которых у меня пока, к сожалению, нет.
@knowledge_accumulator
👍43🤡30💯4❤2😁2👎1🤔1🤯1😱1😢1
Offline Actor-Critic Reinforcement Learning Scales to Large Models [2024]
В позапрошлом посте я выразил скептицизм по поводу offline RL, но в комментариях добрый человек посоветовал изучить более качественные работы на эту тему, за что ему спасибо. Берите пример!
Вкратце, суть предложенного алгоритма (
Авторы сравнивают свой подход с обучением копированию стратегии из данных (тут это называется
Интересные детали видны при более детальном рассмотрении - на тех задачах, в которых данные собирались хорошей экспертной стратегией, ни
Кроме этого, авторы попробовали добавить онлайн-составляющую в алгоритм. Выученный PAC выпускали погулять и собрать ещё немного данных. Далее запирали его вместе со старым и собранным датасетом и дообучали. На нескольких задачах авторы репортят довольно быстрый рост производительности за несколько итераций.
У такого полуонлайн-подхода есть проблема - от того, что мы запрещаем модели обновляться во время сбора нового датасета, получать данные дешевле не становится.
Я согласен с комментарием о том, что в таких работах очень многое завязано на реализацию конкретных алгоритмов, и поэтому сравнение с бейзлайнами может страдать. Именно поэтому я бы хотел, чтобы авторы алгоритмов сабмитили код в какой-нибудь сервис с лидербордом, в этом случае автор каждого алгоритма выжал бы из него максимум. Статьи - плохой формат.
@knowledge_accumulator
В позапрошлом посте я выразил скептицизм по поводу offline RL, но в комментариях добрый человек посоветовал изучить более качественные работы на эту тему, за что ему спасибо. Берите пример!
Вкратце, суть предложенного алгоритма (
PAC
) - мы обучаем стратегию, которая должна сходиться к оптимальной при наличии онлайн-данных, но, так как наши данные не меняются, мы добавляем регуляризацию на то, чтобы сильно не уходить от простого копирования стратегии в данных. Простите, RL-щики, за такое пошлое упрощение.Авторы сравнивают свой подход с обучением копированию стратегии из данных (тут это называется
BC + Q
). Обучают серию моделей от 32M до 988M параметров и смотрят на то, как скейлятся оба алгоритма. По графикам из статьи видно, что в таком сравнении offline-RL выигрывает.Интересные детали видны при более детальном рассмотрении - на тех задачах, в которых данные собирались хорошей экспертной стратегией, ни
BC+Q
, ни PAC
, ни даже подтюненный a-PAC
не догоняют эксперта. Тем не менее, если стратегия для сбора данных плохого качества, PAC умеет не копировать плохое поведение, за что ему похвала.Кроме этого, авторы попробовали добавить онлайн-составляющую в алгоритм. Выученный PAC выпускали погулять и собрать ещё немного данных. Далее запирали его вместе со старым и собранным датасетом и дообучали. На нескольких задачах авторы репортят довольно быстрый рост производительности за несколько итераций.
У такого полуонлайн-подхода есть проблема - от того, что мы запрещаем модели обновляться во время сбора нового датасета, получать данные дешевле не становится.
Я согласен с комментарием о том, что в таких работах очень многое завязано на реализацию конкретных алгоритмов, и поэтому сравнение с бейзлайнами может страдать. Именно поэтому я бы хотел, чтобы авторы алгоритмов сабмитили код в какой-нибудь сервис с лидербордом, в этом случае автор каждого алгоритма выжал бы из него максимум. Статьи - плохой формат.
@knowledge_accumulator
👍11❤4🔥2👌1
The Primacy Bias in Deep Reinforcement Learning [2022] - нейросети тупеют?
Многие из нас обучают нейросеть на фиксированном датасете и всё работает неплохо. Но знаете ли вы, что если обучать нейросеть последовательно на разных задачах, то она со временем теряет свою "пластичность" и начинает сходиться гораздо хуже? Про это есть множество статей, но меня этот эффект заинтересовал в контексте обучения с подкреплением.
Во многих RL алгоритмах есть Replay Buffer - в него мы складываем недавние траектории агента, на которых потом обучаем нейросеть с какой-то RL-ной функцией ошибки. Авторы показали сценарий, в котором нейросеть демонстрирует своё отупение:
Случайным агентом собирают 100 шагов в среде и затем делают 100к шагов оптимизации на получившемся Replay Buffer. Нейросеть получает непоправимый ущерб и после возобновления стандартного обучения уже не может прогрессировать. При этом, дело не в том, что этот агент собирает плохие данные.
Если собрать травмированной нейросетью Replay Buffer, а затем обучать новую нейросеть на этих данных, то она сможет выкарабкаться, а вот травмированная уже нет.
Авторы сделали предположение - а что, если RL-нейросети даже в обычных ситуациях теряют свою способность к обучению, излишне фокусируясь на первых полученных данных? Как можно сделать агента более пластичным в процессе длительного обучения?
Гениально простой хак - давайте заново инициализировать нейросеть каждые N шагов алгоритма. Это не означает запуск с нуля, ведь мы сохраняем наш Replay Buffer, а качество большинства алгоритмов зависит именно от собранных данных.
Результаты на картинке: конечно, в моменты сброса весов наблюдается резкая просадка - но в большинстве задач и в среднем наша итоговая производительность в результате обучения возрастает. Нейросеть быстро восстанавливается, обучаясь на недавно собранных данных.
Я обожаю, когда контринтуитивные и простые решения ведут к большому росту метрик. В то же время, скорее всего, это означает, что существуют ещё в разы больше подобных улучшений, до которых мы не догадаемся.
@knowledge_accumulator
Многие из нас обучают нейросеть на фиксированном датасете и всё работает неплохо. Но знаете ли вы, что если обучать нейросеть последовательно на разных задачах, то она со временем теряет свою "пластичность" и начинает сходиться гораздо хуже? Про это есть множество статей, но меня этот эффект заинтересовал в контексте обучения с подкреплением.
Во многих RL алгоритмах есть Replay Buffer - в него мы складываем недавние траектории агента, на которых потом обучаем нейросеть с какой-то RL-ной функцией ошибки. Авторы показали сценарий, в котором нейросеть демонстрирует своё отупение:
Случайным агентом собирают 100 шагов в среде и затем делают 100к шагов оптимизации на получившемся Replay Buffer. Нейросеть получает непоправимый ущерб и после возобновления стандартного обучения уже не может прогрессировать. При этом, дело не в том, что этот агент собирает плохие данные.
Если собрать травмированной нейросетью Replay Buffer, а затем обучать новую нейросеть на этих данных, то она сможет выкарабкаться, а вот травмированная уже нет.
Авторы сделали предположение - а что, если RL-нейросети даже в обычных ситуациях теряют свою способность к обучению, излишне фокусируясь на первых полученных данных? Как можно сделать агента более пластичным в процессе длительного обучения?
Гениально простой хак - давайте заново инициализировать нейросеть каждые N шагов алгоритма. Это не означает запуск с нуля, ведь мы сохраняем наш Replay Buffer, а качество большинства алгоритмов зависит именно от собранных данных.
Результаты на картинке: конечно, в моменты сброса весов наблюдается резкая просадка - но в большинстве задач и в среднем наша итоговая производительность в результате обучения возрастает. Нейросеть быстро восстанавливается, обучаясь на недавно собранных данных.
Я обожаю, когда контринтуитивные и простые решения ведут к большому росту метрик. В то же время, скорее всего, это означает, что существуют ещё в разы больше подобных улучшений, до которых мы не догадаемся.
@knowledge_accumulator
👍20🤔7🔥4❤2👏1🤯1🤩1🙏1💯1
Почему one person billion dollar companies не станут нормой
Некоторые AI-энтузиасты, плохо разбирающиеся в экономике, верят, что с появлением более крутого AI будет сильно легче сесть и в одни руки создать компанию на миллиард. Давайте обсудим, почему это не имеет отношения к реальности.
Как и любые другие инструменты - языки программирования, фреймворки, облачные сервисы, более продвинутый AI увеличит продуктивность работы инженера, причём намного сильнее. Это создаст большую несбалансированность на рынке, при которой создать свою компанию с помощью ИИ станет слишком выгодно по отношению к другим способам заработка денег.
Если предположить, что эта технология появилась только у одного человека, то он действительно смог бы построить компанию, стоящую миллиард, только с помощью новых инструментов. Однако, такая возможность появится у всех и предприниматели массово побегут создавать подобные предприятия. Это сотрясёт экономику, но она быстро найдёт новую точку равновесия. В ней мы увидим:
1) Резкий рост числа компаний, поставляющих те товары/услуги, создание которых станет легко автоматизировать
2) Обрушение цен на автоматизируемую часть услуг, а также на производные от них.
Это следствия базовых операций над кривыми спроса и предложения, никакой отсебятины.
Потребители, конечно, выиграют от таких изменений, но пора вспомнить о том самом миллиарде долларов. После продажи такой компании у вас будет огромный дом и собственный лес, ведь так?
К сожалению, миллиард долларов - это всего лишь какая-то доля
В некотором смысле мы всё же станем "миллиардерами", ведь сможем позволить себе некоторые штуки, которые доступны только за миллиард, как когда-то компьютеры или пылесосы.
Два сценария, в которых стать миллиардером будет можно в одного - либо если ФРС напечатает ещё x100 долларов, либо компания, создавшая новый AI, сильно ограничит к нему доступ, чтобы можно было разбогатеть только с их одобрения. Но такого не будет, правда?
@knowledge_accumulator
Некоторые AI-энтузиасты, плохо разбирающиеся в экономике, верят, что с появлением более крутого AI будет сильно легче сесть и в одни руки создать компанию на миллиард. Давайте обсудим, почему это не имеет отношения к реальности.
Как и любые другие инструменты - языки программирования, фреймворки, облачные сервисы, более продвинутый AI увеличит продуктивность работы инженера, причём намного сильнее. Это создаст большую несбалансированность на рынке, при которой создать свою компанию с помощью ИИ станет слишком выгодно по отношению к другим способам заработка денег.
Если предположить, что эта технология появилась только у одного человека, то он действительно смог бы построить компанию, стоящую миллиард, только с помощью новых инструментов. Однако, такая возможность появится у всех и предприниматели массово побегут создавать подобные предприятия. Это сотрясёт экономику, но она быстро найдёт новую точку равновесия. В ней мы увидим:
1) Резкий рост числа компаний, поставляющих те товары/услуги, создание которых станет легко автоматизировать
2) Обрушение цен на автоматизируемую часть услуг, а также на производные от них.
Это следствия базовых операций над кривыми спроса и предложения, никакой отсебятины.
Потребители, конечно, выиграют от таких изменений, но пора вспомнить о том самом миллиарде долларов. После продажи такой компании у вас будет огромный дом и собственный лес, ведь так?
К сожалению, миллиард долларов - это всего лишь какая-то доля
X
от всей денежной массы. Количество людей с миллиардом долларов не может вырасти в 1000 раз, какой AI не изобретай, потому что миллиардов на всех не хватит. Из-за 2 вышеупомянутых следствий использование нового AI будет вопросом выживания, а не резкого обогащения.В некотором смысле мы всё же станем "миллиардерами", ведь сможем позволить себе некоторые штуки, которые доступны только за миллиард, как когда-то компьютеры или пылесосы.
Два сценария, в которых стать миллиардером будет можно в одного - либо если ФРС напечатает ещё x100 долларов, либо компания, создавшая новый AI, сильно ограничит к нему доступ, чтобы можно было разбогатеть только с их одобрения. Но такого не будет, правда?
@knowledge_accumulator
👍19👎2❤1💯1
Почему интересен ARC prize?
Для тех, кто пропустил - неделю назад был запущен конкурс на миллион, в котором нужно решить ARC - простейший "тест на IQ" для человека/алгоритма. В нём нужно по паре-тройке примеров увидеть закономерность и применить её на тестовом образце (см. пример задачи на картинке). Это проверяет алгоритм на обучаемость, а не на запоминание данных из интернета.
Как я уже недавно писал, если в лоб дать такие задачи GPT-4, то она работает достаточно стрёмно. В то же время, лидируют подходы на основе перебора всевозможных последовательностей элементарных операций. Нужно задать набор таких операций, например, из 50 штук, создать 50^4 "программ" и прогнать их на тренировочных образцах, применив успешные к тесту.
Больше года назад, как только я начал вести этот канал, я писал о том, что совместная работа перебора и нейросетей - это очень мощный инструмент. Это жжёт в Go, в математике, в приложениях. Поиску нужен качественный гайд, чтобы тащить, и таким гайдом вполне может быть LLM, как мы увидели на примере FunSearch.
Такой подход применим при решении "NP-задач", для которых мы можем быстро проверить кандидата на решение. Наличие только пары примеров в ARC сильно усложняет проблему, так как "оптимизация" программы будет работать плохо и нам легче на них "переобучиться" программой. Тем не менее, нет сомнений, что скачка в качестве достичь удастся, и такие попытки уже делаются. Осталось только дождаться сабмитов таких подходов в настоящий тест.
Тем не менее, есть проблема применимости такого подхода. Далеко не всегда в реальности мы можем генерировать тысячи/миллионы вариантов с помощью большой модели, применяя поверх какую-то проверялку, потому что быстрой проверялки просто нет. Для применимости этой большой модели в лоб к произвольной задаче нам нужно получить такую, которая как минимум решит ARC без помощи дополнительного перебора.
А зачем именно нужна такая модель? 2 простых юзкейса:
1) Хочется иногда с чашечкой латте провести время за глубокой дискуссией с моделькой, знающей и хорошо понимающей информацию из интернета. Если вы пробовали долго общаться с моделькой типа GPT-4 на сложную тему, вы замечали, что она вообще не вдупляет.
2) Запустить цикл технологической сингулярности
Про второе поговорим позже на этой неделе.
@knowledge_accumulator
Для тех, кто пропустил - неделю назад был запущен конкурс на миллион, в котором нужно решить ARC - простейший "тест на IQ" для человека/алгоритма. В нём нужно по паре-тройке примеров увидеть закономерность и применить её на тестовом образце (см. пример задачи на картинке). Это проверяет алгоритм на обучаемость, а не на запоминание данных из интернета.
Как я уже недавно писал, если в лоб дать такие задачи GPT-4, то она работает достаточно стрёмно. В то же время, лидируют подходы на основе перебора всевозможных последовательностей элементарных операций. Нужно задать набор таких операций, например, из 50 штук, создать 50^4 "программ" и прогнать их на тренировочных образцах, применив успешные к тесту.
Больше года назад, как только я начал вести этот канал, я писал о том, что совместная работа перебора и нейросетей - это очень мощный инструмент. Это жжёт в Go, в математике, в приложениях. Поиску нужен качественный гайд, чтобы тащить, и таким гайдом вполне может быть LLM, как мы увидели на примере FunSearch.
Такой подход применим при решении "NP-задач", для которых мы можем быстро проверить кандидата на решение. Наличие только пары примеров в ARC сильно усложняет проблему, так как "оптимизация" программы будет работать плохо и нам легче на них "переобучиться" программой. Тем не менее, нет сомнений, что скачка в качестве достичь удастся, и такие попытки уже делаются. Осталось только дождаться сабмитов таких подходов в настоящий тест.
Тем не менее, есть проблема применимости такого подхода. Далеко не всегда в реальности мы можем генерировать тысячи/миллионы вариантов с помощью большой модели, применяя поверх какую-то проверялку, потому что быстрой проверялки просто нет. Для применимости этой большой модели в лоб к произвольной задаче нам нужно получить такую, которая как минимум решит ARC без помощи дополнительного перебора.
А зачем именно нужна такая модель? 2 простых юзкейса:
1) Хочется иногда с чашечкой латте провести время за глубокой дискуссией с моделькой, знающей и хорошо понимающей информацию из интернета. Если вы пробовали долго общаться с моделькой типа GPT-4 на сложную тему, вы замечали, что она вообще не вдупляет.
2) Запустить цикл технологической сингулярности
Про второе поговорим позже на этой неделе.
@knowledge_accumulator
👍19🔥6🥴3❤1😁1
Как начнётся технологическая сингулярность
Илон Маск ввёл в обиход такой термин, как
При производстве спускается в унитаз
Моя интуиция заключается в том, что поиск алгоритма производства объекта - это и есть "технологическое развитие", и это является "NP-задачей". У нас есть экспоненциально растущее количество способов "алгоритмов сборки", но его применение работает быстро и мы сразу можем понять получившийся
Видимо, не существует аналитического способа быстро решать NP-задачи. Но человек в самых разных ситуациях находит способы генерировать решения лучше, чем перебор. Он это делает засчёт обобщения имеющейся информации о реальном мире. Эта способность превращать историю наблюдений в решения NP-задач, на мой взгляд, и есть главная суть нашего интеллекта, которая демонстрируется везде, от ARC до игры в minecraft.
Мы можем "измерить" интеллект уровнем решений, которые выдаёт система. Здесь определим
И вот наконец - как произойдёт сингулярность? Всё начнётся, когда будет достигнута критическая точка, где решения NP-задач, выдаваемые системой, будут лучше тех, что выдаёт человечество. Систему попросят перепроектировать свой алгоритм, запустится цикл, который приблизит её к потолку -
Я думаю, что внешняя публика может заметить наступление сингулярности именно в этот момент - когда из ниоткуда появятся новые компании по производству чипов, делающие это подозрительно лучше, чем те же NVIDIA и TSMC на своих этапах. Если это будете вы, то передел мира произойдёт в вашу пользу. Если это буду я - не палите контору.
"Сингулярности" то, кстати, никакой и не будет - у
@knowledge_accumulator
Илон Маск ввёл в обиход такой термин, как
idiot_index
. Если вы производите что-то из каких-то входных ресурсов (в самом широком смысле), то индекс определяется как отношение себестоимости конечного продукта к стоимости исходных ресурсов.При производстве спускается в унитаз
(idiot_index - 1)
от стоимости входных ресурсов. Индекс, равный одному, означает верхний предел оптимальности производства, создание без потерь. Что толкает индекс вверх? Главным фактором является несовершенство алгоритма.Моя интуиция заключается в том, что поиск алгоритма производства объекта - это и есть "технологическое развитие", и это является "NP-задачей". У нас есть экспоненциально растущее количество способов "алгоритмов сборки", но его применение работает быстро и мы сразу можем понять получившийся
idiot_index
.Видимо, не существует аналитического способа быстро решать NP-задачи. Но человек в самых разных ситуациях находит способы генерировать решения лучше, чем перебор. Он это делает засчёт обобщения имеющейся информации о реальном мире. Эта способность превращать историю наблюдений в решения NP-задач, на мой взгляд, и есть главная суть нашего интеллекта, которая демонстрируется везде, от ARC до игры в minecraft.
Мы можем "измерить" интеллект уровнем решений, которые выдаёт система. Здесь определим
meta_idiot_index (MII)
, равный отношению интеллекта системы к её ресурсным затратам. У нас есть пример - человек с мозгом в 20вт
, выдающий уровень X
. Очевидно, фундаментальный предел MII
выше, чем X / 20
, что говорит о захватывающих перспективах. MII
равен произведению составляющих на разных этапах технологического небоскрёба. На его вершине стоит алгоритм интеллекта, ниже фреймворки и уровни вложенности проектирования hardware, вплоть до выбора атомов. Чем выше, тем легче заменить кусок на новый, т.к. нужно переделывать всё, что выше.И вот наконец - как произойдёт сингулярность? Всё начнётся, когда будет достигнута критическая точка, где решения NP-задач, выдаваемые системой, будут лучше тех, что выдаёт человечество. Систему попросят перепроектировать свой алгоритм, запустится цикл, который приблизит её к потолку -
MII
, достижимый в рамках существующих ниже этажей. Далее система будет переделывать software-этажи одни за одним, каждый раз упираясь в лимит. В какой-то момент её применят к hardware. В физическом мире всё гораздо медленнее и стоит физических ресурсов. Очевидно, что смачный кусок MII
содержится в том, как материалы и энергия превращаются в базовый компьют, и оно обязательно будет переделано. Я думаю, что внешняя публика может заметить наступление сингулярности именно в этот момент - когда из ниоткуда появятся новые компании по производству чипов, делающие это подозрительно лучше, чем те же NVIDIA и TSMC на своих этапах. Если это будете вы, то передел мира произойдёт в вашу пользу. Если это буду я - не палите контору.
"Сингулярности" то, кстати, никакой и не будет - у
MII
точно есть фундаментальный предел. Будет экспоненциальный рост, как сейчас у человечества, но с константой побольше. И помните, что акции NVIDIA в этот момент сделают крутое пике, так что, покупайте индекс.@knowledge_accumulator
👍14🔥7🤔3🥴3❤2🙈1
Data-Efficient Reinforcement Learning with Self-Predictive Representations [2020] - хак для data-эффективного RL
Напомню, что у RL-алгоритмов ключевое препятствие на пути к успеху - это необходимое количество данных для его обучения. Это фундаментальное ограничение задачи, но это не значит, что мы в него упираемся текущими алгоритмами.
Агент в ходе взаимодействия со средой получает огромное количество информации - цепочки состояний, действий и наград из среды. Эффективность "усвоения" этой информации зависит от самого алгоритма. Я уже писал про EfficientZero - призёра по обучению на Atari за 100к шагов. Сегодня я расскажу об альтернативном подходе, который потом лёг в основу первого места в этой таблице.
По сути, SPR - это хак, дополняющий произвольный RL-алгоритм. Он регуляризует модель, заставляя её выучивать представления, имеющие предсказательную силу внутри собранных цепочек состояний-действий.
Берём энкодер - первые слои нашей RL-сети (
Берём K+1 последовательных состояний/действий. Кодируем первое в
У этого алгоритма очень много деталей реализации. Дата-аугментации, "таргет"-энкодер, в общей сложности 40 гиперпараметров, занимающие почти целую страницу. Но у авторов получилось затюнить его до вменяемого состояния и получить наилучший на тот момент алгоритм.
Вновь мы видим проблемы ручного дизайна алгоритмов - зависимость результатов от гиперпараметров огромная, при этом их оптимальные значения зависимы друг от друга и их совместный подбор сильно напоминает чёрную магию.
В следующих постах разберём, как всё это легло в основу текущего лидера в Atari100k.
@knowledge_accumulator
Напомню, что у RL-алгоритмов ключевое препятствие на пути к успеху - это необходимое количество данных для его обучения. Это фундаментальное ограничение задачи, но это не значит, что мы в него упираемся текущими алгоритмами.
Агент в ходе взаимодействия со средой получает огромное количество информации - цепочки состояний, действий и наград из среды. Эффективность "усвоения" этой информации зависит от самого алгоритма. Я уже писал про EfficientZero - призёра по обучению на Atari за 100к шагов. Сегодня я расскажу об альтернативном подходе, который потом лёг в основу первого места в этой таблице.
По сути, SPR - это хак, дополняющий произвольный RL-алгоритм. Он регуляризует модель, заставляя её выучивать представления, имеющие предсказательную силу внутри собранных цепочек состояний-действий.
Берём энкодер - первые слои нашей RL-сети (
s
-> z
), модель перехода (z_t, a_t
-> z_t+1
) (это новая нейросеть), проекция (z
->g
) (это первый MLP-слой у RL-сети) и доп. слой q
(я не понял, зачем он). Применяем это следующим образом:Берём K+1 последовательных состояний/действий. Кодируем первое в
z_0
, далее с помощью модели перехода генерируем z_1
, ..., z_k+1
. В то же время энкодером кодируем "таргет"-представления из K последующих состояний и учим на косинусную близость проекций между таргетами и тем, что получено с помощью модели перехода. Иллюстрация на картинке.У этого алгоритма очень много деталей реализации. Дата-аугментации, "таргет"-энкодер, в общей сложности 40 гиперпараметров, занимающие почти целую страницу. Но у авторов получилось затюнить его до вменяемого состояния и получить наилучший на тот момент алгоритм.
Вновь мы видим проблемы ручного дизайна алгоритмов - зависимость результатов от гиперпараметров огромная, при этом их оптимальные значения зависимы друг от друга и их совместный подбор сильно напоминает чёрную магию.
В следующих постах разберём, как всё это легло в основу текущего лидера в Atari100k.
@knowledge_accumulator
👍15❤2💯1
Танос был кое в чём прав
Напомню, что у этого злодея из Мстителей был следующий гениальный план улучшения жизни во вселенной - убить половину всех живых существ, чтобы ресурсов на каждого стало в 2 раза больше.
Подобное мышление уходят корнями в недавнее человечество. Мальтузианская ловушка - концепция из конца 18 века - делает неутешительные выводы из 2 допущений:
1) Рост населения экспоненциален
2) Производство еды не может вечно успевать за ростом количества людей
И в самом деле, из 19 века это выглядит вполне логично - количество еды, вырастаемой на квадратном метре земли, до тех пор было примерно постоянным, а суммарная площадь земли, очевидно, ограничена. Таким образом, человечество рано или поздно дойдёт до предела производства еды, а население стабилизируется на таком уровне, которому этой еды будет хватать, при этом жить оно будет на грани выживания.
Технологические прорывы индустриализации позволили нам вырваться из этой ловушки - мы умеем производить всё больше и больше еды на квадратный метр земли. Взрывной экономический рост 19-20 веков демонстрирует, что экономика человечества - не игра с нулевой суммой. Общий "пирог", который люди между собой "делят", постоянно растёт и все перцентили богатства движутся вверх.
Мальтузианскую ловушку с тех пор никто не воспринимает всерьёз. Проблема в том, что вторая аксиома имеет более широкий аналог - "фундаментальные ресурсы конечны", и ловушка эта никуда не делась.
Дело в том, что есть базовый физический ресурс, который фундаментально конечен - это энергия. Он используется абсолютно во всех сферах. Богатые общества не научились создавать богатство из пустоты - они научились потреблять больше энергии извне. Сегодня мы живём в эру энергетического изобилия, потому что энергии существует больше, чем мы способны переварить.
Понятно, что нам крайне далеко до потолка - мы используем меньше 10^-13 от энергии Солнца. Кроме того, есть потенциал увеличения энергоэффективности. Даже энергия, необходимая для выживания человека - 2000ккал в день, может быть уменьшена технологически. Предел невероятно далеко, но он есть.
Но кроме энергии есть и другие конечные ресурсы, например, пространство для жизни. Если не использовать площадь Земли всё более и более эффективно, то при увеличении численности людей цена за квадратный метр жилья будет расти, и в принципе может привести к тому, что это станет фактором, ограничивающим рост населения, что, может быть, уже происходит.
Мы обречены на вечную борьбу с Мальтузианской ловушкой, если не хотим останавливать рост уровня жизни. Но когда мы будем на пределе использования фундаментальных ресурсов, может оказаться, что единственный способ поднять уровень жизни - это щелчок пальцев. Но я ни к чему не призываю.
@knowledge_accumulator
Напомню, что у этого злодея из Мстителей был следующий гениальный план улучшения жизни во вселенной - убить половину всех живых существ, чтобы ресурсов на каждого стало в 2 раза больше.
Подобное мышление уходят корнями в недавнее человечество. Мальтузианская ловушка - концепция из конца 18 века - делает неутешительные выводы из 2 допущений:
1) Рост населения экспоненциален
2) Производство еды не может вечно успевать за ростом количества людей
И в самом деле, из 19 века это выглядит вполне логично - количество еды, вырастаемой на квадратном метре земли, до тех пор было примерно постоянным, а суммарная площадь земли, очевидно, ограничена. Таким образом, человечество рано или поздно дойдёт до предела производства еды, а население стабилизируется на таком уровне, которому этой еды будет хватать, при этом жить оно будет на грани выживания.
Технологические прорывы индустриализации позволили нам вырваться из этой ловушки - мы умеем производить всё больше и больше еды на квадратный метр земли. Взрывной экономический рост 19-20 веков демонстрирует, что экономика человечества - не игра с нулевой суммой. Общий "пирог", который люди между собой "делят", постоянно растёт и все перцентили богатства движутся вверх.
Мальтузианскую ловушку с тех пор никто не воспринимает всерьёз. Проблема в том, что вторая аксиома имеет более широкий аналог - "фундаментальные ресурсы конечны", и ловушка эта никуда не делась.
Дело в том, что есть базовый физический ресурс, который фундаментально конечен - это энергия. Он используется абсолютно во всех сферах. Богатые общества не научились создавать богатство из пустоты - они научились потреблять больше энергии извне. Сегодня мы живём в эру энергетического изобилия, потому что энергии существует больше, чем мы способны переварить.
Понятно, что нам крайне далеко до потолка - мы используем меньше 10^-13 от энергии Солнца. Кроме того, есть потенциал увеличения энергоэффективности. Даже энергия, необходимая для выживания человека - 2000ккал в день, может быть уменьшена технологически. Предел невероятно далеко, но он есть.
Но кроме энергии есть и другие конечные ресурсы, например, пространство для жизни. Если не использовать площадь Земли всё более и более эффективно, то при увеличении численности людей цена за квадратный метр жилья будет расти, и в принципе может привести к тому, что это станет фактором, ограничивающим рост населения, что, может быть, уже происходит.
Мы обречены на вечную борьбу с Мальтузианской ловушкой, если не хотим останавливать рост уровня жизни. Но когда мы будем на пределе использования фундаментальных ресурсов, может оказаться, что единственный способ поднять уровень жизни - это щелчок пальцев. Но я ни к чему не призываю.
@knowledge_accumulator
🥱19👍11💩4👎2❤1🤔1🤣1
Bigger, Better, Faster: Human-level Atari with human-level efficiency [2023] - результат 10 лет тюнинга DQN
Сегодня мы наконец обсудим чемпиона в категории Atari100k (по версии paperswithcode) - алгоритм, относительно быстро (за 100к шагов) способный достигать качества выше человеческого. Развивались события так:
DQN [2013] (пост) - первое нашумевшее применение Q-learning с нейросетью под капотом
В течение нескольких следующих лет ресёрчеры искали слабые места в алгоритме и изобретали костыли для их починки - Dueling / Double / Prioritized / Distributional (статьи) DQN. Объединив их, получили:
Rainbow [2017] (статья) - улучшенная версия DQN, работающая в разы лучше оригинала.
К ней был добавлен хак под названием SPR [2020] (пост) , сильно увеличивающий эффективность использования данных.
При обучении DQN мы "параллельно" собираем данные и обучаем модель. То. сколько шагов обучения мы делаем на каждый шаг в среде, называется Sample Ratio (или Replay Ratio). Чем он больше, тем более "дата-эффективными" мы становимся, но при сильном повышении оптимизация начинает ломаться.
Оказалось, что она прежде всего начинает ломаться из-за потери пластичности, которая, как показано в статье The Primacy Bias in Deep RL [2022] (пост), чинится периодическим сбрасыванием весов. Авторы алгоритма SR-SPR [2022] (статья) обнаружили, что SR можно поднять с 1 до 16 при помощи "мягких сбросов" - каждые N шагов веса нейросети делали равными
Наконец, авторы сегодняшней статьи - BBF - взяли SR-SPR и добавили ряд небольших улучшений - динамический горизонт планирования (гамму), регуляризацию, увеличенную сетку и пару других мелочей, а также от души затюнили гиперпараметры. Суммарно их изменения дали очень большой буст по сравнению с SP-SPR. Больше всего мне нравится картинка из статьи, приложенная к посту - на ней мы можем видеть результат прогресса в Sample Efficiency за 10 предыдущих лет.
Нужно добавить, что рост Replay Ratio увеличивает почти линейно требуемый компьют на каждый шаг, поэтому для более-менее честного сравнения на картинке нарисована кривая для RR=2, тогда как лучшая версия это RR=8 (разница где-то 15%). Интересно, что версия RR=2 прожёвывает 100к шагов (~2 часа реального времени) около 2.5 часов на половине A100, то есть учится как бы "со скоростью реальной игры".
За 10 лет от DQN до BBF дата-эффективность выросла на 2 порядка. Будет очень интересно увидеть, сколько ещё смогут выжать RL-алхимики, собирая алгоритм в ручном режиме.
@knowledge_accumulator
Сегодня мы наконец обсудим чемпиона в категории Atari100k (по версии paperswithcode) - алгоритм, относительно быстро (за 100к шагов) способный достигать качества выше человеческого. Развивались события так:
DQN [2013] (пост) - первое нашумевшее применение Q-learning с нейросетью под капотом
В течение нескольких следующих лет ресёрчеры искали слабые места в алгоритме и изобретали костыли для их починки - Dueling / Double / Prioritized / Distributional (статьи) DQN. Объединив их, получили:
Rainbow [2017] (статья) - улучшенная версия DQN, работающая в разы лучше оригинала.
К ней был добавлен хак под названием SPR [2020] (пост) , сильно увеличивающий эффективность использования данных.
При обучении DQN мы "параллельно" собираем данные и обучаем модель. То. сколько шагов обучения мы делаем на каждый шаг в среде, называется Sample Ratio (или Replay Ratio). Чем он больше, тем более "дата-эффективными" мы становимся, но при сильном повышении оптимизация начинает ломаться.
Оказалось, что она прежде всего начинает ломаться из-за потери пластичности, которая, как показано в статье The Primacy Bias in Deep RL [2022] (пост), чинится периодическим сбрасыванием весов. Авторы алгоритма SR-SPR [2022] (статья) обнаружили, что SR можно поднять с 1 до 16 при помощи "мягких сбросов" - каждые N шагов веса нейросети делали равными
tau * w + (1 - tau) * w_random
- смеси рандома и текущего значения.Наконец, авторы сегодняшней статьи - BBF - взяли SR-SPR и добавили ряд небольших улучшений - динамический горизонт планирования (гамму), регуляризацию, увеличенную сетку и пару других мелочей, а также от души затюнили гиперпараметры. Суммарно их изменения дали очень большой буст по сравнению с SP-SPR. Больше всего мне нравится картинка из статьи, приложенная к посту - на ней мы можем видеть результат прогресса в Sample Efficiency за 10 предыдущих лет.
Нужно добавить, что рост Replay Ratio увеличивает почти линейно требуемый компьют на каждый шаг, поэтому для более-менее честного сравнения на картинке нарисована кривая для RR=2, тогда как лучшая версия это RR=8 (разница где-то 15%). Интересно, что версия RR=2 прожёвывает 100к шагов (~2 часа реального времени) около 2.5 часов на половине A100, то есть учится как бы "со скоростью реальной игры".
За 10 лет от DQN до BBF дата-эффективность выросла на 2 порядка. Будет очень интересно увидеть, сколько ещё смогут выжать RL-алхимики, собирая алгоритм в ручном режиме.
@knowledge_accumulator
👍14❤5🔥1🏆1
Кто-то ещё помнит, что я занимаюсь рекомендациями?
Дежурное напоминание о том, что рекомендательные системы - это одна из наиболее реально полезных областей ML. Они напрямую влияют на заработок сервиса и качество пользовательского опыта. Кроме того, рекомендации - это очень сложно, потому что требуют мыслить вне парадигмы fit-predict и учитывать очень много нюансов реального мира.
Рекомендую подписаться на папочку из нескольких авторов, пишущих на тему RecSys. В ней собрались авторы, работающие над реальными рекомендательными системами и пищущие про свой настоящий опыт. Может быть, среди них вы даже найдёте своих потенциальных коллег.
!Ссылка на папочку!
Дежурное напоминание о том, что рекомендательные системы - это одна из наиболее реально полезных областей ML. Они напрямую влияют на заработок сервиса и качество пользовательского опыта. Кроме того, рекомендации - это очень сложно, потому что требуют мыслить вне парадигмы fit-predict и учитывать очень много нюансов реального мира.
Рекомендую подписаться на папочку из нескольких авторов, пишущих на тему RecSys. В ней собрались авторы, работающие над реальными рекомендательными системами и пищущие про свой настоящий опыт. Может быть, среди них вы даже найдёте своих потенциальных коллег.
!Ссылка на папочку!
👍21❤6🔥2
50 оттенков дебага рекомендательной системы
В честь взаимного пиара RecSys-каналов я вспомнил, что у меня тоже есть, о чём рассказать. Расскажу поучительную историю из совсем недавнего опыта.
Я работаю над созданием мощной модели над пользователем. Потенциально она получает всю информацию, которую мы о нём знаем - все залогированные действия, и выдаёт юзер-вектор, который можно использовать в разных рекомендательных сценариях. В случае социальной сети на вход идут лайки, комментарии, клики и т.д. У этого есть 2 проблемы:
1) Когда мы обучаем такую модель, нам нужно иметь актуальный список событий на момент времени каждого сэмпла. То есть, если мы пытаемся учить модель на то, лайкнул ли юзер данный пост 1 июля, на вход модели не должны подаваться действия за 2-е июля.
2) Вторая проблема усугубляется первой - построение такого датасета требует очень много вычислительных ресурсов и эффективной реализации, а значит, довольно большого и сложного кода, в котором легко ошибиться.
Представьте ситуацию - вы сделали такой пайплайн, обучили модель и ваш первый результат - модель даёт адекватный профит. Но как понять, что всё работает, как нужно?
Нужно сконструировать проверку, которая даст сигнал о наличии бага в основном пайплайне. Например, в уже построенном датасете за 1-е июля нужно заглядывать в построенный список событий и проверять, что там точно нет событий за 2-е июля.
У каждой проверки есть "полнота" - на какую "долю" багов такая проверка среагирует. Есть и другой параметр - "специфичность" - насколько точно проверка укажет на причину бага. При создании проверок вы балансируете между полнотой, специфичностью и сложностью написания.
Я считаю, что нужно делать хотя бы одну проверку с полнотой, близкой к 100%. Именно она позволила мне обнаружить нетривиальный баг в коде:
Я обучал нейросеть предсказывать что-то на протяжении с 1 по 7 июня, а для построения входного списка событий использовал другую таблицу с данными до 4 июня. Это гарантировало на 100% отсутствие заглядывания в будущее для сэмплов за 5-7 июня. И действительно, на этих днях лосс взлетал вверх. Баг был, но никакого намёка на причину, специфичность проверки равна 0.
После пары дней депрессии и втыкания в код, я увидел в одном месте append вместо appendleft, что создавало одновременно и лик, и порчу данных. После починки, профит на 5-7 июня стал почти таким же, как на 1-4, так что, у сказки счастливый конец. Дебажьте внимательно, дорогие друзья.
@knowledge_accumulator
В честь взаимного пиара RecSys-каналов я вспомнил, что у меня тоже есть, о чём рассказать. Расскажу поучительную историю из совсем недавнего опыта.
Я работаю над созданием мощной модели над пользователем. Потенциально она получает всю информацию, которую мы о нём знаем - все залогированные действия, и выдаёт юзер-вектор, который можно использовать в разных рекомендательных сценариях. В случае социальной сети на вход идут лайки, комментарии, клики и т.д. У этого есть 2 проблемы:
1) Когда мы обучаем такую модель, нам нужно иметь актуальный список событий на момент времени каждого сэмпла. То есть, если мы пытаемся учить модель на то, лайкнул ли юзер данный пост 1 июля, на вход модели не должны подаваться действия за 2-е июля.
2) Вторая проблема усугубляется первой - построение такого датасета требует очень много вычислительных ресурсов и эффективной реализации, а значит, довольно большого и сложного кода, в котором легко ошибиться.
Представьте ситуацию - вы сделали такой пайплайн, обучили модель и ваш первый результат - модель даёт адекватный профит. Но как понять, что всё работает, как нужно?
Нужно сконструировать проверку, которая даст сигнал о наличии бага в основном пайплайне. Например, в уже построенном датасете за 1-е июля нужно заглядывать в построенный список событий и проверять, что там точно нет событий за 2-е июля.
У каждой проверки есть "полнота" - на какую "долю" багов такая проверка среагирует. Есть и другой параметр - "специфичность" - насколько точно проверка укажет на причину бага. При создании проверок вы балансируете между полнотой, специфичностью и сложностью написания.
Я считаю, что нужно делать хотя бы одну проверку с полнотой, близкой к 100%. Именно она позволила мне обнаружить нетривиальный баг в коде:
Я обучал нейросеть предсказывать что-то на протяжении с 1 по 7 июня, а для построения входного списка событий использовал другую таблицу с данными до 4 июня. Это гарантировало на 100% отсутствие заглядывания в будущее для сэмплов за 5-7 июня. И действительно, на этих днях лосс взлетал вверх. Баг был, но никакого намёка на причину, специфичность проверки равна 0.
После пары дней депрессии и втыкания в код, я увидел в одном месте append вместо appendleft, что создавало одновременно и лик, и порчу данных. После починки, профит на 5-7 июня стал почти таким же, как на 1-4, так что, у сказки счастливый конец. Дебажьте внимательно, дорогие друзья.
@knowledge_accumulator
👍28❤4💯1
The Edges of Our Universe by Toby Ord [2021]
На днях прочитал занимательную статью о "размерах" вселенной. Речь не о её физических размерах (у нас нет никаких свидетельств о том, что она ограничена), а о размерах области пространства, с которой мы можем "взаимодействовать" разным способом.
За основу берётся Lambda-CDM - модель вселенной, расширяющейся благодаря тёмной энергии, согласующаяся с общей теории относительности и наблюдениями. Согласно ей, само пространство расширяется с постоянной скоростью, "расстояния" между объектами увеличиваются, и из-за этого даже может создаваться иллюзия, что некоторые объекты "улетают" от нас быстрее скорости света.
Если объект находится от нас сейчас на расстоянии выше некоторого X, то, если мы отправим туда сообщение со скоростью света, то из-за расширения вселенной сообщение "не догонит" этот объект. Сфера с радиусом X называется Affectable Universe и её размер равен 16.5 млрд. световых лет.
Рассмотрим объект, который фактически находится от нас на расстоянии Y. Сейчас мы наблюдаем излучение, которое он когда-то отправил нам. При увеличении Y "возраст" этого сигнала растёт и достигает своего предела при Y = 46.4 млрд. световых лет. Объект на этом расстоянии послал нам своё излучение в момент Большого Взрыва. Сфера с радиусом Y называется Currently Observable Universe.
Если мы будем ждать бесконечно, то до нас дойдёт свет, выпущенный объектом, находящимся от нас сейчас на расстоянии 62.9 млрд. световых лет - сумма X + Y - Eventually Observable Universe. А если мы устремимся со скоростью света в каком-то направлении, то, спустя бесконечное время, получим сигнал с расстояния 79.4 млрд. св. лет - 2X + Y - Ultimately Observable Universe.
Размер Affectable Universe по отношению к расстояниям между объектами постоянно падает. Это значит, что всё больше объектов, которые мы видим, становятся для нас недосягаемыми. Мы уже не достигнем подавляющего большинства наблюдаемых галактик. А всего через 150 миллиардов лет наступит Эра Изоляции, когда Affectable Universe уменьшится примерно до размеров нашей галактики, слившейся с Андромедой, и её спутников. Вы навсегда останетесь запертыми в Местной группе со всеми, кого не переносите.
Советую почитать саму статью всем, кто паникует из-за увеличения яркости Солнца, галактического тёмного леса, великих фильтров и тепловой смерти Вселенной.
@knowledge_accumulator
На днях прочитал занимательную статью о "размерах" вселенной. Речь не о её физических размерах (у нас нет никаких свидетельств о том, что она ограничена), а о размерах области пространства, с которой мы можем "взаимодействовать" разным способом.
За основу берётся Lambda-CDM - модель вселенной, расширяющейся благодаря тёмной энергии, согласующаяся с общей теории относительности и наблюдениями. Согласно ей, само пространство расширяется с постоянной скоростью, "расстояния" между объектами увеличиваются, и из-за этого даже может создаваться иллюзия, что некоторые объекты "улетают" от нас быстрее скорости света.
Если объект находится от нас сейчас на расстоянии выше некоторого X, то, если мы отправим туда сообщение со скоростью света, то из-за расширения вселенной сообщение "не догонит" этот объект. Сфера с радиусом X называется Affectable Universe и её размер равен 16.5 млрд. световых лет.
Рассмотрим объект, который фактически находится от нас на расстоянии Y. Сейчас мы наблюдаем излучение, которое он когда-то отправил нам. При увеличении Y "возраст" этого сигнала растёт и достигает своего предела при Y = 46.4 млрд. световых лет. Объект на этом расстоянии послал нам своё излучение в момент Большого Взрыва. Сфера с радиусом Y называется Currently Observable Universe.
Если мы будем ждать бесконечно, то до нас дойдёт свет, выпущенный объектом, находящимся от нас сейчас на расстоянии 62.9 млрд. световых лет - сумма X + Y - Eventually Observable Universe. А если мы устремимся со скоростью света в каком-то направлении, то, спустя бесконечное время, получим сигнал с расстояния 79.4 млрд. св. лет - 2X + Y - Ultimately Observable Universe.
Размер Affectable Universe по отношению к расстояниям между объектами постоянно падает. Это значит, что всё больше объектов, которые мы видим, становятся для нас недосягаемыми. Мы уже не достигнем подавляющего большинства наблюдаемых галактик. А всего через 150 миллиардов лет наступит Эра Изоляции, когда Affectable Universe уменьшится примерно до размеров нашей галактики, слившейся с Андромедой, и её спутников. Вы навсегда останетесь запертыми в Местной группе со всеми, кого не переносите.
Советую почитать саму статью всем, кто паникует из-за увеличения яркости Солнца, галактического тёмного леса, великих фильтров и тепловой смерти Вселенной.
@knowledge_accumulator
👍17😁4❤1🤯1