Knowledge Accumulator – Telegram
Knowledge Accumulator
5.45K subscribers
138 photos
277 links
Реалистичный взгляд на технологии и мир
Download Telegram
General Problem Solver - наконец-то AI способен решать задачи в произвольном домене.

С новыми возможностями искусственного интеллекта нас ждёт всеобщая автоматизация и потеря рабочих мест - утверждают известные экономисты. Во второй раз в истории термин "технологическая безработица" резко набирает популярность - на этот раз мы уже видим для этого реальную причину.

Как пользоваться алгоритмом? Нужно всего лишь:

1) Задать пространство состояний
2) Задать возможные переходы между ними
3) Задать начальное и целевое состояние
4) Запустить и через какое-то время программа найдёт решение.

Всё описанное произошло в 1959 году. В алгоритме используется поиск по всему графу состояний в поиске целевой вершины. Проклятие размерности, влияющее на размер графа, видимо, казалось каким-то легко обходимым препятствием.

Оставайтесь с нами, ибо в ближайшее время я расскажу про то, как обстоят дела с интеллектом у машин спустя >60 лет после появления брут-форс-ИИ. Вы удивитесь, насколько всё недалеко ушло.

@knowledge_accumulator
👍14😁2
Недавно совершенно внезапно я оказался в новой для себя роли - поучаствовал в съёмке видео про нейросети на канале моего друга Влада. Влад не работает в этой сфере, и это видео может стать для вас хорошим взглядом извне.

Давать комментарий было интересно, и я надеюсь, что в момент коллективного помешательства это поможет кому-то увидеть точку зрения, отличную от того, что вы можете часто наблюдать.

Всем хорошей пятницы! ❤️
👍5🔥4👏1
On the Measure of Intelligence [2019]

Что такое интеллект? Этот вопрос становится всё более важным, так как человечество начинает создавать системы, демонстрирующие свойства, которыми до сих пор обладали только люди.

В такие моменты картины мира в наших головах начинают давать сбой - в отсутствие строгих определений мы начинаем путаться и не очень понимаем происходящую ситуацию.

На мой взгляд, отличную попытку определить интеллект делает автор данной работы (F. Chollet, создатель Keras):
The intelligence of a system is a measure of its skill-acquisition efficiency over a scope of tasks, with respect to priors, experience, and generalization difficulty.

Проще говоря, интеллект это про приобретение умений, а не про то, что умеет делать та или иная система. Такой подход позволяет осознать, что мы всё ещё работаем с низкоинтеллектуальными системами, потому что их способность приобретать умения сильно ограничена.

Очень советую к прочтению эту работу всем, кого интеллект интересует как то свойство системы, которое он когда-то хочет увидеть в компьютерах.

О предлагаемом способе измерять интеллект поговорим в следующем посте.

@knowledge_accumulator
👍11🔥3
Abstraction and Reasoning Challenge [2019] - простейший тест на интеллект

Способна ли система понимать простые зависимости по нескольким примерам? Именно это проверяет данный бенчмарк.

Говоря формальнее, тестируемый субъект должен посмотреть на несколько (1-5) пар образцов "вход-выход", понять, в чём закономерность, и научиться генерировать правильный выход по тестовому входу.

"Задачки" являются очень простыми для любого человека, и он решит около 90% из датасета, понимая решение почти всегда за несколько секунд.

Одна из таких задачек есть на картинке - что нужно сделать с картинкой слева, чтобы она стала картинкой справа? Вы понимаете, как будет выглядеть выход, если, например, подвигать зелёные прямоугольники, или заменить цвета на другие?

На основе этого бенчмарка было организовано весьма необычное соревнование на Kaggle, где я с командой даже взял золото 😄

А в следующем посте я расскажу его итоги и решение, которое заняло первое место!

@knowledge_accumulator
👍103🔥1
Самый умный ИИ в Abstraction and Reasoning Challenge

1) Определим 142 операции вида *картинка -> картинка*.
Это преобразования картинки, такие как "соедини точки одинакового цвета", "отрази картинку", "отфильтруй цвет" и т.д. Список операций был составлен, смотря на тренировочные задачки из соревнования.

2) Когда система встречает новую задачку, она пытается применить всевозможные последовательности этих операций (не длиннее 4) к входам-образцам. Ищем те последовательности, которые дают правильный ответ на всех образцах.

3) Применяем найденные верные программы к тестовому входу.

4) Всё это пишем на плюсах очень аккуратно и эффективно, чтобы влезть по ограничениям.

5) Решаем 20% задачек и получаем первое место!

Моё решение было на питоне и я пытался применять эволюционный алгоритм для поиска программы, что, вероятно, только испортило результат...

Другой класс решений был заточен под конкретный подкласс задачек, в которых нужно было выбрать один из объектов на картинке и выдать его как ответ. Там кто-то даже применял ML, и в итоге мы с одним из таких решений объединились в команду.

Ну как вам, далеко мы продвинулись за 60 лет?

@knowledge_accumulator
👍5😁4🔥2😢1
Что можно вынести из Abstraction and Reasoning Challenge

Если прочитать статью и посмотреть глазами на задачки, можно заметить, что априорные концепции, зашитые в тест, очень простые - понятие "объектности", элементарная арифметика, элементарная геометрия объектов. Никакого языка, зрительных образов, сложной логики. Программа на C++, генерирующая ответ почти на любую задачу, займёт не так много строк.

При этом определить такой набор "подпрограмм", склеивая которые, можно сгенерировать решение, оказалось слишком сложно:
1) Если они будут слишком простые, мы не сможем сгенерировать достаточно длинные программы
2) Если они будут слишком сложные, мы не покроем большое количество задач
3) Если их будет слишком много, мы сможем генерировать только очень короткие программы.

Так что, поиск (перебор) это тупик в развитии машинного интеллекта?

Я считаю, что нет. Тупиком является только поиск по всем вариантам. Но если нам удалось бы каким-то образом направлять поиск так, чтобы перебирать как можно меньше программ в поиске решения, то наша система научилась бы решать тест за адекватное время. И именно направлять поиск человечество пока ещё только учится делать.

Когда это получается - результат получается потрясающий. О примерах такого мы и поговорим в следующих постах.

@knowledge_accumulator
👍13
AlphaZero [2018] - история о плодотворной дружбе поиска и глубокого обучения

Обобщая, есть 2 поколения подходов в настольных играх:

1) Поиск по всем вариантам с оптимизациями
Шахматные алгоритмы, начиная с появления компьютеров, как минимум до Deep Blue [1997], работали на основе таких подходов. В глубине души они по эффективности похожи на полный перебор, но засчёт хитростей (вроде дебютной книги и эвристических оценок позиций в листьях дерева поиска) алгоритмам удаётся как-то работать.

2) Направленный поиск с помощью обучаемой функции полезности
Именно в этом и состояла революция AlphaGo (и её потомка AlphaZero). Оказалось, что обучаемая функция полезности действия в данной позиции позволяет перебирать радикально меньше вариантов ходов из каждой позиции. Она позволяет строить дерево поиска на больше ходов вперёд, потому что мы грамотно выбираем ходы при переборе.
Что интересно, обучается данная функция довольно просто - достаточно генерировать данные, садя алгоритм играть против себя же и своих прошлых итераций, и учить её предсказывать результат игры. В результате система легко обходит человека в шахматы и го.

Слабые точки AlphaZero понятны - требует много данных, обучается отдельно под одну игру. Но все революции за раз не совершить!

@knowledge_accumulator
👍7🔥61
MuZero [2020] - AlphaZero выходит из плена настольных игр

Попытка моделировать динамику среды (то, какими состояние и награда у среды будут следующими, если знаем текущее состояние и действие агента) - это отдельная песня в рамках RL, которая обычно не даёт такого профита, который позволяет компенсировать сложность подхода. Всё потому, что генерировать состояния слишком трудно из-за неопределённости в среде и высокой размерности состояния.

Тем не менее, в рамках MuZero пытаются применить подход к выбору действий с помощью планирования, как в AlphaZero, в ситуации, когда доступа к модели среды нет.

Что делают с проблемой сложности среды? Оказывается, можно просто забить на состояния, и при обучении своей модели динамики среды пытаться предсказывать только будущие награды и действия нашей стратегии. Ведь чтобы их предсказывать, нужно извлечь всё самое полезное из динамики и не более. Удивительно, но это работает! Более того, эта система может играть в Го на уровне AlphaZero, у которой доступ к модели есть.

Я думаю, что отказ от попытки предсказывать будущее состояние это верно, потому что убирает ненужную сложность. От этого отказались в RND, NGU, в MuZero и не только.
Глобально говоря, от этого имеет смысл отказываться всегда, когда генерация не является самоцелью. И я думаю, что это рано или поздно будут делать во всех доменах, даже в текстах.

@knowledge_accumulator
👍7🤔2
AlphaStar [2019] - мы упёрлись в лимит self-play learning?

С одной стороны, перед нами романтичная история о том, как Oriol Vinyals, будучи в юности крутым Starcraft-игроком, стал ML-исследователем и через полтора десятка лет изобрёл первую Grandmaster-level-систему для Starcraft. В этом подкасте у Lex Fridman он рассказывает много интересного об этом проекте, советую интересующимся.

С другой стороны, при переходе на такой уровень сложности среды мы начинаем видеть пределы такого метода обучения, который используется здесь (он похож на AlphaZero):

1) Без использования человеческих знаний и данных это не работает.
В отличие от Go, в Starcraft вы не можете обучить сильный алгоритм, плавно меняя вашу стратегию, начиная с рандомной. В Go вы можете начать из рандома, потом играть лучше рандома, потом ещё лучше и так далее. В Starcraft вы сразу же натыкаетесь на локальный максимум, в котором вы берёте всех своих стартовых юнитов и идёте бить морду противнику, а не строить базу.

2) Количество данных, которое тут требуется, безумно. Увеличение размерности печально влияет на способность алгоритмов обучаться. Тут мы и видим проблему низкого интеллекта таких систем - они не могут использовать данные так же эффективно, как это делает человек.

В общем, применение прикольное, но технологии у нас пока ещё совсем слабенькие.

@knowledge_accumulator
👍5🔥1
Почему интуиция это ключ к интеллекту?

Когда
мы проводим оптимизацию в большом пространстве для какой-то задачи, будь то Го или шахматы, Abstraction and Reasoning Challenge, или пытаемся придумать решение задачи по математике, ключом к успеху, как я уже говорил, является направленность поиска решения.

Есть 2 способа эту направленность получить:

1) Оракул
Если у нас есть фидбек от задачи, которую мы пытаемся решать, мы можем плавно двигаться нашим решением в сторону правильного, ориентируясь на то, насколько фидбек улучшается. Этот вариант имеет опасность - он может привести вас в локальный максимум, как это происходит в Starcraft, где в качестве оракула выступает то, выигрываете ли прошлые итерации себя. Но если оракул таков, что не допускает плохих локальных максимумов, он вам поможет. Эти случаи достаточно редки!

2) Интуиция
Я только недавно отрефлексировал её ключевую важность. Интуиция позволяет AlphaZero перебирать правильные ходы в Go. Интуиция позволяет математикам находить длинные доказательства теорем, хотя задача поиска доказательства является, в каком-то смысле, NP-задачей (экспоненциальное время на поиск решения, и маленькое время на проверку решения). Нерешённая проблема в сфере ИИ, то, что позволяет человеку обучаться так быстро - это универсальная интуиция, не привязанная к домену, которая позволяет посмотреть на картинку из Abstraction & Reasoning Challenge и мгновенно увидеть паттерн из жизни.

Никакие алгоритмы (пока что) на это не способны, и это является очевидным препятствием к тому, чтобы мы получили "Human-level intelligence".

@knowledge_accumulator
👍10
AutoML-Zero [2020] - когда оракул помогает поиску.

Можно ли с нуля и без априорных знаний сгенерировать код нейронной сети? Оказывается, в целом можно.

Применяем эволюционный поиск программ:
1) Задаём базовую структуру программы: нам нужно обучить 3 куска кода - для инициализации, для шага обучения и применения. То, как они используется, заранее задано, там простой train-loop. То есть одна программа это реализация трёх функций.
2) Определяем набор операций, которые можно использовать - берём базовые математические операции над скалярами, матрицами и векторами. И добавляем возможность самому инициализировать новые такие объекты.
3) Поддерживаем "популяцию" из N программ
4) В процессе оптимизации берём программы и применяем к ним мутации (случайно добавляем/удаляем/изменяем команду или другие случайные изменения)
5) Оцениваем новые программы, прогоняя процесс обучения, оставляем удачные варианты в популяции.
6) Прогоняем триллион программ в рамках оптимизации и готово!

Важно заметить, что несмотря на случайную природу мутаций, AutoML-Zero ищет программу быстрее (экспоненциально), чем нашёл бы простой случайный поиск программ. Ключом тут является способность эволюционного алгоритма закреплять локальный успех.

Но каждый локальный успех по отдельности это миллиарды экспериментов - например, понадобилось 10^10 программ, чтобы собрать линейную модель. Поэтому такой подход имеет узкие рамки для использования.

Но зато всё это крайне весело.

@knowledge_accumulator
👍6😁1🆒1
AlphaTensor [2022] - пример сверхчеловеческой интуиции в математике

Подход "поиск + нейросетевая интуиция" позволил AlphaZero планировать в играх с помощью с обученной на огромном разнообразном датасете аппроксиматором функции полезности, позволившим радикально сократить пространство перебора.

Оказывается, существуют области, полезные в жизни, где мы понимаем, как применить такой подход на текущем этапе развития технологий. Такой областью является перемножение матриц!

Говоря общими словами (глубокий часовой обзор есть тут):
1) Наша задача - разработать алгоритм, который можно применить к 2 матрицам, чтобы получить в результате их произведение.
2) Мы работаем с пространством алгоритмов, которые задаются последовательностью векторов-параметров. Эти векторы-параметры говорят нам (хитро), что на что умножать и что с чем складывать.
3) В терминах RL действиями являются эти векторы, наградой является то, насколько близкий результат будет давать алгоритм (со штрафом за кол-во действий), а состоянием среды является размерность матриц и прошлые действия.

К этому всему мы применяем в точности AlphaZero - нужно только реализовать "RL-среду" по правилам выше. В результате обучения алгоритм находит более быстрые способы перемножать матрицы, чем знало человечество!

Я в восторге от результатов данной работы, потому что система демонстрирует сверхчеловеческое понимание своей задачи, а я люблю такое. Она способна смотреть на данные той размерности, которые мы не способны воспринимать. Результаты на картинке говорят, что чем больше размерность, тем больше отрыв между ней и нами. Такие вот дела!

@knowledge_accumulator
👍10🔥3❤‍🔥1
Как пытаются подходить к автоматическому доказательству теорем с помощью ИИ?

К сожалению, у меня не получилось в небольшом посте одновременно объяснить задачу и подход, поэтому сегодня будет только про задачу. Итак, поехали.

Существует Metamath, где формализованы доказательства ~38к утверждений в математике, опираясь друг на друга, и в конечном счёте на базовые аксиомы.

Все доказательства теорем в Metamath базируются на подстановке - это когда мы применяем аксиому или уже доказанную ранее теорему к имеющимся "объектам", чтобы сгенерировать новое промежуточное утверждение. И так, пока не дойдём до теоремы. Этот подход называется forward manner.

Нас же интересует backward manner - это когда у нас есть доказываемое утверждение, и мы применяем к нему тактику, то есть предполагаем, какие промежуточные утверждения, при применении какой-нибудь аксиомы или теоремы, доказали бы желаемое.
Пример: чтобы доказать, что A=C, мы должны доказать, что A=B и B=C, и потом применить транзитивность. Теперь пытаемся доказать, что A=B и B=C.

Таким образом, в backward manner процесс доказательства - это построение дерева.
У каждого утверждения есть дети-тактики - попытки по-разному декомпозировать его на более базовые. И у каждой тактики есть дети-утверждения, все из которых мы должны доказать. Если какая-то вершина оказывается аксиомой или уже доказанным утверждением, то она автоматически доказана. Соответственно, шаг поиска это добавление тактики-ребёнка вместе с его детьми-утверждениями к уже существующей вершине. Это всё похоже на настольную игру. См. картинку.

Буду рад, если математики в комментариях подскажут, какой по сложности является эта задача, если решать её перебором.

А в следующих постах я расскажу о том, как поиск доказательств теорем ускоряют с помощью нейросетей, насколько плохо пока получается, и подумаем над фундаментальными причинами.

@knowledge_accumulator
👍14🔥1
GPT-f [2020] - LLM пытается доказывать теоремы.

Обязательно посмотрите предыдущий пост, если не видели, там объясняется задача.

Претрейн: помимо кучи текстов из интернета, модель учат на смеси GitHub, arXiv Math, и Math StackExchange.

Файнтюн: На основе базы доказательств Metamath строится датасет для файнтюна, состоящий из последовательностей вида <цель # шаг доказательства>, где нужно предсказать шаг доказательства по цели. Иначе говоря, учимся генерировать тактику доказательства заданного на вход утверждения.

Как работает процесс: мы храним в очереди с приоритетом все вершины дерева доказательства, которые мы ещё не пытались доказывать. Вначале в дереве только корень.
Выбираем вершину из очереди, пытаемся доказать, генерируя 32 тактики доказательства. Скорим их по сумме log-prob-ов всех токенов, и прибавляем скор родителя - это и будут приоритеты, с которыми мы их кладём в очередь.
На попытку доказательства выделяем до 128 таких шагов, и 4 попытки всего процесса, начиная с чистого листа.

После инференса модели на тренировочном датасете задач:
1) Учим value-функцию вида цель -> [0; 1] - предсказывает то, докажет ли модель данное утверждение.
2) Дообучаем генератор тактик на успешных тактиках

Весь процесс применения на трейнсете повторяем заново, теперь уже скоря вершины value-функцией. И потом повторяем 2 пункта выше. Так можно делать сколько угодно раз. То есть претрейн -> файнтюн -> инференс -> файнтюн на инференсе -> инференс №2 -> ...

Результат - 56% успешных док-в на тесте вместо 21% у предыдущего SOTA, и в ходе работы было сгенерировано 23 более коротких доказательств для базы Metamath, которые туда внедрили.

Это открыло ярмарку статей на эту тему, о которых мы ещё поговорим.

@knowledge_accumulator
👍13👏1
Thor [2022]: комбинируем языковую модель и молотки

Программы и инструменты для доказательства теорем это отдельная вселенная, которую я за короткое время не смог полностью осознать. Я мучил вопросами ChatGPT, перечитывал статью кругами, и в итоге вроде бы смог немного понять суть.

Есть тут такая вещь, как hammer-ы - это название для "традиционных" методов поиска доказательств утверждения. Они работают, получая на вход утверждение в формализованном виде, и какой-то эвристикой находя его доказательство. Конечно же, возможности молотков сильно ограничены, но простые леммы доказывать умеет.

В то же время, есть система типа GPT-f. В статье утверждается, что успех GPT-f и hammer-ов плохо скоррелирован, потому что GPT-f плохо умеет находить факт, который нужно использовать, а hammer-ы плохи в длинных док-вах. Поэтому их нужно использовать вместе!

Делают это так же, как языковые модели учат использовать API: в датасет для файнтюна GPT-f интегрируют токен вызова <hammer>, который будет просить молоток доказать данное утверждение. Такой гибрид и есть Thor. Генерируется датасет из тех утверждений, которые hammer успешно доказывает. Пример совместной работы человека и hammer-ов см. на картинке, нейросеть тут делает по сути кусок слева, строя своё дерево.

Результаты: в статьях после GPT-f используют уже не только Metamath. Все последние работы тестируют на miniF2F - интегрированном бенчмарке из разных сервисов / датасетов.

Молоток сам решает 10%, GPT-f без дообучения (в том посте описана эта процедура) 24%, объединение этих задач - это 27.5%. Thor решает 29.9% без дообучения. При этом GPT-f с дообучением решает 29.6%. Объединение Thor и дообучения на своих же доказательствах находится за рамками этой статьи.

В среду вас ждёт SOTA на miniF2F, пристегните ремни!

@knowledge_accumulator
🔥8🤯2👍1
Autoformalization with Large Language Models [2022] - собираем чемпиона по математике среди алгоритмов.

Продолжаем серию постов про док-ва теорем: раз, два, три.

В данной работе в качестве базовой модели используется Thor. Дополнительно применяется схема из статьи GPT-f - после начального претрейна и файнтюна модели мы запускаем процесс под названием Expert Iteration:
1) Применяем нашу модель на тренировочном датасете задач и пытаемся доказать каждую из них.
2) Собираем датасет из успешных доказательств, на котором мы дообучаем нашу языковую модель.
3) Повторяем процедуру, пока не надоест

В чём ключевая новизна статьи - авторы пытаются расширить тренировочный датасет: берут другой датасет задач по математике, написанных на естественном языке, и просят Codex перевести эти задачи на "формальный язык", с которым мы работаем. По словам авторов, они проверили качество перевода на случайных 150 задачках и получили 38 корректных переводов.

В остальном ничего сильно нового в статье нет, после 2-х итераций Expert Iteration с использованием "автоформализованных" задач получается 29.9% на miniF2F-test превратить в 35.2%!
К сожалению, я не нашёл ablation по поводу того, помогает ли тут именно добавление автоформализованных задач, а не только Expert Iteration.

В пятницу подведём итоги.

@knowledge_accumulator
👍6
Итак, в чём проблема с нейросетями в математике?

Мысли по результатам предыдущих постов.

Прежде всего обозначу критерий успеха - лично мне не будет особо интересно, если алгоритмы научатся хорошо решать простые задачи, описанные на естественном языке. Меня интересует возможность доказывать что-то новое, что ещё не было доказано. Как мы видим из AlphaTensor, это в целом осуществимо, и вопрос в том, почему успеха нет в более общем классе задач.

Я вижу 2 главные проблемы:

1) Неправильное представление данных
В эру хайпа языковых моделей решением на поверхности является рассмотрение математических утверждений как последовательности токенов на формальном языке. Однако, последовательность токенов не содержит в себе почти никакой априорной информации о структуре утверждений. В сфере языка эта проблема нивелируется огромным количеством данных, но на математическом языке таких данных нет и не может быть.
Простейшая иллюстрация - утверждение на формальном языке инвариантно к именам используемых переменных, тогда как с точки зрения языковой модели это разные высказывания.

2) Неправильная генерация действий
Я считаю, что генеративные авторегрессионные модели глобально обречены - генерировать формальные утверждения по 1 токену это плохая идея, но ничего лучше у нас пока что нет. Эта проблема тесно связана с первой, поскольку другой способ представлять утверждения может подсказать другой способ их генерации.
Доказать существование проблемы очень легко - GPT-f решает не все задачи, которые решает простой эвристикой молоток (писал тут в конце поста). Иначе бы молоток был не нужен и не помогал вообще.

Вообще, на мой взгляд, приложение языковых моделей к математике наглядно вскрывает проблемы, которые есть в языковых моделях в целом. Надеюсь, что перегрев ожиданий от ИИ не похоронит инвестиции в область через несколько лет, а исследователи не будут страдать от tunnel vision и забивать отвёрткой гвозди. Тогда мы, может быть, поймём наконец, равны ли P и NP.

@knowledge_accumulator
👍8🔥5🤔1💯1
В сегодняшний выходной предлагаю вам почитать расследование от @tech_priestess об одном из онлайн-курсов по нейросетям: https://habr.com/ru/articles/732556/

Там, помимо всего прочего, вы узнаете самый лучший способ собирать датасет в интернете, и как разводить ваших руководителей с помощью графиков.

Хорошего вечера! ☕️
👍11
JEPA ЛеКуна [2022]

Если вам надоело читать в твиттере про скорый конец света, то у меня для вас есть достойная альтернатива.

A Path Towards Autonomous Machine Intelligence (настоящее название статьи) содержит в себе несколько составляющих:

1) Про автономный интеллект
Это попытка представить, как могла бы выглядеть ИИ-система, которая способна так же, как человек, познавать мир, ставить себе цели и что-то делать. Эта часть интересна не столько тем, что в ней написано, а тем, что в ней обозначено как белые пятна - при детальном рассмотрении понятно, что есть куски, которые совершенно непонятно, как делать, и как к ним подступиться.

2) Обзор литературы
Мне, как желающему выбраться из пузыря невежества, очень зашёл верхнеуровневый взгляд на некоторые области ML. Кому, как не ЛеКуну, писать такое.

3) Сама JEPA
Это рассуждение о том, каким подходом можно пробовать учить полезную модель мира, и как её можно будет использовать.
Я уже писал о чём-то похожем в постах про MuZero и NGU - когда у нас нет задачи генерировать данные, нам не стоит пытаться учить генеративную модель - у этого слишком много подводных камней. Альтернативой является обучение энкодеров, которые выбрасывают ненужную информацию, абстрагируются от неё, и уже с такими эмбеддингами мы что-нибудь дальше делаем. Никаких экспериментов тут нет.

Если будете читать, мой совет - выделите себе заранее пару часов, заварите чаёк и погружайтесь - статья большая и охватывает очень широко ML, но без суперсложных деталей, так что должно быть познавательно.

@knowledge_accumulator
👍14😁3🔥1🤣1
Как нейросеть может хранить картину мира?

Современные языковые модели не имеют явной памяти, их картина мира хранится в весах модели. На мой взгляд, это может быть причиной ошибок в работе с фактами, их выдумывание. Есть ли этому альтернатива?

В статье Tracking the World State with Recurrent Entity Networks [2016] предлагается следующая концепция:

1) Будем хранить N ячеек памяти с векторами "состояния" мира.
2) Модель при чтении текста будет обновлять в этих ячейках состояния, по пути пропуская сигнал через обучаемые "гейты", чтобы модифицировать только те ячейки, относящиеся к тексту.
3) При ответе на вопрос мы из этих ячеек читаем информацию, в зависимости от вопроса решая, из каких ячеек, и декодируем ответ.

Интересно, что с помощью манипуляций ключами у этих ячеек можно добиться, например, чтобы нейросеть поддерживала состояние какой-то желаемой сущности отдельно в конкретной ячейке.

Мне кажется интересным потенциальный гибрид языковых моделей и подобной "памяти", потому что это позволит получить интерпретируемую картину мира внутри модели. Но есть непонятные моменты:
1) Как нам обеспечить интерпретируемость концептов? Как добиться их "дискретизации" в нужном виде?
2) Как можно учить такую память на неразмеченном тексте, который содержит противоречащие друг другу утверждения?
3) Можно ли как-то встроить логический вывод в эту схему, чтобы поддерживать непротиворечивость памяти?

Буду рад вашим мыслям на этот счёт или ссылкам на статьи, которые могут быть о чём-то подобном.

@knowledge_accumulator
👍9🤔2🔥1🤯1
Tree Transformer [2019] - учим грамматику языка без размеченных данных.

Инженеры много думают о способах ограничения мощности трансформера, так как оригинальная схема Self-Attention считается избыточной и потому излишне затратной.

Продажа качества за скорость это хорошо, но ещё интересна продажа качества за интерпретируемость - это интересно и с точки зрения исследования, и с точки зрения приложений. Один из вариантов купить интерпретируемость предлагается в данной работе.

Авторы предлагают слой под названием Constituent Attention, который заставляет модель разбивать токены на группы, которые составляют иерархию и обеспечивают многоэтажное разбиение предложения на смысловые части.
Как это работает?
1) Слой выдаёт query и key (другие) для каждого токена.
2) Между каждой парой соседних токенов считается score на основе этих query и key.
3) Эти скоры нормируются (чтобы как раз ограничить модель от полного attention), и далее из них считается альтернативная матрица attention - например, между 3 и 5 токеном attention равен произведению скоров между 3 и 4 и между 4 и 5. Интуитивный смысл этих чисел - вероятности того, что 2 токена принадлежат к 1 группе.
4) Чтобы получилась иерархия, с каждым слоем трансформера мы добавляем эти скоры к предыдущим.
5) Этот альтернативный attention домножается поэлементно на обычный attention.

А причём тут грамматика?
Применяя эту модель к тексту и считая эти скоры принадлежности к одной группе, мы можем простой эвристикой получить дерево токенов, отражающее грамматическую структуру текста. Бэйзлайны в задаче парсинга грамматики алгоритм бьёт, но я в этом не специалист.

Может быть, у подобной идеи есть потенциал и в других сферах ML. Кто его знает?

@knowledge_accumulator
👍12