Все мы слышали термины нейронные сети, обнаружение объектов и глубокое обучение. И мы видим, как эти сети волшебным образом преобразуют науку и инженерию. У нас есть такие приложения, как обнаружение лиц, обнаружение объектов, беспилотные автомобили и т. Д. И все это замечательные приложения глубокого обучения. Но почему эти сети работают так, как они работают? (Прочтите до самого конца, чтобы узнать!)

В этом сообщении блога мы немного углубимся в «сознание ИИ», чтобы получить некоторое представление о том, как работают эти сети и что они видят. Мы отбросим пугающую математику и постараемся интуитивно развить понимание их работы.

Но сначала давайте освежим некоторые основы.

Здесь у нас есть простые архитектуры нейронных сетей; Один слой и два слоя. Как это работает: у вас есть огромный обучающий набор входов и выходов, вы обучаете сеть, и она определяет функцию для сопоставления входов с выходами .

Вот сверточная нейронная сеть (CNN), которая представляет собой специальную нейронную сеть, изначально разработанную для работы с изображениями. Он состоит из двух частей; обучение и обнаружение функций. В CNN у нас есть фильтры вместо нейронов, и вы изучаете особенности в изображениях. Затем вы используете эти функции для классификации или обнаружения объектов на изображениях.

В результате вы можете обнаруживать людей, бейсбол, лошадь, собаку и т. Д.

Десятичное значение показывает, насколько уверена сверточная нейронная сеть в предсказании, которое она дала, например, она на 99,3 процента уверена, что объект слева внутри зеленого ограничивающего прямоугольника является автомобилем.

Но как эти сети учатся обнаруживать такие сложные структуры? Что они видят, когда смотрят на изображение. Что они видят на каждом уровне сети?

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

Он видит края; скошенные края, горизонтальные, вертикальные… Края всякие!

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

Пытаясь понять интуицию, вот пример того, как нарисовать велосипед
Итак, что вы будете делать? Сначала вы рисуете более простые вещи, например круги, а затем объединяете их, чтобы получилась шина, а затем объединяете их с линиями, чтобы сделать вилку, рамы и лопасти. Вы делаете то же самое для ручки и сиденья, а затем объединяете эти компоненты (ручка, сиденье и т. Д.), Чтобы создать цикл. Таким образом, велосипед состоит из более мелких объектов, каждый из которых состоит из еще более мелких объектов, и в конечном итоге они состоят из форм, а формы состоят из ребер. Так нейронная сеть тоже изучает функции. И вот как он использует элементы в качестве строительных блоков на каждом слое, чтобы создавать все более и более сложные структуры на каждом следующем слое.

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

В следующих статьях блога мы немного углубимся в «сознание ИИ» с помощью Передачи нейронного стиля и Google Deep Dream. Чтобы не пропустить, подпишитесь!

Подробное руководство по CNN можно найти в этой замечательной статье Сумита Саха: