Итак, я сделал сообщение о понимании обратного распространения на Max Pooling Layer, а также Transpose Convolution. Следующим шагом будет использование этих знаний для создания многоканальной / многоуровневой CNN, так что… .lets это сделают! Кроме того, к вашему сведению, я использую оптимизатор импульса.

Прежде чем читать этот пост, я рекомендую прочитать этот вопрос Quora: « Почему Джеффри Хинтон с подозрением относится к обратному распространению и хочет, чтобы ИИ начал все сначала? » или это сообщение в блоге « Почему мы должны быть такими? С большим подозрением относится к обратному распространению ». Оба очень интересны.

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

Данные для обучения и объявление гиперпараметров

Как видно выше, все ядра представляют собой (3 * 3) матрицу, и мы выполняем очень простую двоичную задачу по набору данных Распознавание рукописных цифр только для изображений 0 и 1.

Сетевая архитектура

Вход → Изображение, имеющее размер (8 * 8)

Красная звезда → Уровень 1 с двумя разными каналами
Красный круг → Активация и максимальный уровень объединения, примененный к уровню 1

Голубая звезда → Уровень 2 с четырьмя разностными каналами
Синий круг → Операция активации и максимального объединения, примененная к уровню 2

Зеленая звезда → Уровень 3 с полностью присоединенным грузом (W3) Размер (16 * 28)
Зеленый круг → Функция активации применима к уровню 3

Розовая звезда → Слой 4 с полностью присоединенным грузом (W4) Размер (28 * 36)
Розовый кружок → Слой активации, примененный к слою 4

Черная звезда → Слой 5 с полностью присоединенным грузом (W5) Размер (36 * 1)
Черный круг → Слой активации, примененный к слою 5

Черный ящик → Функция стоимости с использованием нормы L2

Операция прямой подачи реализована

Каждый цвет представляет работу этого слоя, здесь следует отметить две вещи.

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

Реализовано обратное распространение в соответствии с W5, W4 и W3

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

Реализовано обратное распространение по отношению ко всем W2 (W2a, W2b, W2c и W2d)

Первая строка кода (подчеркнутый зеленый) → Распространение назад от предыдущего слоя
Область в зеленой рамке → Расчет градиента для W2a, W2b, W2c и W2d в их соответствующем порядке.

Реализовано обратное распространение для всех W1 (W1a и W1b)

Первая красная рамка → Градиент в соответствии с W1a
Вторая красная рамка → Градиент в соответствии с W2a

Обучение и результаты

Довольно хорошие результаты, итоговые результаты не так уж и плохи. Как видно выше, количество эпох было установлено на 500. И Сеть классифицировала каждое изображение в тестовом наборе, кроме одного.

Преодоление математики в обратном распространении

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

Синяя линия → Простой элемент Мудрое умножение
Зеленая линия → Выполнение транспонирования только для вычисленной производной после максимального уровня объединения
Красная линия → Выполнение транспонирования только для маски максимального уровня объединения.

Для простоты я буду называть вышеуказанную сеть разорванной сетью опоры.

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

Результат 1: обе сети имеют размерность W3 (16 * 18), W4 (18 * 20) и W5 (20,1)

Красный ящик → Результат сломанной задней опорной сети.
Синяя рамка → Результат исходной сети

Как видно, для первого эксперимента обе сети имели точность 100 на тестовых данных, однако разорванная сеть имела более низкую стоимость в эпоху 250.

Результат 2: обе сети имеют размерность W3 (16 * 48), W4 (48 * 56) и W5 (56,1)

Красный прямоугольник → Результат разорванной сети
Синий ящик → Результат исходной сети
Зеленая звезда → Ошибочные предсказания сети

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

Результат 3: забыли размер веса (LOL), но у них был одинаковый размер для обеих сетей.

Красный ящик → Результат разорванной сети
Синий ящик → Результат исходной сети

Опять же, обе сети имели точность 100 на тестовых данных. В то время как Broken Net имеет более высокую стоимость.

Интерактивный код: исходная сеть

Примечание: онлайн-компилятор не имеет «наборов данных импорта из sklearn», поэтому я не смог просто скопировать и вставить код, который я использовал на своем ноутбуке. Поэтому я скопировал четыре обучающих примера, которые представляют рукописную цифру 0,1,1,0 в соответствующем порядке, а также скорректировал гиперпараметры.

Чтобы получить доступ к исходному сетевому коду, нажмите на эту ссылку.

Интерактивный код: разорванная сеть

Примечание: онлайн-компилятор не имеет «наборов данных импорта из sklearn», поэтому мне не удалось просто скопировать и вставить код, который я использовал на своем ноутбуке. Поэтому я скопировал четыре обучающих примера, которые представляют рукописную цифру 0,1,1,0 в соответствующем порядке, а также скорректировал гиперпараметры.

Чтобы получить доступ к неработающему сетевому коду, нажмите здесь.

Заключительные слова

Подобные результаты меня восхищают, и это причина, по которой я делаю обратное распространение вручную. Даже доктор Хинтон с подозрением относится к обратному распространению и хочет, чтобы ИИ начал все сначала. Вы, я не знаю, как начинать с LOL, но я думаю, что для нас очень важно получить более глубокое понимание обратного распространения и попробовать творческие методы, чтобы увидеть, работают ли другие методы как хорошая обратная опора.

Если будут обнаружены какие-либо ошибки, напишите мне по адресу [email protected].

Тем временем подпишитесь на меня в моем твиттере здесь и посетите мой веб-сайт или мой канал Youtube для получения дополнительной информации. Я также сделал сравнение Decoupled Neural Network здесь, если вам интересно.

Ссылки

  1. Перес, К. Э. (2017, 16 сентября). Почему мы должны с большим подозрением относиться к обратному распространению. Получено 29 января 2018 г. с сайта «https://medium.com/intuitionmachine/the-deeply-suspicious-nature-of-backpropagation-9bed5e2b085 effe.
  2. Распознавание рукописных цифр¶. (нет данных). Получено 29 января 2018 г. с сайта http://scikit-learn.org/stable/auto_examples/classification/plot_digits_classification.html.
  3. Бхатия, Р. (18 января 2018 г.). Обратное распространение: Ахиллесова пята современного ИИ. Получено 29 января 2018 г. с сайта https://analyticsindiamag.com/back-propagation-is-it-the-achilles-heel-of-todays-ai/.
  4. 2018. [Онлайн]. Доступно: https://www.quora.com/Why-is-Geoffrey-Hinton-suspicious-of-backpropagation-and-wants-AI-to-start-over. [Доступ: 29 января 2018 г.].

Эта история опубликована в The Startup, крупнейшем предпринимательском издании Medium, за которым следят более 298 432 человека.

Подпишитесь, чтобы получать наши главные новости здесь.