Если мы говорим про технологии искусственного интеллекта, то быстро выясняется, что разные люди подразумевают под этим совершенно разные вещи. Я уже не говорю про давнюю войну адептов машинной логики и приверженцев современного машинного обучения или про философские определения "силы" ИИ. Давайте поговорим об этом на уровне обычного "чайника". Хотя бы потому, что масса топ-блогеров (надо сказать, в основном гуманитарии) пишут и репостят жуткие страшилки о том, как ИИ скоро все захватит, сделает ненужными почти все профессии и вообще станет править планетой. Казалось бы, и в серьёзной прессе постоянно публикуют значительные прорывы. Масса производителей софта пишет об "использовании ИИ" в рекламных брошюрах. Даже военные что-то пероидически выдают. Так как далеко мы от той самой пресловутой сингулярности на самом деле? Я рискну не только дать оценку сегодняшнему уровню развития, но и попытаться спрогнозировать кое-какие вехи, которые могут сигнализоровать крупные прорывы в области ИИ.
Заранее предупреждаю, что это будет "лонгрид". Даже сильно упрощая, мне не уложиться в несколько абзацев. Также хочу заренее извиниться перед людьми "в теме" за грубые упрошения и недостаточное количество источников. Однако, я пишу не статью на конференцию и копаться в публикациях (которые большинству аудитории будут малоинтересны), мне откровенно лень. Если будут конкретные исправления, буду вам очень благодарен. По этой же причине я намеренно буду избегать тут специальных терминов и буду заменять их (там где это возможно) общепонятными описаниями.
О чем мы вообще говорим?
Для начала стоит уяснить, что же в в массовом медиа-пространстве понимают под "искусственным интеллектом". В большинстве подобных публикаций речь идет не просто о сложных технологиях, которые вообще-то давно окружают нас повсюду и бгагоговейного трепета у публики не вызывают. Как правило, упор делается именно на плохо алгоритмизируемых задачах и решения их при помощи обучения вместо нахождения алгоритмов. В большинстве случаев, рассматриваются результаты, достигнутые при помощи искусственных нейронных сетей. И хотя как области как "ИИ" так и "машинного обучения" охватывают намного больше методов и технологий, именно эти вышеупомянутые вещи обычно подаются как квинтэссенция ИИ и поэтому как раз их я хочу рассмотреть в этом посте.
Чтобы решить при помощи компьютера какую-то задачу, нам надо сформулировать проблему на языке математики, а потом найти алгоритм для ее решения (опять же на языке математики, если вы публикуете нечто новое, то от вас ожидается математическое же доказательство полноты и корректности алгоритма). Информатики давно разработали классы задач, алгоритмически решаемых просто (быстро) и сложно (медленно), а также класс задач, нерешаемых в принципе. Но есть еще задачи, проблематичные в смысле поиска алгоритма или даже в том, что их крайне сложно (если вообще возможно) сформулировать. К таким относится, например, проблема pattern recognition: распознавание разных вещей на картинках, слов в аудиозаписях и т. п. Ну как математически сформулировать, чем изображение, скажем, зайца отличается от любого другого? Причем это как раз те задачи, с которыми любой идиот естественного происхождения справляется играючи. Отсюда IMHO растут ноги у иллюзии, что если уж мы научим компьютеры делать это, то это сразу сделает их "похожими на людей" (ну а там и "Скайнет" на горизонте).
Капитан Очевидность напоминает, что для решения каких-то задач люди используют мозги, которые сначала обучают. Так почему бы не смоделировать на компьютере структуру мозга на клеточном уровне и не попытаться её обучить? Эту идею вместе с математическими моделями нейрональных сетей и их поведения разработали аж 70 лет назад. Через какое-то время начали пробовать и сразу уперлись в большую проблему нехватки машинных ресурсов. Обучение даже маленькой (на сотню-другую нейронов) машинной сети требовало массы ресурсоёмких операций и соверщенно нереальных на то время объёмов машинной памяти. Какие-то минимальные практические результаты стали получать только к середине 1990-х. И кое-что подавало надежды. Например, распознавание лиц или преобразование речи в текст работало намного лучше, чем все, что было сделано в этих областях раньше (то есть худо-бедно дотягивало до минимального уровня, позволяющего думать о практическом прменении). Но какого-то серьезного прорыва не было до недавнего времени. Одним из факторов стало распространение графических процессоров (которые ускоряют тренировну нейросетей на несколько порядков). Подозреваю, что тут немало помог хайп "Биткойна", требовавший применения тех же GPU. И вот наконец в нашем распоряжении кластеры GPU. Ура и слава роботам? Увы, не совсем. У нас остаются некоторые проблемы. Мы действительно можем тренировать нейросети побольше и посложнее, но остается ряд серьезных проблем, каждая из которых мешает дальнейшему развитию технологии и массовому практическому применению.
Отсутствие гарантированно работающих методов разработки
Первая проблема заключается в том, что нет математической теории и четких правил, позволяющих нам подобрать оптимальную конфигурацию нейросети и её параметры под конкретную задачу. Есть очень общие правила, говорящие, что для таких-то задач лучше разместить нейроны на двух слоях, для таких-то нужно больше двух, а для третьих связи между нейронами надо делать не только к следующему слою, а и к предыдущим. Кроме этих общих принципов остаётся масса переменных, подбор которых дело не науки, а интуиции и удачи. Увеличим количество нейронов в два раза? Можем улучшить результаты. А можем кардинально ухудшить. Для одной только процедуры обучения надо подобрать как минимум три важных параметра. Как их менять, если каждый из них непредсказуемо все меняет? Вот именно: методом "научного тыка". Именно так это и делается. Вам может повезти и вы быстро получите хорошие результаты. А может и не повезти... Но ведь мы же можем пробовать, пока не получится? Ну сделаем не 10 экспериментов, а 1000, разве это проблема?
Ресурсоёмкость процесса тренировки
О да, количество экспериментов - это таки проблема. Потому что сеанс тренировки даже небольшой нейросети на средненьком кластере может длиться неделю. Для сравнения: на обычном (вполне мощном) компе, но без GPU - это будет больше полугода бесперебойной работы. Кто там хотел забабахать 1000 экспериментов? А еще учтите, что GPU-кластеры жрут энергию в промышленных масштабах. Я читал статью (для индустрии заинтересованной в этой технологии) с оценками стоимости тренировки ИИ. Для небольшой сети предлагалось зарезервировать 15-20 тысяч евро. Для большой и мощной сети - полмиллиона и выше. Вас все еще удивляет, что работают в этой области в основном IT-гиганты вроде Google и Amazon, располагающие кроме денег и специалистов еще и собственными кластерами? Но это еще не все. Есть еще одна важная причина, почему именно эти гиганты могут экспериментировать там, где другие не справляются.
Количество вводных данных
Обучение людей обычно происходит на примерах. А сделанные учеником примеры, обычно проверяются (ответ сверяется с правильным) и ему выставляется оценка. Машинное обучение работает примерно так же. Для некоторый классов задач (например, кластеризаия) можно использовать примеры без правильных ответов, но для большинства задач нам нужен (а) пример в дигитальной форме и (б) правильный ответ к нему. И так много раз. Как много? Да грубо говоря, дохренища и еще немножко. Где-то области шестизначных значений начинается приемлемое количество. И учтите, что для тренировки и последующей проверки результатов вам надо будет использовать разные примеры (обычно данные делят на три части: "train", "dev" и "test"). Приведем пример. Мы хотим добится от нейросети, чтобы она распознавала пол по фотографии. Тогда нам надо несколько сотен тысяч фотографий лиц. И плюс таблица (или база данных), где для каждой фотографии записан правильный ответ. Для нейросети, распознающей речь и превращающей её в текст, нам требуются аудиозаписи разных предложений разными людьми, к каждой из которых приложен правильный текст. Как, у вас нет полумиллиона аудиозаписей с соответствующими текстами на старом диске? Даже купить проблема? Ну извините, тогда вам нечего ловить. А у кого же у нас набралось необозримое множество всевозможных каталогизированных и индексированных данных, заботливо собираемых десятилетиями? Неужто снова у Google, Facebook, Amazon, Microsoft и иже с ними? Получается, у IT-гигантов все козыри на руках и они вот-вот разработают "Скайнет". Это вряд ли. Потому что количество - еще не все. Как известно, оно далеко не всегда переходит в качество.
Качество вводных данных
Говоря о качестве надо понимать, что базы с сотнями тысяч примеров изначально собирались либо для совершенно других целей либо просто "на всякий случай". Верификация по интересующим нас для обучения признакам либо была рудиментарна либо не делалась вообще. Соответственно в наших данных будет определенный процент мусора, который, однако, окажет негативное влияние на обучение нейросети. Можно отфильтровать часть его умными алгоритмами, но полностью зачистить данные таких размеров - нереально. И это еще меньшая проблема. Настоящая неприятность на первый взгляд вообще не видна. И состоит она в том, что мы "скармливаем" нейросети примеры, но мы, как это ни странно звучит, не знаем, чему именно она обучается. Попробую это объяснить. Представьте себе, что мы тренируем школьника делать задания по математике в виде multiple-choice. Если он научится правильно отвечать на все вопросы, он без труда сдаст экзамен. Наш школьник, неглуп и наблюдателен, но крайне ленив и всегда идёт по "пути наименьшего сопротивления". И вот он замечает, что квадратик для галочки напротив правильного ответа почти везде имеет слегка неровный угол. Мелкий сбой, который мы, сами того не заметив методом copy&paste распространили по всему начему тесту. В результате, школьник блестяще сдаёт тесты и... позорно заваливает экзамен, где дефект печати не встречается.
В эту ловушку разработчики ИИ попадаются раз за разом. Хотя бы потому, что невозможно рассмотреть все критерии, по которым может идти обучение. И проверить эти критерии на гигантских массивах данных тоже сложно. Пример из реальности: нейросеть, созданная University of Washington с целью автоматически отличать лаек от волков по фотографии. На тренировочных данных сеть показывала 90%-ную результативность. При попытке реального применения результативность упала до уровня слепого угадывания. Дальнейший анализ показал, что большинство тренировочных фотографий волков были сделаны зимой, а лаек - в тёплое время года (что вообще-то логично: волков зимой намного легче найти, а собак приятнее фотографировать в тепле). В итоге нейросеть тупо сортировала фотографии по принципу "много/мало белого фона". Ещё пример: нейросети для распознавания речи часто наотрез отказываются распознавать акценты или диалекты, если не "встречались" с ними в процессе тренировки. Позволю себе привести тут известное видео про "шотландский лифт", которое хоть и шуточное, но описывает вполне реальную проблему:
Click to view
Кстати, у распознавалок речи нередко встречается еще и сильная "аллергия" на шумы, помехи и побочные звуки. Качественный ИИ с этим справляется, но в реальности на "горячих линиях", увы, очень редко установлены качественные продукты. Учтите это, когда попадете в следующий раз на робота при звонке.
Непредсказуемые глюки на выходе
Предположим, вы худо-бедно справились с каждой из вышеописанных проблем, ваша сеть, казалось бы, стабильно выдаёт 95% правильных ответов, снабжая каждый "степенью уверенности". Вы отсекаете все результаты, в которых сеть уверена меньше чем на 90%, а оставшееся можете с чистой совестью использовать, не так ли? Раскатили губку? Ага, щаззз! ИИ может внезапно начать выдавать полный бред с полной же уверенностью в своей правоте. Прочем лично вы не заметите никакой разницы во вводных данных. Один из известных примеров можно нагуглить как "one pixel attack". Суть там в том, что ИИ для распознавания лиц перестаёт распознавать что-либо, если ему показывать фотографии, на которых один-единственный пиксель в некоторых критических местах заменен на белый. Человек может этот пиксель вообще не заметить, а нейросеть глючит как хиппи под ЛСД. Еще пример: мы натренировали распознавание речи с аудио-записями. Учли акценты, разных по возрасту и полу спикеров, шумы и все, что возможно. Использовали приличный sample rate в 16 килогерц. Поставили на телефонную линию. Она даёт звук с sample rate 8 кГц. Не проблема: конвертируем (т. е. делаем upsampling) и "скармливаем" ИИ аудиоданные, никак на слух не отличающиеся от тренировочных данных. Нужно ли говорить, что ваш ИИ не просто хуже это распознает, а выдаст вам вместо текста абракадабру из случайных букв?
К сожалению, вы не можете быть уверены не только в том, что именно ваша система выучила (см. выше), но и в том, чему она не научилась. В итоге ИИ может на полном ходу вмазать вашу систему, машину или бизнес в бетоную стену, причем абсолютно внезапно и с полной уверенностью в правильности решения. Но ведь классический софт тоже страдает от багов? Ведь был же, к примеру, разбившийся "Mars Climate Orbiter" стоимостью 125 миллионов долларов? Видите ли, разница тут в том, что классический код мы можем разобрать на относительно изолированные логические части и проанализировать их по отдельности. И если поручить хорошим специалистам, то мы можем исправить баг, не наплодив новых. Да, код вполне анализируем, даже если он "индусский". Кое-что может остаться незамеченным, но этот конкретный баг будет исправлен. С ИИ это не работает: его "нутро" после тренировок нам понятно только в общих чертах и не делится на логически понятные нам модули. Мы не можем протестировать его со всеми вариациями вводных данных (если мы имеем дело с небольшим количеством вариаций, то нам и ИИ был бы не нужен). Мы можем только повторить или расширить тренировку. И нет никаких гарантий, что после этого у нас вместо одного глюка не вылезут 10 новых в новых местах.
Рассматривание задачи вне контекста
И вот тут мы постепенно подбираемся к истоку многих других проблем: мы не обучаем ИИ так же, как людей. Представьте себе, что вы хотите обучить бушмена из глубин Калахари (например, такого, как в фильме "Боги сошли с ума") вождению автомобиля в большом городе. Но вы не пошлёте его в автошколу, не расскажете ему о правилах дорожного движения и дорожных знаках. Вместо этого вы привяжете его к сиденью и рулю, запасшись вкусняшками и подложив ему под зад проводки. Если он едет правильно, вы даёте ему шоколадку. Если неверно - даёте небольшой электрошок. Никакой теории и вообще никаких разговоров! О значении разметки и дорожных знаков он должен догадаться сам. Как вы думаете, эффективно ли такое обучение? Да, оно даст результаты: рано или поздно подопытный начнет ездить, возможно даже где-то неплохо. Но он наверняка будет делать много бессмысленных действий и нет гарантии, что он правильно понял значение каждого дорожного знака или каждое правило. Действуя так, мы обучаем корреляциям, а не причинности со всеми вытекающими негативными последствиями. Такими, например, как обучение ложным корреляциам. Отсюда и непредсказуемые глюки и чувствительность к качеству вводных данных. Для сравнения можно, например, вспомнить про
эксперимент Скиннера с голубями.
Мы занимаемся машинным обучением не от хорошей жизни: просто не для каждой задачи мы можем сформулировать мало-мальски чёткие правила. Но тогда и не стоит ожидать от подобных систем каких-то чудес. На данный момент, ИИ - не панацея, а костыль. Если мы можем решить задачу аналитически, то такое решение всегда будет быстрее, эффективнее и дешевле, чем ИИ. Просто машинное обучение позволяет нам продвинуться в области, недоступные на данный момент для аналитических методов. И мы действительно редко обучаем людей такими методами. В основе любой дидактической системы всегда лежaт контекст и система правил. Например, если мы учим кого-то отличать зайцев от кроликов, мы не просто суём ему стопку картинок, а называем ряд признаков, сходств и различий и учим находить уже их. Мы объясняем причинно-следственные связи. Мы формулируем абстрактные свойства. И только на этой основе мы даём примеры и проводим экзамены. Зато именно схожими с машинным обучением методами мы дрессируем собак или лошадей, так как не можем передать им абстрактые понятия. Только там мы начинаем обучение не на ровном месте, а активно пользуемся уже заложенными в них от природы способностями. Но посадить выдрессированных собак управлять самолётами или грузовиками пока еще (слава Джа) никому в голову не приходит.
Я понимаю привлекательность идеи машинного обучения для людей, не дружащих с математикой. Кажется, что можно достичь результатов, не разрабатывая сложный математический аппарат, а просто подкидывая машине побольше даных для обучения. Кажется, что это можно делать, не напрягая собственные мозги. Но это всего лишь иллюзия. И чтобы убедиться в этом, достаточно посмотреть, насколько трудно, долго и дорого обучить людей каким-нибудь мало-мальски сложным вещам.
Но как же с удачными примерами?
Да, такие примеры есть (иначе зачем бы масса людей продолжала экспериментировать с машинным обучением?). Но если присмотреться, то окажется, что все эти примеры обладают некоторыми общими свойствами. Во-первых, они узкоспециализированы. Например, распознавание конкретных изображений или ситуаций. Попытки подсунить такому ИИ что-то неожиданное ведут к непредсказуемым же результатам. Во-вторых, они применяются исключительно там, где цена ошибки невелика. То есть там, где все решает масса, а одиночные глюки не приведут к фатальным последствиям. Либо же там, где результат в итоге проходит дополнительную проверку (в основном людьми). Другими словами там, где ИИ не принимает окончательное решение, а даёт рекомендацию. Сюда, между прочим, относятся и автомобильные автопилоты, которые фактически и законодательно не совсем "авто".
А что там у нас с "универсальным" ИИ? Сейчас ведь много шума наделала система GPT-3, которая ведет вроде бы разумные беседы с людьми. Например, у Панчина был
пост про GPT-3, в котором он, кроме прочего написал следующее: "Коллеги предположили, что, возможно, искусственный интеллект предложит новые интересные гипотезы о причинах старения". Начнём с того, что GPT-3 - действительно замечательная вещь. Это прогресс как количественный (по размеру сети), так и качественный (применены кое-какие новые архитектурные решения). Тем не менее это - система ведения диалогов, не больше и не меньше. Обученная на 570 гигабайтах текстов (это где-то 340 миллионов книжных страниц), включая тексты из "Википедии" и форумов. И именно это она делает: ведёт диалоги так, чтобы людям её ответы казались разумными. И делает это замечательно. А вот для чего GPT-3 не предназначена, так это для решения каких-то аналитических задач или создания новых знаний.
В описании GPT-3 указано, что система имеет 175 миллиардов параметров. Давайте попробуем сравнить это с каким-то живым мозгом. Да, сравнение будет очень примерным и условным, но даст общее понятие о сложности системы. У человека в среднем 86 миллиардов нейронов. Но "параметры" GPT-3 соответствуют не нейронам а скорее синапсам. Которых у человека уже более 100 триллионов (10 в 14-ой степени). Если принять количество синапсов на нейрон за константу (грубое приближение), то 175 миллиардов синапсов - это что-то немного не дотягивающее до уровня хомячка. Правда хомячка, который не тратит вычислительные ресурсы мозга на координацию лапок и поиск еды, и в которого вместо этого как-то запихнули большую библиотеку. Но ожидать от него "новые интересные гипотезы о причинах старения" IMHO всё же довольно наивно. Если сомневаетесь, спросите вашу домашнюю черепашку :-) Насколько я понял из статей, GPT-3 страдает всё той же ограниченностью контекста (вне области фактов из Википедии) и элементарно "ловится" на нелогичных или непрямых вопросах. Что до воспроизводимости и эффективности разработки, то стоит знать, что тренировка GPT-3 потянула (по неподтверждённым источникам) примерно на 14 миллионов долларов только по машинным ресурсам.
Бесспорно, GPT-3 хорош, но его успех сильно зависит от восприятия собеседника. И чем больше нам хочется видеть в собеседнике разум, тем более "умным" он нам будет казаться. Тем более мы готовы закрывать глаза на мелкие погрешности. Так что мудрость высказываний GPT-3 зависит исключительно от восприятия слушателя и представляет собой типичный эффект апофении. Забавно, что жертвой апофении в данном случае пал именно Александр Панчин, который сам написал массу статей и даже книгу на эту тему :-)
Где мы сейчас и что дальше?
Как я уже писал выше, ИИ позволяет нам проникать в области, недоступные для классических методов. Равно как и кораблестроение позволило людям забираться в новые места. Если сравнить развитие ИИ с мореплаванием, то мы как раз научились вместо плавания на грубо связанных плотах (отталкиваясь шестом от дна) выдалбливать из дерева значительно более быстрые каноэ, приводимые в движение вёслами. Иногда даже делать из нескольких каноэ подобие катамарана. Мы уже можем выплывать на глубину, где шест не достаёт до дна. Однако мы еще не изобрели ни паруса ни компас. Я уже не говорю о постройке кораблей покрупнее. До установки на корабли парового двигателя нам еще как до Марса. Примерно так же далеки мы от отмирания мало-мальски креативных и/или интеллектуальным профессий. Что до передачи ИИ управления нашим обществом, тот тут все зависит IMHO не от прогресса ИИ а, от того, насколько мы сами отупеем в ближайшем будущем.
Дальнейших путей развития, сигнализирущщих серьёзные качественные прорывы, а вижу три (прощу заметить, это моё сугубо личное скромное и, возможно, ошибочное мнение). Первый: разработка математической базы для предсказания оптимальных параметров и конфигурации нейросетей относительно их цели. Как я уже писал выше, какие-то наработки уже есть, но они еще зачаточные. Вероятность прорыва в этом направлении в ближайшее врема я бы оценил как крайне низкую. Второй: отход от бионики и искуственных нейронов. Так же, как в авиации люди перешли от попыток скопировать подвижные машущие крылья птиц к неподвижным самолетным плоскостям и толкающему винту. Возможно, будет найдена другая модель, радикально отличающаяся от нейрона, но позволяющая менее ресурсозатратное и/или более точное обучение. Вероятность подобного развития я оценить не могу. Третий вариант: совмещение обучаемых систем с логическими. Ведь изначально ИИ разрабатывался именно как продукт логических систем. Где-то в 70-х годах эти исследования зашли в тупик и наступилa так называемая "
зима ИИ". Что вовсе не значит, что тогдашние разработки были ненужными. ИМХО они как раз могут дать системам машинного обучения тот самый рационально разработанный контекст (в дополнение к неоднозначным результатам обучения), о котором я писал выше. Я говорю тут не о простой проверке результатов, вадаваемых нейросетью, а о более сложной интеграции обеих технологий, в детали которой я тут углубляться не буду. Этот путь представляется мне наиболее перспективным.
Для интересующихся могу порекомендовать ещё вот это лекцию от "Антропогенеза". Обратите внимание там на весьма наивный вопрос Дробышевского (при всем уважении к нему), показывающий, что по вопросам ИИ надо полагаться именно на мнение математиков и информатиков: даже у антрополога представления о нём весьма смутны и далеки от реальности.
Click to view
Оригинальный пост:
https://catodon.dreamwidth.org/50508.html
Комментировать на Dreamwidth