С возвращением, амигос,

В этом посте я буду иметь дело с плотным слоем, полносвязным слоем и обратным распространением. Если вы пропустили мой предыдущий пост нажмите здесь или здесь. Прежде чем двигаться дальше, давайте посмотрим, как фильтр работает с изображением. Я сделал пикселизированное изображение буквы R и применил фильтр 3 X 3 один раз и 3 раза. Нужно помнить, чем больше фильтров будет применено к одному и тому же изображению, тем меньше будет характеристик. Пиксельное изображение буквы R и фильтр ниже.

Рис. 1. Фильтр (слева) и изображение (справа)

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

Рис. 2. Фильтрация, примененная к изображению (один и два раза)

Хорошо видно, как фильтр выцветает пиксели, которые не совпадают по фазе с фильтром. Кажется, здесь подходит термин «фаза» 😊. Затемненные ячейки находятся в фазе с фильтром. Даже если эталонное изображение немного искажено, повернуто, перевернуто или опубликовано, функция все равно будет обнаружена, поскольку она будет находиться в фазе с фильтром.

Процесс аналогичен фильтру для вычисления отфильтрованного значения. Это сумма произведений значений 1 и 0 на фактическое значение ячейки. Затем сумма делится на общее количество ячеек в матрице фильтра (здесь 9). Значение исчезает, если оно ближе к 0, и темнеет, если приближается к 1.

Теперь это отфильтрованное изображение проходит через слой исправления. Мы получили максимальное значение ячейки на изображении ниже — 0,33, а минимальное значение ячейки — 0,11, поэтому среднее значение равно 0,22. Таким образом, правило сформулировано как изменение значений ячеек на 0, значения которых меньше 0,22 (вы можете выбрать разные значения. Значение ближе к максимуму будет сложным и быстрым процессом для изображения, и выбор значения ближе к минимуму будет включить некоторые ненужные функции). Таким образом, после прохождения второго изображения с рис. 2 выше через слой RELU мы получаем такой вывод.

Рис. 3. Слой RELU, примененный к отфильтрованному слою.

После применения слоя RELU изображение проходит через пул, о котором я уже говорил в этом посте. Таким образом, общий процесс будет таким

  1. Свертка (отфильтровано)
  2. Релу активация
  3. Объединение

Описанный выше процесс выполняется один или два раза, а может быть и больше.

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

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

Среднее значение самых темных ячеек из каждого фильтра показывает вероятность того, насколько близко наше изображение (здесь к «R»). Напротив, среднее значение всех более светлых ячеек каждого фильтра показывает вероятность того, насколько далеко находится наше изображение (от «R» здесь)

Рис. 4. Полностью связанный массив всех нейронов (ячеек)

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

Плотный слой — это просто другое название полносвязного слоя. Аналогичные операции происходят в плотном слое, где каждый нейрон связан друг с другом. Его еще называют плотным, потому что он представляет собой плотное соединение плотных нейронов. Плотный слой имеет веса, связанные с каждой парой нейронов и с уникальными значениями. Как правило, в Keras вы можете заметить плотный слой при работе с CNN, в то время как в Tensorflow вы можете найти full_connected. Так что не запутайтесь с этим. В Керасе мы часто используем плотность как Dense(10), Dense(1). Здесь каждый нейрон из 10 нейронов связан с последним нейроном и имеет уникальные веса. Так как это слишком плотно и я не считаю вредным называть это плотным слоем. 😉

Как следует из названия, он отсеивает или, лучше сказать, устраняет некоторые активированные клетки (клетки, прошедшие через активационный слой). Это необходимо сделать, чтобы не допустить перенапряжения. Сеть с переобучением не сможет отличить особенности от другого изображения одного и того же объекта. CNN должна работать в надежной среде, поэтому отключение становится необходимым. Dropout в основном выбирается от 0,2 до 0,8. Dropout удаляет нейроны случайным образом на основе параметров, предоставленных пользователем, таких как 0,4 и т. д.

Рассмотрим пример, в котором у вас есть 20 файлов cookie, и 8 из них являются половинными. Сеть с переобучением распознает только файлы cookie полного круга. Неоперившийся CNN подберет почти каждый файл cookie из 8. При отбрасывании некоторые файлы cookie, которые являются либо циклическими, либо полупериодными, будут удалены, т. е. удалены случайным образом и переобучены. Это повышает качество сети.

Понравился мой пост? Поделись хлопком.

Я что-то пропустил? Пожалуйста, не стесняйтесь исправлять меня.

Первоначально опубликовано на www.hellocodings.com.