Модель Google Inception: почему существует несколько softmax?

13

Топологию модели Google Inception можно найти здесь: Google Inception Netowrk

Я заметил, что в этой модели есть 3 слоя softmax (# 154, # 152, # 145), и 2 из них являются своего рода ранним выходом из этой модели.

Из того, что я знаю, слой softmax предназначен для окончательного вывода, так почему их так много? какова цель другого 2 слоя?

skywalkerytx
источник

Ответы:

27

Краткий ответ: Глубокие архитектуры и, в частности, GoogLeNet (22 слоя) находятся под угрозой исчезающей проблемы градиентов во время обучения (алгоритм обратного распространения). Инженеры GoogLeNet решили эту проблему, добавив классификаторы и в промежуточные слои, так что окончательная потеря представляет собой комбинацию промежуточной потери и окончательной потери. Вот почему вы видите в общей сложности три слоя потерь, в отличие от обычного одиночного слоя в качестве последнего уровня сети.

Более длинный ответ: в классическом машинном обучении обычно проводится различие между характеристикой и классификацией. Нейронные сети наиболее известны своей способностью решать задачи «конец в конец», то есть они сочетают в себе этапы изучения представления данных и подготовки классификатора. Таким образом, вы можете думать о нейронной сети со стандартной архитектурой (например, AlexNet) как состоящей из фазы «обучения представлению» (от уровней до предыдущего до последнего) и фазы «классификации», которая, как ожидается, включает функция потерь.

При создании более глубоких сетей возникает проблема, придуманная как проблема «исчезающих градиентов». Это на самом деле не характерно для нейронных сетей; скорее к любым градиентным методам обучения. Это не так тривиально и поэтому заслуживает надлежащего объяснения для себя; смотрите здесь для хорошей ссылки. Интуитивно, вы можете думать о градиентах, несущих все меньше и меньше информации, чем глубже мы идем внутри сети, что, конечно, вызывает серьезную озабоченность, поскольку мы настраиваем параметры (веса) сети, основываясь исключительно на градиентах, используя «back-prop» "алгоритм.

Как разработчики GoogLeNet справились с этой проблемой? Они признали тот факт, что не только свойства конечных слоев несут всю дискриминационную информацию: промежуточные функции также способны различать различные метки; и, что наиболее важно, их значения являются более «надежными», поскольку они извлекаются из более ранних слоев, в которых градиент несет больше информации. Опираясь на эту интуицию, они добавили «вспомогательные классификаторы» в двух промежуточных слоях. Это является причиной появления «ранних побегов» в середине сети, на которые вы ссылались в своем вопросе.

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

Эти классификаторы принимают форму меньших сверточных сетей, размещенных поверх выходных данных модулей Inception (4a) и (4d). Во время обучения их потеря добавляется к общей потере сети с дисконтированным весом (потери вспомогательных классификаторов были взвешены на 0,3). Во время вывода эти вспомогательные сети отбрасываются.

Визуально:

введите описание изображения здесь

galoosh33
источник
1
«... более ранние слои, в которых градиент несет больше информации» - почему это так?
максимум
2

В дополнение к ответу @ galoosh33: мне кажется, что вспомогательные классификаторы используют те же метки, что и конечный классификатор выходных данных. Источник: слайд 34 в https://pdfs.semanticscholar.org/0b99/d677883883584d9a328f6f2d54738363997a.pdf

Ранее я задавался вопросом, используют ли эти вспомогательные классификаторы другой тип ярлыков (например, просто собака вместо сибирской хаски).

gebbissimo
источник