Nov 11, 2015

TensorFlow - библиотека машинного обучения от Google

Disclaimer:
Подробное описание библиотеки содержится в статье [3], ниже представлен краткий обзор.
Updates:
1) Опубликовано несколько бенчмарков на Hacker News, пока что не в пользу TensorFlow: [1][2]
2) Комментарии от Яна Лекуна: [3], [4], [5] - вопрос к Jeff Dean на симпозиуме BayLearn
3) Опубликованы примеры работы с TensorFlow: github.com/nlintz/TensorFlow-Tutorials
4) Обсуждение возможных причин плохих результатов бенчмарков: reddit.com/r/MachineLearning/
Google опубликовало библиотеку машинного обучения TensorFlow [6], [7]. TensorFlow - система второго поколения. Её предшественник - библиотека DistBelief была успешеным проектом, но имела существенные недостатки. Она была узко-специализирована в основном на нейронных сетях, была трудно конфигурируема, была тесно связана с инфраструктурой Google, что делало трудным сделать её общедоступной.

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


В Google TensorFlow используется в системах распознавания речи, для фильтрации спама в почте gmail, в системах  поиска, для распознавания изображение в google photos.

Особенности
- Широкая поддержка Deep Learning
- Система легко расширяема и масштабируема (extensible and scalable). Однажды выраженные в виде графа вычисления могут быть легко перенесены как на портативные девайсы (телефоны, tablets), так и на мощные распределенные системы.
- Система поддерживает автоматическое вычисление градиентов для заданных пользователем cost functions (automatic differentiation)

Основные идеи
- Вычисления представлены в виде ориентированного графа (directed graph)
- Граф строится с помощью Python или C++ API
- Вычислительные операции представлены нодами (узлами) графа
- Ноды пересылают друг другу результаты вычислений в виде тензоров, представляющих собой  многоразмерные типизированные мартицы ("arbitrary dimensionality arrays where the underlying element type is specified or inferred at graph-construction time" [3])

Пример построения графа может быть найден в статье [3]. Скриншот (нажмите мышкой чтобы увеличить картинку):

Open source аналоги  TensorFlow - библиотеки mxnetTorchTheano.

Ссылки:

[1] Блог Google: TensorFlow - Google’s latest machine learning system, open sourced for everyone
[2] Репозиторий на GitHub: https://github.com/tensorflow/tensorflow
[3] TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems
[4] Статья на habrahabr
[5] Видео: Jeff Dean explains TensorFlow
[6] Обсуждение в [julia-users] mailing list: link
[7] Обсуждение на Hacker News
[8] "TensorFlow Disappoints – Google Deep Learning falls shallow" by Matthew Mayo

No comments:

Post a Comment