![](https://habrastorage.org/getpro/geektimes/post_images/8ad/0c7/8b0/8ad0c78b0c6dc60e5063f2755954b0bc.png)
Оказалось, что можем. Google сделала это — и открыла Tensor2Tensor для всеобщего пользования, код опубликован на GitHub.
Вопрос создания многозадачных моделей был предметом многих научных работ и поднимался в литературе по глубинному обучению. Модели обработки естественного языка давным-давно показали повышение качества с использованием многозадачного подхода, а недавно модели машинного перевода и вовсе показали обучаемость без подготовки (zero-shot learning, когда задача решается без предоставления материалов для обучения решению этой задачи) при обучении одновременно на множестве языков. Распознавание речи тоже увеличило качество при обучении в таком многозадачном режиме, как и некоторые задачи в области машинного зрения, вроде распознавания вида лица. Но во всех случаях все эти модели обучались на задачах из того же домена: задачи по переводу — на других задачах по переводу (пусть и с других языков), задачи по машинному зрению — на других задачах по машинному зрению, задачи по обработке речи — на других задачах по обработке речи. Но не было предложено ни одной по-настоящему многозадачной мультимодельной модели.
Специалистам из Google удалось разработать такую. В научной статье они описывают архитектуру MultiModel — единой универсальной модели глубинного обучения, которая может одновременно обучаться задачам из разных доменов.
![](https://habrastorage.org/web/6f8/0e6/477/6f80e6477f554325ad14b6134cba48f9.png)
Архитектура MultiModel
В частности, исследователи для проверки обучали MultiModel одновременно на восьми наборах данных:
- Корпус распознавания речи WSJ
- База изображений ImageNet
- База обычных объектов в контексте COCO
- База парсинга WSJ
- Корпус перевода с английского на немецкий язык
- Обратное предыдущему: корпус перевода с немецкого на английский язык
- Корпус перевода с английского на французский язык
- Обратное предыдущему: корпус перевода с французского на английский язык
Модель успешно обучилась всем перечисленным задачам и показала неплохое качество работы: не выдающееся на данный момент, но выше, чем у многих специфических нейросетей, спроектированных под одну задачу.
![](https://habrastorage.org/web/1d5/f7f/b9a/1d5f7fb9ad6a495c9db8601d0eba4d4d.png)
На иллюстрации показаны некоторые примеры работы модели. Очевидно, что она умеет описывать текстом, что изображено на фотографии, проводить категоризацию объектов и осуществлять перевод.
Учёные подчёркивают, что это только первый шаг в данном направлении, но при этом обращают внимание на две ключевых инновации, которые сделали возможным создание такой модели в принципе и что они считают своим главным достижением:
- Маленькие подсети с ограниченной модальностью, которые превращаются в унифицированное представление и обратно. Для того, чтобы мультимодальная универсальная модель могла обучаться на входных данных разных форматов — тексте, звук, изображения, видео и т. д. — все они должны быть переведены в общее универсальное пространство представлений переменного размера.
- Вычислительные блоки различных видов критически важны для получения хороших результатов на различных проблемах. Например, блок Sparsely-Gated Mixture-of-Experts вставили для задач обработки естественного языка, но он не мешал производительности и на других задачах. Точно так же обстоит и с другими вычислительными блоками.
![](https://habrastorage.org/web/9cf/26e/676/9cf26e67620d4ce98759cf6b1afb7763.png)
Более детальная архитектура MultiModel показана на иллюстрации выше.
MultiModel обучается сразу на многих данных и многих задачах. Эксперименты показали, что такой подход даёт огромное преимущество по улучшению качества работы на задачах с небольшим количеством данных. В то же время на задачах с большим количеством данных ухудшение наблюдается лишь незначительное, если вообще наблюдается.
Научная работа опубликована на сайте препринтов arXiv.org (arXiv:1706.05137).
Поделиться с друзьями
Комментарии (6)
San_tit
21.06.2017 07:49+1Тут вопрос стоит скорее не в том, чтобы создать модель, способную аппроксимировать множество функций, а в том, чтобы обучить эту модель.
Нейронная сеть по определению идеальный аппроксиматор, так что вопрос тут стоит в размере сети и сложности обучения.
Причем, я подозреваю, что как и в случае с базисными функциями (вейвлет преобразования) размер сети при правильном подборе архитектуры (в т.ч. функций) будет значительно меньше универсальной.
jobkp
22.06.2017 06:35А как это поставить, какая платформа?
fireSparrow
22.06.2017 09:36+1Пока оно нагугливается в основном в виде библиотеки для питона:
https://github.com/tensorflow/tensor2tensor
Судя по ридми, ставится стандартно через пип:
pip install tensor2tensor
daiver19
Вот это звучит реально круто, если конечно размер сети не растет экспоненциально с количеством задач.
luckeri
Скорее всего будет(