Найти в Дзене
Hello World! Technologies

Как искусственный интеллект может остановить прогресс?

И почему программистам и математикам не стоит бояться невостребованности.

На нашем канале мы уже обсуждали, почему искусственному интеллекту не по силам оставить человечество без работы, автоматизировав все процессы и «высвободив» все рабочие места.

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

Тут что-то не так. Давайте разберемся, что именно.

Ответы снова кроются в истории, но на этот раз именно программирования. В 60-х года ХХ века Чарльз Хоар опубликовал свою звездную работу «Аксиоматический базис языков программирования». В ней он ввел формальную систему аксиом для языков программирования, то есть, описал подход, который сейчас называется «логика программирования» или «исчисления программирования». В его работе речь идет о том, как можно формализовать доказательства корректности компьютерных программ.

За «логику программирования» Хоар получил множество премий и наград и стал одним из уважаемых специалистов в отрасли, в 70-х годах было «модно» развивать эту систему аксиом для введения новых конструкций языков.

Но, как и в случае с Гильбертовой программой, формализация опять не удалась. В 80-х вышла статья под названием «Критика логики Хоара», из которой читатели узнали, что система аксиом работает хорошо только до тех пор, пока речь идет о примитивных конструкциях – циклах, ветвлениях и пр. Когда в поле зрения попадают процедуры, функции, то, как правило, эта система аксиом становится противоречивой.

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

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

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

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

Почему?

Самое слабое место современных ИИ – это рефлексия. А точнее, отсутствие рефлексии, то есть, невозможность оценивать результаты собственной работы. Для всех алгоритмов сейчас оценкой результатов работы занимается человек.

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

И контролировать ошибки.

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

Мы не можем себе позволить после взрыва на АЭС просто сказать, что алгоритм принял ошибочное решение, пошел по неверной ветке и мы все исправили, запретив ему в будущем по этой ветке ходить. Не говоря уже о том, что, в теории, может существовать еще 500 таких веток и ИИ понадобится еще 500 раз взорвать станцию, чтобы понять, что вот наконец-то алгоритм работает корректно.

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

Но на самом деле, нет фундаментальной базы для того, чтобы человечество могло себе это позволить.

Так может давайте не будем и пытаться совершенствовать искусственный интеллект, пока он ничего не натворил? В конце концов, зачем нам тогда даже пытаться «обучать» ИИ программированию, давать ему какие-то более сложные задачи? Вот сейчас остановим прогресс в этой области, пока ничего плохого не случилось, сядем сверху и будем наслаждаться дарами этого самого прогресса.

Почему так нельзя?

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

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

Правда, даже при участии человека возникает две фундаментальные проблемы. Во-первых, истинность доказанного факта будет зависеть от доказательства корректности работы соответствующего алгоритма. Как доказать, что алгоритм работает правильно? С этим тоже беда.

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

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

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