Электронная библиотека » Мелани Митчелл » » онлайн чтение - страница 7


  • Текст добавлен: 1 февраля 2022, 14:21


Автор книги: Мелани Митчелл


Жанр: Техническая литература, Наука и Образование


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 7 (всего у книги 24 страниц) [доступный отрывок для чтения: 8 страниц]

Шрифт:
- 100% +
Революция глубокого обучения

Невероятный прорыв в способности машин распознавать объекты на изображениях и видео случился в 2010-х годах и был вызван успехами в сфере глубокого обучения.

Глубоким обучением называют методы тренировки “глубоких нейронных сетей”, то есть нейронных сетей, имеющих более одного скрытого слоя. Как вы помните, скрытыми называются слои нейронной сети, расположенные между входным и выходным слоями. Глубина сети определяется количеством скрытых слоев: “мелкая” сеть – такая, как мы видели в главе 2, – имеет всего один скрытый слой, а “глубокая” – более одного. Важно подчеркнуть, что слово “глубокий” в термине “глубокое обучение” не описывает сложность того, чему учится система, а относится только к глубине слоев тренируемой сети.

Исследования глубоких нейронных сетей продолжаются несколько десятилетий. Революционными их делает недавний феноменальный успех при выполнении многих задач ИИ. Исследователи заметили, что структура самых успешных глубоких сетей копирует части зрительной системы мозга. “Традиционные” многослойные нейронные сети, описанные в главе 2, создавались с оглядкой на мозг, но по структуре совсем на него не походили. Нейронные сети, господствующие в сфере глубокого обучения, напротив, непосредственно смоделированы на основе открытий нейробиологии.

Мозг, неокогнитрон и сверточные нейронные сети

Примерно в то же время, когда Минский и Пейперт выступили с идеей “Летнего проекта по зрению”, два нейробиолога вели растянувшееся на несколько десятилетий исследование, которое в итоге радикальным образом изменило наши представления о зрении – и особенно о распознавании объектов – в мозге. Позже Дэвид Хьюбел и Торстен Визель получили Нобелевскую премию за открытие иерархической организации зрительных систем кошек и приматов (включая человека) и за объяснение, каким образом зрительная система преобразует свет, падающий на сетчатку, в информацию об окружающей обстановке.


Рис. 8. Путь зрительного входного сигнала от глаз к зрительной коре


Открытия Хьюбела и Визеля вдохновили японского инженера Кунихико Фукусиму, который в 1970-х годах создал одну из первых глубоких нейронных сетей, названную когнитроном, а затем разработал его новую вариацию, неокогнитрон. В своих статьях[100]100
  K. Fukushima, “Cognitron: A Self-Organizing Multilayered Neural Network Model”, Biological Cybernetics 20, no. 3–4 (1975): 121–36; K. Fukushima, “Neocognitron: A Hierarchical Neural Network Capable of Visual Pattern Recognition”, Neural Networks 1, no. 2 (1988): 119–130.


[Закрыть]
 Фукусима сообщал об успехе в тренировке неокогнитрона для распознавания рукописных цифр (таких, как показаны на рисунке в главе 1), но методы обучения, которые он использовал, судя по всему, не подходили для более сложных зрительных задач. Тем не менее неокогнитрон стал отправной точкой для создания более поздних вариаций глубоких нейронных сетей, включая самые важные и широко распространенные сегодня – сверточные нейронные сети (СНС).

Сверточные нейронные сети стали главной движущей силой сегодняшней революции глубокого обучения в компьютерном зрении и других сферах. Хотя их часто называют следующим крупным прорывом ИИ, на самом деле они не слишком новы: впервые их еще в 1980-х годах предложил французский информатик Ян Лекун, вдохновленный неокогнитроном Фукусимы.

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

Распознавание объектов в мозге и в СНС

Как и неокогнитрон, СНС сконструированы с учетом открытий Хьюбела и Визеля об устройстве зрительной системы мозга, сделанных в 1950-х и 1960-х годах. Когда ваши глаза фокусируются на сцене, они получают световые волны различной длины, которые отражаются от объектов и поверхностей сцены. Попадая в глаза, свет активирует клетки на каждой сетчатке, которая, по сути, представляет собой нейронную сеть в задней части глаза. Эти нейроны с помощью зрительных нервов сообщают о своей активации мозгу и в итоге активируют нейроны зрительной коры, которая находится в затылочной части головы (рис. 8). Условно говоря, зрительная кора состоит из иерархически организованных слоев нейронов, напоминающих ярусы свадебного торта, и нейроны каждого слоя сообщают о своей активации нейронам следующего слоя.

Хьюбел и Визель обнаружили, что нейроны разных слоев этой иерархии служат “детекторами”, которые реагируют на все более сложные особенности визуальной сцены, как показано на рис. 9: нейроны первых слоев активируются (то есть начинают чаще испускать сигналы), выявляя границы; их активация питает следующие слои, выявляющие простые формы с этими границами, – и так далее, к сложным формам и, наконец, целым объектам или конкретным лицам. Обратите внимание, что стрелками на рис. 9 обозначен восходящий поток информации (или прямая связь) с переходом от нижних слоев к верхним (на рисунке – слева направо). Важно отметить, что в зрительной коре наблюдается также нисходящий поток информации (или обратная связь) с переходом от верхних слоев к нижним, причем обратных связей почти в десять раз больше, чем прямых. Тем не менее нейробиологи плохо понимают роль этих обратных связей, хотя установлено, что накопленные знания и ожидания, предположительно хранящиеся в более высоких слоях мозга, оказывают существенное влияние на наше восприятие.


Рис. 9. Схема визуальных особенностей, выявляемых нейронами разных слоев зрительной коры


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


Рис. 10. Схема четырехслойной СНС, разработанной для распознавания кошек и собак на фотографиях


В качестве иллюстрации представим гипотетическую СНС с четырьмя слоями и “модулем классификации”. Нам необходимо натренировать ее на распознавание кошек и собак на изображениях. Для простоты допустим, что на каждом изображении есть лишь одна кошка или собака. На рис. 10 показана структура нашей сверточной нейронной сети. Она достаточно сложна, поэтому я опишу все ее компоненты, чтобы объяснить, как работает эта сеть.

Входной и выходной сигналы

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


[Закрыть]
. Выходным сигналом нашей сети служит степень ее уверенности (от 0 % до 100 %) в каждой категории: “собака” и “кошка”. Наша цель – научить сеть выдавать высокую степень уверенности для верной категории и низкую – для неверной категории. Таким образом сеть узнает, какие признаки входного изображения наиболее полезны для этой задачи.

Карты активации

Обратите внимание, что на рис. 10 каждый слой сети представлен группой из трех наложенных друг на друга прямоугольников. Эти прямоугольники обозначают карты активации, создаваемые по аналогии с подобными “картами”, обнаруженными в зрительной системе мозга. Хьюбел и Визель установили, что нейроны в нижних слоях зрительной коры формируют решетку, в которой каждый нейрон реагирует на соответствующую небольшую зону визуального поля. Представьте, что вы фотографируете ночной Лос-Анджелес с самолета: огни на вашем снимке складываются в схематичную карту светящихся элементов города. Аналогичным образом активация нейронов в каждом матричном слое зрительной коры формирует схематичную карту важных признаков наблюдаемой сцены. Теперь представьте, что у вас особенный фотоаппарат, который может делать отдельные снимки с огнями домов, светом из окон высотных зданий и фарами машин. Примерно так работает зрительная кора: у каждого важного зрительного признака появляется собственная нейронная карта. Комбинация этих карт – ключ к нашему восприятию сцены.

Как и нейроны зрительной коры, ячейки сверточной нейронной сети служат детекторами важных визуальных признаков, причем каждая ячейка ищет свой признак в конкретной области визуального поля. И (условно говоря) как и зрительная кора, каждый слой СНС состоит из нескольких решеток, сформированных такими ячейками, и каждая решетка является картой конкретного визуального признака.

Какие визуальные признаки должны выявлять ячейки СНС? Давайте сначала посмотрим на мозг. Хьюбел и Визель обнаружили, что нейроны нижних слоев зрительной коры служат детекторами ребер – границ между двумя контрастными областями изображения. Каждый нейрон получает входной сигнал, соответствующий конкретной небольшой области видимой сцены, и эта область называется рецептивным полем нейрона. Нейрон активируется (то есть начинает чаще испускать сигналы), только если рецептивное поле содержит ребра определенного типа.

Тип ребер, на которые реагируют эти нейроны, довольно четко определен. Одни нейроны активируются, только когда в их рецептивном поле оказывается вертикальное ребро, другие реагируют только на горизонтальное ребро, третьи – только на ребра, проходящие под другими определенными углами. Одним из важнейших открытий Хьюбела и Визеля стало то, что каждая небольшая область зрительного поля человека соответствует рецептивным полям многих нейронов, служащих “детекторами ребер”. Таким образом, на низком уровне обработки зрительной информации ваши нейроны определяют ориентацию ребер в каждом фрагменте сцены, на которую вы смотрите. Информация от нейронов – детекторов ребер – поступает в более высокие слои зрительной коры, нейроны которых, вероятно, служат детекторами конкретных форм, объектов и лиц[102]102
  При описании работы мозга, как правило, приходится делать много оговорок, и мои слова не исключение. Хотя я описала процесс относительно точно, мозг невероятно сложен, а перечисленные открытия позволяют лишь частично понять механизм зрения, многое в котором до сих пор остается загадкой для ученых.


[Закрыть]
.


Рис. 11. Карты активации в первом слое нашей СНС


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

На рис. 12 в подробностях показано, как ячейки карты 1, ответственные за выявление вертикальных границ, вычисляют уровни своей активации. Маленькими белыми квадратиками на входном изображении обозначены рецептивные поля двух разных ячеек. Увеличенные фрагменты изображения, попадающие в эти поля, показаны в качестве решеток со значениями пикселей. Здесь я для простоты показала каждый фрагмент как решетку пикселей 3 × 3 (значения обычно находятся в диапазоне от 0 до 255 – чем светлее пиксель, тем выше значение). Каждая ячейка получает в качестве входного сигнала значения пикселей в своем рецептивном поле. Она умножает каждое входное значение на его вес, складывает результаты и получает уровень своей активации.


Рис. 12. Иллюстрация применения свертки для выявления вертикальных ребер. Например, свертка верхнего рецептивного поля с весами составляет (200 × 1) + (110 × 0) + (70 × –1) + (190 × 1) + (90 × 0) + + (80 × –1) + (220 × 1) + (70 × 0) + (50 × –1) = 410


Веса на рис. 12 должны давать высокую положительную активацию при наличии в рецептивном поле вертикального ребра на стыке светлого и темного участков (то есть высокого контраста между левой и правой сторонами входного фрагмента). Верхнее рецептивное поле содержит вертикальное ребро: переход от светлой шерсти собаки к фону темной травы. Это отражается высоким уровнем активации (410). Нижнее рецептивное поле не содержит такого ребра, потому что в него попадает только темная трава, и уровень активации (–10) оказывается ближе к 0. Обратите внимание, что вертикальное ребро перехода от темного участка к светлому даст “высокий” отрицательный уровень активации (то есть отрицательное число, далекое от 0).

Это вычисление – умножение каждого значения в рецептивном поле на соответствующий вес и сложение результатов – и называется сверткой. Отсюда и название “сверточная нейронная сеть”. Выше я упомянула, что в сверточной нейронной сети карта активации представляет собой решетку ячеек, соответствующих рецептивным полям по всему изображению. Каждая ячейка карты активации использует одни и те же веса, чтобы вычислить свертку для своего рецептивного поля: представьте, как белый квадрат скользит по всем фрагментам входного изображения[103]103
  Массив весов для каждой карты признаков называется сверточным фильтром, или ядром свертки.


[Закрыть]
. В результате получается карта активации с рис. 12: центральный пиксель рецептивного поля ячейки окрашивается в белый при высоких положительных и отрицательных уровнях активации, но становится темнее при уровнях, близких к 0. Можно видеть, что белые зоны показывают места, где есть вертикальные ребра. Карты 2 и 3 с рис. 11 были созданы аналогичным образом, но их веса помогали выявлять соответственно горизонтальные и наклонные ребра. В совокупности карты активации, составляемые единицами первого слоя, ответственными за обнаружение ребер, обеспечивают сверточную нейронную сеть таким представлением входного изображения, в котором показаны по-разному ориентированные ребра в отдельных фрагментах, что-то похожее на результат работы программы по обнаружению ребер.

Давайте на минутку остановимся, чтобы обсудить использование слова “карта” в этом контексте. В повседневной жизни “картой” называют пространственное представление географической местности, например города. Скажем, карта дорог Парижа показывает конкретную характеристику города – схему его улиц, проспектов и переулков, – но не включает многие другие характеристики, такие как здания, дома, фонарные столбы, урны, яблони и пруды. Другие карты уделяют внимание другим характеристикам: можно найти карты парижских велодорожек, вегетарианских ресторанов и парков для выгула собак. Что бы вас ни интересовало, вполне вероятно, что существует карта, которая покажет вам, где это найти. Если бы вы хотели рассказать о Париже другу, который никогда там не бывал, можно было бы подойти к задаче творчески и показать ему коллекцию таких “специализированных” карт.

Сверточная нейронная сеть (как и мозг) представляет видимую сцену как коллекцию карт, показывающих специфические “интересы” набора детекторов. В моем примере на рис. 11 в качестве интересов выступают ребра различной ориентации. Однако, как мы увидим далее, СНС сами обучаются тому, каковы их интересы (то есть детекторы), а интересы при этом зависят от конкретной задачи, для которой натренирована сеть.

Карты создаются не только на первом слое сверточной нейронной сети. Как видно на рис. 10, остальные слои имеют схожую структуру: каждый из них обладает набором детекторов, а каждый детектор создает собственную карту активации. Ключ к успеху СНС – опять же подсказанный устройством мозга – заключается в иерархической организации карт: входными сигналами для второго слоя служат карты активации первого, входными сигналами для третьего слоя служат карты активации второго – и так далее. В нашей гипотетической сети, где первый слой реагирует на ориентацию ребер, единицы второго слоя будут реагировать на конкретные комбинации ребер, например углы и Т-образные стыки. Детекторы третьего слоя будут обнаруживать комбинации комбинаций ребер. Чем выше иерархическое положение слоя, тем более сложные признаки выявляют его детекторы, ровно как Хьюбел, Визель и другие ученые наблюдали в мозге.

Наша гипотетическая сверточная нейронная сеть имеет четыре слоя с тремя картами в каждом, но в реальности такие сети могут иметь гораздо большее количество слоев – иногда даже сотни, – причем каждый слой может обладать своим числом карт активации. Определение этих и многих других аспектов структуры СНС – один из шагов к тому, чтобы такая сложная сеть смогла справляться с поставленной перед нею задачей. В главе 3 я описала идею И. Дж. Гуда о будущем “интеллектуальном взрыве”, когда машины сами станут создавать все более совершенные машины. Пока мы не вышли на этот этап, а потому настройка сверточных нейронных сетей требует огромного человеческого мастерства.

Классификация в СНС

Слои 1–4 в нашей сети называются сверточными, поскольку каждый из них осуществляет свертку предыдущего (а первый слой осуществляет свертку входного изображения). Получая входное изображение, каждый слой последовательно выполняет вычисления, и на последнем, четвертом слое сеть формирует набор карт активации для относительно сложных признаков. К ним могут относиться глаза, форма лап, форма хвостов и другие признаки, которые сеть сочла полезными для классификации распознаваемых в процессе тренировки объектов (в нашем случае – кошек и собак). На этом этапе в дело вступает модуль классификации, который на основании этих признаков определяет, какой объект запечатлен на изображении.

В качестве модуля классификации используется традиционная нейронная сеть, похожая на описанную в главе 2[104]104
  Здесь я использую термин “модуль классификации” в качестве условного обозначения того, что обычно называется полносвязными слоями глубокой сверточной нейронной сети.


[Закрыть]
. Входными сигналами для модуля классификации служат карты активации, составленные самым высоким слоем свертки. На выходе модуль дает процентные значения, по одному для каждой возможной категории, оценивая уверенность сети в том, что объект на входном изображении относится к конкретной категории (в нашем случае – кошек или собак).

Позвольте мне подытожить это краткое описание сверточных нейронных сетей. Вдохновленные открытиями Хьюбела и Визеля о работе зрительной коры мозга, СНС берут входное изображение и преобразуют его – посредством сверток – в набор карт активации признаков, сложность которых постепенно повышается. Карты активации, составленные на самом высоком слое свертки, загружаются в традиционную нейронную сеть (которую я назвала модулем классификации), после чего она определяет процент уверенности для каждой из категорий объектов, известных сети. Сеть классифицирует изображение в ту категорию, которая получает самый высокий процент уверенности[105]105
  Я многое опускаю в своем описании сверточных нейронных сетей. Например, чтобы вычислить свою активацию, ячейка слоя свертки выполняет свертку, а затем применяет к результату нелинейную функцию активации. Кроме того, в сверточных нейронных сетях, как правило, бывают также слои другого типа, называемые пулинговыми слоями. Подробнее см. в работе I. Goodfellow, Y. Bengio and A. Courville, Deep Learning (Cambridge, Mass.: MIT Press, 2016).


[Закрыть]
.

Хотите поэкспериментировать с хорошо натренированной сверточной нейронной сетью? Сделайте фотографию какого-либо объекта и загрузите ее в “поиск по картинке” Google[106]106
  В момент написания этой книги открыть “поиск по картинкам” Google можно на images.google.com, нажав на маленькую иконку в форме фотоаппарата в поисковой строке.


[Закрыть]
. Получив ваше изображение, Google задействует СНС и на основании итоговых значений уверенности (при тысячах возможных категорий объектов) сообщит вам свое “лучшее предположение” о том, что изображено на снимке.

Тренировка сверточной нейронной сети

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

Вот механизм, с помощью которого нашу СНС можно натренировать определять, кошка или собака запечатлена на конкретном изображении. Сначала необходимо собрать большое количество примеров изображений кошек и собак – они войдут в ваше “тренировочное множество”. Нужно также создать файл, который присвоит каждому изображению ярлык – “собака” или “кошка”. (А лучше взять пример с исследователей компьютерного зрения и нанять аспиранта, который сделает это за вас. Если вы сами аспирант, наймите студента. Никому не нравится расставлять метки!) Сначала ваша программа присвоит случайные значения всем весам в сети. Затем программа начнет тренировку: все изображения будут по одному загружаться в сеть, сеть будет выполнять свои послойные вычисления и, наконец, выдавать процент уверенности для категорий “собака” и “кошка”. Для каждого изображения тренируемая программа будет сравнивать выходные сигналы с “верными” значениями: так, если на изображении собака, то уверенность для категории “собака” должна составлять 100 %, а для категории “кошка” – 0 %. Затем тренируемая программа, используя алгоритм обратного распространения ошибки, будет незначительно корректировать веса в сети, чтобы в следующий раз при классификации этого изображения показатели уверенности были ближе к верным значениям.

Выполнение этой процедуры – ввод изображения, вычисление ошибки на выходе, коррекция весов – для всех изображений из тренировочного множества называется “эпохой” тренировки. Тренировка сверточной нейронной сети требует множества эпох, в каждой из которых сеть снова и снова обрабатывает каждое изображение. Сначала сеть очень плохо распознает собак и кошек, но постепенно, корректируя веса на протяжении многих эпох, она начинает справляться с задачей все лучше. Наконец в какой-то момент сеть “сходится”: ее веса перестают сильно изменяться от эпохи к эпохе, и она (в принципе!) очень хорошо распознает собак и кошек на изображениях из тренировочного множества. Но мы не узнаем, хорошо ли сеть в целом справляется с этой задачей, пока не проверим, может ли она применять все то, чему научилась, к изображениям, не входившим в тренировочное множество. Любопытно, что программисты не ориентируют сверточные нейронные сети на выявление конкретных признаков, но при тренировке на больших множествах настоящих фотографий они выстраивают иерархию детекторов, подобную той, которую Хьюбел и Визель обнаружили в зрительной системе мозга.

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


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 | Следующая
  • 0 Оценок: 0

Правообладателям!

Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.

Читателям!

Оплатили, но не знаете что делать дальше?


Популярные книги за неделю


Рекомендации