Уже существует множество обзоров литературы о LeNet, которая представляет собой классическую сверточную нейронную сеть с глубоким обучением для классификации изображений. Но большинство из них просто рассматривают одну из версий, то есть LeNet-5. LeNet-1, LeNet-4 и Boosted LeNet-4 обычно игнорируются. В этом рассказе я сделаю краткий обзор сетевых архитектур:

  1. Базовый линейный классификатор
  2. Полностью подключенная многослойная сеть с одним скрытым слоем
  3. Полностью подключенная многослойная сеть с двумя скрытыми слоями
  4. LeNet-1
  5. LeNet-4
  6. LeNet-5
  7. Улучшенный LeNet-4

Архитектура и исполнение представлены в этом рассказе.

Это журнал 1998 г. Proceedings of the IEEE с около 14000 цитирований, когда я писал этот рассказ. Хотя это и с 1998 года, он начинается с основ нейронной сети, которая представляет собой документ, который дает хорошее начало изучению глубокого обучения. Глядя на развитие архитектуры нейронной сети и снижение количества ошибок, мы можем легко узнать важность или влияние добавления компонентов глубокого обучения в сеть. (Сик-Хо Цанг @ средний)

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

1. Базовый линейный классификатор

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

Таким образом, частота ошибок для тестовых данных составляет 8,4%.

2. Полностью подключенная многослойная сеть с одним скрытым слоем

Добавив один скрытый слой между входным и выходным слоями, с 300 нейронами на скрытом слое, т. Е. сеть 20 × 20–300–10, коэффициент ошибок на тестовые данные - 3,6%. При 1000 нейронов на скрытом уровне, то есть в сети 20 × 20–1000–10, коэффициент ошибок для тестовых данных составляет 3,8%.

3. Двухслойная полностью связная многослойная сеть с двумя скрытыми слоями

Если добавить два скрытых слоя между входным и выходным слоями, сеть 28 × 28–300–100-10, коэффициент ошибок для тестовых данных составит 3,05. %.
Сеть 28 × 28–1000–150–10, частота ошибок для тестовых данных составляет 2,95%.

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

4. LeNet-1

В Lenet-1:
входное изображение 28 × 28 ›
Сверточный слой четырех векторных карт 24 × 24 (размер 5 × 5)›
Среднее объединение слоев (размер 2 × 2) ›
Сверточный слой восьми 12 × 12 карт объектов (размер 5 × 5)›
Средние слои объединения (размер 2 × 2) ›
Непосредственно полностью подключены к вывод

С введенными слоями свертки и подвыборки / объединения LeNet-1 получил коэффициент ошибок 1,7% на тестовых данных.

Следует отметить, что на момент изобретения LeNet авторы использовали средний слой объединения, выводили средние значения карт характеристик 2 × 2. Прямо сейчас во многих реализациях LeNet используется максимальный пул, который выводит только максимальное значение из 2 × 2 карт функций, и оказывается, что это может помочь ускорить обучение. Поскольку выбран самый сильный элемент, при обратном распространении может быть получен больший градиент.

5. LeNet-4

В Lenet-4
входное изображение 32 × 32 ›
Четыре сверточных слоя 28 × 28 карт объектов (размер 5 × 5)›
Среднее объединение слои (размер 2 × 2) ›
Шестнадцать сверточных слоев 10 × 10 карт объектов (размер 5 × 5)›
Среднее объединение слоев (размер 2 × 2) ›
Полностью подключено к 120 нейронам ›
Полностью подключено к 10 выходам

При большем количестве карт объектов и еще одном полностью подключенном слое коэффициент ошибок составляет 1,1% для тестовых данных.

6. LeNet-5

LeNet-5, наиболее популярный из тех, о которых говорили люди LeNet, имеет лишь небольшие отличия от LeNet-4.

Входное изображение 32 × 32 ›
Шесть сверточных слоев 28 × 28 карт объектов (размер 5 × 5)›
Среднее объединение слоев (размер 2 × 2) ›< br /> Шестнадцать сверточных слоев 10 × 10 карт объектов (размер 5 × 5) ›
Среднее объединение слоев (размер 2 × 2)›
Полностью подключено к 120 нейронам ›
Полностью подключено к 84 нейроны ›
Полностью подключены к 10 выходам

При большем количестве карт объектов и еще одном полностью подключенном слое коэффициент ошибок составляет 0,95% по тестовым данным.

7. Ускоренный LeNet-4

Повышение - это метод объединения результатов нескольких / многих слабых классификаторов для получения более точных результатов. В LeNet-4 выходы трех LeNet-4 просто складываются вместе, и тот, у которого есть максимальное значение, будет прогнозируемым классом классификации. И есть улучшение, заключающееся в том, что, когда первая сеть имеет ответ с высокой степенью достоверности, другие сети не вызываются.

При повышении коэффициент ошибок для тестовых данных составляет 0,7%, что даже меньше, чем у LeNet-5.

Этот метод усиления использовался годами до сих пор.

8. Резюме по частоте ошибок

  1. Базовый линейный классификатор: 8,4%
  2. Полностью подключенная многослойная сеть с одним скрытым слоем: от 3,6% до 3,8%
  3. Полностью подключенная многослойная сеть с двумя скрытыми слоями: от 2,95% до 3,05%
  4. LeNet-1: 1,7%
  5. LeNet-4: 1,1%
  6. LeNet-5: 0,95%
  7. Повышение эффективности LeNet-4: 0,7%

Мы видим, что частота ошибок снижается при добавлении большего количества компонентов глубокого обучения или некоторых методов машинного обучения.

9. Обсуждения

Фактически, в этих нескольких статьях [1–3] подробно описаны многие базовые техники глубокого обучения. Кроме того, различные версии LeNet также сравниваются с другими традиционными подходами, такими как PCA, k-NN, SVM.

Мы должны отметить следующее:

9.1. Функция активации

Tanh используется как функция активации, за исключением выхода.
Sigmoid используется как функция активации на выходе.
ReLU НЕ использовался в те годы.

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

9. 2. Уровень объединения

Как уже упоминалось, LeNet использовал средний пул вместо максимального.

[В настоящее время] очень распространено максимальное объединение, или даже отсутствие уровней объединения.

9.3. Скрытые слои

Раньше количество скрытых слоев было небольшим, и производительность нельзя было слишком сильно повысить, добавив больше слоев.

[В настоящее время] Это могут быть сотни или тысячи скрытых слоев.

9.4. Тренировочное время

В прежние времена на тренировки уходили дни.

[В настоящее время] Но сейчас это всего лишь небольшая сеть с ускорением на GPU.

10. Выводы

В заключение, статьи LeNet действительно стоит прочитать, особенно новичкам в глубоком обучении.

Если интересно, есть также руководство по быстрой настройке LeNet-5 с использованием Nvidia-Docker и Caffe [4].

использованная литература

  1. [1989 NIPS] [LeNet-1]
    Распознавание рукописных цифр с помощью сети обратного распространения
  2. [1995 ICANN] [LeNet-1, LeNet-4, LeNet-5, Boosted LeNet-4]
    Сравнение алгоритмов обучения для распознавания рукописных цифр
  3. [1998 Proc. IEEE] [LeNet-1, LeNet-4, LeNet-5, Boosted LeNet-4]
    Градиентное обучение, применяемое для распознавания документов
  4. ОЧЕНЬ БЫСТРАЯ НАСТРОЙКА LeNet-5 для классификации рукописных цифр с использованием Nvidia-Docker 2.0 + CUDA + CuDNN + Jupyter Notebook + Caffe