Connect with us

Разработка

Программное обеспечение 2.0

Руководитель отдела искусственного интеллекта в Tesla Андрей Карпатый рассказал, почему нейронные сети — это не просто новый вид программного обеспечения, а совершенно новый этап в развитии вычислительной техники.

Анна Гуляева

Опубликовано

/

     
     

Иногда люди называют нейронные сети просто “ещё одним инструментом в наборе машинного обучения”. У них есть плюсы и минусы, они могут работать здесь или там, и иногда вы можете использовать их в соревнованиях Kaggle. К сожалению, эта интерпретация упускает нечто большее. Нейронные сети — это не просто ещё один классификатор, они представляют  фундаментальный сдвиг в том, как мы создаем программы. Они — Программное Обеспечение 2.0.

“Классический стек” программного обеспечения 1.0 — это то, с чем мы уже давно знакомы, он написан на языках вроде Python, C++ и так далее. Он состоит из четких инструкций для компьютера, написанных программистами. С каждой строкой кода программист указывает определенную точку в программном поле с нужным поведением.

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

Что читать, смотреть и где учиться машинному обучению

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

ПО 2.0 не заменит ПО 1.0 (большое количество инфраструктуры 1.0 необходимо для обучения и “компиляции” кода 2.0), но оно будет выполнять большую часть задач, за которые сегодня отвечает ПО 1.0. Давайте рассмотрим некоторые примеры этого перехода:

Визуальное распознавание ранее состояло из запрограммированных функций с небольшим количеством машинного обучения (метод опорных векторов). С тех пор мы разработали платформы для создания более мощных программ анализа изображений (в семействе архитектур ConvNet – сверточных нейронных сетей), а в последнее время начали поиск по архитектурам.

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

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

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

Робототехника имеет давнюю традицию разбивать проблему на блоки восприятия, оценки поз, планирования, управления, моделирования неопределенности, используя явные, а не промежуточные представления и алгоритмы. Мы еще не совсем достигли это, но исследования в UC Berkeley и Google намекают на то, что ПО 2.0 может значительно улучшить работу всего этого кода.

Игры. Игровые программы существовали долгое время, но AlphaGo Zero (сверточная сеть, которая смотрит на состояние доски и делает ход) стала самым сильным игроком в игре. Я ожидаю, что мы увидим очень похожие результаты в других областях, например, в Dota 2 или StarCraft.

Искусственному интеллекту для игры в Го больше не нужны люди

Вы могли заметить, что множество ссылок включают работы Google. Это потому, что сейчас Google переписывает большую часть своей инфраструктуры на Код 2.0. Подход “Одна модель, чтобы править всеми” показывает, как это может выглядеть, когда статистические мощности отдельных областей объединены в одно непрерывное понимание мира.

Преимущества программного обеспечения 2.0

Почему мы предпочитаем переносить сложные программы в Software 2.0? Ясно, что простой ответ заключается в том, что они просто лучше работают. Тем не менее, есть много других причин, чтобы предпочесть этот стек. Давайте рассмотрим некоторые преимущества Software 2.0 (то есть, нейронных сетей) по сравнению с Software 1.0 (то есть, базой кода C++ на уровне продакшена). Программное обеспечение 2.0:

Гомогенно в вычислениях. Типичная нейронная сеть на первом уровне состоит только из двух операций: матричного умножения и приведения к нулю (ReLU). Сравните это с набором операций в классических программах, который является более разнородным и сложным. Поскольку вам нужно обеспечить реализацию Software 1.0 только для небольшого числа основных вычислительно простых элементов (например, умножения матрицы), то в этом случае гораздо проще гарантировать производительность.

Проще реализуется в оборудовании. Так как набор инструкций нейронной сети относительно мал, эти сети гораздо проще воплотить в оборудовании при помощи кастомных ASIC, нейроморфных чипов и так далее. Мир изменится, когда искусственный интеллект, требующий низкой производительности, распространиться вокруг нас. То есть когда небольшие недорогие чипы получат предварительно натренированные нейронные сети, получат речевое распознавание и синтез речи WaveNet – и все это встроится в небольшой протомозг, который вы можете подсоединить к чему угодно.

Постоянная производительность. Каждая итерация типичного прохода нейронной сети занимает одинаковое количество FLOPS. По сравнению с разными путями выполнения C++ кода, у нейронных сетей нулевая изменчивость в производительности. Разумеется, у вас могут быть динамические вычислительные графы, но поток выполнения, как правило, все еще значительно ограничен. Таким образом, мы также почти гарантированно никогда не оказываемся в бесконечных циклах.

Постоянное использование памяти. В ПО 2.0 отсутствует динамически распределенная память, поэтому утечки памяти, которые вы должны выискивать в своем коде, маловероятны.

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

Высокая гибкость. Если у вас есть код на C++, и кто-то хочет, чтобы вы сделали его в два раза быстрее (пусть даже в ущерб производительности, если это необходимо), было бы очень нетривиально настроить систему под новые спецификации. Однако для ПО 2.0 мы можем взять нашу сеть, удалить половину каналов, переквалифицировать — и она будет ​​работать ровно в два раза быстрее и немногим хуже. Это магия. И наоборот, если вам нужно получить больше данных или провести больше вычислений, вы можете сразу улучшить свою программу, добавив больше каналов и переквалификацировав ее.

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

Его легко изучить. Я люблю шутить, что глубокое обучение не так уж и глубоко. Это не ядерная физика, где вы должны получить PhD до того, как сделать что-то полезное. Основные концепции требуют знаний базовой линейной алгебры, вычислений, Python и некоторых лекций из курса CS231n. Конечно, некоторые интуитивные знания придут с опытом, поэтому точнее будет сказать, что к стеку ПО 2.0 легко подойти, но его непросто освоить.

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

Ограничения ПО 2.0

Стек 2.0 имеет и свои недостатки. По завершении оптимизации у нас есть большие сети, которые хорошо работают, но нам сложно сказать, как они это делают. Во многих случаях у нас есть выбор между моделью с 90% точностью, которую мы понимаем, и моделью с 99% точностью, которую мы не понимаем.

Стек 2.0 может допускать постыдные ошибки, воспринимая предрассудки в данных для обучения, которые очень сложно обнаружить в таких больших объемах.

Наконец, мы все ещё изучаем некоторые специфические свойства этих программ. Например, существование враждебных примеров и атак показывает неинтуитивную природу этого стека.

Финальные мысли

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

ПО 2.0 ждет яркое будущее, потому что очевидно, что когда мы создадим сильный искусственный интеллект, он будет полностью написан при помощи ПО 2.0.

А программное обеспечение 3.0? Он будет уже полностью зависеть от этого сильного искусственного интеллекта.

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Новости

Интересные материалы: 16.08

В дайджесте две статьи от Яндекса, музыка Super Nintendo и рассказ о бедах разработка сайтов для взрослых.

AppTractor

Опубликовано

/

Автор:

Весь день мы собираем лучшие материалы о разработке и маркетинге технологий, стартапов, мобильных приложений и игр для iOS и Android из самых разных источников:

Комментарии
Продолжить чтение

Разработка

Karma получает $12 млн на маркетплейс по продаже излишков продуктов

По данным Продовольственной и сельскохозяйственной организации Объединенных Наций, около трети еды, производимой каждый год – 1.3 миллиарда тонн – либо теряется, либо выкидывается. Это эквивалентно потере 1 триллиона долларов.

AppTractor

Опубликовано

/

Автор:

На этом фоне стартап Karma, маркетплейс, который хочет уменьшить потери еды, собрал 12 миллионов долларов в Серии А. В ней приняли участие шведская инвестиционная фирма Kinnevik, Bessemer Venture Partners, Electrolux, E.ventures и другие. Общие инвестиции в Karma достигли 18 миллионов долларов.

Пока Karma работает только в Швеции и Лондоне, но с получением новых денег планирует расширение на новые рынки –  сначала в Европе, а потом и в США.

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

Стартап был основан в Стокгольме в 2015 году, в ранние годы Karma предлагала другой сервис – это была скорее программа скидок, немного напоминающая Groupon. Но компания сделала пивот и изменила направление своей деятельности.

«Нам стало ясно, что разные предложения путают пользователей Karma, и мы решили сузиться до нескольких или даже одной категории», – рассказал VentureBeat генеральный директор Karma Хьялмар Стальберг Нордегрен. «Одной из наиболее популярных категорий в нашем раннем приложении была еда, и, рассмотрев то, что на самом деле продают, мы поняли, что на самом деле это излишки, которые владельцы ресторанов добавляли на нашу платформу».

Группа основателей обратилась к мировой проблеме пищевых отходов, и это стало началом Karma в ее нынешнем виде. Это еще один классический пример своего рода «случайной» эволюции стартапа на ранней стадии, основанной на действиях пользователей – посмотреть, как пользователи на самом деле используют платформу и развивать ее на основании этого.

Karma является частью мировой тенденции, когда компании строят бизнес вокруг концепции «сокращения отходов». В прошлом году лондонский Winnow получил 7.4 миллиона долларов на измерение пищевых отходов, Full Harvest из Сан-Франциско собрал 2 миллиона для продажи уродливых фруктов, а на прошлой неделе лондонская Unmade подняла 4 миллиона долларов на платформу для производства одежды по требованию, которая позволяет брендам производить только те предметы одежды, которые фактически продаются.

«Karma превращает выкидывание продуктов в продажи – в этом достаточно много смысла», – отметил Кент Беннетт из Bessemer Venture Partners. «Но помимо самих продуктов, мы полагаем, что связь между клиентами и их любимыми местными продавцами может иметь огромную долгосрочную ценность».

Сейчас у Karma более 1,500 заведений, таких как рестораны, гостиницы, продуктовые магазины, кафе и пекарни, которые продают свои избытки примерно 350,000 пользователям приложения. Это действительно беспроигрышная ситуация: розничные продавцы могут монетизировать продукты питания, которые в противном случае окажутся на свалке, в то время как потребители могут сэкономить большие деньги. И именно эта бизнес-модель может помочь платформе набрать обороты: чтобы сделать приложение более привлекательным для продавцов, оно действительно должно быть коммерчески выгодным, а не просить их делать пожертвования.

Комментарии
Продолжить чтение

Медиа

Podlodka #72: Профессиональное выгорание

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

AppTractor

Опубликовано

/

Автор:

Podlodka

С Александром Орловым из Стратоплана поговорили о выгорании как с биологической, так и с психологической точки зрения. А самое главное, разобрались, как из этого состояния выходить.

Тайминг:

  • 00:06:48 — Представление гостя
    
  • 00:08:12 — Выгорание студентов
    
  • 00:30:06 — Симптомы и гормоны
    
  • 00:33:24 — Восстановление и саббатикал
    
  • 00:41:21 — Проекция и эффект Барнума
    
  • 00:49:50 — Работа с психотерапевтом
    
  • 01:18:36 — История про общение с токсичным человеком
    
  • 01:21:13 — Стивен Кови про роли и миссии в жизни
    
  • 01:27:34 — Что если ваши сотрудники выгорают?
    
  • 01:53:53 — Александр сам подводит черту :)
    
    
    
Комментарии
Продолжить чтение

Новости

Интересные материалы: 15.08

У нас Swift и Auto Layout, обучение Unreal Engine и аналитика.

AppTractor

Опубликовано

/

Автор:

Весь день мы собираем лучшие материалы о разработке и маркетинге технологий, стартапов, мобильных приложений и игр для iOS и Android из самых разных источников:

Комментарии
Продолжить чтение

Реклама

Наша рассылка

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.