Понимание CNN
Понимание LeNet: 3-минутный обзор
В этой статье мы представляем краткий обзор LeNet, группы CNN, разработанной Яном Ле-Куном и другими в конце 1990-х.
Что такое Ленет?
LeNet была группой сверточных нейронных сетей (CNN), разработанных Яном Ле-Куном и другими в конце 1990-х годов. Сети считались первым набором настоящих сверточных нейронных сетей. Они были способны классифицировать небольшие одноканальные (черно-белые) изображения с многообещающими результатами.
Было ли несколько версий LeNet?
Определенно! Скорее всего, если вы слышали о LeNet раньше, вы, вероятно, только что услышали о LeNet-5. Это потому, что это была самая популярная версия LeNet. Однако LeNet состояла из трех сетей, и это были:
- LeNet-1 (пять слоев): простая CNN.
- LeNet-4 (шесть слоев): значительное улучшение по сравнению с LeNet-1.
- LeNet-5 (семь слоев): Заметное улучшение по сравнению с LeNet-4 и самый популярный.
Архитектура Ленет-1
LeNet-1 содержал пять слоев, которые были определены следующим образом:
- Слой C1: слой свертки (num_kernels=4, kernel_size=5×5, padding=0, step=1)
- Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой C3: слой свертки (num_kernels=12, kernel_size=5×5, padding=0, шаг=1)
- Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой F5: Полностью связанный слой (out_features=10)
Архитектура Ленет-4
LeNet-4 содержал шесть слоев, которые были определены следующим образом:
- Слой C1: слой свертки (num_kernels=4, kernel_size=5×5, padding=0, step=1)
- Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой C3: слой свертки (num_kernels=16, kernel_size=5×5, padding=0, шаг=1)
- Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой F5: Полностью связанный слой (out_features=120)
- Слой F6: Полностью связанный слой (out_features=10)
Архитектура Ленет-5
LeNet-5 содержал семь слоев, которые были определены следующим образом:
- Слой C1: слой свертки (num_kernels=6, kernel_size=5×5, padding=0, step=1)
- Слой S2: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой C3: слой свертки (num_kernels=16, kernel_size=5×5, padding=0, шаг=1)
- Слой S4: Средний слой пула (kernel_size=2×2, padding=0, шаг=2)
- Слой F5: Полностью связанный слой (out_features=140)
- Слой F6: Полностью связанный слой (out_features=84)
- Слой F7: Полностью связанный слой (out_features=10)
Был ли Ленет хоть чем-то хорош?
Утвердительный! LeNet показала хорошие результаты при обучении с помощью небольших черно-белых изображений, подобных тем, которые можно найти в наборе данных MNIST. Однако у алгоритмов было несколько ограничений:
- Они были маленькими и работали только с черно-белыми изображениями, поэтому было ограниченное количество приложений, в которых они работали правильно.
- Они использовали средний пул, в то время как большинство современных сетей реализуют максимальный пул. Максимальное объединение обеспечивает более быструю сходимость при обучении.
- Они использовали активацию tanh, в то время как большинство современных сетей реализуют активацию ReLu. Активация ReLu обычно приводит к более высокой точности классификации.
Что такое TLDR?
- Они работали с одноканальными изображениями размером (28 × 28) или (32 × 32) и классифицировали изображения по одному из десяти классов.
- Они использовали средний пул, а не максимальный пул для подвыборки с (2×2) ядрами. Они также использовали ядра (5 × 5) для сверток вместе с функциями активации tanh.
- Они были обучены путем оптимизации среднеквадратичной ошибки (MSE), а LeNet-5 включал обучаемый коэффициент и смещение для некоторых операций подвыборки.
Что дальше?
Вы можете узнать больше о LeNet, прочитав подробное пошаговое руководство, которое я сделал по ссылке ниже.