RL в квадрате [2016] - учим RL-алгоритм с помощью RL-алгоритма
Я в последнее время часто думаю о том, о чём говорил в посте выше - как нам обучить, а не спроектировать, алгоритм, который быстро обучается? Ближе всего из разделов ML к этому вопросу находится Meta Learning, и сегодня я бы хотел рассказать про одну из известных статей в этой области.
Чего мы хотим добиться? Мы хотим получить систему, которая быстро аккумулирует опыт и начинает круто работать на новой задаче. В отличие от этого, в классическом RL нас просто волнует производительность в конкретной среде.
Как ни странно, на самом деле между этими постановками достаточно маленькая разница.
1) При обучении мета-алгоритма у нас есть некое семейство задач, из которого мы сэмплируем при обучении. При этом, на самом деле, это семейство можно воспринимать как одну задачу, но со случайной скрытой различающейся динамикой.
2) Для того, чтобы перейти от производительности к обучаемости, нам надо всего лишь стереть грани между эпизодами. В этом случае мы будем учиться оптимизировать не только награду в течение текущего эпизода, но и в будущих эпизодах, то есть мы учимся в том числе и исследовать среду ради выгоды в следующих попытках. А в качестве входа алгоритм будет обрабатывать не только историю траектории в текущей попытке, но и весь полученный в прошлом опыт. Новые границы "эпизодов" теперь будут лежать между разными задачами.
В итоге весь подход статьи сводится к одному изменению поверх обычного RL - к стиранию границ между эпизодами. Эта абсурдная простота лично мне давит на мозг. Это заставляет задуматься - что такое на самом деле обучаемость? Как нам добиться именно адаптируемости к новому, а не учиться делать вообще всё одной моделью? Как именно человеческий мозг пришёл к этому? У меня есть всего лишь догадки, но про них как-нибудь в другой раз...
@knowledge_accumulator
Я в последнее время часто думаю о том, о чём говорил в посте выше - как нам обучить, а не спроектировать, алгоритм, который быстро обучается? Ближе всего из разделов ML к этому вопросу находится Meta Learning, и сегодня я бы хотел рассказать про одну из известных статей в этой области.
Чего мы хотим добиться? Мы хотим получить систему, которая быстро аккумулирует опыт и начинает круто работать на новой задаче. В отличие от этого, в классическом RL нас просто волнует производительность в конкретной среде.
Как ни странно, на самом деле между этими постановками достаточно маленькая разница.
1) При обучении мета-алгоритма у нас есть некое семейство задач, из которого мы сэмплируем при обучении. При этом, на самом деле, это семейство можно воспринимать как одну задачу, но со случайной скрытой различающейся динамикой.
2) Для того, чтобы перейти от производительности к обучаемости, нам надо всего лишь стереть грани между эпизодами. В этом случае мы будем учиться оптимизировать не только награду в течение текущего эпизода, но и в будущих эпизодах, то есть мы учимся в том числе и исследовать среду ради выгоды в следующих попытках. А в качестве входа алгоритм будет обрабатывать не только историю траектории в текущей попытке, но и весь полученный в прошлом опыт. Новые границы "эпизодов" теперь будут лежать между разными задачами.
В итоге весь подход статьи сводится к одному изменению поверх обычного RL - к стиранию границ между эпизодами. Эта абсурдная простота лично мне давит на мозг. Это заставляет задуматься - что такое на самом деле обучаемость? Как нам добиться именно адаптируемости к новому, а не учиться делать вообще всё одной моделью? Как именно человеческий мозг пришёл к этому? У меня есть всего лишь догадки, но про них как-нибудь в другой раз...
@knowledge_accumulator
👍18🤔7❤🔥2
Adaptive Agent (AdA) [2023] - текущий флагман Meta-RL
Сегодня расскажу вам о работе от Deepmind, применяющий описанную выше логику в современном масштабе.
1) В качестве задачи используется Xland 2.0 - это семейство из 10^40 задач. Это случайно генерируемые 3D-"площадки" со каким-то набором объектов, которые можно перемещать по площадке. Агент - это "существо" на площадке с видом от первого лица, которое может физически с объектами взаимодействовать. Объекты так же могут взаимодействовать в другими объектами согласно каким-то правилам (например, объект №1 и №4 при касании друг с другом исчезают / превращаются в объект №5). Агенту назначается награда за какое-то событие в этой среде (например, агент держит в руках объект №2).
2) В качестве модели используется полумиллиардный трансформер, который принимает на вход последние N событий из своей истории - вид от первого лица, награды и другую информацию. Как я уже говорил в прошлом посте, в постановке мета-обучения границы между эпизодами в одной задаче стёрты. Обучение занимает десятки миллиардов шагов.
3) Одним из ключей к успеху является Auto-curriculum learning. Мы регулярно сэмплируем пачку новых задач для обучения, но не учимся на всех подряд. Мы выбираем те задачи, которые для нас оптимальные по сложности - не слишком простые и не слишком сложные.
В результате у системы получается значительно обходить человека на Xland-задачах. При этом на графиках видно, что система умеет именно адаптироваться к новым задачам - производительность значительно растёт с каждой попыткой, и где-то на 10 попытке доходит до плато.
На мой взгляд, это очень интересное направление исследований. Однако, стоит заметить, что эти Xland-задачи не требуют интеллектуального поведения агентов, а ресурсов для обучения уже требуется столько, сколько в принципе сейчас способно на такое выделить человечество. Так что дальнейшее масштабирование втупую вряд ли даст нам огромное плоды. Будет очень интересно следить за дальнейшим развитием.
Видеообзор на полчаса.
@knowledge_accumulator
Сегодня расскажу вам о работе от Deepmind, применяющий описанную выше логику в современном масштабе.
1) В качестве задачи используется Xland 2.0 - это семейство из 10^40 задач. Это случайно генерируемые 3D-"площадки" со каким-то набором объектов, которые можно перемещать по площадке. Агент - это "существо" на площадке с видом от первого лица, которое может физически с объектами взаимодействовать. Объекты так же могут взаимодействовать в другими объектами согласно каким-то правилам (например, объект №1 и №4 при касании друг с другом исчезают / превращаются в объект №5). Агенту назначается награда за какое-то событие в этой среде (например, агент держит в руках объект №2).
2) В качестве модели используется полумиллиардный трансформер, который принимает на вход последние N событий из своей истории - вид от первого лица, награды и другую информацию. Как я уже говорил в прошлом посте, в постановке мета-обучения границы между эпизодами в одной задаче стёрты. Обучение занимает десятки миллиардов шагов.
3) Одним из ключей к успеху является Auto-curriculum learning. Мы регулярно сэмплируем пачку новых задач для обучения, но не учимся на всех подряд. Мы выбираем те задачи, которые для нас оптимальные по сложности - не слишком простые и не слишком сложные.
В результате у системы получается значительно обходить человека на Xland-задачах. При этом на графиках видно, что система умеет именно адаптироваться к новым задачам - производительность значительно растёт с каждой попыткой, и где-то на 10 попытке доходит до плато.
На мой взгляд, это очень интересное направление исследований. Однако, стоит заметить, что эти Xland-задачи не требуют интеллектуального поведения агентов, а ресурсов для обучения уже требуется столько, сколько в принципе сейчас способно на такое выделить человечество. Так что дальнейшее масштабирование втупую вряд ли даст нам огромное плоды. Будет очень интересно следить за дальнейшим развитием.
Видеообзор на полчаса.
@knowledge_accumulator
👍15
Как сделать систему, которая умеет обучаться чему угодно?
Расскажу обещанные ранее мысли по поводу того, как мета-обучать алгоритм, способный на всё. У меня в голове соединились следующие идеи:
1) Во-первых, система, уже умеющая решать высокоразмерные сложные задачи, сама должна быть сложной и содержащей много информации. Так или иначе, вы не сможете сделать маленькую модель, играющую в го, или управляющую телом. У вас слишком высокоразмерные входы и выходы. При этом вы хотите уметь решать всё, а не конкретную задачу, так что модели будут огромными.
2) Как происходит обучение системы на конкретной задаче? Перед началом обучения на тестовой задаче в системе уже зашито определённое количество информации. В случае AdA у нас обученный трансформер с огромным количество параметров, порядка сотен миллионов. Вы применяете его на новой задаче, он собирает какое-то дополнительное количество информации о задаче, необходимой для её решения, и решает её за несколько попыток.
3) Далее чистая спекуляция. Для того, чтобы решить какую-то задачу, нам нужно иметь в итоговой модели X информации. Доля той информации, которую модель извлекла в процессе обучения на новой задаче, от X, и есть характеристика обучаемости.
В случае AdA в модели зашиты сотни миллионов параметров, и она заточена под решение специфичного семейства задач. Для того, чтобы начать решать новую задачу, ей нужно всего лишь извлечь несколько бит информации о скрытой динамике конкретной задачи, чтобы её решать.
Человек устроен в корне не так! ДНК человека, кодирующая всю систему, содержит всего несколько миллиардов бит информации! По этому коду строится система, которая обладает на ~пять порядков большим объёмом параметров, и обучается уже в процессе.
То есть архитектура интеллекта человека кодируется небольшим количеством параметров. В процессе эволюции происходит оптимизация очень большой системы в очень сжатом пространстве параметров.
Давайте побрейнштормим!
Напишите в комментариях как можно больше различных сжатых параметризаций устройств обучающейся системы с большим количеством параметров.
@knowledge_accumulator
Расскажу обещанные ранее мысли по поводу того, как мета-обучать алгоритм, способный на всё. У меня в голове соединились следующие идеи:
1) Во-первых, система, уже умеющая решать высокоразмерные сложные задачи, сама должна быть сложной и содержащей много информации. Так или иначе, вы не сможете сделать маленькую модель, играющую в го, или управляющую телом. У вас слишком высокоразмерные входы и выходы. При этом вы хотите уметь решать всё, а не конкретную задачу, так что модели будут огромными.
2) Как происходит обучение системы на конкретной задаче? Перед началом обучения на тестовой задаче в системе уже зашито определённое количество информации. В случае AdA у нас обученный трансформер с огромным количество параметров, порядка сотен миллионов. Вы применяете его на новой задаче, он собирает какое-то дополнительное количество информации о задаче, необходимой для её решения, и решает её за несколько попыток.
3) Далее чистая спекуляция. Для того, чтобы решить какую-то задачу, нам нужно иметь в итоговой модели X информации. Доля той информации, которую модель извлекла в процессе обучения на новой задаче, от X, и есть характеристика обучаемости.
В случае AdA в модели зашиты сотни миллионов параметров, и она заточена под решение специфичного семейства задач. Для того, чтобы начать решать новую задачу, ей нужно всего лишь извлечь несколько бит информации о скрытой динамике конкретной задачи, чтобы её решать.
Человек устроен в корне не так! ДНК человека, кодирующая всю систему, содержит всего несколько миллиардов бит информации! По этому коду строится система, которая обладает на ~пять порядков большим объёмом параметров, и обучается уже в процессе.
То есть архитектура интеллекта человека кодируется небольшим количеством параметров. В процессе эволюции происходит оптимизация очень большой системы в очень сжатом пространстве параметров.
Давайте побрейнштормим!
Напишите в комментариях как можно больше различных сжатых параметризаций устройств обучающейся системы с большим количеством параметров.
@knowledge_accumulator
👍11👎1
Есть ли жизнь на других флангах обучающихся агентов?
Я зашёл в список статей, которые цитируют AdA, и наткнулся на забавную работу. Это хороший повод рассказать о в корне альтернативном способе обучения агентов на её примере.
Авторы пытаются позаимствовать из биологии следующий концепт - при обучении интеллектуальных систем у нас может не быть заданной извне награды, которую мы максимизируем каким-нибудь RL-алгоритмом. Вместо этого мы можем обучать агентов подобием генетического алгоритма, т.е. поддерживать популяцию параметров модели, и ввести какой-нибудь критерий отбора. Как же тут делают?
1) В качестве "среды" используется 2D-мир, в котором есть появляющаяся каким-то образом еда.
2) Наш агент - это "организм", параметризуемый нейронной сетью, принимающей на вход информацию об окружении агента и выдающей следующее действие.
3) У агента есть внутренний парамер "сытости". Он падает с каждым шагом, и поднимается, когда агент съедает что-нибудь.
4) Каждые X шагов агент, у которого сытость выше определённого уровня, размножается. Рядом с ним появляется ещё один агент с его весами и добавленным к ним нормальным шумом. Агент, у которого сытость меньше определённого уровня, исчезает.
Авторы наблюдают, что со временем агенты адаптируются к свойствам среды и обучаются тактикам работы в ней. В зависимости от разных параметров среды, например, общего количества ресурсов, агент может быть либо "кочевником" и постоянно искать новые места, либо наоборот, сторожить ресурсное место, которое он уже нашёл.
Конечно, это всё находится в весьма зачаточном состоянии. Мы всё ещё обучаем веса фиксированной архитектуры нейросети, а задача не способствует появлению какого-то интеллектуального поведения. Будем смотреть, получится ли из подобного подхода что-нибудь в будущем.
@knowledge_accumulator
Я зашёл в список статей, которые цитируют AdA, и наткнулся на забавную работу. Это хороший повод рассказать о в корне альтернативном способе обучения агентов на её примере.
Авторы пытаются позаимствовать из биологии следующий концепт - при обучении интеллектуальных систем у нас может не быть заданной извне награды, которую мы максимизируем каким-нибудь RL-алгоритмом. Вместо этого мы можем обучать агентов подобием генетического алгоритма, т.е. поддерживать популяцию параметров модели, и ввести какой-нибудь критерий отбора. Как же тут делают?
1) В качестве "среды" используется 2D-мир, в котором есть появляющаяся каким-то образом еда.
2) Наш агент - это "организм", параметризуемый нейронной сетью, принимающей на вход информацию об окружении агента и выдающей следующее действие.
3) У агента есть внутренний парамер "сытости". Он падает с каждым шагом, и поднимается, когда агент съедает что-нибудь.
4) Каждые X шагов агент, у которого сытость выше определённого уровня, размножается. Рядом с ним появляется ещё один агент с его весами и добавленным к ним нормальным шумом. Агент, у которого сытость меньше определённого уровня, исчезает.
Авторы наблюдают, что со временем агенты адаптируются к свойствам среды и обучаются тактикам работы в ней. В зависимости от разных параметров среды, например, общего количества ресурсов, агент может быть либо "кочевником" и постоянно искать новые места, либо наоборот, сторожить ресурсное место, которое он уже нашёл.
Конечно, это всё находится в весьма зачаточном состоянии. Мы всё ещё обучаем веса фиксированной архитектуры нейросети, а задача не способствует появлению какого-то интеллектуального поведения. Будем смотреть, получится ли из подобного подхода что-нибудь в будущем.
@knowledge_accumulator
👍22
Хотите разбавить рассуждения об интеллекте полезной информацией?
Мой бывший руководитель из Яндекса, ныне трудящийся в Microsoft - Миша Ройзнер - теперь ведёт свой телеграм-канал, в котором пишет про рекомендательные системы. Мне кажется, Миша занимался рекомендациями тогда, когда я ещё учился в школе, и в этой сфере разбирается на высшем уровне.
В последних постах он рассказывает про базовые фичи в рекомендательных моделях. С каждым постом фичи усложняются, спешите, пока ещё не поздно включиться!
Подписывайтесь!
Мой бывший руководитель из Яндекса, ныне трудящийся в Microsoft - Миша Ройзнер - теперь ведёт свой телеграм-канал, в котором пишет про рекомендательные системы. Мне кажется, Миша занимался рекомендациями тогда, когда я ещё учился в школе, и в этой сфере разбирается на высшем уровне.
В последних постах он рассказывает про базовые фичи в рекомендательных моделях. С каждым постом фичи усложняются, спешите, пока ещё не поздно включиться!
Подписывайтесь!
🔥11❤4👍3
Как параметризовать алгоритм обучения?
По всей видимости, мне нужно более понятно раскрыть эту тему, поскольку один из постов выше не вызвал никакого обсуждения, хотя, мне кажется, тема-то очень важная и интересная.
Итак, представим, что у нас есть система, обучающаяся чему-либо, например, классификации картинок. Чтобы оптимизировать обучаемость системы, нам нужно какое-то пространство для оптимизации, в котором мы будем изменять наши параметры в поиске лучшего алгоритма.
Самый известный способ параметризовать такой алгоритм - это программа на питоне, задающая архитектуру нейросети, трейнлуп, подсчёт ошибки и так далее. Оптимизацию в этом пространстве проводит человек почти вручную в рамках технологического прогресса. У этого есть 2 минуса:
1) Человечество - не самый лучший оптимизатор. Представьте, как если бы оно пыталось написать программу на питоне, которая берёт картинку и классифицирует по классам кошка/собака, без нейросетей.
2) Пространство "параметров" слишком структурировано. Человеческий интеллект задаёт ограничение на пространство алгоритмов, и то, что алгоритм состоит из длинной последовательности дискретных инструкций, в которой почти любая ошибка приводит к полной катастрофе, сильно затрудняет нам его оптимизацию автоматическими алгоритмами (например, генетическими). Иногда удаётся оптимизировать короткие программы, используя безумные ресурсы, как, например, в AutoMLZero, про который я писал пост.
Альтернативный способ параметризовать обучение системы - это, конечно же, ДНК. В нём закодировано поведение элементарной частицы, её деление, взаимодействие со своими копиями. Тот факт, что каждый кусочек ДНК влияет в разной степени на всю систему, не обязательно вызывая полный крах, и позволил эволюции оптимизировать адаптируемость человека к внешним вызовам, т.е. в том числе интеллект.
Как же я был приятно удивлён, когда обнаружил, что я не одинок в этих рассуждениях! Я нашёл статью, в которой авторы полностью переизобретают нейросети, не побоюсь этой фразы, и реально достигают успеха в мета-обучении. Об этом в следующем посте.
@knowledge_accumulator
По всей видимости, мне нужно более понятно раскрыть эту тему, поскольку один из постов выше не вызвал никакого обсуждения, хотя, мне кажется, тема-то очень важная и интересная.
Итак, представим, что у нас есть система, обучающаяся чему-либо, например, классификации картинок. Чтобы оптимизировать обучаемость системы, нам нужно какое-то пространство для оптимизации, в котором мы будем изменять наши параметры в поиске лучшего алгоритма.
Самый известный способ параметризовать такой алгоритм - это программа на питоне, задающая архитектуру нейросети, трейнлуп, подсчёт ошибки и так далее. Оптимизацию в этом пространстве проводит человек почти вручную в рамках технологического прогресса. У этого есть 2 минуса:
1) Человечество - не самый лучший оптимизатор. Представьте, как если бы оно пыталось написать программу на питоне, которая берёт картинку и классифицирует по классам кошка/собака, без нейросетей.
2) Пространство "параметров" слишком структурировано. Человеческий интеллект задаёт ограничение на пространство алгоритмов, и то, что алгоритм состоит из длинной последовательности дискретных инструкций, в которой почти любая ошибка приводит к полной катастрофе, сильно затрудняет нам его оптимизацию автоматическими алгоритмами (например, генетическими). Иногда удаётся оптимизировать короткие программы, используя безумные ресурсы, как, например, в AutoMLZero, про который я писал пост.
Альтернативный способ параметризовать обучение системы - это, конечно же, ДНК. В нём закодировано поведение элементарной частицы, её деление, взаимодействие со своими копиями. Тот факт, что каждый кусочек ДНК влияет в разной степени на всю систему, не обязательно вызывая полный крах, и позволил эволюции оптимизировать адаптируемость человека к внешним вызовам, т.е. в том числе интеллект.
Как же я был приятно удивлён, когда обнаружил, что я не одинок в этих рассуждениях! Я нашёл статью, в которой авторы полностью переизобретают нейросети, не побоюсь этой фразы, и реально достигают успеха в мета-обучении. Об этом в следующем посте.
@knowledge_accumulator
👍15🔥4
VSML [2021] - встречайте настоящие искусственные нейронные сети
Авторы во многом мотивируются мыслями, похожими на мои предыдущие посты - раз, два, три.
1) Они бросают вызов фиксированному алгоритму обучения. Backprop, апдейт весов и всё прочее задаётся человеком вручную. Если мы сможем обучать эти вещи, оптимизируя обучаемость, мы получим Meta-Learning.
2) Авторы обращают внимание, что есть 2 размерности -
И тут, в отличие от меня, авторы смогли придумать подход.
Будем обучать рекуррентную сеть с ячейками памяти, типа GRU. Но обычно у нас количество весов в ней квадратично к размеру памяти. Поэтому будем обучать много таких GRU с пошаренными весами. Сделаем из них многослойную конструкцию со связями между разными слоями в обе стороны и внутри слоя, так, чтобы у модели в теории была возможность повторить backprop. В результате у всей модели 2400 весов, а память на 257000 чисел.
Далее применяем генетический алгоритм! Как будем оценивать образцы? Будем показывать этой системе объекты (например, картинки из MNIST), считывать предсказание из последнего слоя, подавать на вход ошибку, и так много раз. В конце будем тестировать её предсказания и таким образом оценивать обучаемость.
Самая потрясающая часть - это результаты сравнения с традиционным meta-rl-подходом. Когда мы сетку, обученную обучаться на MNIST, применяем на совсем другом датасете, она работает! Они обучали разные алгоритмы на 6 датасетах, тестировали на всех остальных, и везде абсолютно одинаковая картина - бейзлайн показывает ~0, а VSML работает на приличном уровне.
Я уверен, что это направление исследований и приведёт нас к настоящему интеллекту, когда идея будет отмасштабирована и применена на правильной задаче.
@knowledge_accumulator
Авторы во многом мотивируются мыслями, похожими на мои предыдущие посты - раз, два, три.
1) Они бросают вызов фиксированному алгоритму обучения. Backprop, апдейт весов и всё прочее задаётся человеком вручную. Если мы сможем обучать эти вещи, оптимизируя обучаемость, мы получим Meta-Learning.
2) Авторы обращают внимание, что есть 2 размерности -
V_M
и V_L
. V_M
- это размерность заданного пространства обучающих алгоритмов. А V_L
- это размерность пространства "состояний" алгоритма. В случае нейросетей это количество весов. Авторы пишут - чтобы мета-алгоритм не был переобучен под семейство задач, V_L
должно быть гораздо больше V_M
. И тут, в отличие от меня, авторы смогли придумать подход.
Будем обучать рекуррентную сеть с ячейками памяти, типа GRU. Но обычно у нас количество весов в ней квадратично к размеру памяти. Поэтому будем обучать много таких GRU с пошаренными весами. Сделаем из них многослойную конструкцию со связями между разными слоями в обе стороны и внутри слоя, так, чтобы у модели в теории была возможность повторить backprop. В результате у всей модели 2400 весов, а память на 257000 чисел.
Далее применяем генетический алгоритм! Как будем оценивать образцы? Будем показывать этой системе объекты (например, картинки из MNIST), считывать предсказание из последнего слоя, подавать на вход ошибку, и так много раз. В конце будем тестировать её предсказания и таким образом оценивать обучаемость.
Самая потрясающая часть - это результаты сравнения с традиционным meta-rl-подходом. Когда мы сетку, обученную обучаться на MNIST, применяем на совсем другом датасете, она работает! Они обучали разные алгоритмы на 6 датасетах, тестировали на всех остальных, и везде абсолютно одинаковая картина - бейзлайн показывает ~0, а VSML работает на приличном уровне.
Я уверен, что это направление исследований и приведёт нас к настоящему интеллекту, когда идея будет отмасштабирована и применена на правильной задаче.
@knowledge_accumulator
👍23🤯10🔥1🤡1
Evolving Reinforcement Learning Algorithms [2021] - учим оптимальный RL-апдейт весов
После изучения предыдущей работы и осознания потенциала end-to-end обучения всего алгоритма целиком начинают очень сильно бросаться в глаза проблемы случаев, когда это делают не так.
Современные RL-алгоритмы это конструкции из большого количества костылей, подобранных человеком вручную для улучшения производительности. Но кое-что в них представляет собой то, что можно оптимизировать оптимизацией программы - это функция ошибки.
Традиционная DQN-ошибка:
Поэтому авторы решают представить ошибку в виде вычислительного графа (см. картинку) и оптимизировать её вычисление эволюционным алгоритмом. Мутации - это просто добавление / изменение рандомной вершины этого графа. Качество замеряют, обучая алгоритм с этой ошибкой.
На мой взгляд, проблемами такой параметризации является то, что в ней огромное количество функций это полный мусор, и то, что возможность локального подъёма к оптимальной функции в ней неясна. Их наличие подтверждается тем, что результат сильно лучше, если добавлять в популяцию уже существующие алгоритмы.
Тем не менее, в результате у них получаются довольно странные функции, которые работают лучше бейзлайна. Кожаные мешки в статье пытаются интерпретировать их, но они ещё не поняли, что пути оптимального алгоритма неисповедимы.
Всё это подтверждает 2 вещи, в которые я верю:
1) У человека явно есть сложности с тем, как применять RL-методы на реальных задачах
2) Мы получим алгоритм другого уровня, когда сможем оптимизировать весь RL-алгоритм, а не его кусочек
@knowledge_accumulator
После изучения предыдущей работы и осознания потенциала end-to-end обучения всего алгоритма целиком начинают очень сильно бросаться в глаза проблемы случаев, когда это делают не так.
Современные RL-алгоритмы это конструкции из большого количества костылей, подобранных человеком вручную для улучшения производительности. Но кое-что в них представляет собой то, что можно оптимизировать оптимизацией программы - это функция ошибки.
Традиционная DQN-ошибка:
L = (Q(s_t, a_t) − (r_t + γ ∗ max_a Q_t(s_{t+1}, a)))^2
имеет теоретические обоснование, но встречается с огромными проблемами на практике.Поэтому авторы решают представить ошибку в виде вычислительного графа (см. картинку) и оптимизировать её вычисление эволюционным алгоритмом. Мутации - это просто добавление / изменение рандомной вершины этого графа. Качество замеряют, обучая алгоритм с этой ошибкой.
На мой взгляд, проблемами такой параметризации является то, что в ней огромное количество функций это полный мусор, и то, что возможность локального подъёма к оптимальной функции в ней неясна. Их наличие подтверждается тем, что результат сильно лучше, если добавлять в популяцию уже существующие алгоритмы.
Тем не менее, в результате у них получаются довольно странные функции, которые работают лучше бейзлайна. Кожаные мешки в статье пытаются интерпретировать их, но они ещё не поняли, что пути оптимального алгоритма неисповедимы.
Всё это подтверждает 2 вещи, в которые я верю:
1) У человека явно есть сложности с тем, как применять RL-методы на реальных задачах
2) Мы получим алгоритм другого уровня, когда сможем оптимизировать весь RL-алгоритм, а не его кусочек
@knowledge_accumulator
👍5🤔3🔥2
Introducing Symmetries to Black Box Meta Reinforcement Learning [2021] - применяем VSML на RL-задачах
Одна из статей, про которую я рассказывал выше, понравилась мне настолько, что я решил прочитать все статьи её автора за последние годы, и там я нашёл кучу интересного на тему мета-обучения.
В данной работе в лоб применяют VSML + генетику (называют SymLA) в нескольких сериях экспериментов:
1) Классические элементарные RL-задачи с перемешиванием
Суть эксперимента в том, что мы обучаем модель обучаться на задаче, а затем мета-тестируем на той же задаче, но с перемешанными входами и действиями. Бейзлайн от этого плавится, а VSML в принципе инвариантна к перестановкам (на новой задаче), поэтому у неё всё хорошо
2) Лабиринт с капканом и сердечком
Агент управляет персонажем в маленькой координатной сетке, на которой есть положительная и отрицательная награда. Модель мета-обучают, а при мета-тестировании награды меняют местами.
Бейзлайн жёстко переобучается под сбор сердечка, и после того, как оно начинает давать отрицательную награду, он продолжает его собирать. У VSML кривые обучения в обоих случаях одинаковые, то есть она всю информацию извлекает в процессе мета-тестирования
3) Смена RL-задачи на радикально другую
Всё просто - модель обучают на Gridworld (задача из пункта 2), а применяют на CartPole - совсем непохожей задаче. Картина та же самая.
Вполне вероятно, что данная технология сейчас находится в положении нейросетей в конце 1990-х. На MNIST (снова) успешно применили, но на большей задаче применить пока нереально. Не знаю, какие тут нужны вычислительные ресурсы, и есть ли они хотя бы у Deepmind, но я думаю, тот, кто первый успешно применит это на Atari, начнёт новую эру в ML. У нас будут претренированные алгоритмы, которые все будут применять в своих нишевых задачах и получать сильный прирост к профиту.
Надеюсь, к этому времени не запретят заниматься ML без ярлыка отроскомнадзора святейших мудрецов.
@knowledge_accumulator
Одна из статей, про которую я рассказывал выше, понравилась мне настолько, что я решил прочитать все статьи её автора за последние годы, и там я нашёл кучу интересного на тему мета-обучения.
В данной работе в лоб применяют VSML + генетику (называют SymLA) в нескольких сериях экспериментов:
1) Классические элементарные RL-задачи с перемешиванием
Суть эксперимента в том, что мы обучаем модель обучаться на задаче, а затем мета-тестируем на той же задаче, но с перемешанными входами и действиями. Бейзлайн от этого плавится, а VSML в принципе инвариантна к перестановкам (на новой задаче), поэтому у неё всё хорошо
2) Лабиринт с капканом и сердечком
Агент управляет персонажем в маленькой координатной сетке, на которой есть положительная и отрицательная награда. Модель мета-обучают, а при мета-тестировании награды меняют местами.
Бейзлайн жёстко переобучается под сбор сердечка, и после того, как оно начинает давать отрицательную награду, он продолжает его собирать. У VSML кривые обучения в обоих случаях одинаковые, то есть она всю информацию извлекает в процессе мета-тестирования
3) Смена RL-задачи на радикально другую
Всё просто - модель обучают на Gridworld (задача из пункта 2), а применяют на CartPole - совсем непохожей задаче. Картина та же самая.
Вполне вероятно, что данная технология сейчас находится в положении нейросетей в конце 1990-х. На MNIST (снова) успешно применили, но на большей задаче применить пока нереально. Не знаю, какие тут нужны вычислительные ресурсы, и есть ли они хотя бы у Deepmind, но я думаю, тот, кто первый успешно применит это на Atari, начнёт новую эру в ML. У нас будут претренированные алгоритмы, которые все будут применять в своих нишевых задачах и получать сильный прирост к профиту.
Надеюсь, к этому времени не запретят заниматься ML без ярлыка от
@knowledge_accumulator
👍13
A Modern Self-Referential Weight Matrix That Learns to Modify Itself [2022] - поговорим о странном
Существуют совсем альтернативные обучающиеся системы, не использующиеся на практике. Эта концепция довольно забавная и будет использоваться в следующем посте, поэтому давайте о ней поговорим.
У нас есть матрица весов W. На каждом шаге она получает на вход какой-то вектор x. Результирующий вектор Wx разбивается на части y, k, q, b.
- y - это выход модели
- k, q и b - величины, использующиеся, чтобы обновить матрицу W. В расчётах там используется внешнее произведение векторов k и Wq, чтобы получить сдвиг для матрицы W, b используется в качестве learning rate. Всё немного сложнее в реальности, но примерно так.
Таким образом, в одной матрице зашито всё - и веса, и обучающий алгоритм этих весов. Всё будущее поведение системы задаётся только инициализацией матрицы W.
Вы спросите - нахрена это надо? Расскажу, как в принципе это может работать.
Данная матрица может быть полноценным few-shot learning алгоритмом. Чтобы её натренировать, мы сэмплируем из датасета с картинками N объектов из K классов, подаём эти N*K образцов и ответов в систему по одному, а затем учимся предсказывать тестовые сэмплы, бэкпропом пробрасывая градиенты и обновляя инициализацию матрицы W. Так делаем много раз, и со временем W на новой задаче начинает неплохо работать. Но не лучше топовых few-shot подходов.
Настоящий взрыв мозга с этой штукой я расскажу в следующем посте, а пока всем хороших выходных 😁
@knowledge_accumulator
Существуют совсем альтернативные обучающиеся системы, не использующиеся на практике. Эта концепция довольно забавная и будет использоваться в следующем посте, поэтому давайте о ней поговорим.
У нас есть матрица весов W. На каждом шаге она получает на вход какой-то вектор x. Результирующий вектор Wx разбивается на части y, k, q, b.
- y - это выход модели
- k, q и b - величины, использующиеся, чтобы обновить матрицу W. В расчётах там используется внешнее произведение векторов k и Wq, чтобы получить сдвиг для матрицы W, b используется в качестве learning rate. Всё немного сложнее в реальности, но примерно так.
Таким образом, в одной матрице зашито всё - и веса, и обучающий алгоритм этих весов. Всё будущее поведение системы задаётся только инициализацией матрицы W.
Вы спросите - нахрена это надо? Расскажу, как в принципе это может работать.
Данная матрица может быть полноценным few-shot learning алгоритмом. Чтобы её натренировать, мы сэмплируем из датасета с картинками N объектов из K классов, подаём эти N*K образцов и ответов в систему по одному, а затем учимся предсказывать тестовые сэмплы, бэкпропом пробрасывая градиенты и обновляя инициализацию матрицы W. Так делаем много раз, и со временем W на новой задаче начинает неплохо работать. Но не лучше топовых few-shot подходов.
Настоящий взрыв мозга с этой штукой я расскажу в следующем посте, а пока всем хороших выходных 😁
@knowledge_accumulator
👍13🔥4❤1🤝1
Eliminating Meta Optimization Through Self-Referential Meta Learning [2022] - подражаем жизни в оптимизации
Мы все слышали о ДНК и генетических алгоритмах, но суровая правда в том, что жизнь сложнее. Процесс оптимизации ДНК в ходе эволюции сам по себе закодирован в нём самом, и это не просто рандомные зашумления кода. Например, какие-то части ДНК более подвержены мутированию, чем другие. Нюансов море.
То есть жизнь - это не ДНК-параметризация + алгоритм оптимизации. Это единая сущность, оптимизирующая свою выживаемость и копирование в окружающей среде. Всё остальное - это только ограничения мира, которые кислота не выбирает. Позаимствовать эту идеологию и отказаться даже от ручного алгоритма мета-оптимизации предлагают авторы данной работы.
1) Выбираем архитектуру из самомодифицирующихся матриц весов из прошлого поста. Это может быть цепочка из 3 таких, т.е. 3-х слойная нейросеть.
2) Выбираем какую-нибудь задачу для этой сети. Это может быть в принципе что угодно, допустим, RL-задача. Задаём objective модели, например, суммарная награда в задаче.
3) Поддерживаем least-recently-used пул из N экземпляров весов. Изначально там один рандомный вектор.
4) Просто сэмплируем набор весов из пула с вероятностью, пропорциональной набранной им награде. Этим набором играем в среде N шагов, и модифицированную копию кладём обратно в пул, записывая собранную награду.
Эта абсолютно безумная схема как-то работает! Но на весьма простых задачах. Её в теории можно использовать для мета-мета-обучения, мета-мета-мета-обучения, и не упираться ни в какие человеческие алгоритмы оптимизации. Отвечаю на вопрос самых внимательных - в алгоритме нет рандома, и расхождение весов в разные стороны происходит засчёт рандома задачи.
Однако, мир ещё не готов и не нуждается в таких технологиях, потому что их время придёт тогда, когда потенциал обычных мета-алгоритмов будет исчерпан. Тем не менее, в идее подражать жизни и самой её сути есть что-то очень притягательное...
@knowledge_accumulator
Мы все слышали о ДНК и генетических алгоритмах, но суровая правда в том, что жизнь сложнее. Процесс оптимизации ДНК в ходе эволюции сам по себе закодирован в нём самом, и это не просто рандомные зашумления кода. Например, какие-то части ДНК более подвержены мутированию, чем другие. Нюансов море.
То есть жизнь - это не ДНК-параметризация + алгоритм оптимизации. Это единая сущность, оптимизирующая свою выживаемость и копирование в окружающей среде. Всё остальное - это только ограничения мира, которые кислота не выбирает. Позаимствовать эту идеологию и отказаться даже от ручного алгоритма мета-оптимизации предлагают авторы данной работы.
1) Выбираем архитектуру из самомодифицирующихся матриц весов из прошлого поста. Это может быть цепочка из 3 таких, т.е. 3-х слойная нейросеть.
2) Выбираем какую-нибудь задачу для этой сети. Это может быть в принципе что угодно, допустим, RL-задача. Задаём objective модели, например, суммарная награда в задаче.
3) Поддерживаем least-recently-used пул из N экземпляров весов. Изначально там один рандомный вектор.
4) Просто сэмплируем набор весов из пула с вероятностью, пропорциональной набранной им награде. Этим набором играем в среде N шагов, и модифицированную копию кладём обратно в пул, записывая собранную награду.
Эта абсолютно безумная схема как-то работает! Но на весьма простых задачах. Её в теории можно использовать для мета-мета-обучения, мета-мета-мета-обучения, и не упираться ни в какие человеческие алгоритмы оптимизации. Отвечаю на вопрос самых внимательных - в алгоритме нет рандома, и расхождение весов в разные стороны происходит засчёт рандома задачи.
Однако, мир ещё не готов и не нуждается в таких технологиях, потому что их время придёт тогда, когда потенциал обычных мета-алгоритмов будет исчерпан. Тем не менее, в идее подражать жизни и самой её сути есть что-то очень притягательное...
@knowledge_accumulator
👍19🔥3🤨2❤1🥴1
General-Purpose In-Context Learning by Meta-Learning Transformers [2022] - экспериментальный анализ феномена мета-обучения
В данной работе пытаются пронаблюдать различные типы поведения мета-обученных моделей в зависимости от условий. В каких случаях модель просто запоминает трейнсет задач, а в каких обучается обучаться новым задачам?
1) В каждой задаче мета-датасета будем как-то рандомно трансформировать MNIST. Каждый "мета-сэмпл" состоит последовательности пар "объект-метка" - обучающего датасета, и одного объекта без метки. Мета-трансформер должен посмотреть на эту последовательность и в конце предсказать метку для последнего объекта в последовательности. То есть он должен за 1 forward pass выучить классификатор на "датасете" и тут же его применить.
2) Создадим мета-тренировочный сет задач D, состоящий из
3) Будем обучать мета-трансформер с размером скрытого слоя
Если использовать достаточно большую модель и достаточно большой сет задач, то модель обучается обучаться на новых задачах. Если задач недостаточно, то модель просто запоминает мета-трейнсет. А если у модели слишком мало параметров, то у неё возникают трудности даже на мета-трейнсете. Этот эффект повторяется и при мета-тестировании на FashionMNIST.
Интересно было бы помучить Аду на предмет out-of-distribution работы, поскольку там как раз и модель большая, и задач много, но это всё-таки RL. Вообще, эта интуиция о том, как форсить обучаемость у мета-моделей, нам ещё понадобится.
@knowledge_accumulator
В данной работе пытаются пронаблюдать различные типы поведения мета-обученных моделей в зависимости от условий. В каких случаях модель просто запоминает трейнсет задач, а в каких обучается обучаться новым задачам?
1) В каждой задаче мета-датасета будем как-то рандомно трансформировать MNIST. Каждый "мета-сэмпл" состоит последовательности пар "объект-метка" - обучающего датасета, и одного объекта без метки. Мета-трансформер должен посмотреть на эту последовательность и в конце предсказать метку для последнего объекта в последовательности. То есть он должен за 1 forward pass выучить классификатор на "датасете" и тут же его применить.
2) Создадим мета-тренировочный сет задач D, состоящий из
X
рандомно трансформированных MNIST-подзадач. Кроме того, сделаем мета-тестовый сет задач с другими трансформациями. Можно брать и не MNIST.3) Будем обучать мета-трансформер с размером скрытого слоя
H
Авторы обучают огромный набор мета-трансформеров с разными значениями X
и H
, и смотрят на поведение модели на мета-тренировочном датасете и на мета-тестовом. И что же они видят?Если использовать достаточно большую модель и достаточно большой сет задач, то модель обучается обучаться на новых задачах. Если задач недостаточно, то модель просто запоминает мета-трейнсет. А если у модели слишком мало параметров, то у неё возникают трудности даже на мета-трейнсете. Этот эффект повторяется и при мета-тестировании на FashionMNIST.
Интересно было бы помучить Аду на предмет out-of-distribution работы, поскольку там как раз и модель большая, и задач много, но это всё-таки RL. Вообще, эта интуиция о том, как форсить обучаемость у мета-моделей, нам ещё понадобится.
@knowledge_accumulator
🔥7👍5🤔4
Вчера пришла радостная весть о том, что мне одобрили британскую Global Talent визу!
Таким образом, мой период без определённого места жительства подходит к концу.
Долго радоваться, однако, я не смог, потому что в этот же день Алексея Навального приговорили к особому режиму заключения на безумный срок.
В общем, продолжаем развиваться, впереди долгий путь к светлому будущему.
P.S. Канал вёл не ради визы, с ним будет всё, как прежде 😁
Таким образом, мой период без определённого места жительства подходит к концу.
Долго радоваться, однако, я не смог, потому что в этот же день Алексея Навального приговорили к особому режиму заключения на безумный срок.
В общем, продолжаем развиваться, впереди долгий путь к светлому будущему.
P.S. Канал вёл не ради визы, с ним будет всё, как прежде 😁
🎉49❤13🤡8🤮7😁3😢1
Adversarial Policies Beat Superhuman Go AIs [2023] - учимся унижать сверхчеловеческие нейросети
Оказывается, AlphaZero-подобные нейросети можно надурить! Причём, не разработав более сильного агента, а натренировав его специально против конкретного алгоритма. В то же время, этот агент будет проигрывать всем остальным, даже новичкам-людям, что показывает нетранзитивность сравнения уровня систем.
Для тренировки нам нужен доступ к нейросети-жертве - возможность получить её выход на любой вход, сами веса не нужны. Схема обучения почти такая же, как в AlphaZero - мы садим играть нейросеть против противника и учим её предсказывать исход игры и результат поиска более оптимального хода по дереву вариантов. Это итеративно улучшает качество её работы.
Отличие в том, что в данном случае противником выступает не сам обучаемый агент, а нейросеть-жертва. То есть противник и его стратегия являются полноценной частью среды с точки зрения агента, и он учится к нему приспосабливаться.
Авторы обнаружили, что нейросеть-жертва в некоторых ситуациях просто начинает пасовать, думая, что уже выиграла, хотя на самом деле на "её" территории остаётся камень противника и поэтому территория не засчитывается жертве (на картинке справа). Другая уязвимость заключается в том, что из камней можно нарисовать такой узор, от которого жертву начнёт глючить, и она проигрывает (на картинке слева). В статье много подробностей и картинок. Также интересно то, что уязвимости переносятся на другие системы, т.к. процессы тренировки и архитектуры нейросетей у современных алгоритмов во многом похожи.
Интересно, конечно, возможно ли сделать устойчивый к атакам алгоритм, модифицировав схему обучения, или это фундаментальная проблема ввиду размера пространства состояний игры.
@knowledge_accumulator
Оказывается, AlphaZero-подобные нейросети можно надурить! Причём, не разработав более сильного агента, а натренировав его специально против конкретного алгоритма. В то же время, этот агент будет проигрывать всем остальным, даже новичкам-людям, что показывает нетранзитивность сравнения уровня систем.
Для тренировки нам нужен доступ к нейросети-жертве - возможность получить её выход на любой вход, сами веса не нужны. Схема обучения почти такая же, как в AlphaZero - мы садим играть нейросеть против противника и учим её предсказывать исход игры и результат поиска более оптимального хода по дереву вариантов. Это итеративно улучшает качество её работы.
Отличие в том, что в данном случае противником выступает не сам обучаемый агент, а нейросеть-жертва. То есть противник и его стратегия являются полноценной частью среды с точки зрения агента, и он учится к нему приспосабливаться.
Авторы обнаружили, что нейросеть-жертва в некоторых ситуациях просто начинает пасовать, думая, что уже выиграла, хотя на самом деле на "её" территории остаётся камень противника и поэтому территория не засчитывается жертве (на картинке справа). Другая уязвимость заключается в том, что из камней можно нарисовать такой узор, от которого жертву начнёт глючить, и она проигрывает (на картинке слева). В статье много подробностей и картинок. Также интересно то, что уязвимости переносятся на другие системы, т.к. процессы тренировки и архитектуры нейросетей у современных алгоритмов во многом похожи.
Интересно, конечно, возможно ли сделать устойчивый к атакам алгоритм, модифицировав схему обучения, или это фундаментальная проблема ввиду размера пространства состояний игры.
@knowledge_accumulator
🔥14👍8❤🔥1
Reinforcement Learning from Passive Data via Latent Intentions [2023] - учимся жить, смотря ютуб
Сегодня у нас будет расслабляющий обзор статьи без глубоких философских рассуждений, как в старые времена.
Ютуб такой огромный и разнообразный, в нём столько данных, что придумывать разные способы извлекать знания из него можно бесконечно. Я уже писал ранее про то, как он был использован для предобучения агента игре в майнкрафт. А какие есть более общие подходы?
Если формализовать данные с ютуба, у нас есть только цепочки траекторий состояний в каких-то средах, т.е. кадры из видео, неизвестные награды и неизвестные совершённые действия. Нужен способ как-то обрабатывать именно такой вид данных.
Авторы этой работы делают смелое предположение: состояния S', встретившиеся после состояния S, с большей вероятностью можно считать целью агента в момент этой траектории, чем прочие состояния.
Основываясь на этом предположении, мы учим специальную функцию под названием Intent-Conditioned Value Function, которая показывает, насколько вероятно агент достигнет состояния S2 при нахождении в состоянии S1 и имея какую-то цель Z. Более подробно можно посмотреть в этом обзоре.
Пока всё это применяется на конкретном домене, т.е. модель учится на видеоиграх, например, Atari, и потом играет в них сама. По словам авторов, это работает лучше, чем бейзлайны, которые используют другую параметризацию и функции для обучения. Посмотрим, куда нас приведут подобные алгоритмы пассивного обучения.
@knowledge_accumulator
Сегодня у нас будет расслабляющий обзор статьи без глубоких философских рассуждений, как в старые времена.
Ютуб такой огромный и разнообразный, в нём столько данных, что придумывать разные способы извлекать знания из него можно бесконечно. Я уже писал ранее про то, как он был использован для предобучения агента игре в майнкрафт. А какие есть более общие подходы?
Если формализовать данные с ютуба, у нас есть только цепочки траекторий состояний в каких-то средах, т.е. кадры из видео, неизвестные награды и неизвестные совершённые действия. Нужен способ как-то обрабатывать именно такой вид данных.
Авторы этой работы делают смелое предположение: состояния S', встретившиеся после состояния S, с большей вероятностью можно считать целью агента в момент этой траектории, чем прочие состояния.
Основываясь на этом предположении, мы учим специальную функцию под названием Intent-Conditioned Value Function, которая показывает, насколько вероятно агент достигнет состояния S2 при нахождении в состоянии S1 и имея какую-то цель Z. Более подробно можно посмотреть в этом обзоре.
Пока всё это применяется на конкретном домене, т.е. модель учится на видеоиграх, например, Atari, и потом играет в них сама. По словам авторов, это работает лучше, чем бейзлайны, которые используют другую параметризацию и функции для обучения. Посмотрим, куда нас приведут подобные алгоритмы пассивного обучения.
@knowledge_accumulator
👍13🤔2
Простите, был неправ
За почти полгода ведения канала я перечитал около сотни статей, и за это время мои взгляды на большую картину происходящего в ML изменились.
Меня в первую очередь интересует изобретение интеллекта, превышающего человека. Приложения типа генерации красивых картинок, текстов, рекомендации - это интересно, но настоящая революция произойдёт тогда, когда научно-инженерный прогресс начнёт двигаться с помощью того, что не упирается в человеческие лимиты. Важно, что я говорю только о научно-инженерном прогрессе, а не о тотальной власти роботов, т.к. идеи коммунизма отвергаются при первой же попытке трезво взглянуть на реальность.
Что не изменилось за полгода? По-прежнему я не верю в языковые модели. Да, у них есть ряд интересных приложений, но они не обретут сверхчеловеческий интеллект, сколько не файнтюнь их на полайканные диалоги. Но у этого LLM-помешательства есть выгодополучатели - паникёры, стартаперы, а также желающие зачистить рынок от конкурентов с помощью насилия. Поэтому этот хайп может продолжиться вплоть до того, что какую-то из языковых моделей объявят AGI, а потом скажут, что она не захватила мир только потому, что на тестирование её "безопасности" потратили 2 миллиарда долларов.
Держа в голове это, я искал другие подходы. Я писал про них серии постов, много часов просто думал, и в конце концов пришёл к печальной мысли - вполне вероятно, интеллект слишком сложно (для человечества) спроектировать. Наша инженерия пользуется принципами, противоположными тому, как устроен человеческий мозг. Пытаться спроектировать интеллект - это как пытаться написать программу на C++, которая только с помощью ифов пытается отличить кошку от собаки на фотографии. И я сильно заблуждался, пытаясь изучать разные способы это сделать.
Сейчас я думаю, что мы можем создать интеллект только с помощью оптимизации, но такие подходы находятся в зачаточном состоянии, и ими мало кто занимается. Но я буду теперь более пристально следить за прогрессом в мета-обучении. Надеюсь, вам тоже это интересно.
@knowledge_accumulator
За почти полгода ведения канала я перечитал около сотни статей, и за это время мои взгляды на большую картину происходящего в ML изменились.
Меня в первую очередь интересует изобретение интеллекта, превышающего человека. Приложения типа генерации красивых картинок, текстов, рекомендации - это интересно, но настоящая революция произойдёт тогда, когда научно-инженерный прогресс начнёт двигаться с помощью того, что не упирается в человеческие лимиты. Важно, что я говорю только о научно-инженерном прогрессе, а не о тотальной власти роботов, т.к. идеи коммунизма отвергаются при первой же попытке трезво взглянуть на реальность.
Что не изменилось за полгода? По-прежнему я не верю в языковые модели. Да, у них есть ряд интересных приложений, но они не обретут сверхчеловеческий интеллект, сколько не файнтюнь их на полайканные диалоги. Но у этого LLM-помешательства есть выгодополучатели - паникёры, стартаперы, а также желающие зачистить рынок от конкурентов с помощью насилия. Поэтому этот хайп может продолжиться вплоть до того, что какую-то из языковых моделей объявят AGI, а потом скажут, что она не захватила мир только потому, что на тестирование её "безопасности" потратили 2 миллиарда долларов.
Держа в голове это, я искал другие подходы. Я писал про них серии постов, много часов просто думал, и в конце концов пришёл к печальной мысли - вполне вероятно, интеллект слишком сложно (для человечества) спроектировать. Наша инженерия пользуется принципами, противоположными тому, как устроен человеческий мозг. Пытаться спроектировать интеллект - это как пытаться написать программу на C++, которая только с помощью ифов пытается отличить кошку от собаки на фотографии. И я сильно заблуждался, пытаясь изучать разные способы это сделать.
Сейчас я думаю, что мы можем создать интеллект только с помощью оптимизации, но такие подходы находятся в зачаточном состоянии, и ими мало кто занимается. Но я буду теперь более пристально следить за прогрессом в мета-обучении. Надеюсь, вам тоже это интересно.
@knowledge_accumulator
👍41👏6🔥5🌚4👎2😁2🤡1🌭1🍌1
Нам нужен не просто Meta-Learning
Чтобы система обрела автономность уровня человека, ей недостаточно оптимально обучаться на случайной задаче из какого-то распределения, даже если мета-алгоритм успешно работает на заданиях не из обучающего распределения.
Нам нужен алгоритм, который умеет переиспользовать знания, полученные при решении предыдущих задач, чтобы быстро учиться чему-то новому. Но, в отличие от классического transfer learning и других few-shot подходов, она должна уметь переносить знания на задачи, радикально отличающиеся от того, что было до этого.
То есть нам нужен meta-meta-learning - обучение обучаться новым задачам после обучения старым. Похожие мысли высказывает и автор статьи Learning to acquire novel cognitive tasks with evolution, plasticity and meta-meta-learning [2021], указывая на необходимые 4 уровня вложенности цикла в таком процессе, если применять его в RL - итерации алгоритмов, задач для каждого алгоритма, эпизодов внутри задач и таймстэмпов внутри эпизодов.
В названии статьи есть небольшой обман - автор называет meta-meta-learning-ом обычный meta-learning, применённый в RL. Так что подробно мы её разбирать не будем, там грустная версия того, что было в этом посте.
Самое классное - это то, что на практике добавить этот цикл вложенности просто - нужно прогонять каждый экземпляр алгоритма в процессе его оценки не на 1 задаче, а на N задачах, и оценивать результат по кумулятивной награде по всем задачам. Но на это, конечно, нужно ещё больше вычислительных ресурсов. Когда ресёрчеры перестанут тратить миллиарды долларов на разработку костылей для языковых моделей, может быть, руки дойдут и до этого.
@knowledge_accumulator
Чтобы система обрела автономность уровня человека, ей недостаточно оптимально обучаться на случайной задаче из какого-то распределения, даже если мета-алгоритм успешно работает на заданиях не из обучающего распределения.
Нам нужен алгоритм, который умеет переиспользовать знания, полученные при решении предыдущих задач, чтобы быстро учиться чему-то новому. Но, в отличие от классического transfer learning и других few-shot подходов, она должна уметь переносить знания на задачи, радикально отличающиеся от того, что было до этого.
То есть нам нужен meta-meta-learning - обучение обучаться новым задачам после обучения старым. Похожие мысли высказывает и автор статьи Learning to acquire novel cognitive tasks with evolution, plasticity and meta-meta-learning [2021], указывая на необходимые 4 уровня вложенности цикла в таком процессе, если применять его в RL - итерации алгоритмов, задач для каждого алгоритма, эпизодов внутри задач и таймстэмпов внутри эпизодов.
В названии статьи есть небольшой обман - автор называет meta-meta-learning-ом обычный meta-learning, применённый в RL. Так что подробно мы её разбирать не будем, там грустная версия того, что было в этом посте.
Самое классное - это то, что на практике добавить этот цикл вложенности просто - нужно прогонять каждый экземпляр алгоритма в процессе его оценки не на 1 задаче, а на N задачах, и оценивать результат по кумулятивной награде по всем задачам. Но на это, конечно, нужно ещё больше вычислительных ресурсов. Когда ресёрчеры перестанут тратить миллиарды долларов на разработку костылей для языковых моделей, может быть, руки дойдут и до этого.
@knowledge_accumulator
👍16👏4😁1
AI-GAs: AI-generating algorithms, an alternate paradigm for producing general artificial intelligence [2019] - 3 столпа успеха
Я далеко не одинок в своих рассуждениях по поводу потенциала выученных, а не спроектированных AI-алгоритмов. Наткнулся на статью на прошлой неделе и был удивлён количеством схожих мыслей у нас с автором.
Он обращается к ресёрчерам - если бы вы вернулись на 15 лет назад с текущими знаниями, вы бы посоветовали людям исследовать фичи HOG и SIFT для задач компьютерного зрения (знаете, что это?) или заниматься алгоритмами, которые учат фичи самостоятельно?
Но не будем особо останавливаться на этом. Автор пишет, что обучаемые AI-алгоритмы держатся на 3 столпах:
1) Обучение архитектур - это про Neural Architecture Search и всё вокруг
2) Обучение алгоритмов обучения - это Meta-Learning
3) Эффективная среда для обучения
Первый пункт исследуется активно, второй чуть менее активно. Существуют способы даже объединить их в одну вещь, как делают в моём любимом VSML.
А вот с третьим пунктом пока сложно. Автор рассуждает о разных аспектах обучающих сред для meta-learning систем. Непросто задизайнить среду, которая будет стимулировать агента именно обучаться обучаться, а не запоминать, чтобы при этом она была разнообразной и подходящей сложности. Вполне возможно, мы разработаем какое-то параметризуемое огромное пространство задач, и параметры будут оптимизироваться автоматически параллельно с алгоритмом, чтобы задачи были оптимальные по сложности и разнообразию.
Некоторые аспекты этого присутствуют в обучении AlphaZero (self-play), другие в Ada (огромное пространство параметров задач), но, на мой вкус, пока что прям удачного решения придумано не было. До этого мы пока ещё не доросли.
@knowledge_accumulator
Я далеко не одинок в своих рассуждениях по поводу потенциала выученных, а не спроектированных AI-алгоритмов. Наткнулся на статью на прошлой неделе и был удивлён количеством схожих мыслей у нас с автором.
Он обращается к ресёрчерам - если бы вы вернулись на 15 лет назад с текущими знаниями, вы бы посоветовали людям исследовать фичи HOG и SIFT для задач компьютерного зрения (знаете, что это?) или заниматься алгоритмами, которые учат фичи самостоятельно?
Но не будем особо останавливаться на этом. Автор пишет, что обучаемые AI-алгоритмы держатся на 3 столпах:
1) Обучение архитектур - это про Neural Architecture Search и всё вокруг
2) Обучение алгоритмов обучения - это Meta-Learning
3) Эффективная среда для обучения
Первый пункт исследуется активно, второй чуть менее активно. Существуют способы даже объединить их в одну вещь, как делают в моём любимом VSML.
А вот с третьим пунктом пока сложно. Автор рассуждает о разных аспектах обучающих сред для meta-learning систем. Непросто задизайнить среду, которая будет стимулировать агента именно обучаться обучаться, а не запоминать, чтобы при этом она была разнообразной и подходящей сложности. Вполне возможно, мы разработаем какое-то параметризуемое огромное пространство задач, и параметры будут оптимизироваться автоматически параллельно с алгоритмом, чтобы задачи были оптимальные по сложности и разнообразию.
Некоторые аспекты этого присутствуют в обучении AlphaZero (self-play), другие в Ada (огромное пространство параметров задач), но, на мой вкус, пока что прям удачного решения придумано не было. До этого мы пока ещё не доросли.
@knowledge_accumulator
👍13
Discovering Reinforcement Learning Algorithms [2020] - out-of-distribution meta-RL из древней эпохи
Не так давно мне в комментариях порекомендовали эту статью, где авторы мета-обучают RL-алгоритм на простых задачах, а затем его в меру удачно применяют на более сложных.
1) У нас есть модель агента, выдающая по состоянию s вероятностную стратегию pi и какой-то вектор y.
2) Кроме этого, у нас есть "сеть-учитель", которая и является мета-моделью. Применяется она так: после того, как агент сгенерировал траекторию из pi и y в среде, мы подаёт их в мета-модель, причём в обратном порядке. На выходе мета-модель генерирует таргеты для обучения модели.
3) Агента просто обучают с помощью ошибки между его выдачей и выданными таргетами.
4) Мета-модель обучается с помощью обычного RL. Производительность берётся у агента после его обучения, а производная берётся у действий самого агента в конце обучения. То есть нужно делать бэкпроп через весь процесс обучения агента, чтобы посчитать градиенты мета-модели.
5) Это всё не влезает в память и нестабильно работает, поэтому частично обрубают градиенты и регуляризуют обучение.
В результате модель обходит человека в ~20% игр, обходит также и некоторые классические алгоритмы в части игр, хотя мета-модель обучали только на игрушечных задачах.
Мне кажется, что само понимание, что нужно учить мета-алгоритм, который не затачивается под домен (потому что получает на вход только историю действий и какие-то вспомогательные векторы) - это круто, авторы упоминают второй столп из предыдущего поста, но выбранная мета-архитектура и параметризация вызывает огромное количество вопросов.
@knowledge_accumulator
Не так давно мне в комментариях порекомендовали эту статью, где авторы мета-обучают RL-алгоритм на простых задачах, а затем его в меру удачно применяют на более сложных.
1) У нас есть модель агента, выдающая по состоянию s вероятностную стратегию pi и какой-то вектор y.
2) Кроме этого, у нас есть "сеть-учитель", которая и является мета-моделью. Применяется она так: после того, как агент сгенерировал траекторию из pi и y в среде, мы подаёт их в мета-модель, причём в обратном порядке. На выходе мета-модель генерирует таргеты для обучения модели.
3) Агента просто обучают с помощью ошибки между его выдачей и выданными таргетами.
4) Мета-модель обучается с помощью обычного RL. Производительность берётся у агента после его обучения, а производная берётся у действий самого агента в конце обучения. То есть нужно делать бэкпроп через весь процесс обучения агента, чтобы посчитать градиенты мета-модели.
5) Это всё не влезает в память и нестабильно работает, поэтому частично обрубают градиенты и регуляризуют обучение.
В результате модель обходит человека в ~20% игр, обходит также и некоторые классические алгоритмы в части игр, хотя мета-модель обучали только на игрушечных задачах.
Мне кажется, что само понимание, что нужно учить мета-алгоритм, который не затачивается под домен (потому что получает на вход только историю действий и какие-то вспомогательные векторы) - это круто, авторы упоминают второй столп из предыдущего поста, но выбранная мета-архитектура и параметризация вызывает огромное количество вопросов.
@knowledge_accumulator
👍17
Сегодня у меня для вас потрясающее видео вместо статьи.
Не стоит переоценивать разницу интеллекта у человека и остальных обезьян. Как я уже писал ранее, эволюции потребовалось не так много времени, чтобы доработать интеллект от того, который требуется для выживания животных в природе, до того, который есть у нас. Наслаждайтесь 😄
Ставь 🙊, если хотел бы когда-нибудь потусить с Канзи!
https://youtu.be/UKpFoYqN9-0
Не стоит переоценивать разницу интеллекта у человека и остальных обезьян. Как я уже писал ранее, эволюции потребовалось не так много времени, чтобы доработать интеллект от того, который требуется для выживания животных в природе, до того, который есть у нас. Наслаждайтесь 😄
Ставь 🙊, если хотел бы когда-нибудь потусить с Канзи!
https://youtu.be/UKpFoYqN9-0
YouTube
I Taught an Ape How to Play Minecraft
🕹️Break up with basic browsers. Get Opera GX here: https://operagx.gg/ChrisDaCow Sponsored by Opera GX!
GET KANZI MERCH ❤️🎉https://www.apeinitiative.org/store
▼ Watch UNCUT Kanzi Footage ▼
https://www.patreon.com/chrisdacow
🎬 Behind the Scenes & Extra…
GET KANZI MERCH ❤️🎉https://www.apeinitiative.org/store
▼ Watch UNCUT Kanzi Footage ▼
https://www.patreon.com/chrisdacow
🎬 Behind the Scenes & Extra…
🙈7🙉7🙊7