СМ. ТАКЖЕ (1)

Карпатый Андрей (Andrej Karpathy)

Биография

Андрей Карпатый родился в 1986 году в Словакии. С 2017 года - директор по разработке технологий компьютерного зрения и искусственного интеллекта в Tesla.

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

В 2017 году Андрей Карпатый, в прошлом ученый-исследователь в Стэнфордском университете, вступил на должность руководителя направления ИИ в компании Tesla, ответственного за разработку ПО для компьютерного зрения и автовождения. Стремительному карьерному скачку далекого от индустрии академического ученого, фаната скоростной сборки кубика Рубика предшествовала вызванная рядом автомобильных инцидентов отставка прежнего руководства этого направления в полном составе.

Через пару месяцев Карпатый опубликовал довольно неожиданный пост, озаглавленный «Software 2.0»[1]. Позже в 2018 году он прокомментировал его в получасовом выступлении [2] на конференции Train AI 2018 (Сан-Франциско, май 2018).

В своем посте он заявил, что нынешняя парадигма программирования, которую после появления Software 2.0 приходится называть Software 1.0, сохраняется неизменной 70 лет, несмотря на возникновение за прошедшие годы колоссального количества аппаратных и программных новых технологий. Суть ее в том, что строго детерминированное решение сначала описывается человеком на языке программирования, затем оно компилируется (реже интерпретируется) в машинных кодах и выполняется.

Действующая парадигма возникла вместе с фон-неймановской архитектурой, в основу которой заложено хранение данных и программ в одной общей памяти. Она прекрасно соответствует расчетным задачам, для которых, собственно говоря, и была создана, а также для иных работ с точными данными. Потребность в альтернативе не возникала до тех пор, пока компьютинг не соприкасался со сложностями окружающего мира. В подавляющем большинстве случаев сведения из реальной жизни размыты, поэтому и большие точности измерения и последующего решения не требуются. Но «сенсорная революция» и возникшая позже проблема больших данных заметно изменили обстоятельства.

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

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

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

Карпатый предлагает полностью передать формирование кодов машине, а за человеком закрепить управление человеко-машинным процессом разработки. Целью Software 2.0 служит создание модели, которая сама может породить коды, она обучается тому, какие коды в соответствие с заданными правилами должны быть созданы для получения тех или иных результатов. С точки зрения программиста при разработке в рамках Software 2.0 процессы написания текста и отладка программы деятельности уступают свое место работе с данными и итерационному процессу обучению модели, основанной на нейронных сетях.

Для такого подхода можно использовать известную аббревиатуру AI (Artificial Intelligence), но расшифровать ее как Augmented Intelligence, понимая под этим способность машины служить интеллектуальным помощником человеку. Важнейшим компонентом такого AI-подхода является итерационный режим работы с перманентным тестированием, то, что называют test-driven. Человек пишет задание и критерии его оценки, а машина ищет способ решения и предъявляет результат. В этом процессе разработчик освобождается от рутинной деятельности и получает возможность сосредоточиться на сути решаемой задачи. То есть, он должен быть квалифицированным специалистом в прикладной области.

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

Подробнее о Software 2.0 здесь.