Возможно, когда речь заходит о распознавании объектов, самые важные различия между современными СНС и людьми заключаются в том, как происходит обучение и насколько надежным оно оказывается. Я опишу эти различия в следующей главе.
Перечисляя все эти оговорки, я ни в коей мере не умаляю наблюдаемый в последние годы невероятный прогресс в сфере компьютерного зрения. Несомненно, сверточные нейронные сети добились оглушительных успехов в этой и других областях, и их успехи не только привели к созданию коммерческих продуктов, но и вселили истинный оптимизм в исследователей ИИ. На этих страницах я показываю, какие сложности представляет зрение, и помогаю вам оценить прогресс, достигнутый к текущему моменту. Искусственный интеллект еще не приблизился к “решению” распознавания объектов.
Не ограничиваясь распознаванием объектов
В этой главе я уделила основное внимание распознаванию объектов, потому что в последнее время эта сфера прогрессировала быстрее всего. Однако компьютерное зрение, конечно же, не ограничивается распознаванием объектов. Если цель компьютерного зрения состоит в том, чтобы “научить машину описывать, что она видит”, то машинам нужно распознавать не только объекты, но и их связи друг с другом, а также понимать, как они взаимодействуют с миром. Если “объекты” – живые существа, то машинам необходимо иметь представление об их действиях, целях, эмоциях, вероятных следующих шагах и всех остальных аспектах, позволяющих рассказать историю визуальной сцены. Более того, если мы действительно хотим, чтобы машины описывали, что они видят, им нужно овладеть языком. Исследователи ИИ активно работают над обучением машин этим навыкам, но, как обычно, “простые” вещи оказываются очень сложными. Специалист по компьютерному зрению Али Фархади сказал The New York Times: “Мы все еще очень, очень далеки от визуального интеллекта и понимания сцен и действий на уровне людей”
[125].
Почему мы все еще далеки от этой цели? Похоже, визуальный интеллект непросто отделить от остального интеллекта, особенно от общих знаний, абстрактных рассуждений и речи – тех способностей, которые задействуют части мозга, имеющие много обратных связей со зрительной корой, что весьма любопытно. Кроме того, возможно, знания, необходимые для создания визуального интеллекта человеческого уровня – способного, например, понять фотографию “Военнослужащая с собакой”, приведенную в начале прошлой главы, – нельзя получить, классифицируя миллионы картинок из интернета, потому что они требуют некоторого жизненного опыта в реальном мире.
В следующей главе я подробнее рассмотрю роль машинного обучения в компьютерном зрении, в частности, описав различия между обучением людей и машин, и попытаюсь вычленить, чему именно научаются натренированные нами машины.
Глава 6
Подробнее об обучаемых машинах
Пионер глубокого обучения Ян Лекун получил много наград и почестей, но, пожалуй, главной (пусть и странной) стало существование невероятно популярного и очень смешного пародийного твиттер-аккаунта “Скучающий Ян Лекун” со следующим описанием: “Размышления о подъеме глубокого обучения, пока Ян в простое”. Анонимный автор часто заканчивает свои остроумные шутки для посвященных хештегом #FeelTheLearn (#ПочувствуйОбучение)
[126].
Пресса действительно “чувствует обучение”, воспевая силу глубокого обучения – с акцентом на “обучении”. Так, нам говорят, что “теперь мы можем конструировать системы, которые сами учатся выполнению задач”
[127], что “глубокое обучение [позволяет] компьютерам в буквальном смысле учиться самостоятельно”
[128] и что системы глубокого обучения обучаются “подобно человеческому мозгу”
[129].
В этой главе я подробнее расскажу, как обучаются машины – в частности, сверточные нейронные сети – и чем процесс их обучения отличается от процесса обучения людей. Кроме того, я проанализирую, как различия в механизмах обучения сверточных нейронных сетей и человека влияют на надежность усвоенной информации.
Самостоятельное обучение
Метод обучения на данных, используемый глубокими нейронными сетями, оказался в целом успешнее стратегии “старого доброго ИИ”, в рамках которой программисты задают машинам четкие правила разумного поведения. Однако, вопреки некоторым утверждениям прессы, сверточные нейронные сети учатся не так, как человек.
Как мы видели, самые успешные СНС применяют метод обучения с учителем: они постепенно корректируют веса, снова и снова обрабатывая примеры из тренировочного множества, в процессе смены многих эпох (то есть многих проходов по тренировочному множеству) учатся присваивать каждому входному изображению одну из фиксированного набора возможных выходных категорий. При этом даже маленькие дети усваивают бесконечный набор категорий и могут узнавать объекты из большинства категорий, увидев всего несколько примеров. Более того, дети учатся не пассивно: они задают вопросы, пытаются больше разузнать о вещах, которые пробуждают их любопытство, строят абстракции, находят связи между понятиями, но самое главное – они активно исследуют мир.
Говорить, что современные успешные СНС учатся “самостоятельно”, не совсем корректно. Как мы увидели в предыдущей главе, чтобы сверточная нейронная сеть научилась выполнять задачу, людям необходимо приложить много усилий для сбора, сортировки и разметки данных, а также разработки множества аспектов архитектуры сети. Хотя СНС применяют метод обратного распространения ошибки, чтобы узнать свои “параметры” (то есть веса) при работе с тренировочными примерами, это обучение основано на наборе так называемых гиперпараметров, то есть всех аспектов сети, которые людям необходимо настроить, чтобы обучение вообще началось. К гиперпараметрам относятся количество слоев сети, размер “рецептивных полей” единиц каждого слоя, степень корректировки каждого веса в ходе обучения (называемая скоростью обучения) и многие другие технические аспекты процесса обучения. Подготовка сверточной нейронной сети называется настройкой гиперпараметров. На этом этапе задается множество значений и принимается множество сложных проектных решений, затем все заданные настройки сложным образом взаимодействуют друг с другом, оказывая влияние на итоговую работу сети. Более того, настройку, как правило, приходится проводить заново всякий раз, когда принимается решение натренировать сеть на решение новой задачи.