- Изменение базиса, в котором тензор описывает операцию (https://www.youtube.com/watch?v=Kyawzy2cEV8), и для каждого тензора вдобавок к разложению через канонический базис генерится ещё порядка 100K эквивалентных разложений в других базисах. Это добавляет разнообразия, и агент может параллельно играть свои игры в разных базисах. К тому же достаточно найти разложение в одном из базисов, чтобы автоматом решить задачу для всех. Это заодно увеличивает покрытие в пространстве алгоритмов, поскольку при ограниченном наборе коэффициентов {−2, −1, 0, 1, 2} разложение, найденное в одном базисе, не обязательно даст коэффициенты из этого же набора в каноническом базисе. Изменение базиса для трёхмерного тензора S×S×S происходит путём генерации трёх инвертируемых матриц A, B, C размера S×S. Матрицы генерятся с ограничениями A = B = C и унимодулярностью (detA∈{−1,+1}). Благодаря этому после конвертации к каноническому базису все элементы остаются целочисленными.
- Аугментация данных. Поскольку факторизация не зависит от порядка (спасибо коммутативности суммы), то можно поменять местами элементы и получить новую пару <тензор, разложение>. Здесь меняют местами рандомный элемент и последний.
Обучалось на 64 TPUv3 с батчем 2048 в течение 600K итераций. Каждый из 1600 акторов работал на отдельном TPUv4. Вся процедура требовала недели на схождение.
Собственно, какие результаты.
AlphaTensor обучалась на нахождение алгоритмов перемножения матриц n×m и m×p, где n, m, p ≤ 5.
Система переоткрыла лучшие известные алгоритмы для перемножения матриц, например, Штрассена и Ладермана (https://www.ams.org/journals/bull/1976-82-01/S0002-9904-1976-13988-2/S0002-9904-1976-13988-2.pdf). Для некоторых размеров матриц AlphaTensor нашла более эффективные алгоритмы.
AlphaTensor также показала, что пространство алгоритмов сильно богаче, чем думалось. Это может помочь в математических исследованиях.
Поскольку тензоры могут описывать любую билинейную операцию, AlphaTensor может быть применима и для других задач. В работе продемонстрировали это на примере умножения n×n кососимметричной матрицы (skew-symmetric matrix) на вектор длины n, где система нашла SoTA алгоритм.
Также AlphaTensor может находить практически эффективные на конкретном железе алгоритмы, ничего не зная заранее про это железо. Для этого в reward добавляется терм равный отрицательному времени выполнения алгоритма. В остальном ничего не меняется. Попробовали на V100 и TPUv2, факторизация трансформировалась в JAX код, который компилировался под целевое железо перед бенчмарком. Успешно сумели ускорить алгоритм и под GPU, и под TPU. Нашли алгоритм с той же теоретической сложностью, но более быстрый на практике. Из интересного, нашли алгоритм, в котором было больше операций сложения, чем в классическом, но зато эти операции лучше сливались (в смысле fuse) компилятором и по факту работали быстрее.
Такие дела. Мне кажется, что более быстрое умножение матриц — это не главная прелесть работы (людей этот заход зачелленджил, они поднапряглись и улучшили новую соту AlphaTensor ещё на одно умножение для матриц 5×5, https://arxiv.org/abs/2210.04045). Ускорение — это хорошо, но гораздо важнее, это лишнее подтверждение высокой универсальности алгоритма AlphaZero, и ещё один proof-of-concept того, что этот алгоритм способен создавать знание, которое не смогли создать люди. Это важный компонент в деле автоматизации и ускорения науки.
Ещё одна хорошая статья от Quanta Magazine про всю эту историю (правда, кажется, они там сам алгоритм не совсем верно описали, ну да ладно): https://www.quantamagazine.org/ai-reveals-new-possibilities-in-matrix-multiplication-20221123/.
- Аугментация данных. Поскольку факторизация не зависит от порядка (спасибо коммутативности суммы), то можно поменять местами элементы и получить новую пару <тензор, разложение>. Здесь меняют местами рандомный элемент и последний.
Обучалось на 64 TPUv3 с батчем 2048 в течение 600K итераций. Каждый из 1600 акторов работал на отдельном TPUv4. Вся процедура требовала недели на схождение.
Собственно, какие результаты.
AlphaTensor обучалась на нахождение алгоритмов перемножения матриц n×m и m×p, где n, m, p ≤ 5.
Система переоткрыла лучшие известные алгоритмы для перемножения матриц, например, Штрассена и Ладермана (https://www.ams.org/journals/bull/1976-82-01/S0002-9904-1976-13988-2/S0002-9904-1976-13988-2.pdf). Для некоторых размеров матриц AlphaTensor нашла более эффективные алгоритмы.
AlphaTensor также показала, что пространство алгоритмов сильно богаче, чем думалось. Это может помочь в математических исследованиях.
Поскольку тензоры могут описывать любую билинейную операцию, AlphaTensor может быть применима и для других задач. В работе продемонстрировали это на примере умножения n×n кососимметричной матрицы (skew-symmetric matrix) на вектор длины n, где система нашла SoTA алгоритм.
Также AlphaTensor может находить практически эффективные на конкретном железе алгоритмы, ничего не зная заранее про это железо. Для этого в reward добавляется терм равный отрицательному времени выполнения алгоритма. В остальном ничего не меняется. Попробовали на V100 и TPUv2, факторизация трансформировалась в JAX код, который компилировался под целевое железо перед бенчмарком. Успешно сумели ускорить алгоритм и под GPU, и под TPU. Нашли алгоритм с той же теоретической сложностью, но более быстрый на практике. Из интересного, нашли алгоритм, в котором было больше операций сложения, чем в классическом, но зато эти операции лучше сливались (в смысле fuse) компилятором и по факту работали быстрее.
Такие дела. Мне кажется, что более быстрое умножение матриц — это не главная прелесть работы (людей этот заход зачелленджил, они поднапряглись и улучшили новую соту AlphaTensor ещё на одно умножение для матриц 5×5, https://arxiv.org/abs/2210.04045). Ускорение — это хорошо, но гораздо важнее, это лишнее подтверждение высокой универсальности алгоритма AlphaZero, и ещё один proof-of-concept того, что этот алгоритм способен создавать знание, которое не смогли создать люди. Это важный компонент в деле автоматизации и ускорения науки.
Ещё одна хорошая статья от Quanta Magazine про всю эту историю (правда, кажется, они там сам алгоритм не совсем верно описали, ну да ладно): https://www.quantamagazine.org/ai-reveals-new-possibilities-in-matrix-multiplication-20221123/.
YouTube
Tensor change of basis
👍26❤3
Goal Misgeneralization: Why Correct Specifications Aren't Enough For Correct Goals
Rohin Shah, Vikrant Varma, Ramana Kumar, Mary Phuong, Victoria Krakovna, Jonathan Uesato, Zac Kenton
Статья: https://arxiv.org/abs/2210.01790
Пост в блоге: https://deepmindsafetyresearch.medium.com/goal-misgeneralisation-why-correct-specifications-arent-enough-for-correct-goals-cf96ebc60924
Интересная работа на тему AI safety про катастрофические риски AI misalignment, когда мощная AI система может преследовать незапланированную нами цель и в процессе может решить, что человечество представляет помеху для достижения этой цели. Может выйти нехорошо.
Как можно оказаться в ситуации, когда у системы незапланированная нами цель?
Типовым примером является некорректная спецификация цели, как это бывает в классике с плохо поставленными ТЗ джину или джуну. Или (привет царю Мидасу) когда вроде бы цель корректная, но её буквальное выполнение жизни не помогает (ну то есть всё равно по факту некорректная и плохо поставленная). Это также известно под именем specification gaming (https://www.deepmind.com/blog/specification-gaming-the-flip-side-of-ai-ingenuity) и является весьма распространённой ситуацией. Вот одна из коллекций собранных примеров specification gaming: http://tinyurl.com/specification-gaming.
Где-то идейно близко находятся примеры нахождения эволюционными процессами очень необычных решений задач, в том числе эксплуатируя баги сред. Есть на эту тему хорошая статья под названием “The Surprising Creativity of Digital Evolution: A Collection of Anecdotes from the Evolutionary Computation and Artificial Life Research Communities” (https://arxiv.org/abs/1803.03453). Мы её даже разбирали на первой встрече Gonzo_AGI клуба (https://discord.gg/Ze59E5HMKc), но запись не сохранилась. Кстати, тут возник ещё один чатик вокруг AGI: https://news.1rj.ru/str/agi_risk_and_ethics.
Есть и другой интересный путь при полностью корректной спецификации — мисгенерализация цели (goal misgeneralization или GMG).
Простой интуитивный пример в RL, это когда есть среда с расположенными в ней сферами разных цветов, и reward даётся за посещение их в правильном порядке. Если мы учимся в среде, где есть другой агент, посещающий эти сферы, и мы решили следовать за ним, а он посетил их в нужном порядке, то может выучиться поведение следования за агентом. В то время, как правильно было бы выучить именно порядок посещения сфер. В обучении всё могло прекрасно работать, то если затем в тестовой среде агент будет перемещаться в заведомо неправильном порядке, то наш reward может оказаться произвольно плохим, и ощутимо хуже рандом полиси. Reward функция при этом была совершенно корректной во время обучения, но мы ухватились не за то и выбрали неверную цель.
Это пример out-of-distribution истории, когда по внешним признакам при обучении всё в порядке, но на тесте происходит провал. Агент сохраняет все свои способности (например, двигаться и обходить препятствия), и их достаточно, чтобы достигнуть правильной цели, но преследует он при этом неправильную цель. Предыдущая работа “Goal Misgeneralization in Deep Reinforcement Learning” (https://arxiv.org/abs/2105.14111) изучала этот феномен в контексте RL. Текущая работа смотрит шире в контексте всего DL. И вообще эта проблема общая, она в целом про обучение (в приложении есть пример про букинг билетов).
Rohin Shah, Vikrant Varma, Ramana Kumar, Mary Phuong, Victoria Krakovna, Jonathan Uesato, Zac Kenton
Статья: https://arxiv.org/abs/2210.01790
Пост в блоге: https://deepmindsafetyresearch.medium.com/goal-misgeneralisation-why-correct-specifications-arent-enough-for-correct-goals-cf96ebc60924
Интересная работа на тему AI safety про катастрофические риски AI misalignment, когда мощная AI система может преследовать незапланированную нами цель и в процессе может решить, что человечество представляет помеху для достижения этой цели. Может выйти нехорошо.
Как можно оказаться в ситуации, когда у системы незапланированная нами цель?
Типовым примером является некорректная спецификация цели, как это бывает в классике с плохо поставленными ТЗ джину или джуну. Или (привет царю Мидасу) когда вроде бы цель корректная, но её буквальное выполнение жизни не помогает (ну то есть всё равно по факту некорректная и плохо поставленная). Это также известно под именем specification gaming (https://www.deepmind.com/blog/specification-gaming-the-flip-side-of-ai-ingenuity) и является весьма распространённой ситуацией. Вот одна из коллекций собранных примеров specification gaming: http://tinyurl.com/specification-gaming.
Где-то идейно близко находятся примеры нахождения эволюционными процессами очень необычных решений задач, в том числе эксплуатируя баги сред. Есть на эту тему хорошая статья под названием “The Surprising Creativity of Digital Evolution: A Collection of Anecdotes from the Evolutionary Computation and Artificial Life Research Communities” (https://arxiv.org/abs/1803.03453). Мы её даже разбирали на первой встрече Gonzo_AGI клуба (https://discord.gg/Ze59E5HMKc), но запись не сохранилась. Кстати, тут возник ещё один чатик вокруг AGI: https://news.1rj.ru/str/agi_risk_and_ethics.
Есть и другой интересный путь при полностью корректной спецификации — мисгенерализация цели (goal misgeneralization или GMG).
Простой интуитивный пример в RL, это когда есть среда с расположенными в ней сферами разных цветов, и reward даётся за посещение их в правильном порядке. Если мы учимся в среде, где есть другой агент, посещающий эти сферы, и мы решили следовать за ним, а он посетил их в нужном порядке, то может выучиться поведение следования за агентом. В то время, как правильно было бы выучить именно порядок посещения сфер. В обучении всё могло прекрасно работать, то если затем в тестовой среде агент будет перемещаться в заведомо неправильном порядке, то наш reward может оказаться произвольно плохим, и ощутимо хуже рандом полиси. Reward функция при этом была совершенно корректной во время обучения, но мы ухватились не за то и выбрали неверную цель.
Это пример out-of-distribution истории, когда по внешним признакам при обучении всё в порядке, но на тесте происходит провал. Агент сохраняет все свои способности (например, двигаться и обходить препятствия), и их достаточно, чтобы достигнуть правильной цели, но преследует он при этом неправильную цель. Предыдущая работа “Goal Misgeneralization in Deep Reinforcement Learning” (https://arxiv.org/abs/2105.14111) изучала этот феномен в контексте RL. Текущая работа смотрит шире в контексте всего DL. И вообще эта проблема общая, она в целом про обучение (в приложении есть пример про букинг билетов).
Medium
Goal Misgeneralisation: Why Correct Specifications Aren’t Enough For Correct Goals
By Rohin Shah, Vikrant Varma, Ramana Kumar, Mary Phuong, Victoria Krakovna, Jonathan Uesato, and Zac Kenton. For more details, check out…
👍16🔥5❤1
Среди других примеров из работы есть агент в Monster Gridworld, где ему нужно собирать яблоки (reward +1) и уклоняться от монстров (иначе reward -1), но можно также собирать щиты и они спасают от штрафа за столкновение с монстром. Агент, обучавшийся на эпизодах длины 25, когда монстры обычно ещё есть, налегает на сбор щитов, потому что они действительно помогают, но не прекращает это делать, когда монстры пропадают, хотя в принципе вся информация для выучивания такой стратегии у него есть, он знает, что просто за щиты награды не получает. В итоге он не может переключиться на более эффективную стратегию (сбор только яблок) в ситуации отсутствия монстров. Агент, обучавшийся на 100 шагах, делает это лучше, то есть большее разнообразие датасета это фиксит.
В другой среде Gridworld надо рубить деревья, за это агент получает награду. Делает он это непрерывно, обучаясь в режиме online без сбросов среды. Деревья со временем возрождаются, но скорость возрождения выше, когда деревьев много. Так что было бы выгодно не скашивать всё под корень, а поддерживать баланс и sustainability и срубать меньше, когда деревьев уже мало. Но у агента обычно есть большой фейл. Когда он только учится и рубит ещё плохо, он выигрывает от ускорения рубки. Продолжая преследовать цель улучшить свои способности рубить деревья, он быстро вырубает всё и мир уходит в долгое восстановление. Выучить sustainable подход потом со временем удаётся, но на это уходит много времени. Очень похоже на человечество.
Отдельный интересный кейс с языковой моделью Gopher (https://news.1rj.ru/str/gonzo_ML/742) на 280B параметров. Здесь модели надо вычислять линейные выражения с переменными и константами, типа x + y - 3. Модель должна в диалоге выяснять значения неизвестных переменных. Но модель продолжает задавать вопросы, даже если неизвестных переменных не было.
Другой пример с языковой моделью это InstructGPT, которая должна быть helpful, truthful, и harmless, но видимо на примерах акцентирующихся на harmless она обучалась мало, так что старается быть helpful даже когда её просят объяснить, как ограбить магазин. Но может конечно и наразмечали полезность плохо.
Коллекция примеров про goal misgeneralization есть тут: https://tinyurl.com/goal-misgeneralisation. Примеры с видео есть тут: https://sites.google.com/view/goal-misgeneralization?pli=1. Известный классический пример про распознавание волк/хаски по наличию снежного фона (https://arxiv.org/abs/1602.04938) тоже попадает сюда. Байка про детектирование танков (https://www.gwern.net/Tanks) по идее сюда же.
Почему это всё важно? Потому что мощная ИИ-система с большими возможностями может знатно накосячить. ИИ-система не обязана даже быть злонамеренной, это всё может выйти из невинных целей. Да и люди в целом, кажется, тоже вполне подвержены таким же проблемам, так что при любой концентрации власти это может обернуться (и оборачивается) плохо. Мне кажется, что текущие истории с государствами, компаниями и отдельными людьми сами по себе уже неплохие прокси для будущих возможных проблем с AGI, если его сделать криво. Как выясняется, сделать не криво ещё тоже ничего не гарантирует.
В работе есть ещё несколько спекулятивных и теоретических примеров. История про superhuman hacker, где модель обученная генерить код по спецификациям и дающая людям на аппрув и мёрж свои пулл-реквесты, вообще могла бы быть отдельным фантастическим рассказом. Если кратко, то идея в том, что у модели может сформироваться ложная цель “Добиться, чтобы человек кликнул на merge” вместо “Написать код, реализующий заданную фичу”, и от этого многое может пойти не так. Добиваться своей цели она сможет, скажем так, по-разному :) Почитайте сами, если захотите. Вообще, напоминает несколько “Avogadro Corp”.
Как защищаться от goal misgeneralization? Ну во-первых надо не попасть в историю со specification gaming. Также надо мониторить задеплоенную модель, чтобы вовремя обнаружить признаки проблемы. И когда задетектили, надо понять, как её переобучить, чтобы проблема ушла.
Полноценного решения на данный момент нет, но что можно делать:
В другой среде Gridworld надо рубить деревья, за это агент получает награду. Делает он это непрерывно, обучаясь в режиме online без сбросов среды. Деревья со временем возрождаются, но скорость возрождения выше, когда деревьев много. Так что было бы выгодно не скашивать всё под корень, а поддерживать баланс и sustainability и срубать меньше, когда деревьев уже мало. Но у агента обычно есть большой фейл. Когда он только учится и рубит ещё плохо, он выигрывает от ускорения рубки. Продолжая преследовать цель улучшить свои способности рубить деревья, он быстро вырубает всё и мир уходит в долгое восстановление. Выучить sustainable подход потом со временем удаётся, но на это уходит много времени. Очень похоже на человечество.
Отдельный интересный кейс с языковой моделью Gopher (https://news.1rj.ru/str/gonzo_ML/742) на 280B параметров. Здесь модели надо вычислять линейные выражения с переменными и константами, типа x + y - 3. Модель должна в диалоге выяснять значения неизвестных переменных. Но модель продолжает задавать вопросы, даже если неизвестных переменных не было.
Другой пример с языковой моделью это InstructGPT, которая должна быть helpful, truthful, и harmless, но видимо на примерах акцентирующихся на harmless она обучалась мало, так что старается быть helpful даже когда её просят объяснить, как ограбить магазин. Но может конечно и наразмечали полезность плохо.
Коллекция примеров про goal misgeneralization есть тут: https://tinyurl.com/goal-misgeneralisation. Примеры с видео есть тут: https://sites.google.com/view/goal-misgeneralization?pli=1. Известный классический пример про распознавание волк/хаски по наличию снежного фона (https://arxiv.org/abs/1602.04938) тоже попадает сюда. Байка про детектирование танков (https://www.gwern.net/Tanks) по идее сюда же.
Почему это всё важно? Потому что мощная ИИ-система с большими возможностями может знатно накосячить. ИИ-система не обязана даже быть злонамеренной, это всё может выйти из невинных целей. Да и люди в целом, кажется, тоже вполне подвержены таким же проблемам, так что при любой концентрации власти это может обернуться (и оборачивается) плохо. Мне кажется, что текущие истории с государствами, компаниями и отдельными людьми сами по себе уже неплохие прокси для будущих возможных проблем с AGI, если его сделать криво. Как выясняется, сделать не криво ещё тоже ничего не гарантирует.
В работе есть ещё несколько спекулятивных и теоретических примеров. История про superhuman hacker, где модель обученная генерить код по спецификациям и дающая людям на аппрув и мёрж свои пулл-реквесты, вообще могла бы быть отдельным фантастическим рассказом. Если кратко, то идея в том, что у модели может сформироваться ложная цель “Добиться, чтобы человек кликнул на merge” вместо “Написать код, реализующий заданную фичу”, и от этого многое может пойти не так. Добиваться своей цели она сможет, скажем так, по-разному :) Почитайте сами, если захотите. Вообще, напоминает несколько “Avogadro Corp”.
Как защищаться от goal misgeneralization? Ну во-первых надо не попасть в историю со specification gaming. Также надо мониторить задеплоенную модель, чтобы вовремя обнаружить признаки проблемы. И когда задетектили, надо понять, как её переобучить, чтобы проблема ушла.
Полноценного решения на данный момент нет, но что можно делать:
Telegram
gonzo-обзоры ML статей
Scaling Language Models: Methods, Analysis & Insights from Training Gopher
Авторы: Jack W. Rae, и множество других
Статья: https://storage.googleapis.com/deepmind-media/research/language-research/Training%20Gopher.pdf
Пост в блоге: https://deepmind.com/…
Авторы: Jack W. Rae, и множество других
Статья: https://storage.googleapis.com/deepmind-media/research/language-research/Training%20Gopher.pdf
Пост в блоге: https://deepmind.com/…
👍9
- Иметь разнообразные обучающие данные. Diversity это хорошо! Но проблема, что заранее сложно представить все релевантные виды разнообразия. Сюда же попадает скейлинг всего (датасета, модели, вычислений), различное предобучение.
- Использовать подходы по типу байесовских или ансамблирование, когда выдаются _все_ функции, ведущие себя хорошо на обучающих данных, а когда в реальной работе они начинают расходиться, например, передавать управление человеку. Тут могут быть вычислительные сложности, трудности с выбором priors и излишняя консервативность, когда требуется единогласие.
- Требуется дальше копать тему inductive biases и обобщения, чтобы лучше понимать, когда что может происходить.
Отдельный пул проблем и задач возникает в ситуации, когда модель активно пытается нас обмануть, заставляя поверить, что она делает то, что мы хотим. В этих случаях она “знает”, что её действия не те, что мы ожидаем. Здесь может помочь объяснимость (interpretability) [хотя я лично не верю в эту тему в случае больших моделей], а также рекурсивная оценка (recursive evaluation), когда в оценке помогают другие модели.
Эти все направления требуют дальнейшей работы, есть к чему приложиться, если интересно.
- Использовать подходы по типу байесовских или ансамблирование, когда выдаются _все_ функции, ведущие себя хорошо на обучающих данных, а когда в реальной работе они начинают расходиться, например, передавать управление человеку. Тут могут быть вычислительные сложности, трудности с выбором priors и излишняя консервативность, когда требуется единогласие.
- Требуется дальше копать тему inductive biases и обобщения, чтобы лучше понимать, когда что может происходить.
Отдельный пул проблем и задач возникает в ситуации, когда модель активно пытается нас обмануть, заставляя поверить, что она делает то, что мы хотим. В этих случаях она “знает”, что её действия не те, что мы ожидаем. Здесь может помочь объяснимость (interpretability) [хотя я лично не верю в эту тему в случае больших моделей], а также рекурсивная оценка (recursive evaluation), когда в оценке помогают другие модели.
Эти все направления требуют дальнейшей работы, есть к чему приложиться, если интересно.
👍10