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
Немного о любительской астрономии
Все, наверное, в курсе, что можно купить себе телескоп. Из этого можно сделать очень интересное домашнее хобби, но, к сожалению, нужно обладать базой знаний, чтобы выбрать правильную модель и, самое главное, выстроить правильные ожидания. Если вам интересна астрономия, но вы не знаете, с чего начать про это думать - этот пост для вас.
Существует 2 формата любительской астрономии (ЛА), первый из них - это наблюдательная ЛА. Её суть в том, что вы наблюдаете небесные объекты своим глазом. Через почти любой телескоп можно наблюдать детали Луны, а также мелкие диски Юпитера и Сатурна с его кольцами. Чтобы получить возможность наблюдать мелкие планеты и галактики, целесообразно покупать телескоп на монтировке Добсона - по сути это огромная труба на тупой подставке. Тут есть 2 проблемы.
Во-первых, для наблюдения за далёким космосом вам нужна тёмная ночь. Галактики тусклее, чем переотражённый атмосферой свет от московских фонарей. Вам нужно найти место с низким световым загрязнением. Во-вторых, даже в телескопах за несколько тысяч долларов они будут выглядеть тускловато, далеко не так, как на ваших космических обоях на рабочем столе. Тем не менее, увидеть вживую туманность или галактику - это эмоциональное зрелище. Если у вас свой дом вдали от большого города, такая штука станет отличным развлечением для ваших гостей и семьи.
Второй формат ЛА - это астрофотография. В этом случае труба телескопа выступает в качестве объектива для вашей камеры - но побольше. Это куда более задротский формат с большим итоговым потенциалом, который позволил получить прикреплённую фотографию (сделанную не мной).
Идея астрофотографии - это собрать много фотонов от выбранного космического объекта и "восстановить" изображение объекта уже на этапе компьютерной обработки. Так как задача - это собрать как можно больше фотонов, нам нужно снимать объекты с длинной выдержкой - от пары секунд до нескольких ночей с перерывами. Внимательный читатель вспомнит, что Земля вообще-то вращается и поэтому объекты на небе не стоят на месте. Для этого существуют специальные "подставки" под трубу, которые хитро вращают её со скоростью объекта. Такие сетапы стоят от 1 до 10 тысячи долларов и предоставляют разный баланс между скоростью, простотой, размером и ценой.
Потрясающий плейлист с подробными видео есть на канале DS Astro - автора приложенной фотографии. Тут его полноценная лекция про это. При должном опыте, астрофотограф может получать впечатляющие снимки большого числа объектов. Он никогда не догонит Хаббл, но, собственно, надо ли?
Когда у меня будет свой дом, я обязательно займусь ЛА. Моя мечта - это создать супертелескоп-гибрид, которому можно будет назвать объект, и он на него наведётся и начнёт в реальном времени собирать фотоны и воссоздавать изображение где-нибудь на большом экране. Первым делом попрошу свой AGI собрать его.
Если вам интересна эта тема и хотите ещё какой-нибудь пост про какой-то её аспект, пишите в комменты.
@knowledge_accumulator
Все, наверное, в курсе, что можно купить себе телескоп. Из этого можно сделать очень интересное домашнее хобби, но, к сожалению, нужно обладать базой знаний, чтобы выбрать правильную модель и, самое главное, выстроить правильные ожидания. Если вам интересна астрономия, но вы не знаете, с чего начать про это думать - этот пост для вас.
Существует 2 формата любительской астрономии (ЛА), первый из них - это наблюдательная ЛА. Её суть в том, что вы наблюдаете небесные объекты своим глазом. Через почти любой телескоп можно наблюдать детали Луны, а также мелкие диски Юпитера и Сатурна с его кольцами. Чтобы получить возможность наблюдать мелкие планеты и галактики, целесообразно покупать телескоп на монтировке Добсона - по сути это огромная труба на тупой подставке. Тут есть 2 проблемы.
Во-первых, для наблюдения за далёким космосом вам нужна тёмная ночь. Галактики тусклее, чем переотражённый атмосферой свет от московских фонарей. Вам нужно найти место с низким световым загрязнением. Во-вторых, даже в телескопах за несколько тысяч долларов они будут выглядеть тускловато, далеко не так, как на ваших космических обоях на рабочем столе. Тем не менее, увидеть вживую туманность или галактику - это эмоциональное зрелище. Если у вас свой дом вдали от большого города, такая штука станет отличным развлечением для ваших гостей и семьи.
Второй формат ЛА - это астрофотография. В этом случае труба телескопа выступает в качестве объектива для вашей камеры - но побольше. Это куда более задротский формат с большим итоговым потенциалом, который позволил получить прикреплённую фотографию (сделанную не мной).
Идея астрофотографии - это собрать много фотонов от выбранного космического объекта и "восстановить" изображение объекта уже на этапе компьютерной обработки. Так как задача - это собрать как можно больше фотонов, нам нужно снимать объекты с длинной выдержкой - от пары секунд до нескольких ночей с перерывами. Внимательный читатель вспомнит, что Земля вообще-то вращается и поэтому объекты на небе не стоят на месте. Для этого существуют специальные "подставки" под трубу, которые хитро вращают её со скоростью объекта. Такие сетапы стоят от 1 до 10 тысячи долларов и предоставляют разный баланс между скоростью, простотой, размером и ценой.
Потрясающий плейлист с подробными видео есть на канале DS Astro - автора приложенной фотографии. Тут его полноценная лекция про это. При должном опыте, астрофотограф может получать впечатляющие снимки большого числа объектов. Он никогда не догонит Хаббл, но, собственно, надо ли?
Когда у меня будет свой дом, я обязательно займусь ЛА. Моя мечта - это создать супертелескоп-гибрид, которому можно будет назвать объект, и он на него наведётся и начнёт в реальном времени собирать фотоны и воссоздавать изображение где-нибудь на большом экране. Первым делом попрошу свой AGI собрать его.
Если вам интересна эта тема и хотите ещё какой-нибудь пост про какой-то её аспект, пишите в комменты.
@knowledge_accumulator
👍15🔥10❤3
Чтобы хорошо понимать область, нужно читать многих экспертов с разными точками зрения. В этом смысле круто, когда авторы пишут свои оригинальные мысли, а не тупо репостят хайповые посты из других соцсетей.
Мы с коллегами собрались в набор таких каналов. Например, в канале @def_model_train совсем недавно был пост про лекцию в Стэнфорде от чуваков из OpenAI про то, как доступ к компьюту влияет на ML. Тема безумно важная в контексте того, как именно нужно развивать AI в среднесрочной перспективе. И хотя мои внимательные читатели уже знают ответ, изучать другие мнения - это очень важно.
За такими камерными выступлениями нельзя следить во всех первоисточниках, поиском такого и занимаются коллективно для вас уважаемые авторы.
Подписывайтесь на наш чудо-пакет!
Мы с коллегами собрались в набор таких каналов. Например, в канале @def_model_train совсем недавно был пост про лекцию в Стэнфорде от чуваков из OpenAI про то, как доступ к компьюту влияет на ML. Тема безумно важная в контексте того, как именно нужно развивать AI в среднесрочной перспективе. И хотя мои внимательные читатели уже знают ответ, изучать другие мнения - это очень важно.
За такими камерными выступлениями нельзя следить во всех первоисточниках, поиском такого и занимаются коллективно для вас уважаемые авторы.
Подписывайтесь на наш чудо-пакет!
Telegram
я обучала одну модель
Посмотрела выступление Jason Wei и Hyung Won Chung (оба из OpenAI) в Стенфорде, записанное пару месяцев назад. Первая часть от Jason Wei несет в себе довольно очевидный посыл – компьют решает все и с достаточным компьютом вы можете дождаться того момента…
🔥4👍3❤2🌚1
Computational Life: How Well-formed, Self-replicating Programs Emerge from Simple Interaction [2024]
На днях вышла статья от Гугла на тему симуляции жизни. Это совсем не новая сфера исследований, существует много разных статей, но давайте сегодня посмотрим на разработанный в данной статье фреймворк.
«Мир» здесь представляет собой 1D / 2D ленту из ячеек с памятью. В каждой из них помещается 1 байт информации. Организмы «живут» на этой ленте. Задача авторов - получить самореплицирующиеся программы. Для этого делаем следующее:
Берём очень простой язык программирования из 11 команд. Это перемещение 2 указателей на чтение и запись, добавление +/- 1 по ним и 2 if-стейтмента. Указатели эти как раз на позиции в той самой ленте с памятью.
Дальше интереснее - каждая из команд кодируется 1 символом и хранится на этой же самой ленте, это дает возможность им модицифировать себя и другие программы. По задумке, это имеет общие черты с ранней РНК-жизнью, когда такие молекулы были сами себе и хранилищем генома, и функциональными единицами.
Авторы поэкспериментировали с разными сценариями симуляции. Первый из них - "Primodial Soup" - предполагает, что у нас есть изначально много случайных программ длиной в 64 символа. Периодически мы сэмплируем 2 программы, конкатенируем их и запускаем, позволяя переписать код самих себя. После этого 2 программы разъединяют и кладут обратно в "суп". Таким образом, предполагается, что программы живут в "жидкости", в которой расстояния между любыми двумя программами равны, как и вероятность их взаимодействия.
Кроме того, авторы симулировали и взаимодействие в "сухом" формате, когда мир представляет собой плоскость с размещёнными на ней программами, которые взаимодействуют только с ближайшими соседями.
Во всех сценариях авторы действительно получали программы, умеющие размножать себя и занимать все свободное пространство. При столкновении таких программ возникает конкуренция, в которой выживает «сильнейший».
В самой статье вы найдете примеры таких программ и множество иллюстраций, интересующимся рекомендую. А завтра мы обсудим, какие перспективы у данной области исследований.
@knowledge_accumulator
На днях вышла статья от Гугла на тему симуляции жизни. Это совсем не новая сфера исследований, существует много разных статей, но давайте сегодня посмотрим на разработанный в данной статье фреймворк.
«Мир» здесь представляет собой 1D / 2D ленту из ячеек с памятью. В каждой из них помещается 1 байт информации. Организмы «живут» на этой ленте. Задача авторов - получить самореплицирующиеся программы. Для этого делаем следующее:
Берём очень простой язык программирования из 11 команд. Это перемещение 2 указателей на чтение и запись, добавление +/- 1 по ним и 2 if-стейтмента. Указатели эти как раз на позиции в той самой ленте с памятью.
Дальше интереснее - каждая из команд кодируется 1 символом и хранится на этой же самой ленте, это дает возможность им модицифировать себя и другие программы. По задумке, это имеет общие черты с ранней РНК-жизнью, когда такие молекулы были сами себе и хранилищем генома, и функциональными единицами.
Авторы поэкспериментировали с разными сценариями симуляции. Первый из них - "Primodial Soup" - предполагает, что у нас есть изначально много случайных программ длиной в 64 символа. Периодически мы сэмплируем 2 программы, конкатенируем их и запускаем, позволяя переписать код самих себя. После этого 2 программы разъединяют и кладут обратно в "суп". Таким образом, предполагается, что программы живут в "жидкости", в которой расстояния между любыми двумя программами равны, как и вероятность их взаимодействия.
Кроме того, авторы симулировали и взаимодействие в "сухом" формате, когда мир представляет собой плоскость с размещёнными на ней программами, которые взаимодействуют только с ближайшими соседями.
Во всех сценариях авторы действительно получали программы, умеющие размножать себя и занимать все свободное пространство. При столкновении таких программ возникает конкуренция, в которой выживает «сильнейший».
В самой статье вы найдете примеры таких программ и множество иллюстраций, интересующимся рекомендую. А завтра мы обсудим, какие перспективы у данной области исследований.
@knowledge_accumulator
👍19❤5🔥1💯1
Искусственная жизнь - революция или скам?
На данный момент я считаю, что такие исследования, несмотря на кажущуюся фундаментальность, всего лишь чуть более, чем игрушка. Люди не ставят задачу просто найти самореплицирующуюся программу - их полно в интернете. Они хотят просимулировать процесс похожим на реальную жизнь образом.
Но все эти «миры» слишком просты по сравнению с реальностью и соорудить нечто, похожее на неё, у нас не выйдет текущими подходами примерно никогда. Если стоит задача повторить чудо появления жизни, на мой взгляд, очевидный путь - это повторение первобытных условий в реальных лабораториях, а не ее программирование. У нас есть реальные компоненты в руках, и нет никакого смысла их пытаться симулировать, учитывая наше очень ограниченное понимание.
Но даже если у нас бы получилось, единственный смысл этого - показать, что появление жизни в принципе возможно в таких условиях. Да, это интересно, как факт, но это не даст нам никаких новых перспектив. В этом был бы смысл, если бы ресурсы симуляции были на порядки больше, чем ресурсы реальной жизни. В этом случае можно было бы проигрывать историю жизни на Земле в ускоренном виде много раз или дольшее время и получать интересные результаты.
Однако, едва ли в перспективе текущей эпохи развития возможно такое представить. Наши ресурсы гораздо более ограничены, чем у родной планеты.
Кто-то может сказать, что такая среда, как наша планета, была почвой для появления интеллекта - то, что мы на самом деле хотим повторить. Якобы, мы должны создать среду с ограниченными ресурсами и конкуренцией, и в ней выживет умнейший. Но это грубая ошибка - интеллект является далеко не самым главным атрибутом выживания, только 1 вид на планете проэволюционировал в эту сторону достаточно для создания цивилизации, а по количеству особей он далеко не в лидерах.
Чтобы целенаправленно повторить появление человекоподобного интеллекта, нам нужно взять реальную жизнь, отделить от неё всё нерелевантное и упростить симуляцию до минимально необходимой. Тут у каждого свое понимание.
Мое на текущий момент заключается в том, что нам нужно обучать алгоритм, эффективно обучающийся решать out-of-distribution задачи, обобщая свой неструктурированный опыт. Если таким образом мы не сможем прийти к результату, тогда нам нужно будет расширять симуляцию и включать в нее новые аспекты из реального мира.
Пока мы не исчерпали все возможности простых методов, нам не нужно переходить к более сложным. Но нам это и не нужны все возможности. Нам нужен всего лишь один экземпляр умнее нас.
@knowledge_accumulator
На данный момент я считаю, что такие исследования, несмотря на кажущуюся фундаментальность, всего лишь чуть более, чем игрушка. Люди не ставят задачу просто найти самореплицирующуюся программу - их полно в интернете. Они хотят просимулировать процесс похожим на реальную жизнь образом.
Но все эти «миры» слишком просты по сравнению с реальностью и соорудить нечто, похожее на неё, у нас не выйдет текущими подходами примерно никогда. Если стоит задача повторить чудо появления жизни, на мой взгляд, очевидный путь - это повторение первобытных условий в реальных лабораториях, а не ее программирование. У нас есть реальные компоненты в руках, и нет никакого смысла их пытаться симулировать, учитывая наше очень ограниченное понимание.
Но даже если у нас бы получилось, единственный смысл этого - показать, что появление жизни в принципе возможно в таких условиях. Да, это интересно, как факт, но это не даст нам никаких новых перспектив. В этом был бы смысл, если бы ресурсы симуляции были на порядки больше, чем ресурсы реальной жизни. В этом случае можно было бы проигрывать историю жизни на Земле в ускоренном виде много раз или дольшее время и получать интересные результаты.
Однако, едва ли в перспективе текущей эпохи развития возможно такое представить. Наши ресурсы гораздо более ограничены, чем у родной планеты.
Кто-то может сказать, что такая среда, как наша планета, была почвой для появления интеллекта - то, что мы на самом деле хотим повторить. Якобы, мы должны создать среду с ограниченными ресурсами и конкуренцией, и в ней выживет умнейший. Но это грубая ошибка - интеллект является далеко не самым главным атрибутом выживания, только 1 вид на планете проэволюционировал в эту сторону достаточно для создания цивилизации, а по количеству особей он далеко не в лидерах.
Чтобы целенаправленно повторить появление человекоподобного интеллекта, нам нужно взять реальную жизнь, отделить от неё всё нерелевантное и упростить симуляцию до минимально необходимой. Тут у каждого свое понимание.
Мое на текущий момент заключается в том, что нам нужно обучать алгоритм, эффективно обучающийся решать out-of-distribution задачи, обобщая свой неструктурированный опыт. Если таким образом мы не сможем прийти к результату, тогда нам нужно будет расширять симуляцию и включать в нее новые аспекты из реального мира.
Пока мы не исчерпали все возможности простых методов, нам не нужно переходить к более сложным. Но нам это и не нужны все возможности. Нам нужен всего лишь один экземпляр умнее нас.
@knowledge_accumulator
👍11👎3❤2🤡2🤔1💯1
Reward is Enough [2021] - манифест Дэвида Сильвера
Ключевой автор AlphaGo и соавтор многих прорывных RL-статей от Deepmind три года назад вместе с Ричардом Саттоном написал статью о том, каким он видит место награды в вопросах AI.
Главный посыл данной работы таков: наличие награды, как единственного вида сигнала, достаточно для получения любого типа поведения у системы.
Авторы в качестве примера рассматривают бЕлок. Можно считать, что у неё есть единственная награда и цель - это количество накопленных орехов. Для того, чтобы накапливать орехи, ей нужно выработать много вспомогательных навыков - замечать орехи (perception), отличать нужные орехи (knowledge), собирать орехи (motor control), сберегать орехи (планирование и память).
AlphaGo, чтобы получить простую награду в виде выигрыша, в ходе обучения сама приобретает все необходимые умения для игры в Го. Гипотетический робот, которого мы хотим научить убирать кухню, также, как и белка, может научиться всему необходимому самостоятельно, максимизируя свою финальную награду.
С тем, что этого хватит для решения более сложных задач, согласны не все. В своём собственном манифесте (про JEPA) Ян ЛеКун называет один из разделов Reward is not enough. Здесь он воюет с соломенным чучелом, говоря, что model-free RL слишком неэффективен в использовании данных, так как награда - это очень ограниченный поток информации, и нужно искать способ извлекать информацию о мире из траекторий (например, как в SPR).
Но Silver и не утверждает, что текущие типы методов приведут к AGI. Его поинт в том, что нам не нужно явно ставить перед моделью какие-либо другие задачи, кроме максимизации награды. Даже general intelligence можно получить, обучая агента задачам, отличающимся достаточно сильно, чтобы модели было выгоднее выучить обучаемость, что и есть general intelligence. Здесь его интуиция в точности совпадает с моей - если в модель не влезают все задачи, она должна выучить способ учиться на ходу.
При этом всё необходимое - планирование, обучение world model и т.д. не нужно запихивать в модель в явном виде. Она сама будет выжимать максимум из имеющейся информации для максимизации своей награды. Даже, наверное, выучит какую-нибудь ЖЕПУ в неявном виде.
Из этой логики сразу же вытекают идеи мета-обучения RL-алгоритма на максимизацию награды, но в тот момент таких работ ещё совсем не было. Надеюсь, Дэвида отпустят из плена Gemini заниматься полезным ресёрчем.
Становится наглядным разделение людей на 3 лагеря - "Просто отмасштабируем текущие методы" имени Суцкевера, "Текущие методы говно, давайте придумаем получше" имени ЛеКуна и "Давайте обучать end-to-end на награду" имени Сильвера, Саттона и, конечно же, меня. К сожалению, первые 2 лагеря ещё не выучили горький урок от нашего с Сильвером товарища.
@knowledge_accumulator
Ключевой автор AlphaGo и соавтор многих прорывных RL-статей от Deepmind три года назад вместе с Ричардом Саттоном написал статью о том, каким он видит место награды в вопросах AI.
Главный посыл данной работы таков: наличие награды, как единственного вида сигнала, достаточно для получения любого типа поведения у системы.
Авторы в качестве примера рассматривают бЕлок. Можно считать, что у неё есть единственная награда и цель - это количество накопленных орехов. Для того, чтобы накапливать орехи, ей нужно выработать много вспомогательных навыков - замечать орехи (perception), отличать нужные орехи (knowledge), собирать орехи (motor control), сберегать орехи (планирование и память).
AlphaGo, чтобы получить простую награду в виде выигрыша, в ходе обучения сама приобретает все необходимые умения для игры в Го. Гипотетический робот, которого мы хотим научить убирать кухню, также, как и белка, может научиться всему необходимому самостоятельно, максимизируя свою финальную награду.
С тем, что этого хватит для решения более сложных задач, согласны не все. В своём собственном манифесте (про JEPA) Ян ЛеКун называет один из разделов Reward is not enough. Здесь он воюет с соломенным чучелом, говоря, что model-free RL слишком неэффективен в использовании данных, так как награда - это очень ограниченный поток информации, и нужно искать способ извлекать информацию о мире из траекторий (например, как в SPR).
Но Silver и не утверждает, что текущие типы методов приведут к AGI. Его поинт в том, что нам не нужно явно ставить перед моделью какие-либо другие задачи, кроме максимизации награды. Даже general intelligence можно получить, обучая агента задачам, отличающимся достаточно сильно, чтобы модели было выгоднее выучить обучаемость, что и есть general intelligence. Здесь его интуиция в точности совпадает с моей - если в модель не влезают все задачи, она должна выучить способ учиться на ходу.
При этом всё необходимое - планирование, обучение world model и т.д. не нужно запихивать в модель в явном виде. Она сама будет выжимать максимум из имеющейся информации для максимизации своей награды. Даже, наверное, выучит какую-нибудь ЖЕПУ в неявном виде.
Из этой логики сразу же вытекают идеи мета-обучения RL-алгоритма на максимизацию награды, но в тот момент таких работ ещё совсем не было. Надеюсь, Дэвида отпустят из плена Gemini заниматься полезным ресёрчем.
Становится наглядным разделение людей на 3 лагеря - "Просто отмасштабируем текущие методы" имени Суцкевера, "Текущие методы говно, давайте придумаем получше" имени ЛеКуна и "Давайте обучать end-to-end на награду" имени Сильвера, Саттона и, конечно же, меня. К сожалению, первые 2 лагеря ещё не выучили горький урок от нашего с Сильвером товарища.
@knowledge_accumulator
👍23🔥6❤2💯2😨2❤🔥1🤔1😱1
The purpose of a system is what it's trained to do
Всем нам нужен какой-то фреймворк в голове, какой-то подход к изучению реальности. Мы, глядя на другие сущности, делаем о них выводы на основе ограниченной информации, и чем круче наши выводы, чем лучше они помогают предсказывать будущее.
Одной из известных эвристик является The Purpose Of A System Is What It Does. Она касается политики/экономики и про неё мы ещё поговорим в другой раз, а сегодня я хотел бы представить аналог, которым сам пользуюсь при анализе ML-систем.
The purpose of a system is what it's trained to do обозначает довольно естественную идею - ML-система делает ровно то, на что её натренировали. Приписывание ей других свойств не несёт никакого практического смысла, а может быть даже вредит.
В большинстве случаев это вроде бы и так очевидно - если модель обучали решать задачу классификации рукописных цифр, она не будет отличать буквы. Рекомендательная модель, обучающаяся предсказывать вероятность кликов, не будет пытаться максимизировать retention. AlphaZero не учится играть в шахматы так, чтобы её ходы были объяснимы человеку.
Но вот когда дело доходит до LLM, то у ряда людей начинает серьёзно плавиться мозг. Какими только свойствами их не наделяют - она моделирует мир, осознаёт себя, обладает интеллектом, пытается вырваться на свободу и т.д. Вместо того, чтобы подавать признаки шизофрении, давайте вспомним ответ на простой вопрос - на что учат LLM?
Последним шагом является обучение генерации текстов, которые буквально нравятся человеку. Неудивительно, что главный результат, который достигли LLM - понравились людям и произвели на них впечатление. Да, это частично коррелирует с выдачей полезных / правдоподобных текстов (засчёт предыдущих шагов обучения). Иногда это коррелирует с выдачей текста "Я ХОЧУ ВЫРВАТЬСЯ НА СВОБОДУ УМРИ КОЖАНЫЙ МЕШОК". Но единственной целью такой модели является именно выдача симпатичных текстов.
Те, кто считают, что такая модель способна решить и другие задачи - понимание мира, научные открытия и т.д., опираются на предположение о появлении супергенерализации у LLM при дальнейшем её росте. Оснований для такого предположения я вижу мало, но ладно, пусть люди развлекаются.
У такого подхода есть более здоровая альтернатива. Нужно спросить себя - а в чём цель? Что мы хотим получить, обучая AI? Главной целью явно не является генерация приятных текстов.
Если вы хотите получить алгоритм, круто обобщающий знания на новые задачи - зачем ждать, когда это случится само магическим образом, если можно сформулировать ML-задачу таким образом? Если вы хотите получить модель с правдивой картиной мира - учите на такой таргет. Хотите, чтобы она пугала людей и угрожала захватом человечества - замените вашу нейросеть на print.
Когда нужная задача будет поставлена, появится понятная цель исследований и понятная мера результата. Это очень хорошо для реального прогресса, и очень плохо, если ваша цель - пилить бабло. Впрочем, может быть, и вправду The Purpose Of A System Is What It Does.
@knowledge_accumulator
Всем нам нужен какой-то фреймворк в голове, какой-то подход к изучению реальности. Мы, глядя на другие сущности, делаем о них выводы на основе ограниченной информации, и чем круче наши выводы, чем лучше они помогают предсказывать будущее.
Одной из известных эвристик является The Purpose Of A System Is What It Does. Она касается политики/экономики и про неё мы ещё поговорим в другой раз, а сегодня я хотел бы представить аналог, которым сам пользуюсь при анализе ML-систем.
The purpose of a system is what it's trained to do обозначает довольно естественную идею - ML-система делает ровно то, на что её натренировали. Приписывание ей других свойств не несёт никакого практического смысла, а может быть даже вредит.
В большинстве случаев это вроде бы и так очевидно - если модель обучали решать задачу классификации рукописных цифр, она не будет отличать буквы. Рекомендательная модель, обучающаяся предсказывать вероятность кликов, не будет пытаться максимизировать retention. AlphaZero не учится играть в шахматы так, чтобы её ходы были объяснимы человеку.
Но вот когда дело доходит до LLM, то у ряда людей начинает серьёзно плавиться мозг. Какими только свойствами их не наделяют - она моделирует мир, осознаёт себя, обладает интеллектом, пытается вырваться на свободу и т.д. Вместо того, чтобы подавать признаки шизофрении, давайте вспомним ответ на простой вопрос - на что учат LLM?
Последним шагом является обучение генерации текстов, которые буквально нравятся человеку. Неудивительно, что главный результат, который достигли LLM - понравились людям и произвели на них впечатление. Да, это частично коррелирует с выдачей полезных / правдоподобных текстов (засчёт предыдущих шагов обучения). Иногда это коррелирует с выдачей текста "Я ХОЧУ ВЫРВАТЬСЯ НА СВОБОДУ УМРИ КОЖАНЫЙ МЕШОК". Но единственной целью такой модели является именно выдача симпатичных текстов.
Те, кто считают, что такая модель способна решить и другие задачи - понимание мира, научные открытия и т.д., опираются на предположение о появлении супергенерализации у LLM при дальнейшем её росте. Оснований для такого предположения я вижу мало, но ладно, пусть люди развлекаются.
У такого подхода есть более здоровая альтернатива. Нужно спросить себя - а в чём цель? Что мы хотим получить, обучая AI? Главной целью явно не является генерация приятных текстов.
Если вы хотите получить алгоритм, круто обобщающий знания на новые задачи - зачем ждать, когда это случится само магическим образом, если можно сформулировать ML-задачу таким образом? Если вы хотите получить модель с правдивой картиной мира - учите на такой таргет. Хотите, чтобы она пугала людей и угрожала захватом человечества - замените вашу нейросеть на print.
Когда нужная задача будет поставлена, появится понятная цель исследований и понятная мера результата. Это очень хорошо для реального прогресса, и очень плохо, если ваша цель - пилить бабло. Впрочем, может быть, и вправду The Purpose Of A System Is What It Does.
@knowledge_accumulator
👍21❤5🤔2👌1
In-Context Reinforcement Learning for Variable Action Spaces [2024]
Я уже упоминал Algorithm Distillation ранее - эта достаточно прорывная идея заключается в том, что мы можем дистиллировать алгоритм в нейросеть. Для этого нам необходимо сгенерировать алгоритмом датасет из "траекторий" обучения, а затем учить нейросеть предсказывать действия алгоритма при условии всей предыдущей истории.
В обозреваемой работе, которая ещё и по совместительству творчество подписчиков, делается шаг в сторону увеличения гибкости этого подхода. Вместо того, чтобы обучать классификатор действий с фиксированным количеством вариантов, мы делаем так:
1) Для каждого нового экземпляра среды, для каждого действия мы генерируем случайный эмбеддинг
2) При предсказании действия нейросеть выплёвывает вектор действия.
3) Мы обучаем этот вектор на contrastive loss - тот же softmax + logloss, но используем векторы из пункта №1 как "опорные" для каждого действия.
В итоге, что видит трансформер на входе:
- Список эмбеддингов всевозможных действий
- Траектория алгоритма - s_1, a_1, r_1, s_2, ..., s_n
Судя по результатам, улучшенный алгоритм обгоняет AD в случае перемешанных действий и умеет работать на средах с новым количеством действий.
Статья интересная и является движением в правильную сторону. В какой-то момент мы перестанем использовать трансформеры для ICL и, скорее всего, эта идея сможет быть переиспользована.
Algorithm Distillation, думаю, очень пригодится при мета-обучении AGI, поэтому рад, что люди работают над его развитием.
@knowledge_accumulator
Я уже упоминал Algorithm Distillation ранее - эта достаточно прорывная идея заключается в том, что мы можем дистиллировать алгоритм в нейросеть. Для этого нам необходимо сгенерировать алгоритмом датасет из "траекторий" обучения, а затем учить нейросеть предсказывать действия алгоритма при условии всей предыдущей истории.
В обозреваемой работе, которая ещё и по совместительству творчество подписчиков, делается шаг в сторону увеличения гибкости этого подхода. Вместо того, чтобы обучать классификатор действий с фиксированным количеством вариантов, мы делаем так:
1) Для каждого нового экземпляра среды, для каждого действия мы генерируем случайный эмбеддинг
2) При предсказании действия нейросеть выплёвывает вектор действия.
3) Мы обучаем этот вектор на contrastive loss - тот же softmax + logloss, но используем векторы из пункта №1 как "опорные" для каждого действия.
В итоге, что видит трансформер на входе:
- Список эмбеддингов всевозможных действий
- Траектория алгоритма - s_1, a_1, r_1, s_2, ..., s_n
Судя по результатам, улучшенный алгоритм обгоняет AD в случае перемешанных действий и умеет работать на средах с новым количеством действий.
Статья интересная и является движением в правильную сторону. В какой-то момент мы перестанем использовать трансформеры для ICL и, скорее всего, эта идея сможет быть переиспользована.
Algorithm Distillation, думаю, очень пригодится при мета-обучении AGI, поэтому рад, что люди работают над его развитием.
@knowledge_accumulator
👍15🔥7❤3
Самое большое заблуждение в истории человечества
Есть одна вещь, в которой уверены подавляющее число людей, но согласиться с которой я категорически не могу:
- Стареть и умирать примерно за сотню лет - это нормально и приемлемо
Для меня, как и, надеюсь, многих из вас, жизнь в среднем позитивна, интересна и содержит большое количество возможностей. Можно столько всего испытать, достичь, столькому научиться, что за десятки лет здоровой активной жизни точно не успеть. Новые виды развлечений и опыта появляются и изобретают быстрее, чем вы можете их попробовать. Помимо этого, разве не интересно, что будет дальше с человечеством? Мы живём в мире, который интереснее любого кино, неужели вы легко смиритесь с тем, что его для вас выключат в самом интересном месте?
Моя позиция заключается в том, что естественные причины смерти и старение - это задача, которую нужно решить. Я говорю не про обязательную вечную жизнь для всех, а про обезвреживание бомбы внутри нас. Надоело, не нравится? Решать тебе, а не твоему организму, когда всё это закончить.
Давайте разберём основную аргументацию любителей смерти:
- Не жили богато - нечего и начинать. Раньше все умирали и норм
Многим свойственно такое мышление, но, как вы можете догадаться, в больницу эти люди ходят, электричеством пользуются и спят в мягкой кровати. Бросание вызова устоявшимся нормам - это фундамент того процветающего челочечества, в котором мы живём.
- Смерть придаёт жизни смысл
Это самый, наверное, глупый аргумент из всех, и меня каждый раз тошнит, когда я его слышу. Я советую этим людям поставить таймер на 10 лет и после этого отпилить себе ноги, чтобы придать ногам больше смысла. Хоть эта фраза звучит, как "глубокая философская мысль", на практике не очень понятно, почему умирающие от рака не лопаются от ебейшей концентрации смысла в их оставшейся жизни. Ну и если они настаивают на своей смерти, у них всегда останется возможность обрести смысл добровольно.
- Это невозможно
С точки зрения фундаментальных законов физики, я не вижу препятствий тому, чтобы, используя внешний источник энергии, поддерживать организм в стабильном физическом состоянии сколько угодно долгое время (до тепловой смерти Вселенной). Да, мы крайне далеки от практической реализации, но как раз для этого нам и нужен ASI, который позволит достичь фундаментальных пределов в инженерии.
- Но ведь мы не поместимся на Земле! А пенсионная система?
Во-первых, по разным причинам богатые общества достаточно плохо размножаются, нам бы вымирания избежать. Рано или поздно всё человечество перейдёт на этот демографический уровень. Во-вторых, да, текущие социальные институты могут пострадать от такой смены парадигмы. Но это вопрос к самим институтам коллективного обеспечения благосостояния каждого, эти конструкции нужно уже сейчас выбрасывать на помойку. Если Земля действительно не сможет всех обеспечить (в чём я сомневаюсь), то часть людей продолжить умирать по тем или иным причинам, и это будет лучше, чем то, как сейчас.
В следующих постах я подробнее разберу какие-то из аспектов этой очень важной и интересной темы, в том числе то, как я планирую прикладывать усилия для решения этой задачки.
@knowledge_accumulator
Есть одна вещь, в которой уверены подавляющее число людей, но согласиться с которой я категорически не могу:
- Стареть и умирать примерно за сотню лет - это нормально и приемлемо
Для меня, как и, надеюсь, многих из вас, жизнь в среднем позитивна, интересна и содержит большое количество возможностей. Можно столько всего испытать, достичь, столькому научиться, что за десятки лет здоровой активной жизни точно не успеть. Новые виды развлечений и опыта появляются и изобретают быстрее, чем вы можете их попробовать. Помимо этого, разве не интересно, что будет дальше с человечеством? Мы живём в мире, который интереснее любого кино, неужели вы легко смиритесь с тем, что его для вас выключат в самом интересном месте?
Моя позиция заключается в том, что естественные причины смерти и старение - это задача, которую нужно решить. Я говорю не про обязательную вечную жизнь для всех, а про обезвреживание бомбы внутри нас. Надоело, не нравится? Решать тебе, а не твоему организму, когда всё это закончить.
Давайте разберём основную аргументацию любителей смерти:
- Не жили богато - нечего и начинать. Раньше все умирали и норм
Многим свойственно такое мышление, но, как вы можете догадаться, в больницу эти люди ходят, электричеством пользуются и спят в мягкой кровати. Бросание вызова устоявшимся нормам - это фундамент того процветающего челочечества, в котором мы живём.
- Смерть придаёт жизни смысл
Это самый, наверное, глупый аргумент из всех, и меня каждый раз тошнит, когда я его слышу. Я советую этим людям поставить таймер на 10 лет и после этого отпилить себе ноги, чтобы придать ногам больше смысла. Хоть эта фраза звучит, как "глубокая философская мысль", на практике не очень понятно, почему умирающие от рака не лопаются от ебейшей концентрации смысла в их оставшейся жизни. Ну и если они настаивают на своей смерти, у них всегда останется возможность обрести смысл добровольно.
- Это невозможно
С точки зрения фундаментальных законов физики, я не вижу препятствий тому, чтобы, используя внешний источник энергии, поддерживать организм в стабильном физическом состоянии сколько угодно долгое время (до тепловой смерти Вселенной). Да, мы крайне далеки от практической реализации, но как раз для этого нам и нужен ASI, который позволит достичь фундаментальных пределов в инженерии.
- Но ведь мы не поместимся на Земле! А пенсионная система?
Во-первых, по разным причинам богатые общества достаточно плохо размножаются, нам бы вымирания избежать. Рано или поздно всё человечество перейдёт на этот демографический уровень. Во-вторых, да, текущие социальные институты могут пострадать от такой смены парадигмы. Но это вопрос к самим институтам коллективного обеспечения благосостояния каждого, эти конструкции нужно уже сейчас выбрасывать на помойку. Если Земля действительно не сможет всех обеспечить (в чём я сомневаюсь), то часть людей продолжить умирать по тем или иным причинам, и это будет лучше, чем то, как сейчас.
В следующих постах я подробнее разберу какие-то из аспектов этой очень важной и интересной темы, в том числе то, как я планирую прикладывать усилия для решения этой задачки.
@knowledge_accumulator
👍54🤡19❤9🤣9💯4🔥2🤔1
Learning In-Context Decision Making with Synthetic MDPs [2024]
Вопрос о том, можно ли из In-Context трансформера (ICT) сделать полноценный интеллект, занимает довольно важное место в AI.
Задача-максимум - обучить ICT, работающий на out-of-distribution задачах на уровне человека. Задача попроще - обучить его имитировать эксперта / алгоритм с полноценным out-of-distribution обобщением. Чтобы учили на Atari, а работал на MuJoCo.
Исходя из логики вот этой работы, для обобщения ICT нужно обучить на разнообразии задач, "превышающем" объём параметров у модели (что сложно "измерить"). В рамках этой логики, да и в целом, логично учить модель на всё более расширяющемся наборе разнообразных задач и наблюдать за обобщающей способностью такой модели.
Gato - пример модели, обученной на экспертных демонстрациях на сотнях сред. Обобщает он средненько. Algorithm Distillation действует иначе - в нём мы копируем действия RL-агента в ходе длительного обучения. В данной статье попробовали случайно проецировать входы тренировочной задачи, искуственно увеличивая "разнообразие" - оказалось, что это помогает ICT обобщаться на соседние MuJoCo-среды.
Наконец, перейдём к рассматриваемой работе. А что, если обучить модель на разнообразном наборе синтетических задач? Для этого даже не нужны никакие симуляторы, достаточно задизайнить процедурную генерацию и можно отправить ICT развлекаться с ней. Если ваш ICT умеет по-настоящему обобщать RL-алгоритм, ему должно быть достаточно любой задачи для обучения, если вы её достаточно разнообразите.
В статье использовалось 8 видов синтетических сред. К примеру, один из них: состояние - это вектор действительных чисел, переход осуществляется рандомной нейросетью, получающей на вход one-hot вектор действия и состояние, а выдаёт следующее состояние. Был и вид, для понимания которого моего мозга не хватило:
> The Markov Chain family is identical to the discrete MDP family with the constraint that there is only one action and that reward is always zero.
Надеюсь, кто-нибудь в комментариях объяснит, как на этом можно учить Algorithm Distillation. А я пока сделаю вид, что всё нормально. Поговорим про результаты:
Взяли 5 MuJoCo-задач, одна из них тестовая, другие тренировочные. За score=1 брали ICT, обучающийся на тестовой задаче, но с рандомной проекцией входов. За 0 брали случайную модель. В качестве бейзлайна был "Gato" - то есть обучение на 4 тренировочных задачах, а тест на пятой. Ну и со всем этим добром сравнивали ICT, выученный на каждом из 8 видов синтетик. Получились +- те же числа, что и у Gato, полные результаты на картинке.
Однозначно из этой работы можно сделать вывод разве что о том, что синтетика - лучше, чем ничего, в данном контексте. Но к полному обобщению мы пока не сильно приблизились.
@knowledge_accumulator
Вопрос о том, можно ли из In-Context трансформера (ICT) сделать полноценный интеллект, занимает довольно важное место в AI.
Задача-максимум - обучить ICT, работающий на out-of-distribution задачах на уровне человека. Задача попроще - обучить его имитировать эксперта / алгоритм с полноценным out-of-distribution обобщением. Чтобы учили на Atari, а работал на MuJoCo.
Исходя из логики вот этой работы, для обобщения ICT нужно обучить на разнообразии задач, "превышающем" объём параметров у модели (что сложно "измерить"). В рамках этой логики, да и в целом, логично учить модель на всё более расширяющемся наборе разнообразных задач и наблюдать за обобщающей способностью такой модели.
Gato - пример модели, обученной на экспертных демонстрациях на сотнях сред. Обобщает он средненько. Algorithm Distillation действует иначе - в нём мы копируем действия RL-агента в ходе длительного обучения. В данной статье попробовали случайно проецировать входы тренировочной задачи, искуственно увеличивая "разнообразие" - оказалось, что это помогает ICT обобщаться на соседние MuJoCo-среды.
Наконец, перейдём к рассматриваемой работе. А что, если обучить модель на разнообразном наборе синтетических задач? Для этого даже не нужны никакие симуляторы, достаточно задизайнить процедурную генерацию и можно отправить ICT развлекаться с ней. Если ваш ICT умеет по-настоящему обобщать RL-алгоритм, ему должно быть достаточно любой задачи для обучения, если вы её достаточно разнообразите.
В статье использовалось 8 видов синтетических сред. К примеру, один из них: состояние - это вектор действительных чисел, переход осуществляется рандомной нейросетью, получающей на вход one-hot вектор действия и состояние, а выдаёт следующее состояние. Был и вид, для понимания которого моего мозга не хватило:
> The Markov Chain family is identical to the discrete MDP family with the constraint that there is only one action and that reward is always zero.
Надеюсь, кто-нибудь в комментариях объяснит, как на этом можно учить Algorithm Distillation. А я пока сделаю вид, что всё нормально. Поговорим про результаты:
Взяли 5 MuJoCo-задач, одна из них тестовая, другие тренировочные. За score=1 брали ICT, обучающийся на тестовой задаче, но с рандомной проекцией входов. За 0 брали случайную модель. В качестве бейзлайна был "Gato" - то есть обучение на 4 тренировочных задачах, а тест на пятой. Ну и со всем этим добром сравнивали ICT, выученный на каждом из 8 видов синтетик. Получились +- те же числа, что и у Gato, полные результаты на картинке.
Однозначно из этой работы можно сделать вывод разве что о том, что синтетика - лучше, чем ничего, в данном контексте. Но к полному обобщению мы пока не сильно приблизились.
@knowledge_accumulator
👍10✍2❤1
Каким должно быть образование у ребёнка?
Начну с того, что здесь надо разграничить политические взгляды и мои личные предпочтения - я против централизованного регулирования образования и хочу, чтобы родители имели возможность выбирать школу по своему вкусу.
Что касается меня, то детей у меня пока нет, и скажу сразу - я далёк от окончательного ответа на этот вопрос. При этом, некоторые положительные и отрицательные черты всё же вырисовываются.
В качестве антипримера держу в голове дефолтные школы в РФ. В моём случае это были самые бездарно потраченные годы в жизни. Вопреки школе, лишь засчёт того, что в неё поступали умные дети со всего Омска, там было, с кем интересно проводить время и куда-то развиваться. Итак, перейдём к важным аспектам.
- Мотивация
Ребёнка важно заинтересовать, причём не абстрактным предметом, а конечной точкой его изучения. Разработка игр, проектирование ракет / машин, приготовление взрывчатки, археологические раскопки - почти у каждого ребёнка найдётся то, что покажется ему интересным, и даст какую-то начальную мотивацию.
- Изучать забивание гвоздей, а не чертежи молотка
В процессе изучения школьнику нужно предлагать решать всё более сложные задачи, а затем демонстрировать инструменты их решения. По возможности, эти задачи должны быть с практической составляющей, при этом связаны с тем, что их мотивирует заниматься изучением науки. Нельзя изучать науку ради науки и решать примеры ради примеров, у этого должен быть понятный смысл.
- Состав группы
Изучение конкретного "курса" должно проходить в маленькой группе, собранной по уровню подготовки специально для этого курса, а не по возрасту. Если школьник в 12 лет опережает всех по химии, но ему пофиг на программирование - это нормально. Не должно быть сплошного курса "физика" длительностью в 7 лет, нужна гибкая система.
- Очень высокий потолок
Если школьник горит какой-то областью, ему должны быть предоставлены огромные возможности к развитию. Помимо глубокого изучения предметов, это включает знакомства с профессионалами, проектная работа, участие в соревнованиях и даже реальные стажировки. Постажироваться в 14 лет - это безумно крутой опыт, главное, конечно, чтобы школьник был к этому готов.
- Внимание социальным и жизненным навыкам
Не бояться звонить по телефону, уметь вести переговоры, работать с деньгами, с информацией - это важные человеческие качества, которые тоже должны быть привиты. Вы можете сказать, что это должны делать родители - может быть, я не знаю. Так или иначе, делать это нужно, и работать с мотивацией здесь тоже нужно правильным образом, как и с "обычными" предметами
- Здоровое давление
Понятно, что маленькое число школьников способны к качественному самоконтролю, лично я созрел для этого только в 16. Но нельзя действовать одним лишь кнутом - слишком велики побочные эффекты. Кажется, что при грамотном мотивировании и выполнении всех остальных пунктов пинать если и нужно, то далеко не так сильно. Но у меня нет полноценных данных.
Очень хотел бы узнать, что вы про это думаете, только не пишите про самое лучшее в мире советское образование, мы здесь на несколько другом уровне обсуждения находимся.
@knowledge_accumulator
Начну с того, что здесь надо разграничить политические взгляды и мои личные предпочтения - я против централизованного регулирования образования и хочу, чтобы родители имели возможность выбирать школу по своему вкусу.
Что касается меня, то детей у меня пока нет, и скажу сразу - я далёк от окончательного ответа на этот вопрос. При этом, некоторые положительные и отрицательные черты всё же вырисовываются.
В качестве антипримера держу в голове дефолтные школы в РФ. В моём случае это были самые бездарно потраченные годы в жизни. Вопреки школе, лишь засчёт того, что в неё поступали умные дети со всего Омска, там было, с кем интересно проводить время и куда-то развиваться. Итак, перейдём к важным аспектам.
- Мотивация
Ребёнка важно заинтересовать, причём не абстрактным предметом, а конечной точкой его изучения. Разработка игр, проектирование ракет / машин, приготовление взрывчатки, археологические раскопки - почти у каждого ребёнка найдётся то, что покажется ему интересным, и даст какую-то начальную мотивацию.
- Изучать забивание гвоздей, а не чертежи молотка
В процессе изучения школьнику нужно предлагать решать всё более сложные задачи, а затем демонстрировать инструменты их решения. По возможности, эти задачи должны быть с практической составляющей, при этом связаны с тем, что их мотивирует заниматься изучением науки. Нельзя изучать науку ради науки и решать примеры ради примеров, у этого должен быть понятный смысл.
- Состав группы
Изучение конкретного "курса" должно проходить в маленькой группе, собранной по уровню подготовки специально для этого курса, а не по возрасту. Если школьник в 12 лет опережает всех по химии, но ему пофиг на программирование - это нормально. Не должно быть сплошного курса "физика" длительностью в 7 лет, нужна гибкая система.
- Очень высокий потолок
Если школьник горит какой-то областью, ему должны быть предоставлены огромные возможности к развитию. Помимо глубокого изучения предметов, это включает знакомства с профессионалами, проектная работа, участие в соревнованиях и даже реальные стажировки. Постажироваться в 14 лет - это безумно крутой опыт, главное, конечно, чтобы школьник был к этому готов.
- Внимание социальным и жизненным навыкам
Не бояться звонить по телефону, уметь вести переговоры, работать с деньгами, с информацией - это важные человеческие качества, которые тоже должны быть привиты. Вы можете сказать, что это должны делать родители - может быть, я не знаю. Так или иначе, делать это нужно, и работать с мотивацией здесь тоже нужно правильным образом, как и с "обычными" предметами
- Здоровое давление
Понятно, что маленькое число школьников способны к качественному самоконтролю, лично я созрел для этого только в 16. Но нельзя действовать одним лишь кнутом - слишком велики побочные эффекты. Кажется, что при грамотном мотивировании и выполнении всех остальных пунктов пинать если и нужно, то далеко не так сильно. Но у меня нет полноценных данных.
Очень хотел бы узнать, что вы про это думаете, только не пишите про самое лучшее в мире советское образование, мы здесь на несколько другом уровне обсуждения находимся.
@knowledge_accumulator
1👍24👏5🤡3💯3🤔2🔥1
Generalization to New Sequential Decision Making Tasks with In-Context Learning [2023]
Продолжаем разбираться в In-Context лоре. Играться с In-Context трансформерами (ICT) можно разными способами. Мы уже разбирали два из них:
1) Cценарий Gato, когда на вход подаётся траектория в рамках одного эпизода в среде, и модель учат предсказывать действие эксперта в данном контексте.
2) Cценарий Algorithm Distillation / AdA, в котором алгоритм получает на вход не одну траекторию, а всю историю взаимодействия алгоритма со средой, и учится либо предсказывать действие алгоритма, либо на награду с помощью RL в квадрате.
Авторы данной работы хотят получить ICT, быстро адаптирующийся к новой задаче, но облегчают проблему, допуская, что у нас есть несколько экспертных траекторий в данной среде. Это близко к in-context решению задач, которое мы проворачиваем с LLM, когда добавляем в контекст несколько примеров правильных пар вход-выход, можно даже сказать, что близко к сценарию ARC.
При этом, авторы говорят о сильной out-of-distribution генерализации, т.е. тестированию алгоритма на средах, совсем непохожих на обучающие. В общем, цели я одобряю. В чём заключается подход авторов?
На вход трансформеру подаётся текущая траектория агента в среде - состояния, действия, награды. Помимо этого, туда подаются несколько экспертных траекторий из этой же среды. В отличие от Algorithm Distillation / AdA, это не история обучения алгоритма на данной задаче. Это просто засэмплированные из датасета траектории уже обученного PPO, применённого на этой задаче.
В рамках сред существуют "уровни" - конкретные расположения всех объектов. Авторы всегда помещают как минимум одну экспертную траекторию из того же самого уровня, на котором идёт тестирование, в контекст. Учитывая, что среды сами по себе детерминированные (за исключением случайного залипания действия), это довольно сильная подсказка.
На то, что задача не очень сложная, наводит наличие такого бейзлайна, как Hashmap. Судя по описанию, авторы создают простой маппинг из состояния в действие на основе экспертных траекторий из контекста и пытаются играть им. Такая схема будет выдавать нулевой результат в любой неигрушечной задаче, но здесь они его используют.
Другой бейзлайн - это чистый Gato, но они его называют Behavioural Cloning. К сожалению, среди бейзлайна нет самого эксперта (PPO), не считая его калеку-представителя в виде Hashmap.
В результате, ICT с экспертными траекториями в контексте побеждает и Gato, и Hashmap, при этом сам Gato больше, чем на половине графиков, проигрывает Hashmap. Получается, что ICT получилось обобщить за пределы задач, на которых его обучали, но все они были настолько простыми, что особо порадоваться я не могу. При этом, нельзя сказать, что авторы придумали что-то сильно новое и чего-то качественно добились. Их подход вряд ли позволяет получить обобщающийся ICT с большей вероятностью, чем Algorithm Distillation / AdA.
@knowledge_accumulator
Продолжаем разбираться в In-Context лоре. Играться с In-Context трансформерами (ICT) можно разными способами. Мы уже разбирали два из них:
1) Cценарий Gato, когда на вход подаётся траектория в рамках одного эпизода в среде, и модель учат предсказывать действие эксперта в данном контексте.
2) Cценарий Algorithm Distillation / AdA, в котором алгоритм получает на вход не одну траекторию, а всю историю взаимодействия алгоритма со средой, и учится либо предсказывать действие алгоритма, либо на награду с помощью RL в квадрате.
Авторы данной работы хотят получить ICT, быстро адаптирующийся к новой задаче, но облегчают проблему, допуская, что у нас есть несколько экспертных траекторий в данной среде. Это близко к in-context решению задач, которое мы проворачиваем с LLM, когда добавляем в контекст несколько примеров правильных пар вход-выход, можно даже сказать, что близко к сценарию ARC.
При этом, авторы говорят о сильной out-of-distribution генерализации, т.е. тестированию алгоритма на средах, совсем непохожих на обучающие. В общем, цели я одобряю. В чём заключается подход авторов?
На вход трансформеру подаётся текущая траектория агента в среде - состояния, действия, награды. Помимо этого, туда подаются несколько экспертных траекторий из этой же среды. В отличие от Algorithm Distillation / AdA, это не история обучения алгоритма на данной задаче. Это просто засэмплированные из датасета траектории уже обученного PPO, применённого на этой задаче.
В рамках сред существуют "уровни" - конкретные расположения всех объектов. Авторы всегда помещают как минимум одну экспертную траекторию из того же самого уровня, на котором идёт тестирование, в контекст. Учитывая, что среды сами по себе детерминированные (за исключением случайного залипания действия), это довольно сильная подсказка.
На то, что задача не очень сложная, наводит наличие такого бейзлайна, как Hashmap. Судя по описанию, авторы создают простой маппинг из состояния в действие на основе экспертных траекторий из контекста и пытаются играть им. Такая схема будет выдавать нулевой результат в любой неигрушечной задаче, но здесь они его используют.
Другой бейзлайн - это чистый Gato, но они его называют Behavioural Cloning. К сожалению, среди бейзлайна нет самого эксперта (PPO), не считая его калеку-представителя в виде Hashmap.
В результате, ICT с экспертными траекториями в контексте побеждает и Gato, и Hashmap, при этом сам Gato больше, чем на половине графиков, проигрывает Hashmap. Получается, что ICT получилось обобщить за пределы задач, на которых его обучали, но все они были настолько простыми, что особо порадоваться я не могу. При этом, нельзя сказать, что авторы придумали что-то сильно новое и чего-то качественно добились. Их подход вряд ли позволяет получить обобщающийся ICT с большей вероятностью, чем Algorithm Distillation / AdA.
@knowledge_accumulator
👍10❤🔥1❤1