Понимание CNN

Понимание LeNet: 3-минутный обзор

В этой статье мы представляем краткий обзор LeNet, группы CNN, разработанной Яном Ле-Куном и другими в конце 1990-х.

Что такое Ленет?

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

Было ли несколько версий LeNet?

Определенно! Скорее всего, если вы слышали о LeNet раньше, вы, вероятно, только что услышали о LeNet-5. Это потому, что это была самая популярная версия LeNet. Однако LeNet состояла из трех сетей, и это были:

  1. LeNet-1 (пять слоев): простая CNN.
  2. LeNet-4 (шесть слоев): значительное улучшение по сравнению с LeNet-1.
  3. LeNet-5 (семь слоев): Заметное улучшение по сравнению с LeNet-4 и самый популярный.

Архитектура Ленет-1

LeNet-1 содержал пять слоев, которые были определены следующим образом:

  1. Слой C1: слой свертки (num_kernels=4, kernel_size=5×5, padding=0, step=1)
  2. Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  3. Слой C3: слой свертки (num_kernels=12, kernel_size=5×5, padding=0, шаг=1)
  4. Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  5. Слой F5: Полностью связанный слой (out_features=10)

Архитектура Ленет-4

LeNet-4 содержал шесть слоев, которые были определены следующим образом:

  1. Слой C1: слой свертки (num_kernels=4, kernel_size=5×5, padding=0, step=1)
  2. Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  3. Слой C3: слой свертки (num_kernels=16, kernel_size=5×5, padding=0, шаг=1)
  4. Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  5. Слой F5: Полностью связанный слой (out_features=120)
  6. Слой F6: Полностью связанный слой (out_features=10)

Архитектура Ленет-5

LeNet-5 содержал семь слоев, которые были определены следующим образом:

  1. Слой C1: слой свертки (num_kernels=6, kernel_size=5×5, padding=0, step=1)
  2. Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  3. Слой C3: слой свертки (num_kernels=16, kernel_size=5×5, padding=0, шаг=1)
  4. Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
  5. Слой F5: Полностью связанный слой (out_features=140)
  6. Слой F6: Полностью связанный слой (out_features=84)
  7. Слой F7: Полностью связанный слой (out_features=10)

Был ли Ленет хоть чем-то хорош?

Утвердительный! LeNet показала хорошие результаты при обучении с помощью небольших черно-белых изображений, подобных тем, которые можно найти в наборе данных MNIST. Однако у алгоритмов было несколько ограничений:

  1. Они были маленькими и работали только с черно-белыми изображениями, поэтому было ограниченное количество приложений, в которых они работали правильно.
  2. Они использовали средний пул, в то время как большинство современных сетей реализуют максимальный пул. Максимальное объединение обеспечивает более быструю сходимость при обучении.
  3. Они использовали активацию tanh, в то время как большинство современных сетей реализуют активацию ReLu. Активация ReLu обычно приводит к более высокой точности классификации.

Что такое TLDR?

  • Они работали с одноканальными изображениями размером (28 × 28) или (32 × 32) и классифицировали изображения по одному из десяти классов.
  • Они использовали средний пул, а не максимальный пул для подвыборки с (2×2) ядрами. Они также использовали ядра (5 × 5) для сверток вместе с функциями активации tanh.
  • Они были обучены путем оптимизации среднеквадратичной ошибки (MSE), а LeNet-5 включал обучаемый коэффициент и смещение для некоторых операций подвыборки.

Что дальше?

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