- PVSM.RU - https://www.pvsm.ru -
Продолжаю рассказывать про жизнь Inception architecture — архитеткуры Гугла для convnets.
(первая часть — вот тут [1])
Итак, проходит год, мужики публикуют успехи развития со времени GoogLeNet.
Вот страшная картинка как выглядит финальная сеть:

Что же за ужас там происходит?
Disclaimer: пост написан на основе отредактированных логов чата closedcircles.com [2], отсюда и стиль изложения, и уточняющие вопросы.
В этот раз авторы пытаются сформулировать какие-то основные принципы построения архитектуры эффективных сетей (собственно статья — http://arxiv.org/abs/1512.00567 [3]).
(напомню, цель Inception architecture — быть прежде всего эффективной в вычислениях и количестве параметров для реальных приложений, за то и любим)
Принципы они формулируют следующие:
Напомню, прошлая версия кирпичика построения сети выглядела вот так:

Во-первых, замечаем, что можно заменить большой и жырный 5x5 convolution на два последовательных по 3x3, и мол так как сигналы скоррелированы, немного потеряем. Экспериментально оказывается, что делать между этими 3x3 нелинейность лучше, чем не делать.

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


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

И так как после пула количество фич типично раза в два увеличивается, боттлнека не будет. Пул сожмет предыдущий не уменьшая количество фич, некоторые convolutions будут прогнаны в полном разрешении, но с количеством фич поменьше. Нетворк научится разделять, что требует полного разрешения, а для чего достаточно пула.
И вот сеть — это несколько ранних convolutions, а потом вот такие кирпичики, перемежающиеся пулом. Всего в сети 11 inception layers.
Отсюда и тот ужас на первом рисунке.
Еще они обнаружили, что дополнительные классификаторы по бокам не сильно-то ускоряют тренировку, а скорее помогают, потому что работают как регуляризаторы — когда они к ним подключили Batch Normalization, сеть стала предсказывать лучше.
Они предлагают еще один трюк для дополнительной регуляризации — так называемый label smoothing.
Идея вкратце такая: обычно target label для конкретного сэмпла это 1 там где класс правильный, и 0 где класс неправильный.
Это означает, что если нетворк уже очень уверен в правильности класса, градиент все равно будет толкать в увеличение и увеличение этой уверенности, потому что 1 наступает только на бесконечности из-за softmax, что ведет к оверфиттингу.
Они предлагают смешивать one-off target с распределением пропорциональным тупо распределению классов по датасету, чтобы в других классах были не нули, а какие-то маленькие значения. Это дает выиграть еще процентик чтоли, то есть немало.
И вот вся эта машинерия жрет в 2.5 раз больше вычислительных ресурсов, чем Inception-v1 и достигает значительно лучших результатов.
Они называют основную архитектуру Inception-v2, а версию, где дополнительные классификаторы работают с BN — Inception-v3.
Вот эта Inception-v3 достигает 4.2% top5 classification error на Imagenet, а ансамбль из четырех моделей — 3.58%.
И вот с этим добром мужики из Гугла собрались выиграть Imagenet в 2015-м.
Однако, случились ResNets и выиграли Kaiming He сотоварищи из Microsoft Research Asia с результатом… 3.57%!!!
(надо отметить, что в object localization результат у них принципиально лучше)
Но про ResNets я видимо в другой раз расскажу.
интересно средний хомо сапиенс какую ошибку покажет на этих картинках.
Единственный широко обсуждающийся эксперимент был проведен Andrey "наше все" Karpathy.
http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/ [4]
Он протестировал себя на какой-то части датасета и у него получилось 5.1%.
Это тоже top5, но может человеку сложнее top5 выбирать.
Кстати можно самому провериться — http://cs.stanford.edu/people/karpathy/ilsvrc/ [5]
И это реально сложно. Покажут тебе какой-то подвид средиземноморского зяблика и гадай.
Автор: sim0nsays
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/google/124298
Ссылки в тексте:
[1] тут: https://habrahabr.ru/post/301084/
[2] closedcircles.com: http://closedcircles.com/?invite=99b1ac08509c560137b2e3c54d4398b0fa4c175e
[3] http://arxiv.org/abs/1512.00567: http://arxiv.org/abs/1512.00567
[4] http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/: http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/
[5] http://cs.stanford.edu/people/karpathy/ilsvrc/: http://cs.stanford.edu/people/karpathy/ilsvrc/
[6] Источник: https://habrahabr.ru/post/302242/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.