В этой статье я расскажу о некоторых понятиях в CNN, эти названия, обсуждаемые здесь, были представлены стипендией Udacity Bertelsmann.

Что такое CNN?

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

Применение CNN?

Сети CNN достигают самых современных результатов в различных проблемных областях, включая голосовые пользовательские интерфейсы, обработку естественного языка и компьютерное зрение.

  1. WaveNet от Google:

В области голосовых пользовательских интерфейсов Google использовала CNN в своей недавно выпущенной модели WaveNet [1]. Эта модель принимает любой фрагмент текста в качестве входных данных и отлично справляется с воспроизведением компьютерной аудиозаписи человека, читающего текст. Что действительно круто, так это то, что если вы снабдите алгоритм достаточным количеством образцов своего голоса, можно научить его звучать так же, как вы. Что касается области обработки естественного языка.

2. Классификация настроений:

Анализ настроений исследует проблему изучения текстов, таких как сообщения и обзоры, загруженные пользователями на платформы микроблогов, форумы и электронные компании, относительно их мнения о продукте, услуге, событии, человеке или идее [2]. Например, счастлив или грустен писатель? Если они говорят о фильме, нравится он им или не нравится?

3. Играйте в видеоигры, например Atari Breakout:

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

4. Go:

Это древняя китайская настольная игра, которая считается одной из самых сложных игр на свете. Он сказал, что в игре больше конфигураций, чем атомов во Вселенной. Недавно исследователи из Google DeepMind использовали CNN для обучения искусственного интеллекта, который может побеждать профессиональных игроков в го.

5. Дроны:

CNN также позволяли дронам перемещаться по незнакомой территории. теперь они используются для доставки медикаментов в отдаленные районы. А CNN дают дрону возможность видеть или определять, что происходит при потоковой передаче видеоданных.

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

Что есть особенность?

Полезный способ понять, что такое особенность, - это подумать о том, что нас визуально привлекает, когда мы впервые видим объект и когда идентифицируем разные объекты. Например, на что мы смотрим, чтобы отличить кошку от собаки? Форма глаз, размер и то, как они двигаются, - это всего лишь пара примеров визуальных особенностей.

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

Как компьютеры интерпретируют изображения

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

В типичном изображении с оттенками серого белые пиксели кодируются как значение 255, а черные пиксели кодируются как ноль.

Серые пиксели находятся где-то посередине, а светло-серые ближе к 255. Эти изображения MNIST фактически прошли быстрый этап предварительной обработки. Они были масштабированы таким образом, что каждое изображение имеет значения пикселей в диапазоне от нуля до единицы, а не от 0 до 255. Чтобы перейти от диапазона 0–255 к нулю к единице, вам просто нужно разделить каждое значение пикселя на 255. Этот шаг называется нормализацией и является обычной практикой во многих методах глубокого обучения.

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

Итак, теперь у нас есть нормализованные данные, как мы можем подойти к задаче классификации этих изображений? Что ж, вы уже изучили один метод классификации с использованием многослойного перцептрона. Как мы можем ввести эти данные изображения в MLP? Напомним, что MLP принимают в качестве входных данных только векторы. Итак, чтобы использовать MLP с изображениями, мы должны сначала преобразовать любой массив изображений в вектор. Этот процесс настолько распространен, что получил название сглаживание.

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

Нормализация входных изображений

Нормализация данных - важный этап предварительной обработки. Это гарантирует, что каждый ввод (в данном случае каждое значение пикселя) поступает из стандартного распределения. То есть диапазон значений пикселей в одном входном изображении такой же, как диапазон в другом изображении. Эта стандартизация заставляет нашу модель тренироваться и быстрее достигать минимальных ошибок!

Нормализация данных обычно выполняется путем вычитания среднего (среднего всех значений пикселей) из каждого пикселя, а затем деления результата на стандартное отклонение всех значений пикселей. Иногда здесь можно увидеть приблизительное значение, когда мы используем среднее значение и стандартное отклонение 0,5 для центрирования значений пикселей.

Распределение таких данных должно напоминать функцию Гаусса с центром в нуле. Для входных данных изображения нам нужно, чтобы номера пикселей были положительными, поэтому мы часто выбираем масштабирование данных в нормализованном диапазоне [0,1].

Структура MLP и баллы по классам

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

На данный момент наши изображения были преобразованы в векторы с 784 записями. Итак, первый входной слой в нашем MLP должен иметь 784 узла. Мы также знаем, что мы хотим, чтобы выходной слой различал 10 различных типов цифр, от нуля до девяти. Итак, нам нужно, чтобы на последнем слое было 10 узлов. Итак, наша модель примет сплющенное изображение и выдаст 10 выходных значений, по одному для каждого возможного класса, от нуля до девяти. Эти выходные значения часто называют оценками класса.

Высокая оценка класса означает, что сеть очень уверена в том, что данное входное изображение относится к определенному классу. Вы можете представить себе, что оценка класса для, например, 103 будет иметь высокий балл для класса 3 и низкий балл для классов 0, 1 и так далее. Но он также может иметь небольшой балл за восьмерку или любой другой класс, который по форме похож на три. Оценки класса часто представлены в виде вектора значений или даже в виде гистограммы, показывающей относительную силу оценок.

Теперь часть этой архитектуры MLP, которую вы должны определить, действительно находится между входным и выходным уровнями. Сколько скрытых слоев вы хотите включить и сколько узлов должно быть в каждом из них?

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

Ссылки:

[1]: https://deepmind.com/blog/article/wavenet-generative-model-raw-audio

[2]: https://www.kdnuggets.com/2018/03/5-things-sentiment-analysis-classification.html

[3]: Курс Udacity