Введение в Alexnet и ZFNet

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

Пока я все еще изучаю эту тему, я был очень увлечен свёрточными нейронными сетями. После того, как я погрузился в нейронные сети с прямой связью, у меня в голове возник вопрос: почему мы собираемся переходить на CNN, если эти сети с прямой связью настолько интересны, и они способны выполнять классификации .. ? На самом деле я не собирался изучать CNN, но все же взял ручку и бумагу и начал проводить исследования для CNN через Интернет. Все, что я хотел знать, это , почему они так популярны и чем они лучше, чем у FFN? Итак, я начал читать эту статью в сети. К моему интересу, я хотел узнать больше о CNN, и через несколько недель я расскажу вам, почему они являются такой интересной темой.

Если у нас есть изображение в качестве входных данных, каждый и каждый пиксель будет иметь разный вес, связанный с ним, и с ним будут связаны три значения (значения rgb). Итак, мы можем применить к ним сети прямого распространения, но если будет введено стандартное изображение, скажем, размером 227 * 227, то количество параметров станет 227 * 227 * 3. Примерно с изображением будет связано 10⁴ весов. Таким образом, на одном слое сети потребуется 10⁴ нейронов, что действительно несовместимо и утомительно. Следовательно, в одной сети прямого распространения потребуются миллионы параметров и нейронов, поэтому они несовместимы для обработки изображений. В CNN ядро ​​построено (ядро - это, по сути, матрица весов), и веса распределяются по мере того, как ядро ​​перемещается по горизонтали и вертикали поперек и изображения. Операция maxpooling напрямую сокращает количество параметров вдвое. Затем есть понятие отступы и шаг, которые дополнительно уменьшают размер параметра изображения.

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

Давайте обсудим два старых, но интересных заранее построенных канала CNN:

AlexNet

Структура дает в общей сложности 27,55 миллиона параметров, из которых 24 миллиона создаются только из последних трех полностью связанных слоев, а остальные - из сети Convolution за ним. По мере продолжения работы размер ядра уменьшился или остался прежним. Всего 96 параметров находятся в первом слое свертки, и каждый из них перемещается по горизонтали и вертикали через 2-мерный входной слой. Размер ядра 11 * 11 означает, что мы захватываем большую область пикселей в изображении. Что касается параметров, не существует подходящего метода, чтобы определить, почему мы используем именно эти параметры. Глубокое обучение - это пробный процесс, в ходе которого мы проверяем точность и сохраняем параметры там, где точность высока.

Уровень ошибок в этой сети составляет 16,4%.

Обучение AlexNet длилось 6 дней одновременно на двух графических процессорах Nvidia Geforce GTX 580, поэтому сеть разделена на два конвейера. Разве это не здорово. .: D

Подробнее об AlexNet: Только глубокое обучение!

ZFNet

Структура ZFNet похожа на структуру AlexNet, но с другими параметрами на некоторых уровнях. ZFNet выбрала меньшее количество пикселей из изображения, чтобы размер первого ядра был 7 * 7, в отличие от 11 * 11 в AlexNet. Размер ядра уменьшается или остается неизменным по мере продвижения в сети. Всего в сети 8 слоев, 5 сверточных слоев и 3 полностью связанных слоя. Слой maxpooling не считается другим уровнем, поскольку с ним не связаны никакие параметры.

Эта архитектура победила в конкурсе ImageNet в 2013 году, показав уровень ошибок 14,8%.

Подробнее о ZFNet и конкурсе: Просто глубокое обучение!

Глубокое обучение - интересная и замечательная область, в которой можно покопаться. Поэтому я настоятельно рекомендую людям, которые хотят начать работу с Машинным обучением или # 100DaysofMLCode сначала изучить Глубокое обучение, потому что вы действительно сможете понять значение и работу алгоритмов и процессов, которые происходят за простыми вызовами функций в ML.

Машинное обучение превращается в кусок пирога после того, как вы закончите с глубоким обучением! :)

Удачного обучения и тестирования!