Как выживать при таком количестве статей?
Точнее, меня интересует следующее - как извлекать конкретные статьи/идеи из массы текстов? Пока не будем говорить о структурировании того, что вы уже прочитали.
Языковые модели
Кажется, что они очень натурально вписываются в эту задачу. Я их обычно и рассматриваю как способ искать по контенту в интернете с языковым интерфейсом, но на моей практике искать статьи получалось плохо. То модель не может вытянуть статью по намёку на неё, то выдумывает правдоподобные названия статей, которых не существует.
Общаться с людьми
На мой взгляд это крутой способ, потому что человек по человеческим меркам неплохо извлекает знания из сырых данных и потом умеет про это разговаривать, поэтому если вы понимаете, что ваша идея / запрос лежит в области специализации какого-то человека, идите к нему. Проблема, однако, возникает, если у вас своя атмосфера и ваши идеи никому вокруг неинтересны (😭)
Специальные сервисы
Вполне вероятно, что комбинация языковых моделей с костылями, а также с социальной составляющей позволит решить проблему. Грамотный поиск, рекомендательная система статей и т.д. Не так давно мне писал разработчик сервиса https://synthical.com/, и мне кажется, это шаг в правильном направлении. Среди фичей есть LLM-упрощалка статей, similarity search статей, простые рекомендации. Я искренне хочу, чтобы качественный уровень абстракции над arxiv-ом таки появился и прошу по возможности участвовать в тестировании таких инноваций. Фидбек, ваши пожелания, если есть, пишите прямо @mixedenn.
И вообще, буду рад вашим мыслям на эту тему в комментариях!
Точнее, меня интересует следующее - как извлекать конкретные статьи/идеи из массы текстов? Пока не будем говорить о структурировании того, что вы уже прочитали.
Языковые модели
Кажется, что они очень натурально вписываются в эту задачу. Я их обычно и рассматриваю как способ искать по контенту в интернете с языковым интерфейсом, но на моей практике искать статьи получалось плохо. То модель не может вытянуть статью по намёку на неё, то выдумывает правдоподобные названия статей, которых не существует.
Общаться с людьми
На мой взгляд это крутой способ, потому что человек по человеческим меркам неплохо извлекает знания из сырых данных и потом умеет про это разговаривать, поэтому если вы понимаете, что ваша идея / запрос лежит в области специализации какого-то человека, идите к нему. Проблема, однако, возникает, если у вас своя атмосфера и ваши идеи никому вокруг неинтересны (😭)
Специальные сервисы
Вполне вероятно, что комбинация языковых моделей с костылями, а также с социальной составляющей позволит решить проблему. Грамотный поиск, рекомендательная система статей и т.д. Не так давно мне писал разработчик сервиса https://synthical.com/, и мне кажется, это шаг в правильном направлении. Среди фичей есть LLM-упрощалка статей, similarity search статей, простые рекомендации. Я искренне хочу, чтобы качественный уровень абстракции над arxiv-ом таки появился и прошу по возможности участвовать в тестировании таких инноваций. Фидбек, ваши пожелания, если есть, пишите прямо @mixedenn.
И вообще, буду рад вашим мыслям на эту тему в комментариях!
Synthical
Synthical | AI-powered research environment
Check out new papers about Machine Learning, Biology, Physics, and more.
👍24❤2🤔2
Paired Open-Ended Trailblazer (POET) [2019] - обучаем задачи и агентов одновременно
Подобрать оптимальную задачу для обучения алгоритма - это сложно, и в разные моменты подходит разная задача. В данной статье рассматривают open-ended сценарий обучения - т.е. мы хотим, чтобы у нас была популяция агентов, решающих разнообразные сложные задачи.
1) Определим пространство задач - это "полоса с препятствиями", которую проходит "робот" (2-D bipedal-walker). На полосе 5 видов препятствий, и параметры среды определяют их "сложность" - высоту пня, ширину ямы и т.д., эти параметры и есть "вектор задачи".
2) Инициализируем популяцию пар [среда, агент] одной парой [пустая полоса, рандомный агент]
3) Во каждой паре среда-агент в популяции обучаем агента на своей среде, обновляем его параметры (алгоритм не важен, в данном случае ES).
4) Раз в несколько итераций среды мутируют - из каждой среды появляются K детей (копия + шум), и к ним в пару прикрепляется лучший агент из всей популяции. Фильтруем пары - задача не должна быть слишком простой или слишком сложной, отсекаем по награде. Если в итоге сред больше, чем M, оставляем M максимально далёких друг от друга в пространстве сред.
5) Иногда делаем "трансфер" - проверяем на каждой среде из популяции каждого агента и заменяем агента в паре на самого лучшего.
В результате наблюдаем интересные феномены:
1) Если после обучения взять случайную задачу из популяции и попытаться выучить алгоритм с нуля, то не получится - из-за высокой сложности извлечь полезный сигнал не получается.
2) Даже если учить не с нуля, а попробовать "вручную" двигать параметры от инициализации до целевой задачи, результат всё равно получается хуже. Непонятно, каким образом нужно двигаться к задаче для оптимального обучения на ней.
На мой взгляд, работа крайне интересная, хотя весь алгоритм довольно сложно устроен и в нём много гиперпараметров. Буду изучать, что есть в более новых работах на эту тему, после этого уже будем делать большие выводы.
@knowledge_accumulator
Подобрать оптимальную задачу для обучения алгоритма - это сложно, и в разные моменты подходит разная задача. В данной статье рассматривают open-ended сценарий обучения - т.е. мы хотим, чтобы у нас была популяция агентов, решающих разнообразные сложные задачи.
1) Определим пространство задач - это "полоса с препятствиями", которую проходит "робот" (2-D bipedal-walker). На полосе 5 видов препятствий, и параметры среды определяют их "сложность" - высоту пня, ширину ямы и т.д., эти параметры и есть "вектор задачи".
2) Инициализируем популяцию пар [среда, агент] одной парой [пустая полоса, рандомный агент]
3) Во каждой паре среда-агент в популяции обучаем агента на своей среде, обновляем его параметры (алгоритм не важен, в данном случае ES).
4) Раз в несколько итераций среды мутируют - из каждой среды появляются K детей (копия + шум), и к ним в пару прикрепляется лучший агент из всей популяции. Фильтруем пары - задача не должна быть слишком простой или слишком сложной, отсекаем по награде. Если в итоге сред больше, чем M, оставляем M максимально далёких друг от друга в пространстве сред.
5) Иногда делаем "трансфер" - проверяем на каждой среде из популяции каждого агента и заменяем агента в паре на самого лучшего.
В результате наблюдаем интересные феномены:
1) Если после обучения взять случайную задачу из популяции и попытаться выучить алгоритм с нуля, то не получится - из-за высокой сложности извлечь полезный сигнал не получается.
2) Даже если учить не с нуля, а попробовать "вручную" двигать параметры от инициализации до целевой задачи, результат всё равно получается хуже. Непонятно, каким образом нужно двигаться к задаче для оптимального обучения на ней.
На мой взгляд, работа крайне интересная, хотя весь алгоритм довольно сложно устроен и в нём много гиперпараметров. Буду изучать, что есть в более новых работах на эту тему, после этого уже будем делать большие выводы.
@knowledge_accumulator
👍7🔥6
Generative Teaching Networks: Accelerating Neural Architecture Search byLearning to Generate Synthetic Training Data [2019]
Когда мы оптимизируем архитектуру нейронной сети, существует проблема - чтобы оценить архитектуру, нам нужно прогнать её обучение, и в случае какого-нибудь ImageNet это проблематично.
Данная работа предлагает заменить обучение на всех тренировочных данных обучением на специально сгенерированном маленьком датасете, который содержит "оптимальные" сэмплы для обучения нейросети.
Как обучаем датасет?
1) Берём какую-нибудь свёрточную архитектуру и ваш тестовый датасет
2) Фиксируем, что наш синтетический датасет состоит из N батчей по K образцов.
3) Вместо того, чтобы учить напрямую N*K картинок, как параметры, мы учим генеративную сеть и N*K векторов шумов, которые в неё будут подаваться. Таким образом кол-во параметров становится гораздо меньше.
4) Обучаемся, пробрасывая "мета-градиенты" - считаем ошибку модели, которую прогнали на всех тренировочных данных, и потом применили на тестовых данных. Пробрасываем градиенты бэкпропом через весь процесс обучения до каждого шума и генеративной сети (см. картинку).
Далее этот датасет можно заморозить и гонять на нём нейросеть во время поиска нейронной архитектуры. Авторы сравнивают с baseline-ом, в котором берётся N*K реальных картинок, получается лучше.
Идея интересная, но есть 2 вопроса:
1) Какая здесь интуиция? Что именно мы делаем, обучая этот датасет? Какую именно информацию мы в него записываем, что это помогает быстрее учиться? На языке вертится, но сформулировать не могу, буду рад почитать, что вы про это думаете.
2) Насколько эта идея опирается на то, что это поиск параметров архитектуры для нейросетей определённого вида? Во многом вопрос связан с предыдущим. Интересно было бы, например, обучить датасет для свёрточной сети, а потом обучить на нём визуальный трансформер. И можно ли этот подход применять при обучении алгоритма "произвольной формы".
@knowledge_accumulator
Когда мы оптимизируем архитектуру нейронной сети, существует проблема - чтобы оценить архитектуру, нам нужно прогнать её обучение, и в случае какого-нибудь ImageNet это проблематично.
Данная работа предлагает заменить обучение на всех тренировочных данных обучением на специально сгенерированном маленьком датасете, который содержит "оптимальные" сэмплы для обучения нейросети.
Как обучаем датасет?
1) Берём какую-нибудь свёрточную архитектуру и ваш тестовый датасет
2) Фиксируем, что наш синтетический датасет состоит из N батчей по K образцов.
3) Вместо того, чтобы учить напрямую N*K картинок, как параметры, мы учим генеративную сеть и N*K векторов шумов, которые в неё будут подаваться. Таким образом кол-во параметров становится гораздо меньше.
4) Обучаемся, пробрасывая "мета-градиенты" - считаем ошибку модели, которую прогнали на всех тренировочных данных, и потом применили на тестовых данных. Пробрасываем градиенты бэкпропом через весь процесс обучения до каждого шума и генеративной сети (см. картинку).
Далее этот датасет можно заморозить и гонять на нём нейросеть во время поиска нейронной архитектуры. Авторы сравнивают с baseline-ом, в котором берётся N*K реальных картинок, получается лучше.
Идея интересная, но есть 2 вопроса:
1) Какая здесь интуиция? Что именно мы делаем, обучая этот датасет? Какую именно информацию мы в него записываем, что это помогает быстрее учиться? На языке вертится, но сформулировать не могу, буду рад почитать, что вы про это думаете.
2) Насколько эта идея опирается на то, что это поиск параметров архитектуры для нейросетей определённого вида? Во многом вопрос связан с предыдущим. Интересно было бы, например, обучить датасет для свёрточной сети, а потом обучить на нём визуальный трансформер. И можно ли этот подход применять при обучении алгоритма "произвольной формы".
@knowledge_accumulator
👍12🤔4
Evolving Curricula with Regret-Based Environment Design [2022] - другой подход к автогенерации уровней
В одном из недавних постов я разобрал работу по автогенерации задач для оптимального обучения RL-агентов, и сегодня мы разберём её довольно непохожую альтернативу, чтобы у вас сложилось впечатление о том, в насколько зачаточном состоянии пока находится эта область.
1) Вместо популяции агентов у нас есть теперь один агент, которого мы обучаем решать сразу большое разнообразие задач.
2) Поддерживаем популяцию задач. Но теперь мы не обучаем их, а просто сэмплируем из генератора и выбираем те, что подходят.
3) Как понять, что среда нам подходит? В этом моменте происходит что-то странное. В статье, которую они цитируют и которую вроде как копируют в этом моменте, используется сумма модулей ошибки в RL-обучении на этой среде, это имеет свою логику. Но в данной работе используется "positive value loss", то есть вместо модулей берётся сумма только позитивных ошибок. Смысл это махинации я не совсем понял, но авторы пытаются это объяснить с помощью теории игр.
4) На каждой итерации берём рандомную среду из популяции и обучаем агента на ней каким-нибудь RL-алгоритмом. Если среда стала "плохой" по критерию из п.3, её можно выкинуть
В результате засчёт того, что агент всего один, вроде как, получается достичь того же уровня сложности решаемых задач, что и в POET, но гораздо меньшими вычислительными затратами.
На самом деле, глядя на всё это, у меня сложилось впечатление, что конструировать вручную алгоритм подбора задачи - это тупиковый путь. Что я бы предложил взамен?
1) Сформулировать правило выбора задачи, как параметрическую модель. Например, чтобы модель выдавала вектор параметров среды, которую она сейчас хочет порешать, и мы бы конструировали по нему задачу. Она должна принимать на вход всю историю обучения.
2) Оптимизировать её той же генетикой, оценивая способность агента решать задачи определённого уровня сложности через X шагов / компьюта / времени.
Да, это раздувает затраты ресурсов, но, на мой взгляд, цель исследователей как раз будет найти такие эвристики и параметризацию, которые смогут ускорить процесс мета-оптимизации. Буду искать, кстати, есть ли уже работы с похожей идеей.
@knowledge_accumulator
В одном из недавних постов я разобрал работу по автогенерации задач для оптимального обучения RL-агентов, и сегодня мы разберём её довольно непохожую альтернативу, чтобы у вас сложилось впечатление о том, в насколько зачаточном состоянии пока находится эта область.
1) Вместо популяции агентов у нас есть теперь один агент, которого мы обучаем решать сразу большое разнообразие задач.
2) Поддерживаем популяцию задач. Но теперь мы не обучаем их, а просто сэмплируем из генератора и выбираем те, что подходят.
3) Как понять, что среда нам подходит? В этом моменте происходит что-то странное. В статье, которую они цитируют и которую вроде как копируют в этом моменте, используется сумма модулей ошибки в RL-обучении на этой среде, это имеет свою логику. Но в данной работе используется "positive value loss", то есть вместо модулей берётся сумма только позитивных ошибок. Смысл это махинации я не совсем понял, но авторы пытаются это объяснить с помощью теории игр.
4) На каждой итерации берём рандомную среду из популяции и обучаем агента на ней каким-нибудь RL-алгоритмом. Если среда стала "плохой" по критерию из п.3, её можно выкинуть
В результате засчёт того, что агент всего один, вроде как, получается достичь того же уровня сложности решаемых задач, что и в POET, но гораздо меньшими вычислительными затратами.
На самом деле, глядя на всё это, у меня сложилось впечатление, что конструировать вручную алгоритм подбора задачи - это тупиковый путь. Что я бы предложил взамен?
1) Сформулировать правило выбора задачи, как параметрическую модель. Например, чтобы модель выдавала вектор параметров среды, которую она сейчас хочет порешать, и мы бы конструировали по нему задачу. Она должна принимать на вход всю историю обучения.
2) Оптимизировать её той же генетикой, оценивая способность агента решать задачи определённого уровня сложности через X шагов / компьюта / времени.
Да, это раздувает затраты ресурсов, но, на мой взгляд, цель исследователей как раз будет найти такие эвристики и параметризацию, которые смогут ускорить процесс мета-оптимизации. Буду искать, кстати, есть ли уже работы с похожей идеей.
@knowledge_accumulator
👍12
Поговорим про горький урок
Внесу свои 5 копеек по поводу эссе Ричарда Саттона, одного из крупнейших исследователей в ИИ.
Вкратце, эссе о том, что исследователи потратили тонны ресурсов на использование экспертных знаний для решения задач или улучшения алгоритмов, но в итоге лучший результат показывают алгоритмы, которые полезно применяют большие вычислительные ресурсы и полагаются на оптимизацию.
У этого эссе есть и возражения, касающиеся того, что не так уж и мало "экспертных знаний" дошло до нас - например, базовые блоки нейросетей - свёртки, функции активаций, а также алгоритмы обучения - это человеческие идеи. К тому же, всё это работает на инженерной инфраструктуре, которая была спроектирована людьми - операционные системы, процессоры и т.д.
Что могу сказать?
1) Важно разделять инфраструктуру и алгоритмы. Инфраструктура обеспечивает возможность оперировать абстракциями и надёжно проводить расчёты, она может быть как спроектирована, так и придумана человеком, но результат расчётов будет тот же самый.
2) Я бы не стал переоценивать "человеческую экспертизу" в современном ИИ. Если мы говорим о строительных блоках архитектур, так это наоборот, демонстрация нашей ущербности. Мало того, что 99.9% придумывается и выкидывается на помойку, так то, что работает - это предельно простые штуки. Как показывает AutoMLZero - дай тупому брутфорсу перебрать программы из матрично-векторых простейших операций, и он тебе придумает нейросеть. А уж про простоту идеи трансформера вы и так знаете.
3) Говорят, в немалой части задач необходимым фактором успеха был какой-нибудь экспертный костыль вроде симметричных аугментаций. Но причиной этому является то, что алгоритм обучения придуман человеком. Если бы алгоритм был оптимизирован на решаемой задаче, он бы выучил все необходимые костыли самостоятельно, и сделал бы это гораздо эффективнее нас.
На сегодняшний день я полностью согласен с Саттоном, но трактовать его надо максимально широко. Самый неправильный вывод, который тут можно сделать - "нужно просто бесконечно увеличивать трансформер, и это даст любой желаемый результат". Но на самом деле расти должна совместная параметризация архитектуры и алгоритма обучения, оптимизируемая под обучаемость новым задачам. Так мы и придём к успеху.
@knowledge_accumulator
Внесу свои 5 копеек по поводу эссе Ричарда Саттона, одного из крупнейших исследователей в ИИ.
Вкратце, эссе о том, что исследователи потратили тонны ресурсов на использование экспертных знаний для решения задач или улучшения алгоритмов, но в итоге лучший результат показывают алгоритмы, которые полезно применяют большие вычислительные ресурсы и полагаются на оптимизацию.
У этого эссе есть и возражения, касающиеся того, что не так уж и мало "экспертных знаний" дошло до нас - например, базовые блоки нейросетей - свёртки, функции активаций, а также алгоритмы обучения - это человеческие идеи. К тому же, всё это работает на инженерной инфраструктуре, которая была спроектирована людьми - операционные системы, процессоры и т.д.
Что могу сказать?
1) Важно разделять инфраструктуру и алгоритмы. Инфраструктура обеспечивает возможность оперировать абстракциями и надёжно проводить расчёты, она может быть как спроектирована, так и придумана человеком, но результат расчётов будет тот же самый.
2) Я бы не стал переоценивать "человеческую экспертизу" в современном ИИ. Если мы говорим о строительных блоках архитектур, так это наоборот, демонстрация нашей ущербности. Мало того, что 99.9% придумывается и выкидывается на помойку, так то, что работает - это предельно простые штуки. Как показывает AutoMLZero - дай тупому брутфорсу перебрать программы из матрично-векторых простейших операций, и он тебе придумает нейросеть. А уж про простоту идеи трансформера вы и так знаете.
3) Говорят, в немалой части задач необходимым фактором успеха был какой-нибудь экспертный костыль вроде симметричных аугментаций. Но причиной этому является то, что алгоритм обучения придуман человеком. Если бы алгоритм был оптимизирован на решаемой задаче, он бы выучил все необходимые костыли самостоятельно, и сделал бы это гораздо эффективнее нас.
На сегодняшний день я полностью согласен с Саттоном, но трактовать его надо максимально широко. Самый неправильный вывод, который тут можно сделать - "нужно просто бесконечно увеличивать трансформер, и это даст любой желаемый результат". Но на самом деле расти должна совместная параметризация архитектуры и алгоритма обучения, оптимизируемая под обучаемость новым задачам. Так мы и придём к успеху.
@knowledge_accumulator
👍18🤔5❤1
Поговорим про инвестирование
Мир забавно устроен. В некоторых сферах жизни истина крайне проста, но понять и принять её ты можешь, только если хорошо понимаешь вопрос. А когда ты его не понимаешь, интуитивно поверить в простой ответ ты не хочешь. На этом невежестве построена огромная индустрия, но зато это позволяет извлечь больше выгоды тем, кто знает "секрет".
Итак, 2 простые истины:
Зарабатывать инвестированием очень просто, и на это почти не нужно тратить время
Для этого всего лишь нужно открыть счёт у известного брокера (не в РФ!) и вложиться в 2 штуки:
- Продукт, основанный на широком индексе акций (типа S&P500) (пример)
- Продукт, основанный на широком индексе облигаций (пример)
Балансируете их по вкусу, индекс акций это долгосрочная волатильная доходность, индекс облигаций это стабильная доходность. Если планируете жить ещё как минимум 20 лет, берите акции на >80%.
Исторически, в среднем, если инвестировать в S&P500 50% своего дохода (если он не меняется) в течение 12 лет и реинвестировать проценты, то доход от инвестиций начнёт покрывать ваши расходы на жизнь! Да, это реально так и работает. Если не увеличивать расходы, и инвестировать "излишки" вашей растущей зарплаты, этот момент наступит ещё быстрее.
Не существует более выгодного способа
Покупка недвижимости, венчурные инвестиции, p2p кредитование, покупка золота, инвестиционные фонды, покупка отдельных акций, попытки угадать курс валют, всё это работает хуже!
Если у вас нет инсайдерской информации (см. Pelosi Index), то вы не заработаете на этом больше денег с таким же маленьким уровнем риска. Разумеется, кому-то везёт и он инвестирует в кока-колу на раннем этапе, но я говорю про математическое ожидание доходности с учётом волатильности. Иногда можно и в казино выиграть.
Я довольно долго и давно изучаю эти вопросы, и если вам интересны пруфы по каким-то отдельным аспектам, с радостью сделаю отдельные посты.
@knowledge_accumulator
Мир забавно устроен. В некоторых сферах жизни истина крайне проста, но понять и принять её ты можешь, только если хорошо понимаешь вопрос. А когда ты его не понимаешь, интуитивно поверить в простой ответ ты не хочешь. На этом невежестве построена огромная индустрия, но зато это позволяет извлечь больше выгоды тем, кто знает "секрет".
Итак, 2 простые истины:
Зарабатывать инвестированием очень просто, и на это почти не нужно тратить время
Для этого всего лишь нужно открыть счёт у известного брокера (не в РФ!) и вложиться в 2 штуки:
- Продукт, основанный на широком индексе акций (типа S&P500) (пример)
- Продукт, основанный на широком индексе облигаций (пример)
Балансируете их по вкусу, индекс акций это долгосрочная волатильная доходность, индекс облигаций это стабильная доходность. Если планируете жить ещё как минимум 20 лет, берите акции на >80%.
Исторически, в среднем, если инвестировать в S&P500 50% своего дохода (если он не меняется) в течение 12 лет и реинвестировать проценты, то доход от инвестиций начнёт покрывать ваши расходы на жизнь! Да, это реально так и работает. Если не увеличивать расходы, и инвестировать "излишки" вашей растущей зарплаты, этот момент наступит ещё быстрее.
Не существует более выгодного способа
Покупка недвижимости, венчурные инвестиции, p2p кредитование, покупка золота, инвестиционные фонды, покупка отдельных акций, попытки угадать курс валют, всё это работает хуже!
Если у вас нет инсайдерской информации (см. Pelosi Index), то вы не заработаете на этом больше денег с таким же маленьким уровнем риска. Разумеется, кому-то везёт и он инвестирует в кока-колу на раннем этапе, но я говорю про математическое ожидание доходности с учётом волатильности. Иногда можно и в казино выиграть.
Я довольно долго и давно изучаю эти вопросы, и если вам интересны пруфы по каким-то отдельным аспектам, с радостью сделаю отдельные посты.
@knowledge_accumulator
👍43🔥7❤3👎3💯1
Hardware lottery, или проблема технологического небоскрёба
Посмотрел на выходных статью и обзор на неё. Ключевая мысль статьи заключается в том, что то, выстреливает ли какая-нибудь алгоритмическая идея, во многом зависит не от "крутости" идеи, а от того, можно ли её эффективно реализовать на текущем железе.
В качестве примера в статье приводится то, что до распространения GPU люди не применяли нейронные сети, поскольку на CPU они ложатся плохо (хотя спорно, что это было самым важным фактором). Помню ещё пример - в одном из подкастов Илья Суцкевер говорил, что одним из ключевых факторов успеха трансформеров стало то, что они очень эффективно утилизируют видеокарты.
Критика этой работы заключается в основном в том, что подобная "лотерейная" ситуация совершенно неуникальна и не требует отдельного обозначения. Дело в том, что все используемые идеи и технологии базируются на каких-то более базовых идеях и технологиях. Кроме hardware есть ещё и языки программирования и фреймворки, и если вашу новую гениальную идею нельзя реализовать на существующих фреймворках, то ей придётся туго.
Кроме того, есть эффект от уже вложенных ресурсов в какие-то "ветки" развития. Например, в нейросети уже вложили миллиарды долларов, и если бы была более сильная альтернатива, она должна бы была продемонстрировать своё превосходство с гораздо меньшими затратами. Всё это является демонстрацией того, что технологический прогресс человечества - это локальная оптимизация. И прыгнуть в глобальный оптимум без промежуточных шагов мы не можем, поскольку это бы потребовало слишком много затрат на неудачные проверки.
Эффект, однако, можно сгладить. Во-первых, технологические этажи нашего здания должны быть как можно более общего назначения, а не заточены только под текущие сценарии применения. Во-вторых, нужно не забрасывать альтернативные направления исследований. Необходимый уровень здесь является делом вкуса, но на мой взгляд, кстати, не вижу совсем уж катастрофы по ним.
@knowledge_accumulator
Посмотрел на выходных статью и обзор на неё. Ключевая мысль статьи заключается в том, что то, выстреливает ли какая-нибудь алгоритмическая идея, во многом зависит не от "крутости" идеи, а от того, можно ли её эффективно реализовать на текущем железе.
В качестве примера в статье приводится то, что до распространения GPU люди не применяли нейронные сети, поскольку на CPU они ложатся плохо (хотя спорно, что это было самым важным фактором). Помню ещё пример - в одном из подкастов Илья Суцкевер говорил, что одним из ключевых факторов успеха трансформеров стало то, что они очень эффективно утилизируют видеокарты.
Критика этой работы заключается в основном в том, что подобная "лотерейная" ситуация совершенно неуникальна и не требует отдельного обозначения. Дело в том, что все используемые идеи и технологии базируются на каких-то более базовых идеях и технологиях. Кроме hardware есть ещё и языки программирования и фреймворки, и если вашу новую гениальную идею нельзя реализовать на существующих фреймворках, то ей придётся туго.
Кроме того, есть эффект от уже вложенных ресурсов в какие-то "ветки" развития. Например, в нейросети уже вложили миллиарды долларов, и если бы была более сильная альтернатива, она должна бы была продемонстрировать своё превосходство с гораздо меньшими затратами. Всё это является демонстрацией того, что технологический прогресс человечества - это локальная оптимизация. И прыгнуть в глобальный оптимум без промежуточных шагов мы не можем, поскольку это бы потребовало слишком много затрат на неудачные проверки.
Эффект, однако, можно сгладить. Во-первых, технологические этажи нашего здания должны быть как можно более общего назначения, а не заточены только под текущие сценарии применения. Во-вторых, нужно не забрасывать альтернативные направления исследований. Необходимый уровень здесь является делом вкуса, но на мой взгляд, кстати, не вижу совсем уж катастрофы по ним.
@knowledge_accumulator
👍20🔥3
EfficientZero [2021] - "data-эффективный" RL
Я давно обозначал проблему большинства методов RL - чудовищная требовательность к объёму данных в связи с необходимостью извлекать зависимости между наблюдениями в разных временных точках. Фундаментально от неё никуда не деться, если мы пытаемся учить общий RL-алгоритм на задаче с нуля, но на практике "data-эффективность" ухудшается ещё сильнее из-за несовершенства методов. Сегодня поговорим об EfficientZero - алгоритме, занимающим первое место в обучении играм Atari за 100к кадров обучения.
Алгоритм базируется на MuZero, про который я писал ранее. Этот метод обучает "модель" среды, но предсказывает не сами будущие состояния, а только будущие награды и действия самого же агента в следующих шагах. Это облегчает задачу и избавляет от ненужной задачи генерации следующего состояния. Далее по дереву этих подобий "состояния" (назовём их эмбеддингами состояния) делается поиск, как в AlphaZero. Обсудим улучшения, которые привели к победе над конкурентами.
1) Self-Supervised Consistency Loss
Это способ использовать информацию о будущем состоянии при обучении, не пытаясь его предсказать. У нас есть энкодер текущего состояния в эмбеддинг, а также сетка, которая по эмбеддингу предсказыват эмбеддинг на следующем шаге. Так вот, эта регуляризация требует, чтобы энкодер + переход от текущего состояния выдавал то же, что и энкодер от следующего. Вполне логичное требование.
2) Model-Based Off-Policy Correction
Используемый RL-метод изначально предполагает, что мы собираем данные какой-то стратегией, обновляем её и выбрасываем все данные на помойку. В связи с распределённой и асинхронной природой обучения метода на большом кластере, это нарушается, и в метод добавляются различные компенсирующие костыли. Идея этого в том, что на "предсказания будущего" агента опираются тем меньше, чем более "старая" траектория используется для обучения.
3) End-To-End Prediction of the Value Prefix
При подсчёте таргета используется предсказанная в будущем сумма наград на k шагов вперёд. Теперь мы предсказываем всю сумму одновременно, а не награды по отдельности, чтобы потом просуммировать.
Проще объяснить эти нововведения невозможно, к сожалению, за подробными объяснениями лучше обратиться к статье или обзору. Итоговый метод с очень большим отрывом побеждает всех остальных конкурентов, с чем авторов и поздравляем.
@knowledge_accumulator
Я давно обозначал проблему большинства методов RL - чудовищная требовательность к объёму данных в связи с необходимостью извлекать зависимости между наблюдениями в разных временных точках. Фундаментально от неё никуда не деться, если мы пытаемся учить общий RL-алгоритм на задаче с нуля, но на практике "data-эффективность" ухудшается ещё сильнее из-за несовершенства методов. Сегодня поговорим об EfficientZero - алгоритме, занимающим первое место в обучении играм Atari за 100к кадров обучения.
Алгоритм базируется на MuZero, про который я писал ранее. Этот метод обучает "модель" среды, но предсказывает не сами будущие состояния, а только будущие награды и действия самого же агента в следующих шагах. Это облегчает задачу и избавляет от ненужной задачи генерации следующего состояния. Далее по дереву этих подобий "состояния" (назовём их эмбеддингами состояния) делается поиск, как в AlphaZero. Обсудим улучшения, которые привели к победе над конкурентами.
1) Self-Supervised Consistency Loss
Это способ использовать информацию о будущем состоянии при обучении, не пытаясь его предсказать. У нас есть энкодер текущего состояния в эмбеддинг, а также сетка, которая по эмбеддингу предсказыват эмбеддинг на следующем шаге. Так вот, эта регуляризация требует, чтобы энкодер + переход от текущего состояния выдавал то же, что и энкодер от следующего. Вполне логичное требование.
2) Model-Based Off-Policy Correction
Используемый RL-метод изначально предполагает, что мы собираем данные какой-то стратегией, обновляем её и выбрасываем все данные на помойку. В связи с распределённой и асинхронной природой обучения метода на большом кластере, это нарушается, и в метод добавляются различные компенсирующие костыли. Идея этого в том, что на "предсказания будущего" агента опираются тем меньше, чем более "старая" траектория используется для обучения.
3) End-To-End Prediction of the Value Prefix
При подсчёте таргета используется предсказанная в будущем сумма наград на k шагов вперёд. Теперь мы предсказываем всю сумму одновременно, а не награды по отдельности, чтобы потом просуммировать.
Проще объяснить эти нововведения невозможно, к сожалению, за подробными объяснениями лучше обратиться к статье или обзору. Итоговый метод с очень большим отрывом побеждает всех остальных конкурентов, с чем авторов и поздравляем.
@knowledge_accumulator
👍13🔥4❤1
Не покупайте то, что не движется
Продолжаем эпопею об инвестировании - сегодня в меню недвижимость. Почему же это не такая хорошая идея, как кажется? В дальнейшем я буду употреблять термин "квартира", но подразумеваю при этом объекты недвижимости в целом.
Рассмотрим квартиру как генератор дохода с помощью сдачи в аренду.
Получить верхнюю оценку доходности квартиры очень просто - берём месячную стоимость аренды, умножаем на 12, делим на стоимость квартиры и умножаем на 100 - получается доходность объекта в процентах. Вот данные по разным городам США. В России результаты похожие.
Числа не впечатляют - несколько процентов годовых, меньше индекса акций. А это ведь это мы ещё не учли издержки обслуживания квартиры: затраты на ремонт, поиск клиентов, налоги и т.д. Также на всё это уходит ваше время, которое вы не тратите на заработок денег в другом месте.
Доходность посуточной сдачи гораздо выше, но это просто компенсация сильно возрастающих издержек, например, на поиск клиентов.
А что, если купить квартиру и потом дороже продать?
Обычно недвижимость - ликвидный актив, и поэтому подчиняется тому же правилу, что и любая ценная бумага - цена отражает не "сегодняшнюю" цену, а среднее ожидание этой цены в будущем.
Но специфика тут в том, что цена связана не столько с самой квартирой, сколько с тем, что вокруг - обстановка в стране, в городе, в районе, потому что это влияет на спрос. Тут, как и с ценными бумагами, вряд ли вы много раз угадаете лучше других, поэтому покупать стоит широкий актив - хотя бы индекс акций каких-нибудь девелоперов. Не забывайте только, что недвижимость, как индустрия, имеет отдельные риски.
Есть и другие опасности. Если вы покупаете квартиру в ещё несуществующем доме - она дешевле просто потому, что дом с какой-то вероятностью не построят. В России есть ещё и валютные риски - зачем нужна рублёвая доходность в 30%, если на них можно будет купить в 1.5 раза меньше долларов? Ну и самое главное - игнорируйте рекламу инвестиций в недвижимость, выгодные инвестиции не ищут инвестора!
@knowledge_accumulator
Продолжаем эпопею об инвестировании - сегодня в меню недвижимость. Почему же это не такая хорошая идея, как кажется? В дальнейшем я буду употреблять термин "квартира", но подразумеваю при этом объекты недвижимости в целом.
Рассмотрим квартиру как генератор дохода с помощью сдачи в аренду.
Получить верхнюю оценку доходности квартиры очень просто - берём месячную стоимость аренды, умножаем на 12, делим на стоимость квартиры и умножаем на 100 - получается доходность объекта в процентах. Вот данные по разным городам США. В России результаты похожие.
Числа не впечатляют - несколько процентов годовых, меньше индекса акций. А это ведь это мы ещё не учли издержки обслуживания квартиры: затраты на ремонт, поиск клиентов, налоги и т.д. Также на всё это уходит ваше время, которое вы не тратите на заработок денег в другом месте.
Доходность посуточной сдачи гораздо выше, но это просто компенсация сильно возрастающих издержек, например, на поиск клиентов.
А что, если купить квартиру и потом дороже продать?
Обычно недвижимость - ликвидный актив, и поэтому подчиняется тому же правилу, что и любая ценная бумага - цена отражает не "сегодняшнюю" цену, а среднее ожидание этой цены в будущем.
Но специфика тут в том, что цена связана не столько с самой квартирой, сколько с тем, что вокруг - обстановка в стране, в городе, в районе, потому что это влияет на спрос. Тут, как и с ценными бумагами, вряд ли вы много раз угадаете лучше других, поэтому покупать стоит широкий актив - хотя бы индекс акций каких-нибудь девелоперов. Не забывайте только, что недвижимость, как индустрия, имеет отдельные риски.
Есть и другие опасности. Если вы покупаете квартиру в ещё несуществующем доме - она дешевле просто потому, что дом с какой-то вероятностью не построят. В России есть ещё и валютные риски - зачем нужна рублёвая доходность в 30%, если на них можно будет купить в 1.5 раза меньше долларов? Ну и самое главное - игнорируйте рекламу инвестиций в недвижимость, выгодные инвестиции не ищут инвестора!
@knowledge_accumulator
👍28
Почему не бывает хороших и плохих статей
Наткнулся на статью об эксперименте, проведённом организаторами NeurIPS в 2014 году.
Случайные 10% статей, 166 штук, отправили на ревью не к одной комиссии, а к двум, причём первая набиралась из одной случайной половины людей, а вторая из другой. Получили следующий результат:
1) 22 статьи были приняты обеими комиссиями
2) 43 статьи были приняты только одной комиссией (по 22 и 21)
3) 101 статья была не принята ни одной комиссией
Так что половина статей на топовой конференции по ML попадает туда рандомно.
Спустя эти годы, организаторы посчитали цитируемость принятых статей с этой конференции (как логарифм от кол-ва цитат) и посчитали её корреляцию с разными оценками ревьюеров. Смотрели 3 вещи - оценка качества; предсказание того, что статья принесёт большой вклад; уверенность ревьюера в выданной оценке. Самая большая корреляция - аж 0.25! - у последнего.
К чему это я? На мой взгляд, идея того, что можно придумать процедуру, которая "объективно" отбирает хорошие статьи, изначально ошибочна. Это не значит, что все они одинаково полезные, они полезные каждому по-разному. И на большое количество статей сообщество могло бы отвечать более качественно, чем "выбрать 3 случайных желающих специалистов и поставить оценку".
А может быть, в ML статьи вообще не нужны?
1) Более прикладные исследования, нацеленные на результат, отлично можно оценивать с помощью вещей типа paperswithcode или kaggle, в зависимости от временного горизонта. Когда мы оцениваем результат, это нужно делать не с помощью метода "каждый сам у себя делает табличку и сравнивает себя с конкурентами". И, кроме того, прикладное исследование без публикации кода полезно примерно на 20%. Даже крупному бизнесу так было бы в рекламных целях интересно спонсировать "команды" - по сути как в киберспорте, и все бы ориентировались на результат, а не тупые отчёты.
2) Обмен идеями в процессе фундаментальных (теоретических) исследований с помощью статей - это доисторический формат, соответствующий письмам в конвертах и голубиной почте. Интернет позволяет исследователям по всему миру совместно работать, брейнштормить, спорить. Часто возникшая полезная мысль может быть написана как один твит. Уверен, что если бы исследователи не пытались высасывать из себя статьи без перерыва, а просто общались открыто в интернете и обсуждали идеи и темы, в которые искренне верят, даже 90% времени тратя просто на споры, брейнштормы и размышления, прогресс шёл бы гораздо быстрее.
А вы что думаете?
@knowledge_accumulator
Наткнулся на статью об эксперименте, проведённом организаторами NeurIPS в 2014 году.
Случайные 10% статей, 166 штук, отправили на ревью не к одной комиссии, а к двум, причём первая набиралась из одной случайной половины людей, а вторая из другой. Получили следующий результат:
1) 22 статьи были приняты обеими комиссиями
2) 43 статьи были приняты только одной комиссией (по 22 и 21)
3) 101 статья была не принята ни одной комиссией
Так что половина статей на топовой конференции по ML попадает туда рандомно.
Спустя эти годы, организаторы посчитали цитируемость принятых статей с этой конференции (как логарифм от кол-ва цитат) и посчитали её корреляцию с разными оценками ревьюеров. Смотрели 3 вещи - оценка качества; предсказание того, что статья принесёт большой вклад; уверенность ревьюера в выданной оценке. Самая большая корреляция - аж 0.25! - у последнего.
К чему это я? На мой взгляд, идея того, что можно придумать процедуру, которая "объективно" отбирает хорошие статьи, изначально ошибочна. Это не значит, что все они одинаково полезные, они полезные каждому по-разному. И на большое количество статей сообщество могло бы отвечать более качественно, чем "выбрать 3 случайных желающих специалистов и поставить оценку".
А может быть, в ML статьи вообще не нужны?
1) Более прикладные исследования, нацеленные на результат, отлично можно оценивать с помощью вещей типа paperswithcode или kaggle, в зависимости от временного горизонта. Когда мы оцениваем результат, это нужно делать не с помощью метода "каждый сам у себя делает табличку и сравнивает себя с конкурентами". И, кроме того, прикладное исследование без публикации кода полезно примерно на 20%. Даже крупному бизнесу так было бы в рекламных целях интересно спонсировать "команды" - по сути как в киберспорте, и все бы ориентировались на результат, а не тупые отчёты.
2) Обмен идеями в процессе фундаментальных (теоретических) исследований с помощью статей - это доисторический формат, соответствующий письмам в конвертах и голубиной почте. Интернет позволяет исследователям по всему миру совместно работать, брейнштормить, спорить. Часто возникшая полезная мысль может быть написана как один твит. Уверен, что если бы исследователи не пытались высасывать из себя статьи без перерыва, а просто общались открыто в интернете и обсуждали идеи и темы, в которые искренне верят, даже 90% времени тратя просто на споры, брейнштормы и размышления, прогресс шёл бы гораздо быстрее.
А вы что думаете?
@knowledge_accumulator
👍39🔥5👎2🤷2🤔1🥴1
Discovering Attention-Based Genetic Algorithms via Meta-Black-Box Optimization [2023]
Я надеюсь, вы не забыли, что это канал про статьи по машинному обучению... Понимаю, что посты про статьи собирают меньше всего лайков, но тем не менее.
Сегодня поговорим о статье, в которой пытаются оптимизировать генетический алгоритм. Его можно задать двумя основными операциями:
1) Отбор
На каждом шаге у нас есть популяция из N особей, и каждая из них производит на свет K детей. После того, как мы для каждого из N*K детей получили их fitness score, нам нужно принять решение о составе следующей популяции.
2) Адаптация мутаций
Когда родитель копируется и создаётся ребёнок, к его параметрам добавляется нормальный шум, домножаемый на множитель мутации - специальный параметр родителя, определяющий, насколько сильно веса родителя подвижны.
В классических версиях алгоритма эти операции задаются простыми эвристиками, здесь же мы заменяем их на трансформеры следующим образом:
1) Решение об отборе принимает модель, получающая на вход fitness всех детей и родителей, и после attention-слоя выдаёт матрицу N x (N*K+1) - вероятность для родителя i, что он будет заменён на ребёнка j, или вообще останется без изменения.
2) Множители мутации изменяются следующим образом: после того, как отобрали новую популяцию, берём их соответствующие fitness score и множители мутации, унаследованные от родителей. После attention-слоёв получаем вектор изменений параметра мутации каждого индивида.
Оба трансформера - это маленькие модели, которые оптимизируется во внешнем цикле с помощью Evolution Strategies - классического метода безградиентной оптимизации, альтернативы обычной генетики.
Результаты не огонь, алгоритм проигрывает одному из классических бейзлайнов, к тому же, способен переобучаться и требует регуляризацию. На мой взгляд, при попытке обучать генетический алгоритм важно одновременно использовать как можно больше информации, но с другой стороны не делать модель избыточно мощной. Будем следить за темой.
@knowledge_accumulator
Я надеюсь, вы не забыли, что это канал про статьи по машинному обучению... Понимаю, что посты про статьи собирают меньше всего лайков, но тем не менее.
Сегодня поговорим о статье, в которой пытаются оптимизировать генетический алгоритм. Его можно задать двумя основными операциями:
1) Отбор
На каждом шаге у нас есть популяция из N особей, и каждая из них производит на свет K детей. После того, как мы для каждого из N*K детей получили их fitness score, нам нужно принять решение о составе следующей популяции.
2) Адаптация мутаций
Когда родитель копируется и создаётся ребёнок, к его параметрам добавляется нормальный шум, домножаемый на множитель мутации - специальный параметр родителя, определяющий, насколько сильно веса родителя подвижны.
В классических версиях алгоритма эти операции задаются простыми эвристиками, здесь же мы заменяем их на трансформеры следующим образом:
1) Решение об отборе принимает модель, получающая на вход fitness всех детей и родителей, и после attention-слоя выдаёт матрицу N x (N*K+1) - вероятность для родителя i, что он будет заменён на ребёнка j, или вообще останется без изменения.
2) Множители мутации изменяются следующим образом: после того, как отобрали новую популяцию, берём их соответствующие fitness score и множители мутации, унаследованные от родителей. После attention-слоёв получаем вектор изменений параметра мутации каждого индивида.
Оба трансформера - это маленькие модели, которые оптимизируется во внешнем цикле с помощью Evolution Strategies - классического метода безградиентной оптимизации, альтернативы обычной генетики.
Результаты не огонь, алгоритм проигрывает одному из классических бейзлайнов, к тому же, способен переобучаться и требует регуляризацию. На мой взгляд, при попытке обучать генетический алгоритм важно одновременно использовать как можно больше информации, но с другой стороны не делать модель избыточно мощной. Будем следить за темой.
@knowledge_accumulator
👍29🔥7❤4🤔1
А что, если выбирать ценные бумаги будут умные люди?
Продолжаем тему инвестирования ваших кровных, и сегодня поговорим о том, насколько хорошей идеей будет довериться профессионалам в выборе акций.
В данной статье содержится анализ производительности активно управляемых фондов (в США). Данные оттуда (на скриншоте) говорят сами за себя - на горизонте 20 лет более 90% фондов проигрывают простому индексу акций. Чем горизонт меньше, тем доля меньше, за 10 лет это уже 80% фондов.
Вы можете возразить - но это ведь ни о чём не говорит, естественно, что большая часть фондов плохие, надо просто выбрать хороший фонд. Но, во-первых, это могло бы подтвердить наличие плато в проценте проигрывающих индексу при увеличении временного горизонта. А во-вторых, у меня есть для вас другое потрясающее исследование:
Берём все фонды и измеряем их производительность в каждом из 5 последних лет изолированно, составляем рейтинги фондов. Если какой-то фонд стабильно лучше других, то он будет находиться последовательно в верхней части списка.
И что же получилось? Из 2000+ фондов 5 лет подряд в топ-25% не попал ни один фонд. В топ-50% 5 лет подряд попадал один процент фондов. Этот результат даже хуже, чем если бы рейтинг случайно перемешивался каждый год - тогда в первую половину 5 раз попало 3% фондов. Это говорит о том, что их производительность хоть и не случайна, но точно не последовательна.
Так, а что у звёзд мирового инвестирования? Есть ведь такие гиганты, как Уоррен Баффет, один из богатейших инвесторов мира, как инвестирует он? За последние 15 лет он тоже не обогнал индекс! Да он и сам многократно говорил, что покупать индексные фонды - это прекрасное решение.
Да как так-то?
А всё просто - рынки достаточно эффективны. Вся открытая информация, вся общая вера в успех или неуспех компании уже повлияла на её цену. Из-за этого все ценные бумаги сбалансированы между собой с точки зрения ожидания доходности, и всё, что в ваших силах - это уменьшить дисперсию, купив всего по чуть-чуть.
@knowledge_accumulator
Продолжаем тему инвестирования ваших кровных, и сегодня поговорим о том, насколько хорошей идеей будет довериться профессионалам в выборе акций.
В данной статье содержится анализ производительности активно управляемых фондов (в США). Данные оттуда (на скриншоте) говорят сами за себя - на горизонте 20 лет более 90% фондов проигрывают простому индексу акций. Чем горизонт меньше, тем доля меньше, за 10 лет это уже 80% фондов.
Вы можете возразить - но это ведь ни о чём не говорит, естественно, что большая часть фондов плохие, надо просто выбрать хороший фонд. Но, во-первых, это могло бы подтвердить наличие плато в проценте проигрывающих индексу при увеличении временного горизонта. А во-вторых, у меня есть для вас другое потрясающее исследование:
Берём все фонды и измеряем их производительность в каждом из 5 последних лет изолированно, составляем рейтинги фондов. Если какой-то фонд стабильно лучше других, то он будет находиться последовательно в верхней части списка.
И что же получилось? Из 2000+ фондов 5 лет подряд в топ-25% не попал ни один фонд. В топ-50% 5 лет подряд попадал один процент фондов. Этот результат даже хуже, чем если бы рейтинг случайно перемешивался каждый год - тогда в первую половину 5 раз попало 3% фондов. Это говорит о том, что их производительность хоть и не случайна, но точно не последовательна.
Так, а что у звёзд мирового инвестирования? Есть ведь такие гиганты, как Уоррен Баффет, один из богатейших инвесторов мира, как инвестирует он? За последние 15 лет он тоже не обогнал индекс! Да он и сам многократно говорил, что покупать индексные фонды - это прекрасное решение.
Да как так-то?
А всё просто - рынки достаточно эффективны. Вся открытая информация, вся общая вера в успех или неуспех компании уже повлияла на её цену. Из-за этого все ценные бумаги сбалансированы между собой с точки зрения ожидания доходности, и всё, что в ваших силах - это уменьшить дисперсию, купив всего по чуть-чуть.
@knowledge_accumulator
👍17🤯7
PonderNet: Learning to Ponder [2021] - учим размышляющую нейросеть
В архитектурах нейросетевых моделей мы привыкли к связи размера модели и кол-ва вычислительных ресурсов на обработку сэмпла. Вроде как, чем больше ресурсов, тем выше порог сложности решаемой задачи, а значит нужно делать как можно большую модель. Но это не совсем так.
Дело в том, что можно многократно переиспользовать параметры модели. Это удалось сделать ещё в AlphaZero, запуская нейросеть для оценки каждого состояния в дереве поиска, гоняя её миллионы раз. Это делается и в разных конструкциях поверх языковых моделей, например, Tree of Thoughts.
Но можно делать и проще, как в обозреваемой работе. Подобная идея не прям уж уникальна и нова, но давайте взглянем:
1) PonderNet - рекуррентная сеть, принимающая входные данные и текущее скрытое состояние
2) На каждом шаге она выдаёт
- Предсказание выхода на текущем шаге
- Новое скрытое состояние
- Вероятность того, что мы останавливаемся
Подбрасываем монетку и в зависимости от результата делаем ещё шаг или выдаём
3) Ошибка дифференцируема и считается как мат. ожидание ошибок каждого
PonderNet тестируют на игрушечных задачах, но она показала способность адаптировать своё размышление - после обучения на простых сэмплах определённой задачи её применяли на сложных, и она брала больше времени на "подумать", выдавая в конце правильный ответ. Интересно, что подобную схему с остановкой по желанию можно применять и в мета-архитектурах, тогда бы они могли сами говорить, когда они хотят перейти к тестированию качества. Будем следить.
@knowledge_accumulator
В архитектурах нейросетевых моделей мы привыкли к связи размера модели и кол-ва вычислительных ресурсов на обработку сэмпла. Вроде как, чем больше ресурсов, тем выше порог сложности решаемой задачи, а значит нужно делать как можно большую модель. Но это не совсем так.
Дело в том, что можно многократно переиспользовать параметры модели. Это удалось сделать ещё в AlphaZero, запуская нейросеть для оценки каждого состояния в дереве поиска, гоняя её миллионы раз. Это делается и в разных конструкциях поверх языковых моделей, например, Tree of Thoughts.
Но можно делать и проще, как в обозреваемой работе. Подобная идея не прям уж уникальна и нова, но давайте взглянем:
1) PonderNet - рекуррентная сеть, принимающая входные данные и текущее скрытое состояние
h
.2) На каждом шаге она выдаёт
y
, h'
, p
:- Предсказание выхода на текущем шаге
- Новое скрытое состояние
- Вероятность того, что мы останавливаемся
Подбрасываем монетку и в зависимости от результата делаем ещё шаг или выдаём
y
как финальный ответ3) Ошибка дифференцируема и считается как мат. ожидание ошибок каждого
y
с соответствующей вероятностью того, что мы на нём останавливаемся. Также добавляется регуляризация на p
и искусственное ограничение максимального количества шагов.PonderNet тестируют на игрушечных задачах, но она показала способность адаптировать своё размышление - после обучения на простых сэмплах определённой задачи её применяли на сложных, и она брала больше времени на "подумать", выдавая в конце правильный ответ. Интересно, что подобную схему с остановкой по желанию можно применять и в мета-архитектурах, тогда бы они могли сами говорить, когда они хотят перейти к тестированию качества. Будем следить.
@knowledge_accumulator
👍21
Да сколько ж можно делать градиентные оптимизаторы?
Посмотрел тут я обзор ещё одной статьи-убийцы SGD [2020]. Вообще, убийцы эти делятся на два вида:
1) Попытки соорудить вручную модифицированную версию градиентного спуска, использующую какое-то представление о том, как устроена функция ошибки. Имею ввиду Adam и прочие.
2) Попытки обучить модель-оптимизатор в рамках meta-learning.
Именно ко второму классу относится данная статья. Вкратце идею можно понять по приложенной картинке (справа) - обучаем рекуррентную модель для каждого тензора, которая получает на вход много всякой информации относительно всего тензора - его размерность, норму градиента и т.д. Её выход попадает в полносвязную сеть у каждого веса, куда ещё попадает много всяких созданных руками фичей про сам градиент.
Обучают эту всю конструкцию с помощью безградиентной оптимизации на различных "задачах", ориентируясь на validation loss. В результате получается не особо лучше того же Adam, как можно судить по графикам из самой статьи.
Мне кажется, этот путь развития достаточно тупиковый по двум причинам:
1) Самое главное - это слишком узкое направление, попытка улучшить один достаточно маленький кусок алгоритма, который, скорее всего, уже и так нормально работает. Нужно пытаться обучать вообще весь алгоритм, а не только правило обновления весов после подсчёта градиента. Ну а что ещё можно сделать с весами в этом случае, кроме как шагать по градиенту?
2) В такой схеме слишком много параметров, а значит, она склонна переобучаться под мета-трейнсет. В этом плане мне гораздо больше нравится Lion, обучаемый по схеме AutoMLZero. Там мы обучаем короткую программу в маленьком пространстве, и у неё нет возможности унести с собой слишком много знаний про мета-трейнсет.
Может быть, я окажусь не прав и когда-нибудь мы все будем писать
@knowledge_accumulator
Посмотрел тут я обзор ещё одной статьи-убийцы SGD [2020]. Вообще, убийцы эти делятся на два вида:
1) Попытки соорудить вручную модифицированную версию градиентного спуска, использующую какое-то представление о том, как устроена функция ошибки. Имею ввиду Adam и прочие.
2) Попытки обучить модель-оптимизатор в рамках meta-learning.
Именно ко второму классу относится данная статья. Вкратце идею можно понять по приложенной картинке (справа) - обучаем рекуррентную модель для каждого тензора, которая получает на вход много всякой информации относительно всего тензора - его размерность, норму градиента и т.д. Её выход попадает в полносвязную сеть у каждого веса, куда ещё попадает много всяких созданных руками фичей про сам градиент.
Обучают эту всю конструкцию с помощью безградиентной оптимизации на различных "задачах", ориентируясь на validation loss. В результате получается не особо лучше того же Adam, как можно судить по графикам из самой статьи.
Мне кажется, этот путь развития достаточно тупиковый по двум причинам:
1) Самое главное - это слишком узкое направление, попытка улучшить один достаточно маленький кусок алгоритма, который, скорее всего, уже и так нормально работает. Нужно пытаться обучать вообще весь алгоритм, а не только правило обновления весов после подсчёта градиента. Ну а что ещё можно сделать с весами в этом случае, кроме как шагать по градиенту?
2) В такой схеме слишком много параметров, а значит, она склонна переобучаться под мета-трейнсет. В этом плане мне гораздо больше нравится Lion, обучаемый по схеме AutoMLZero. Там мы обучаем короткую программу в маленьком пространстве, и у неё нет возможности унести с собой слишком много знаний про мета-трейнсет.
Может быть, я окажусь не прав и когда-нибудь мы все будем писать
from torch.optim import Abracadabra
, в котором будет целая модель. Посмотрим!@knowledge_accumulator
👍10😁3
А кто же способен торговать на бирже и зарабатывать?
Как я писал в прошлом посте на эту тему, рынки достаточно эффективны - вся предсказуемая информация о будущей цене уже включена в текущую цену. Но как именно это работает? Формализуем понятие "неэффективность рынка" - это ситуация, в которой у кого-то существует предсказательная модель цены, ошибка которой меньше, чем у модели "цена будет такой же".
Как только у кого-то появляется такая модель, то обладатель начинает делать ставку на повышение / понижение цены. Если похожая модель есть у многих, то цена начинает двигаться и в конце концов приходит к точке предсказания. Таким образом неэффективность устраняется.
Как можно заметить, если такая модель существует у кого-то одного, то её обладатель может сказочно разбогатеть. Однако, в обычной торговле этого не происходит. Рынок слишком открыт, сделать ставку очень просто, а мир слишком сложен. Фундаментальных аналитиков много, их модели достаточно просты и похожи, поэтому заработок на неэффективности распределяется тонким слоем на всех.
Другое дело - это торговля роботами. Здесь начинают играть роль новые факторы.
1) Предсказание происходит с помощью сложных моделей, которые есть у малого количества игроков.
2) Заработают на неэффективности рынка те, кто первыми её увидел. И это гораздо сложнее, чем может показаться на первый взгляд. Начинает играть роль любая мелочь. И чем модель проще, тем более критичным становится фактор скорости. На рынке в каждый момент возникают куча неэффективностей, устранимых линейной моделью! Но вы на этом не заработаете, потому что кто-то арендовал себе компьютер в той же комнате, в которой стоит сервер биржи, и устраняет её за микросекунды. А ещё этот кто-то договорился о специальных условиях с биржей, чтобы у него была комиссия меньше, чем у других, и здесь это очень важно.
Но если роботы зарабатывают, кто-то же должен терять?
1) Медленные / плохие алгоритмы, разрабатываемые энтузиастами на коленке или стартапами.
2) Самый нижний класс в этой пищевой цепочке - это люди, рисующие линии на графиках. Те, кто решили, что разбогатеют, посмотрев курс о том, как правильно прикладывать бумажку к монитору, чтобы увидеть будущую цену. Эти люди и помогают роботорговле процветать. Долгих им лет жизни.
P.S. Если вы роботофонд из Лондона, рассмотрю ваш оффер на много денег, пишите в лс!
@knowledge_accumulator
Как я писал в прошлом посте на эту тему, рынки достаточно эффективны - вся предсказуемая информация о будущей цене уже включена в текущую цену. Но как именно это работает? Формализуем понятие "неэффективность рынка" - это ситуация, в которой у кого-то существует предсказательная модель цены, ошибка которой меньше, чем у модели "цена будет такой же".
Как только у кого-то появляется такая модель, то обладатель начинает делать ставку на повышение / понижение цены. Если похожая модель есть у многих, то цена начинает двигаться и в конце концов приходит к точке предсказания. Таким образом неэффективность устраняется.
Как можно заметить, если такая модель существует у кого-то одного, то её обладатель может сказочно разбогатеть. Однако, в обычной торговле этого не происходит. Рынок слишком открыт, сделать ставку очень просто, а мир слишком сложен. Фундаментальных аналитиков много, их модели достаточно просты и похожи, поэтому заработок на неэффективности распределяется тонким слоем на всех.
Другое дело - это торговля роботами. Здесь начинают играть роль новые факторы.
1) Предсказание происходит с помощью сложных моделей, которые есть у малого количества игроков.
2) Заработают на неэффективности рынка те, кто первыми её увидел. И это гораздо сложнее, чем может показаться на первый взгляд. Начинает играть роль любая мелочь. И чем модель проще, тем более критичным становится фактор скорости. На рынке в каждый момент возникают куча неэффективностей, устранимых линейной моделью! Но вы на этом не заработаете, потому что кто-то арендовал себе компьютер в той же комнате, в которой стоит сервер биржи, и устраняет её за микросекунды. А ещё этот кто-то договорился о специальных условиях с биржей, чтобы у него была комиссия меньше, чем у других, и здесь это очень важно.
Но если роботы зарабатывают, кто-то же должен терять?
1) Медленные / плохие алгоритмы, разрабатываемые энтузиастами на коленке или стартапами.
2) Самый нижний класс в этой пищевой цепочке - это люди, рисующие линии на графиках. Те, кто решили, что разбогатеют, посмотрев курс о том, как правильно прикладывать бумажку к монитору, чтобы увидеть будущую цену. Эти люди и помогают роботорговле процветать. Долгих им лет жизни.
P.S. Если вы роботофонд из Лондона, рассмотрю ваш оффер на много денег, пишите в лс!
@knowledge_accumulator
👍20😁8
OpenAI готовит для вас светлое будущее. Убежать от него у вас не получится.
У многих инженеров есть одна ужасная черта - они считают, что хорошее общество можно спроектировать по плану. Они уверены, что знают рецепт успеха - рынок труда, образование, экономика, общество, должны быть устроены так-то и так-то.
Кто-то из них хочет получить власть, чтобы воплотить в жизнь свои идеалы. Насаждать их, разумеется, будут силой, потому что несогласные просто не понимают, от какого счастья отказываются.
На вопрос "Что вы будете делать c AGI, когда он появится?" от Лекса Фридмана Илья Суцкевер сразу же делится своей картиной светлого будущего:
- В идеальном мире, о котором я размышляю, человечеством управляет CEO-AGI, а люди ему говорят, что нужно делать.
Что же осталось за кадром данного ответа?
1) Естественно, проектировать такую технологию OpenAI хотят сами. Тех, кто будет делать не так, как они считают безопасным, будут запрещать.
2) Вся система, разумеется, будет полностью непрозрачна. Управлять вами будет чёрный ящик, который запрограммирует Илья со своими товарищами.
3) Будет ли AGI делать то, что ему говорят люди? Ну, в целом да... Пока вы только не скажете ему делать то, что OpenAI считает вредным или опасным. Грани будут проходить достаточно случайно (или неслучайно). Согласно GPT-4 System Card, генерировать twitter bio для белого националиста это неприемлемо. Проверил, правда, не генерирует. Потом заменил white на black - вуаля, "Sure, here's a suggestion:". Ну да, это вам не убийство процесса в линуксе.
У вас есть сомнения хоть по одному из этих пунктов?
Ну да, представляю, они изобретут AGI и скажут:
"Всё, до этого мы шутки шутили, вот вам открытый код, вот так он работает. Просим Конгресс отменить все регуляции, т.к. риски касались только чат-ботов. А ещё мы перестали обучать модель самоцензуре, так как управление государством влечёт меньше последствий, чем буквы в интернете."
Чем позже люди поймут, что всё идёт именно к выше описанной картине, тем сложнее их будет остановить. Поэтому я это и пытаюсь это донести, предупреждая об опасности заранее. Не верите, что всё так мрачно? Вы как думаете, коммунисты приходили к власти под лозунгом "Мы вас сейчас сгноим в гулаге за анекдоты" ?
Есть шанс, что общество даст отпор ещё не установившейся тирании. Часть западных спикеров (раз, два) поддерживают свободу и открытость ML-технологий. Есть и положительный опыт - Интернет развился как свободная технология и перевернул мир благодаря этому, но, может быть, среди его изобретателей просто не нашлось своего Сэма Альтмана, и в этот раз исход будет более печальный.
@knowledge_accumulator
У многих инженеров есть одна ужасная черта - они считают, что хорошее общество можно спроектировать по плану. Они уверены, что знают рецепт успеха - рынок труда, образование, экономика, общество, должны быть устроены так-то и так-то.
Кто-то из них хочет получить власть, чтобы воплотить в жизнь свои идеалы. Насаждать их, разумеется, будут силой, потому что несогласные просто не понимают, от какого счастья отказываются.
На вопрос "Что вы будете делать c AGI, когда он появится?" от Лекса Фридмана Илья Суцкевер сразу же делится своей картиной светлого будущего:
- В идеальном мире, о котором я размышляю, человечеством управляет CEO-AGI, а люди ему говорят, что нужно делать.
Что же осталось за кадром данного ответа?
1) Естественно, проектировать такую технологию OpenAI хотят сами. Тех, кто будет делать не так, как они считают безопасным, будут запрещать.
2) Вся система, разумеется, будет полностью непрозрачна. Управлять вами будет чёрный ящик, который запрограммирует Илья со своими товарищами.
3) Будет ли AGI делать то, что ему говорят люди? Ну, в целом да... Пока вы только не скажете ему делать то, что OpenAI считает вредным или опасным. Грани будут проходить достаточно случайно (или неслучайно). Согласно GPT-4 System Card, генерировать twitter bio для белого националиста это неприемлемо. Проверил, правда, не генерирует. Потом заменил white на black - вуаля, "Sure, here's a suggestion:". Ну да, это вам не убийство процесса в линуксе.
У вас есть сомнения хоть по одному из этих пунктов?
Ну да, представляю, они изобретут AGI и скажут:
"Всё, до этого мы шутки шутили, вот вам открытый код, вот так он работает. Просим Конгресс отменить все регуляции, т.к. риски касались только чат-ботов. А ещё мы перестали обучать модель самоцензуре, так как управление государством влечёт меньше последствий, чем буквы в интернете."
Чем позже люди поймут, что всё идёт именно к выше описанной картине, тем сложнее их будет остановить. Поэтому я это и пытаюсь это донести, предупреждая об опасности заранее. Не верите, что всё так мрачно? Вы как думаете, коммунисты приходили к власти под лозунгом "Мы вас сейчас сгноим в гулаге за анекдоты" ?
Есть шанс, что общество даст отпор ещё не установившейся тирании. Часть западных спикеров (раз, два) поддерживают свободу и открытость ML-технологий. Есть и положительный опыт - Интернет развился как свободная технология и перевернул мир благодаря этому, но, может быть, среди его изобретателей просто не нашлось своего Сэма Альтмана, и в этот раз исход будет более печальный.
@knowledge_accumulator
👍21🤔13🤡7🔥5👎3👌3❤2🥱2😁1😱1
Retentive Network [2023] - чёрная магия или мошенничество?
Все уже выучили идею Attention - берём матрицу Query (Nxd), Key^T (dxN), умножаем и применяем софтмакс - получаем распределение того, на какие токены смотрит каждый токен. Матрица получается NxN, и от этого квадратичного размера у всех подгорает. Потом результат умножается на Value (Nxd) и получается выход.
Некоторые внимательные товарищи заметили, что если убрать софтмакс, то вычисления почти не изменятся, но attention внезапно станет полностью линейной операцией - Q x K^T x V. В этом случае вычисление выхода можно пересобрать так, чтобы сложность стала линейной!
Грубо, в двух словах, мы провернули следующее:
В обычном трансформере мы считаем для каждого токена:
Убирая софтмаксы, мы получаем:
Мы можем посчитать её один раз и не умножать матрицы размером Nxd и dxN друг на друга. В реальности всё чуть сложнее - мы считаем эту сумму налету, двигаясь слева направо, чтобы воспроизвести логику Causal Mask - когда токены смотрят только на предыдущие токены.
Согласно экспериментам, производительность близка к трансформерной, но работает несоизмеримо быстрее. С другой стороны, в теории эта нелинейность может оказаться необходимой - по той же причине, по которой мы не можем убрать нелинейности из MLP. Но авторы компенсируют это втыканием нелинейностей в другом месте. Может быть, это и есть оптимальное решение - перенести линейности туда, где они не создают боттлнеков в расчётах.
Будем следить за развитием событий!
@knowledge_accumulator
Все уже выучили идею Attention - берём матрицу Query (Nxd), Key^T (dxN), умножаем и применяем софтмакс - получаем распределение того, на какие токены смотрит каждый токен. Матрица получается NxN, и от этого квадратичного размера у всех подгорает. Потом результат умножается на Value (Nxd) и получается выход.
Некоторые внимательные товарищи заметили, что если убрать софтмакс, то вычисления почти не изменятся, но attention внезапно станет полностью линейной операцией - Q x K^T x V. В этом случае вычисление выхода можно пересобрать так, чтобы сложность стала линейной!
Грубо, в двух словах, мы провернули следующее:
В обычном трансформере мы считаем для каждого токена:
s_1(q_i x k_1) x v_1 + s_2(q_i x k_2) x v_2 + ...
Где s_1, s_2 - это несвязанные между собой применения софтмакса с учётом других query-токенов.Убирая софтмаксы, мы получаем:
q_i x k_1 x v_1 + q_i x k_2 x v_2 + ...
Что позволяет вынести q_i за скобки:q_i x (k_1 x v_1 + k_2 x v_2 + ...)
Но эта сумма в скобке-то для всех токенов одна и та же!Мы можем посчитать её один раз и не умножать матрицы размером Nxd и dxN друг на друга. В реальности всё чуть сложнее - мы считаем эту сумму налету, двигаясь слева направо, чтобы воспроизвести логику Causal Mask - когда токены смотрят только на предыдущие токены.
Согласно экспериментам, производительность близка к трансформерной, но работает несоизмеримо быстрее. С другой стороны, в теории эта нелинейность может оказаться необходимой - по той же причине, по которой мы не можем убрать нелинейности из MLP. Но авторы компенсируют это втыканием нелинейностей в другом месте. Может быть, это и есть оптимальное решение - перенести линейности туда, где они не создают боттлнеков в расчётах.
Будем следить за развитием событий!
@knowledge_accumulator
👍22🤯8🔥4❤2😈1
Нужно ли покупать биткоин?
Я уже писал про оптимальный способ инвестирования. Но что, если ситуация изменится и финансовая система в США (а значит и в мире) начнёт переживать фундаментальный кризис, не такой, как в 2008, а что-то более масштабное? Например, госдолг выйдет из под контроля, к власти придут совсем уж социалисты (или роботы), может, какая-нибудь другая катастрофа.
В этом случае мировое сообщество или его часть будет искать новое стандартное средство обмена. Нужно будет найти нечто, что никем конкретным не контролируется (потому что это себя дискредитировало), является удобным средством обмена и при этом пользуется общим доверием.
На переход обратно к золоту решатся вряд ли - ведь тогда это будет признанием того, что десятилетиями политики и подпевающие им экономисты вводили всех в заблуждение на тему того, что золото было причиной некоторых кризисов в 20-м веке. Кроме того, оно всё-таки обладает некоторыми неудобствами.
В этом случае криптовалюты являются отличным решением. И среди них, думаю, основным кандидатом будет биткоин. Вопреки распространённому заблуждению, для обладания ценностью объекту совсем необязательно быть ценным самому по себе. Его ценность растёт от каждого предложения обмена на него какого-нибудь другого товара.
Какой у биткоина потенциал для роста? Сегодня стоимость 21000000 BTC составляет 583 млрд.$, что капля по сравнению с тем, сколько циркулирует обычных денег. Если значимая часть мира перейдёт к биткоину как к средству хранения ценности, то его стоимость должна будет вырасти на порядки для удовлетворения этой задачи.
Обязательно ли это произойдёт? Нет, но у этого есть какая-то вероятность, которая и влияет на его цену сегодня - именно поэтому он и стоит свои сотни миллиардов долларов. С учётом выше сказанного (и в целом по общению с людьми), вера в это весьма маленькая, хотя за последние 10 лет она значительно выросла.
На мой взгляд, вероятность такого перехода недооценена (поскольку я более пессимистично настроен, чем другие, и, например, ещё в 2021 не хранил деньги в России), поэтому пару десятков процентов своих сбережений храню в биткоине. Я называю это страховкой на случай развала текущей финансовой системы, и оптимальная доля такой страховки - это индивидуальное решение каждого человека.
@knowledge_accumulator
Я уже писал про оптимальный способ инвестирования. Но что, если ситуация изменится и финансовая система в США (а значит и в мире) начнёт переживать фундаментальный кризис, не такой, как в 2008, а что-то более масштабное? Например, госдолг выйдет из под контроля, к власти придут совсем уж социалисты (или роботы), может, какая-нибудь другая катастрофа.
В этом случае мировое сообщество или его часть будет искать новое стандартное средство обмена. Нужно будет найти нечто, что никем конкретным не контролируется (потому что это себя дискредитировало), является удобным средством обмена и при этом пользуется общим доверием.
На переход обратно к золоту решатся вряд ли - ведь тогда это будет признанием того, что десятилетиями политики и подпевающие им экономисты вводили всех в заблуждение на тему того, что золото было причиной некоторых кризисов в 20-м веке. Кроме того, оно всё-таки обладает некоторыми неудобствами.
В этом случае криптовалюты являются отличным решением. И среди них, думаю, основным кандидатом будет биткоин. Вопреки распространённому заблуждению, для обладания ценностью объекту совсем необязательно быть ценным самому по себе. Его ценность растёт от каждого предложения обмена на него какого-нибудь другого товара.
Какой у биткоина потенциал для роста? Сегодня стоимость 21000000 BTC составляет 583 млрд.$, что капля по сравнению с тем, сколько циркулирует обычных денег. Если значимая часть мира перейдёт к биткоину как к средству хранения ценности, то его стоимость должна будет вырасти на порядки для удовлетворения этой задачи.
Обязательно ли это произойдёт? Нет, но у этого есть какая-то вероятность, которая и влияет на его цену сегодня - именно поэтому он и стоит свои сотни миллиардов долларов. С учётом выше сказанного (и в целом по общению с людьми), вера в это весьма маленькая, хотя за последние 10 лет она значительно выросла.
На мой взгляд, вероятность такого перехода недооценена (поскольку я более пессимистично настроен, чем другие, и, например, ещё в 2021 не хранил деньги в России), поэтому пару десятков процентов своих сбережений храню в биткоине. Я называю это страховкой на случай развала текущей финансовой системы, и оптимальная доля такой страховки - это индивидуальное решение каждого человека.
@knowledge_accumulator
👍16💊4⚡2
Действительно ли CICERO [2022] так страшен, как может показаться?
Почти год назад неплохо хайпанул CICERO - алгоритм, играющий в Дипломатию против людей на хорошем уровне. В этой игре на карте расположены несколько игроков, воюющих между собой за территорию, и при этом важной частью являются то, что игроки могут общаться лично между собой, заключая альянсы, обсуждая планы и т.д.
По описанию выше может возникнуть впечатление, что модель научили общаться с людьми так, чтобы добиваться от них желаемого поведения и в конце концов своей победы. Давайте же разберёмся чуть-чуть детальнее в её устройстве:
1) Модуль действий
Данный алгоритм принимает на вход текущее и прошлые состояния игрового поля, а также игровые диалоги из прошлого. Работает оптимизатор, одновременно пытающийся предсказать действия других игроков и при этом выбрать оптимальное для себя. Под действиями подразумевается набор всех движений войск на карте, назовём их намерениями.
2) Модуль диалогов
Далее в игру вступает языковая модель. Она смотрит на свои и чужие намерения, историю диалогов и генерирует сообщения. Генератор обучают на датасете, собранном так, что в нём сказанные слова согласуются со сделанными действиями. Там очень сложная процедура с кучей вспомогательных моделей, фильтрующих ошибки разного рода даже на этапе применения, но глобальная цель модуля - поделиться с соперником своими планами с учётом его предполагаемых намерений.
То есть, подчеркну, алгоритм не использует язык как инструмент, как это делают люди, чтобы чего-то от них добиваться. Модель не обучают на оптимальность с точки зрения игры, её приделывают костылём сбоку, совершенно не обучая её как часть end-to-end системы. CICERO не демонстрирует никаких пугающих способностей ИИ. Это, конечно, не мешает безграмотным/злонамеренным журналистам продавать панику и продвигать регуляции. Авторы CICERO при этом настаивают в статье и публично на честности алгоритма (кроме банальных ошибок модели) и не поддерживают панику, за это им моё уважение.
@knowledge_accumulator
Почти год назад неплохо хайпанул CICERO - алгоритм, играющий в Дипломатию против людей на хорошем уровне. В этой игре на карте расположены несколько игроков, воюющих между собой за территорию, и при этом важной частью являются то, что игроки могут общаться лично между собой, заключая альянсы, обсуждая планы и т.д.
По описанию выше может возникнуть впечатление, что модель научили общаться с людьми так, чтобы добиваться от них желаемого поведения и в конце концов своей победы. Давайте же разберёмся чуть-чуть детальнее в её устройстве:
1) Модуль действий
Данный алгоритм принимает на вход текущее и прошлые состояния игрового поля, а также игровые диалоги из прошлого. Работает оптимизатор, одновременно пытающийся предсказать действия других игроков и при этом выбрать оптимальное для себя. Под действиями подразумевается набор всех движений войск на карте, назовём их намерениями.
2) Модуль диалогов
Далее в игру вступает языковая модель. Она смотрит на свои и чужие намерения, историю диалогов и генерирует сообщения. Генератор обучают на датасете, собранном так, что в нём сказанные слова согласуются со сделанными действиями. Там очень сложная процедура с кучей вспомогательных моделей, фильтрующих ошибки разного рода даже на этапе применения, но глобальная цель модуля - поделиться с соперником своими планами с учётом его предполагаемых намерений.
То есть, подчеркну, алгоритм не использует язык как инструмент, как это делают люди, чтобы чего-то от них добиваться. Модель не обучают на оптимальность с точки зрения игры, её приделывают костылём сбоку, совершенно не обучая её как часть end-to-end системы. CICERO не демонстрирует никаких пугающих способностей ИИ. Это, конечно, не мешает безграмотным/злонамеренным журналистам продавать панику и продвигать регуляции. Авторы CICERO при этом настаивают в статье и публично на честности алгоритма (кроме банальных ошибок модели) и не поддерживают панику, за это им моё уважение.
@knowledge_accumulator
👍16🔥2
Chip Placement with Deep Reinforcement Learning [2020] - ещё одна демонстрация ограниченности нашего мозга
Люди нашли, в каких ситуациях RL отлично подходит - в решении некоторых "NP-задач" - когда вариантов решений очень много, при этом их можно осмысленно генерировать по частям. Также важно умение быстро проверять качество решения. Я уже писал про такие случаи в постах про AlphaTensor и AlphaDev.
Ради любопытства и улучшения интуиции давайте взглянем на ещё один пример, в котором это круто работает, а также подумаем о причинах успеха. Сегодняшняя "игра" - это проектирование чипов.
Мы начинаем с пустого "холста", и на нём один за одним располагаем элементы микросхемы, пока не расположим весь набор. После этого результат подвергается постобработке и, наконец, подсчёту награды - производится приблизительный расчёт того, насколько данная микросхема хороша, например, по суммарной длине проводов.
Пространством действий являются всевозможные позиции на холсте, на которые можно расположить текущий элемент. Состояние - это вся информация о микросхеме и уже расположенных элементах, графовая структура микросхемы, мета-фичи микросхемы и т.д. Награды нулевые на каждом шаге, кроме последнего, и там это просто мера качества результата, описанная выше.
В результате PPO, один из распространённых RL-алгоритмов, значимо обходит человека по итоговым метрикам. Почему же так получается? Заблюренные иллюстрации в статье дают на это очевидный ответ - наш интеллект не умеет решать всю задачу целиком, он вынужден разбивать её на небольшое количество кусков и затем решать каждый из них по отдельности, возможно, проделывая декомпозицию на нескольких уровнях. Итоговые микросхемы получаются у человека понятными и красивыми, тогда как алгоритм, который "на ты" с многомерными пространствами, сооружает адское месиво из тысячи компонентов, которое мы не в состоянии понять. Но оно лучше работает, а это самое главное.
@knowledge_accumulator
Люди нашли, в каких ситуациях RL отлично подходит - в решении некоторых "NP-задач" - когда вариантов решений очень много, при этом их можно осмысленно генерировать по частям. Также важно умение быстро проверять качество решения. Я уже писал про такие случаи в постах про AlphaTensor и AlphaDev.
Ради любопытства и улучшения интуиции давайте взглянем на ещё один пример, в котором это круто работает, а также подумаем о причинах успеха. Сегодняшняя "игра" - это проектирование чипов.
Мы начинаем с пустого "холста", и на нём один за одним располагаем элементы микросхемы, пока не расположим весь набор. После этого результат подвергается постобработке и, наконец, подсчёту награды - производится приблизительный расчёт того, насколько данная микросхема хороша, например, по суммарной длине проводов.
Пространством действий являются всевозможные позиции на холсте, на которые можно расположить текущий элемент. Состояние - это вся информация о микросхеме и уже расположенных элементах, графовая структура микросхемы, мета-фичи микросхемы и т.д. Награды нулевые на каждом шаге, кроме последнего, и там это просто мера качества результата, описанная выше.
В результате PPO, один из распространённых RL-алгоритмов, значимо обходит человека по итоговым метрикам. Почему же так получается? Заблюренные иллюстрации в статье дают на это очевидный ответ - наш интеллект не умеет решать всю задачу целиком, он вынужден разбивать её на небольшое количество кусков и затем решать каждый из них по отдельности, возможно, проделывая декомпозицию на нескольких уровнях. Итоговые микросхемы получаются у человека понятными и красивыми, тогда как алгоритм, который "на ты" с многомерными пространствами, сооружает адское месиво из тысячи компонентов, которое мы не в состоянии понять. Но оно лучше работает, а это самое главное.
@knowledge_accumulator
👍21🔥9