Интервью
TensorFlow: помочь в освоении космоса, установить первый контакт с новыми цивилизациями, победить кеттов
TensorFlow — библиотека машинного обучения, созданная и поддерживаемая компанией Google. В конце 2016 были открыты ее исходные коды, а в феврале вышла версия 1.0. Мы попросили представителей компании рассказать о том, что такое TensorFlow, как с ним работать, какие задачи с его помощью можно решать. Все это в нашем интервью.
TensorFlow — библиотека машинного обучения, созданная и поддерживаемая компанией Google. В конце 2016 были открыты ее исходные коды, а в феврале вышла версия 1.0. Мы попросили представителей компании рассказать о том, что такое TensorFlow, как с ним работать, какие задачи с его помощью можно решать. Все это в нашем интервью.
Что такое TensorFlow сейчас?
Наталия Ефимцева, Google: Machine Learning (ML) — это про нахождение паттернов в данных. Человек по этому же принципу выполняет множество задач. В том числе, как я понимаю, обучается в детстве. Наш мозг получает информацию, обрабатывает, накапливает, отсеивает ненужное (или, по его мнению, ненужное :)), “повторяет” (в соответствии с созданным паттерном) и привносит что-то новое (в идеале)!.
А TensorFlow — это, по сути, инструмент, который позволяет реализовать или упростить реализацию ML для вашей системы или задачи. Например, чтобы сложить два числа никому же уже не требуется записывать числа в регистр, вызывать операции сложения и считывать результат из другого регистра. Возможно, что пока TF не настолько упрощается задачи ML, но смысл именно в этом — упрощении, масштабировании и применимости практически на любой платформе.
Если несколько более формально, то TF — это Deep Learning (DL), движок с открытым исходным кодом, а DL — это область ML, которая использует концепцию функционирования (или того, как мы это сейчас понимаем) нейронных связей человеческого мозга для решения различных проблем, таких как распознавание образов и речи, т.е. таких задач, которые трудно решить с помощью просто вычислительных мощностей компьютера.
В отличие от обычных привычных нам функций и сервисов, нейронная сеть может не просто на выходе предоставлять результат по заранее определенным правилам, а сама обучается (принцип основан на том, как и наш мозг ведет себя), т.е. сеть сама для себя определяет правила (веса и смещение) и выдает результат.
Интересный пример — распознавание в Великобритании автомобильных номеров на фотографиях — тут как раз применяется TensorFlow. Автор решения и статьи указывает в выводах на интересную особенность: для обучения использовались автоматически генерируемые изображения (с фоном, с цифрами на номерах, шумами и т.п.). Так как для генерации номера применяется один и тот же шрифт, то система испытывала трудности с распознанием буквы R, написанной другим шрифтом. Так что, пока некоторые нейронные сети не такие “умные” как мы с вами :).
К сказанному выше добавлю, что TF — это система машинного обучения, которая может работать как на локальном компьютере, в облаке, так и на смартфоне или даже, например, Rasberry Pi-платах. И в этом, как мне кажется, ее большое преимущество – универсальность и некоторая простота (в определенном смысле). Уверена, что в скором времени на TF будут появляться более высокоуровневые решения, но для тех, кто хочется разобраться именно в TF. Рекомендую следующую статью: “TensorFlow: широкомасштабное машинное обучение на гетерогенных распределенных системах”.
Джош Гордон, ведущий эксперт по TensorFlow в Google: Прошло уже больше года с тех пор, как мы опубликовали TensorFlow в Open Source, и очень приятно видеть принятие платформы сообществом и быстрое ее развитие как здесь, в Google, так и в компаниях по всему свету. TensorFlow — это главный инструмент, который мы используем для машинного обучения во всех наших продуктах. Вот некоторые примеры:
- Полностью новая система перевода, основанная на глубокой нейронной сети.
- Инструмент, позволяющий врачам диагностировать заболевания глаз.
- Приложение, создающее картины и музыку.
- Австралийские морские биологи используют TensorFlow для поиска морских коров на десятках тысяч фотографий.
- Японский производитель огурцов натренировал TensorFlow на сортировку овощей.
- Радиологи используют TensorFlow для определения признаков болезни Паркинсона на медицинских сканах.
- Стэнфордские докторанты с помощью TensorFlow обнаруживают рак кожи.
- Научные сотрудники из Залива используют TensorFlow и Raspberry Pi для отслеживания поездов Caltrain.
С выпуском TensorFlow версии 1.0, платформа стала:
- Быстрой. TensorFlow 1,0 невероятно быстрая! XLA закладывает основу для еще большего повышения производительности в будущем, а на tensorflow.org уже есть советы и рекомендации по достижению максимальной скорости для ваших моделей .
- Готовой к использованию. TensorFlow работает почти везде, включая Android, iOS, Raspberry PI, ноутбуки, десктопы и масштабируемые дата-центры Google. Кроме открытия самого TensorFlow, Google также открыл инструменты для обслуживания моделей в продакшене.
- Очень гибкой. В TensorFlow 1.0 появились высокоуровневые API, с tf.layers, tf.metrics и tf.losses-модулями. Мы также анонсировали включение новых tf.keras-модулей, которые обеспечивают полную совместимость с Keras – еще одной популярной высокоуровневой библиотекой для работы нейронных сетей.
Вы можете узнать больше обо всем этом на наших ресурсах:
Какие технологии лежат в основе TensorFlow?
Наталия Ефимцева: Наверное, ответ на этот вопрос заслуживает отдельной статьи или даже книги. Поэтому интересующихся отсылаю к статье в блоге “Понимание нейронных сетей с помощью игровой площадки TensorFlow” (явный плюс в том, что изложение структурировано и с картинками :)).
Мне помогла разобраться в этих вопросах и вспомнить университетский курс по нейронным сетям и искусственному интеллекту статья “Использование нейронных сетей для распознавания рукописных цифр”. Большое спасибо Андрею Юрьевичу Филипповичу — это наш преподаватель в МГТУ им. Баумана, который этот курс разработал и преподавал. После института долгое время просто вспоминалось, что это был один из наиболее интересных курсов, но применять полученные знания на практике не приходилось. Но вот не прошло и 10 лет, и теперь такие знания стали не только актуальными, но и применяемыми достаточно просто, благодаря и TensorFlow в том числе.
Советую посмотреть именно эти статьи, так как они позволят вам понять предметную область более точно и структурировано.
Какие проблемы может решить библиотека?
Джош Гордон: Используя TensorFlow, разработчики могут воспользоваться теми же инструментами, которые Google использует для большинства своих исследований и задач Deep Learning. Это означает, что разработчики, ученые и компании могут сразу перейти к решению проблем, которые важны для них, а не затрачивать много лет на создание инструментов для этого.
Наталия Ефимцева: Здесь все просто: можно самостоятельно писать систему, оптимизировать ее; когда все вопросы, связанные с машинным обучением, будут решены, решать вопросы по масштабированию (в том числе по достижению максимального параллелизма выполнения задач) или — воспользоваться TensorFlow.
На мой взгляд, очень существенным плюсом является то, что TF может быть развернута как локально, так и может быть перенесена в облако (когда потребуются дополнительные мощности и уже будет не пилотная фаза). Кроме того, библиотека может работать на смартфоне или подобных устройствах. Один из наиболее нашумевших примеров — это сортировка огурцов с помощью TF и Rasberry Pi.
Где TF использует Google?
Джош Гордон: Кроме исследований в Google Brain, TensorFlow лежит в основе множества работающих сервисов и продуктов, включая и те, которые имеют уже миллионы пользователей. Вот несколько примеров:
- Google Translate: мы развернули полностью новую систему перевода, основанную на глубоких нейронных сетях.
- Умные ответы в Gmail. Модель TensorFlow может предсказывать ответ для сообщения, которое вы только что получили.
- Используется как инструмент, помогающий докторам диагностировать заболевания глаз.
Наталия Ефимцева: TF применяется во многих продуктах Google. Как уже сказал мой коллега, TF используется, например, в Google Cloud Speech, в Google Photos и т.п. Например, есть такой сервис Google Cloud Translation. Недавно была анонсирована Premium-редакция сервиса, качество которого приблизилось к профессиональному переводу.
Этот новый сервис построен на основе TF и Tensor Processing Unit (TPU). Для тех, кого интересуют подробности, все доступно по ссылке выше. А я лишь приведу иллюстрацию, которая демонстрирует достигнутое качество перевода:
Вообще, ML применяется сейчас для многих задач. Например, есть кейс применения ML для сокращения расходов на потребляемую в дата-центре электроэнергию (он интереснее и нагляднее, так как с фотографиями мы все имеем дело, а вот экономией энергии в масштабе дата-центров занимаются не все). Подробнее в статье “DeepMind AI уменьшил стоимость охлаждения Google Data Center на 40%”.
Другой интересный пример — за счет использования алгоритмов машинного обучения прямо на устройстве вы можете улучшить качество изображения — подробно это описано в статье “Google использует машинное обучение для уменьшения данных, необходимых для получения изображений с высоким разрешением”. Это пример нового подхода к работе с изображениями (или с информацией вообще). Важно, что это не алгоритм или кодирование, которое позволяет по четким правилам вернуть биты и байты и получить изображение лучшего качества, а процесс прогнозирования (и восстановления) того, каким изображение могло бы быть в высоком качестве (и работает он очень неплохо).
Еще один любопытный пример применения TF — это синтаксический анализ предложений (вспоминаем уроки русского языка в начальной школе). Подробнее в статье “Анонс SyntaxNet: самый точный синтаксический анализатор в мире переходит в Open Source”. Наглядная демонстрация работы — ниже на картинке (кстати, опять вспоминается курс в университете по семантике языка):
Ну и конечно, TF используется в сервисе Google Cloud Machine Learning.
Где еще можно посмотреть работу TF?
Наталия Ефимцева: Отличный пример мы уже упоминали — это сортировка огурцов. Кстати говоря, первый пример, с которого я начала изучение ML и TF — “Tensorflow Chessbot — Распознавание шахматных фигур из изображений путем обучения однослойного классификатора”. Для человека, знакомого с шахматами (да и практически не знакомого с ними), задача является простой (как и с распознаванием написания буквы R).Здесь наглядно демонстрируется как раз распознавание и паттерны, применяемые как нашим мозгом, так и нейронной сетью. Про то, как это делает разработанный код, лучше внимательно почитать на GitHub, а здесь замечу, что наш мозг все-таки использует еще и дополнительные знания — правила игры, чтобы “быстрее” понять, что же это за фигура.
Ученые проводили эксперимент — в нем участвовала гроссмейстер Сьюзан Полгар. За несколько секунд она должна была запомнить позицию на доске и восстановить ее потом по памяти. Сьюзан без проблем справлялась с этим в том случае, когда расстановки соответствовали шахматным правилам (усвоенным ее мозгом годами). Если же позиция была произвольной (например, пешки на 1-ой или 8-ой горизонталях или короли рядом друг с другом) и не все соответствовало правилам шахмат, то восстановить позицию без ошибок у нее не получалось.
Как раз здесь ученые и говорят о паттернах, с помощью которых наш мозг сначала распознает позицию, а потом заносит в память, далее анализирует и выдает решение. Ведь запоминание идет не “на A1 такая-то фигура, на A2 такая-то” (как известно, в среднем у человека всего 8 “блоков” кратковременной памяти, а на доске 64 клетки), а более общими позициями (паттернами). Например, здесь у черных рокировка, а у белых здесь домик — вот уже 1/8 доски и запомнили.
Также и с ML — формируются паттерны, коэффициенты важности того или иного параметра (которые потом могут меняться) и выдается результат. Если вернуться к шахматам, то, насколько я знаю, текущие шахматные программы построены по более простым алгоритмам, которые учитывают некоторые правила, а далее выигрывают за счет вычислительных способностей (поэтому люди с такими программами уже не играют, а вот программы сами с собой поиграть могут, кстати, даже есть чемпионаты и программы-чемпионы). Но вот недавний эксперимент от команды Google DeepMind показал, что теперь может быть и другой подход, основанный на ML и обучении — это программа AlphaGo. Здесь как раз смысл не в переборе вариантов (а в Го их очень много), а в “разумном” осмыслении игры и позиции и принятии решения на основе опыта (паттернов) и стиля игрока.
Здесь рекомендую посмотреть просто интересное видео:
Кстати, в связи с этим (формирование паттернов внутри и просто выдача итогового результата) для ML есть еще более интересный вопрос — понять процесс, как же было принято решение и на основании чего. Встречались очень курьезные варианты принятия решения, хотя итоговый результат выдавался правильный.
Вот такой пример описан в статье “Первый клик: Глубокое обучение – это создание компьютерных систем, которые мы не полностью понимаем”. Исследователи провели эксперимент: задали людям и программе вопрос, например: какого цвета обувь на этой фотографии? Предполагалось, что и человек, и машина сразу обратят внимание на нижнюю часть изображения (измерения выполнялись с помощью heat map). Но для программы это предположение оказалось не верным!
Или другой вопрос: что закрывает окно на этой фотографии? Человек сразу смотрит на окно и быстро находит ответ. Программа же сначала выделяла кровать (так как это была фотография спальни). Одно из предложенных в данном случае объяснений заключается в том, что пока программа не способна понять внешний мир (факты) и суть происходящего, а полагается на выявленные паттерны в наборе исходных данных (и ясно, что в фотографии спальни при таком подходе кровать является одним из основных объектов, правда, для заданного вопроса это второстепенно, но пока программа этого не понимает).
Еще один из ярких примеров — “индексирование” видео, то есть понимание того, что происходит в течение всего видеофрагмента. В Google Cloud Platform, кстати, такой сервис тоже появился — это сервис Cloud Video Intelligence (и уже не требуется строить ML или TF-модели и модули — это к тому, о чем говорилось выше).
Таким образом, ML и TF могут применяться для множества задач, которые нам кажутся простыми, но рутинными (или сложно выполнимыми в силу большого объема данных, которые нужно обработать), но для системы, снабженной ML, они становятся посильными и простыми (если добиться принятия решения, то есть хорошей производительности. Ведь, например, если ML-программа будет на 99% точно распознавать номер, но затрачивать на это секунды (и здесь речь даже о 1+ секунде), то ее применимость для многих задач уже ставится под вопрос, особенно для работ с текущим трафиком).
Что нужно знать разработчику для работы с TF?
Джош Гордон: Поможет знание машинного обучения. Чтобы узнать больше о TensorFlow, вы можете посмотреть руководства на www.tensorflow.org. Если вам нравятся практические работы с кодом, то я рекомендую TensorFlow для Поэтов — это простой способ начать распознавать изображения. Если вам больше нравятся курсы, то рекомендую новый курс от Стэнфорда: CS 20SI: Tensorflow for Deep Learning Research.
Наталия Ефимцева: Желательно знать матчасть =) Или хотя бы вспомнить или получить начальные знания по нейронным сетям, теории вероятности, математическому анализу. Но не все так страшно на практике, так как именно универсальность и быстрота обучения и проверки гипотезы (или пилотирования модели) позволяют построить систему на основе TF без глубоких фундаментальных знаний (но замечу, что понимание общих принципов, конечно, никто не отменял – именно усвоенные ранее правила, понятия и паттерны позволяют пойти дальше и во всем разобраться). Ожидаю, что в скором времени появится множество высокоуровневых и готовых сервисов на основе ML и TF, которые уже можно будет просто использовать и получать от них результаты и пользу в своей программе. Сейчас такие сервисы уже появляются. Как от Google — это Google Cloud Speech API, Google Cloud Vision API и т.п. — так и от других вендоров. Поэтому все частично идет и к упрощению, и универсализации, что в итоге расширит охват и сферу применения TensorFlow, а также качество моделей.
Кроме того, сейчас уже имеется достаточно нейронных сетей, которые можно использовать для решения своих задач, без модификаций или с небольшими модификациями (или другой обучающей выборкой). Возможно, это один из наиболее популярных способов использования ML среди широкого круга разработчиков.
Это масштабируемая платформа?
Джош Гордон: Да, open source TensorFlow поддерживает работу множества компьютеров и GPU.
Наталия Ефимцева: Да, изначально именно этот аспект был одним из важнейших. TF уже прошел испытание объемом и временем.
Готов ли TensorFlow 1.0 к “промышленному” применению?
Джош Гордон: Абсолютно. TensorFlow — это главный инструмент, который мы используем для задач машинного обучения во всех наших продуктах. С версией 1.0 он сейчас готов к развертыванию как никогда..
Можно ли вносить свой вклад в TensorFlow, как в Open Source проект?
Джош Гордон: Да, конечно! Люди сделали уже более 6000 Open Source-репозиториев, а сотни контрибьютят в проект напрямую.
Как будет развиваться проект после версии 1.0?
Джош Гордон: После выпуска версии 1.0 мы начали работу над высокоуровневыми API, включая новый tf.keras-модуль, который обеспечивает полную совместимость с Keras.
Наталия Ефимцева: Уверена, что у ML и TF большое будущее. Стоит сказать, что TF не только применяется внутри Google и прошел серьезную проверку на множестве данных и выдаваемых результатах, но, например, в дата-центрах Google Cloud Platform применяются специальные модули, которые специально оптимизированы под TF (это значит — еще выше, быстрее, сильнее). Это Tensor Processing Unit (TPU). Как GPU оптимизирован (архитектурно) для работы с графикой, так и TPU специально создан для работы с ML-задачами (кстати, для этого GPU сейчас стали применять иногда активнее, чем CPU, так как их архитектура такова, что можно параллельно выполнять множество независимых вычислений в отличие от CPU, а для ML это как раз и требуется).
TPU использовался для вычислений уже упомянутой ранее программы AlphaGo.
Что еще могут ML и TF, и как они будут развиваться? Наверное, они смогут помочь в освоении космоса, установить первый контакт с новыми цивилизациями, победить кеттов… ой, это, кажется, к ML не имеет пока отношения. Хотя кто знает :) Но в свете недавних новостей от Илона Маска о создании новой компании Neuralink, которая займется разработкой технологий, позволяющих соединить человеческий мозг и компьютер, уже не знаю — где игра (и модуль СЭМ или синергия человека и машины, как в финале Mass Effect 3), а где реальность.
Спасибо за интересное интервью и TF!