Эволюция Нейронных Сетей Для Распознавания Изображений В Google: Inception-V3

Продолжаю рассказывать о жизни архитектуры Inception — архитектуры Google для сетей.

(первая часть - здесь здесь ) Итак, проходит год, ребята публикуют успехи разработки со времен GoogLeNet. Вот устрашающая картина того, как выглядит окончательная сеть:

Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3

Что за ужас там творится? Отказ от ответственности: этот пост основан на отредактированных журналах чата.

closecircles.com , отсюда и стиль изложения и уточняющих вопросов.

На этот раз авторы пытаются сформулировать некоторые основные принципы построения архитектуры эффективных сетей (сама статья http://arxiv.org/abs/1512.00567 ).

(напомню, что цель архитектуры Inception — это, прежде всего, эффективность вычислений и количества параметров для реальных приложений, за это мы ее и любим) Они формулируют следующие принципы:

  • Многие сигналы расположены близко друг к другу в пространстве (т.е.

    в соседних «пикселях»), и это можно использовать для создания свёрток меньшего размера.

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

  • Чтобы эффективно использовать ресурсы, вам необходимо увеличить как ширину, так и глубину сети.

    Те.

    если, например, ресурсов в два раза больше, эффективнее всего сделать слои шире, а сеть глубже.

    Если вы сделаете это только глубже, это будет неэффективно.

  • Плохо иметь острые узкие места, то есть линию жизни с резким снижением параметров, особенно в начале.

  • «Широкие» слои обучаются быстрее, что особенно важно на высоких уровнях (но локально, т.е.

    после них вполне возможно уменьшить размерность)

Напомню, что предыдущий вариант кирпичика построения сети выглядел так:

Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3



Какие изменения они вносят в него?

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

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

  • Во-вторых , раз уж это такая пьянка, давайте заменим 3х3 на 3х1+1х3.


Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3

Здесь мы обнаруживаем, что свертки становятся дешевыми, и тогда почему бы не сделать 3x1 + 1x3, а просто nx1 + 1xn! И они это делают, вплоть до 7, хотя и не в начале сетки.

Со всеми этими улучшениями основной кирпичик становится таким:

Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3

  • Третий Следуя заповеди «не создавайте узких мест», они задумываются об объединении.

    Какая проблема с пулом.

    Пусть пул уменьшит изображение вдвое, а количество фич после пула будет в два раза больше.

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

    Вот варианты на картинке:



Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3

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

Поэтому они предлагают гибридную схему — давайте сделаем половину пула функций и половину свертки.



Эволюция нейронных сетей для распознавания изображений в Google: Inception-v3

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

Сеть научится разделять то, что требует полного разрешения, и то, для чего достаточно пула.

  • Окончательно , немного модифицируют кирпич для последних реек, чтобы он был шире, хотя и менее глубоким.

    Чтобы пирс лучше учился, в конце сети это важнее всего.

И так сеть состоит из нескольких ранних сверток, а затем этих кирпичиков вперемежку с пулом.

Всего в сети имеется 11 начальных уровней.

Отсюда и ужас на первой картинке.

Они также обнаружили, что дополнительные классификаторы по бокам не сильно ускоряют обучение, а скорее помогают, поскольку работают как регуляризаторы — когда к ним подключили Batch Normalization, сеть стала лучше прогнозировать.



Что еще.

Они предлагают еще один прием для дополнительной регуляризации — так называемую сглаживание меток .

Вкратце идея такова: обычно целевая метка для конкретного образца равна 1, если класс правильный, и 0, если класс неправильный.

Это означает, что если сеть уже очень уверена в правильности класса, градиент все равно будет подталкивать к увеличению и увеличению этой уверенности, потому что 1 возникает только на бесконечности из-за softmax, что приводит к переобучению.

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

Это позволяет выиграть еще процент, то есть много.



Общий

И вся эта техника потребляет в 2,5 раза больше вычислительных ресурсов, чем Inception-v1, и дает существенно лучшие результаты.

Основную архитектуру они называют Inception-v2, а версию, где с BN работают дополнительные классификаторы — Inception-v3. Ошибка классификации Inception-v3 в топ-5 на Imagenet составляет 4,2%, а ансамбль из четырех моделей достигает 3,58%.

И благодаря этому добру ребята из Google решили выиграть Imagenet в 2015 году.

Однако случился ResNets и товарищи Kaiming He из Microsoft Research Asia победили с результатом.

3,57%!!! (следует отметить, что при локализации объектов результат принципиально лучше) Но о ResNets я, пожалуй, расскажу в другой раз.

Интересно, какую ошибку докажет на этих картинках среднестатистический homo sapiens? Единственный широко обсуждаемый эксперимент провёл Андрей «наше всё» Карпаты.

http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/ Он проверил себя на какой-то части набора данных и получил 5,1%.

Это тоже топ5, но человеку может быть сложнее выбрать топ5. Кстати, вы можете проверить это сами - http://cs.stanford.edu/people/karpathy/ilsvrc/ И это действительно сложно.

Они покажут вам какой-нибудь подвид средиземноморского вьюрка и отгадают.

Теги: #глубокое обучение #Google #CNN #классификация изображений #обработка изображений #машинное обучение
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.