Передача сообщений по нейросети | OTUS
👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Разработчик игр на Unity
-40%
Vue.js разработчик
-40%
React.js разработчик
-40%
Архитектор программного обеспечения
-40%
Архитектура и шаблоны проектирования
-40%
Разработчик C++
-40%
Разработчик Node.js
-40%
Scala-разработчик
-30%
Backend-разработка на Kotlin
-30%
Программист 1С
-30%
Symfony Framework
-30%
Разработчик на Spring Framework Разработчик Golang C# ASP.NET Core разработчик iOS-разработчик. Базовый курс 2.0 VOIP инженер Базы данных AWS для разработчиков Cloud Solution Architecture Agile Project Manager в IT Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Передача сообщений по нейросети

ML_Deep_20.06_1_Site.png

В предыдущем посте я рассказал о том, как делать свёртки на графах. Одним из ключевых моментов было понятие сообщения, которое задавалось как: Снимок экрана 2018-06-20 в 13.11.38.pngИз-за того, что внутри вектора сообщения происходит независимое суммирование состояний соседних вершин и состояний рёбер, итоговая модель не может учитывать корреляции между вершинами и её рёбрами. Фактически нам бы хотелось, чтобы каждая соседняя вершина независимо от других передавала своё сообщение на очередном шаге. 1.png В статье 2017 года Neural Message Passing for Quantum Chemistry от команды Google Brain было предложено обобщение свёртков на графах под названием Message Passing Neural Networks (MPNN). Сообщение получаемой вершиной предлагалось вычислять по следующей формуле: Снимок экрана 2018-06-20 в 13.12.45.pngСуммирование снова происходит по всем соседним с «v» вершинам, «Mt» — функция сообщения, зависящая не только от состояния соседней вершины и ребра до текущей, но и от состояния текущей вершины.

Эта функция может быть произвольной дифференцируемой функцией с обучаемыми параметрами, например, нейронной сетью. К тому же, нетрудно заметить, что в случае Снимок экрана 2018-06-20 в 13.12.58.pngмы получаем сообщение аналогичное предыдущему. Точно так же как и в предыдущем посте мы задаём функцию обновления состояния вершины: Снимок экрана 2018-06-20 в 13.12.52.pngКоторая тоже может быть представлена нейросетью. И в конце концов мы хотим получить итоговый вектор с помощью ещё одной функции R: Снимок экрана 2018-06-20 в 13.13.07.pngВ этот раз к выходной функции есть дополнительное требование — она должна быть инвариантна к порядку вершин, то есть, по сути, она должна принимать на вход множество вершин, а не их список. Благодаря этому требованию весь алгоритм MPNN оказывается инвариантным к графовому изоморфизму, поскольку каждая из функций M, U и R является таковой.

Стоит добавить, что хотя работа команды из Google Brain была не первой в этом направлении, они смогли обобщить большое количество работ предшественников и при этом показали потрясающие результаты в решаемой задаче. В частности, они обучили свою модель решать задачу предсказания квантовохимических свойств молекул и сравнили скорость с классическими методами квантового моделирования, получив в результате увеличение скорости на 5 порядков! И это при лучшей точности по сравнению с другими публикациями в этой области.

Остались вопросы? Напишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться