Для более качественного контента, пожалуйста, обратите внимание на паблик WeChat "AI Frontline" (ID: ai-front)
Сейчас не время для разработчиков готовиться к апокалипсису ИИ. Фактически, машинное обучение в конечном итоге станет частью набора инструментов программиста, а не заменой программиста-человека.
Тем не менее, в технологической отрасли многие из нас опасаются, что ИИ станет конфронтационной силой, готовой заменить разработчиков. Я провел поиск в Google по ключевому слову «будут инженеры-программисты», и результаты, выданные Google, показали, что я был не единственным, кто задавал этот вопрос.
Нет никаких сомнений в том, что все говорят об искусственном интеллекте, и Gartner поставил его на пик шумихи. По мере того, как искусственный интеллект и машинное обучение становятся все более распространенными, от разговоров о кулерах до вечерних новостей, люди все больше обеспокоены тем, что ИИ и машинное обучение будут означать для их будущего. Ситуация стала настолько серьезной, что 29% разработчиков боятся, что их заменит искусственный интеллект, и эта точка зрения больше всего беспокоит их карьеру.
Прежде чем мы приступим к решению этой ужасной проблемы, давайте обратимся к истории искусственного интеллекта и шумихе вокруг него.
Первый рев искусственного интеллекта прозвучал в 1950-х годах с компьютерами, которые могли играть в шашки. Ставки продолжают расти: компьютеры побеждают игроков-людей в шашки, шахматы, шахматы и, в конце концов, обыгрывают людей. Эта первая волна приложений ИИ показала, что компьютеры действительно могут побеждать людей в настольных играх с ограниченным количеством ходов и четкими результатами, используя простые правила.
Тем не менее, разработчикам тяжело сталкиваться с угрозами со стороны компьютеров, хорошо играющих в шахматы. Написание набора правил и шагов для принятия решения в каждой ситуации быстро создает ограничения в естественной среде. Потому что мало реальных сценариев так же просты, как шахматы.
В традиционном программировании код представляет собой серию основанных на правилах решений, вложенных во все более сложные условия. Это прекрасно работает в простых, предсказуемых ситуациях, но чем больше проект, тем более очевидны ограничения этого подхода.
Тестирование традиционного кода должно предвидеть все возможные сценарии, и этот процесс растет в геометрической прогрессии. Даже относительно простые программы требуют тщательного тестирования для поиска ошибок. Это создает проблему масштабируемости в коде; в определенный момент он становится слишком громоздким, чтобы продолжать добавлять код в исходную кодовую базу. Что касается рефакторинга или запуска с нуля, что является дорогостоящим и трудоемким вариантом, вы столкнетесь с теми же проблемами.
Хрупкость больших программ — еще одна серьезная проблема традиционного кодирования. Добавление строки кода ломает другие, казалось бы, несвязанные вещи. Трудно контролировать, насколько ограничивающими могут быть традиционные программы, не связанные с ИИ.
Вы не будете учить свою собаку, написав подробный набор инструкций для каждой возможной неожиданной ситуации. Вместо этого вы просто бросаете палку и, возможно, показываете собаке, как она достает палку, и повторяете это несколько раз. В течение нескольких минут ваша собака стала более или менее экспертом по поиску, и вы никогда не говорили ей, как это сделать. Добро пожаловать в мир машинного обучения!
Разница между нашими собачьими друзьями и суперкомпьютерами, использующими алгоритмы машинного обучения, заключается в том, что компьютеры используют огромные объемы данных без определенного набора правил. Компьютер использует эти обучающие данные для «обучения».
Подход к машинному обучению заключается в том, чтобы смотреть на данные и учиться, а не писать множество правил. Это устраняет проблемы масштабируемости и тестирования, связанные с программированием на основе правил.
Самым большим недостатком является то, что машинное обучение — это черный ящик. Даже инженеры, создающие алгоритмы машинного обучения, не знают, как машинное обучение принимает решения.
Изначально машинный перевод был разработан для программирования сложных правил естественного языка. Вдобавок к сложности лексическое богатство обычной речи требует десятков специализированных словарей. Даже если это сделано, присутствие незнакомого слова, будь то сленг, диалект или технический жаргон, делает предложение неразборчивым. В результате получается корявый, ненадежный перевод.
Переводчики на основе машинного обучения лучше угадывают значение новых слов и делают понятные переводы. На любом языке существуют миллионы веб-страниц с данными, которые можно использовать для обучения искусственного интеллекта Google Translate.
Давайте взглянем на фразу, которую легко разобрать, но сложно перевести на основе правил:
The Future of Work event organized by Brainware
online-translator.com переводит эту фразу на русский язык:
Будущее события Организовано Brainware
Гугл переводчик переводит так:
Событие Future of Work,организованное Brainware
Первый перевод был просто непонятен русским, но машинные переводы заставили россиян понять. Google Translate посчитал, что Future of Work — это название мероприятия, поэтому оно не было переведено и использовало правильный порядок слов на русском языке.
Поразительной особенностью нынешнего подъема искусственного интеллекта является то, что многие из алгоритмов, которые мы используем для машинного обучения, возникли в 1980-х и 1990-х годах. Для отрасли, стремящейся к новинкам, логика, лежащая в основе искусственного интеллекта, очень стара.
Машинное обучение освободилось от башни из слоновой кости благодаря трем факторам: хранение данных стало дешевле, количество доступных данных выросло в геометрической прогрессии, а вычислительная мощность компьютеров увеличилась.
Глядя на необработанные данные об автоматизации работы, не предвещаешь ничего хорошего, и я понимаю, почему мои коллеги нервничают. Веб-разработчики имеют хорошие шансы на автоматизацию, в то время как у специалистов по поддержке компьютеров вероятность автоматизации составляет 72%. Без какого-либо контекста эти цифры предвещают ненужный технологический апокалипсис.
Настоящее будущее искусственного интеллекта в инженерии — это использование технологий, которые позволяют инженерам-людям работать эффективнее, быстрее и с меньшим количеством ошибок. Поэтому вместо того, чтобы полностью заменить людей, ИИ превратит людей-разработчиков в более сильных программистов.
Каждый этап разработки программного обеспечения будет дополнен искусственным интеллектом. На этапе планирования проекты увидят возможности для лучшего анализа, выбора технологий и повторного использования кода из других проектов. Разработчики-люди смогут работать быстрее, поскольку ИИ генерирует много кода. Поскольку ИИ помогает инженерам по контролю качества, тестирование будет более комплексным и тщательным. Автоматизированное развертывание также менее подвержено ошибкам и работает быстрее, если в этом может помочь искусственный интеллект.
Просто посмотрите демо-видео Accenture myWizard, платформы с виртуальными агентами, которая использует машинное обучение для совместной работы с коллегами-людьми. По данным Harvard Business Review, руководители проектов ИИ реализуют проекты, помогая Accenture точно предсказывать тревожные сигналы в 80% случаев.
Не все эти мечты недостижимы. Сейчас DeepCode уже использует машинное обучение для анализа и очистки существующего кода. Это известно как Грамматика кода. Точно так же, как проверка орфографии и грамматики также зависит от корректоров и редакторов, искусственный интеллект помогает разработчикам.
Другие стартапы продвигают ИИ на шаг вперед. Например, Logojoy использует машинное обучение для создания логотипов и простых дизайнов. UIzard конвертирует нарисованные от руки дизайны в HTML и CSS.
Вернемся к первоначальному вопросу: будет ли автоматизирована разработка программного обеспечения. Ответ и да, и нет. Конечно, многие аспекты разработки будут автоматизированы. Но это не означает, что рабочие места будут потеряны.
Автоматизация снижает затраты компаний, разрабатывающих программное обеспечение. Это, в свою очередь, означает, что больше программного обеспечения может быть произведено за меньшее время. Спрос на программное обеспечение постоянно растет, и по мере снижения стоимости автоматизации возможности для создания бизнес-возможностей будут только увеличиваться.
Если вы инженер-программист, вам не нужно карабкаться в гору. В то время как область меняется, и наши рабочие процессы будут включать больше автоматизации в будущем, маловероятно, что разработчики полностью потеряют свои рабочие места в ближайшее время.
Вывод из этого состоит в том, что у нас нет оснований опасаться предстоящей замены. Вместо этого нам нужно сосредоточиться на тех человеческих навыках, которые вряд ли будут автоматизированы.
Традиционное программирование использует рационалистический подход, машинное обучение — это крайний эмпиризм. Нам, людям, необходимо изучать оба подхода и знать, какой из них лучше подходит для конкретной инженерной задачи.
В будущем каждому программисту потребуется более глубокое понимание алгоритмов и структур данных. Конечно, это только начало, но, скорее всего, мы увидим новый курс информатики, обучающий инженеров работать в тандеме с искусственным интеллектом.
Нетехнические навыки, которые нелегко автоматизировать, будут фактором, отличающим программистов. Знание предметной области и креативность будут еще важнее. Улучшение социальных навыков и эмоционального интеллекта также отличает инженеров.
Иногда даже AI бросает полотенце. Когда я попросил Siri рассказать мне анекдот, она была ошеломлена.
Поэтому мой совет разработчикам — продолжайте учиться. Отточите свои нетехнические навыки и будьте готовы к работе со структурами данных, машинным обучением и искусственным интеллектом в будущем.
Наконец, я хотел бы послать вам предложение, чтобы поделиться с вами:
Если вы не хотите учиться, никто не сможет вам помочь. Но если вы решите учиться, никто не сможет вас остановить.
Оригинальная английская ссылка:
https://hackernoon.com/is-computer-engineering-really-going-to-be-automated-e6111412432e