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