» » Обзор топологий глубоких сверточных нейронных сетей

 

Обзор топологий глубоких сверточных нейронных сетей

Автор: admin от 12-10-2016, 18:55, посмотрело: 2921

Обзор топологий глубоких сверточных нейронных сетей Это будет длиннопост. Я давно хотел написать этот обзор, но sim0nsays меня опередил, и я решил выждать момент, например как появятся результаты ImageNet’а. Вот момент настал, но имаджнет не преподнес никаких сюрпризов, кроме того, что на первом месте по классификации находятся китайские эфэсбэшники. Их модель в лучших традициях кэгла является ансамблем нескольких моделей (Inception, ResNet, Inception ResNet) и обгоняет победителей прошлого всего на полпроцента (кстати, публикации еще нет, и есть мизерный шанс, что там реально что-то новое). Кстати, как видите из результатов имаджнета, что-то пошло не так с добавлением слоев, о чем свидетельствует рост в ширину архитектуры итоговой модели. Может, из нейросетей уже выжали все что можно? Или NVidia слишком задрала цены на GPU и тем самым тормозит развитие ИИ? Зима близко? В общем, на эти вопросы я тут не отвечу. Зато под катом вас ждет много картинок, слоев и танцев с бубном. Подразумевается, что вы уже знакомы с алгоритмом обратного распространения ошибки и понимаете, как работают основные строительные блоки сверточных нейронных сетей: свертки и пулинг.



Переход от нейрофизиологии к компьютерному зрению


Обзор топологий глубоких сверточных нейронных сетей Начать рассказ следовало бы с пионеров области нейронных сетей (не только искусственных) и их вклада: формальной модели нейрона МакКаллока — Питтса, теории обучения Хебба, персептрона Розенблатта, экспериментов Пола Бах-и-Риты и других, но, пожалуй, я оставлю это читателям для самостоятельной работы. Так что предлагаю сразу перейти к Дэвиду Хьюбелу и Торстену Визелю, нобелевским лауреатам 1981 года. Они получили премию за работу, проведенную в 1959 году (в то же время Розенблатт ставил свои эксперименты). Формально премия выдана за «работы, касающиеся принципов переработки информации в нейронных структурах и механизмов деятельности головного мозга». Стоит сразу предостеречь чувствительных читателей: далее будет описан эксперимент над котиками. Модель эксперимента изображена на рисунке ниже: коту на темном экране под различными углами демонстрируется яркий вытянутый движущийся прямоугольник; электрод осциллографа подсоединен к затылочной части головного мозга, где у млекопитающих находится центр обработки визуальной информации. В процессе эксперимента ученые наблюдали следующие эффекты (вы легко найдете аналогии с современными сверточными сетями и рекуррентными сетями):


  • определенные области зрительной коры активируются только тогда, когда линия проецируется на определенную часть сетчатки;

  • уровень активности нейронов области изменяется при изменении угла наклона прямоугольника;

  • некоторые области активируются только тогда, когда объект движется в определенном направлении.



Обзор топологий глубоких сверточных нейронных сетей

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


  • соседние нейроны обрабатывают сигналы с соседних областей сетчатки;

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

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



Обзор топологий глубоких сверточных нейронных сетей

Первым, кто попытался переложить идеи Хьюбела и Визеля в программный код, был Кунихико Фукусима, который в период с 1975 по 1980 годы предложил две модели: когнитрон и неокогнитрон. Эти модели почти повторяли биологическую модель, сегодня простые клетки (simple cells) мы называем свертками, а комплексные клетки (complex cells) — пулингом: это все еще основные строительные блоки современных сверточных нейронных сетей. Модель обучалась не алгоритмом обратного распространения ошибки, а оригинальным эвристическим алгоритмом в режиме без учителя. Можно считать, что именно эта работа стала началом нейросетевого компьютерного зрения.

Gradient-based learning applied to document recognition (1998)



Спустя много лет настал 1998 год. Зима прошла. Ян ЛеКунн, который уже давно побывал постдоком одного из авторов статьи об алгоритме обратного распространения ошибки, публикует работу (в соавторстве с другими корифеями нейронных сетей), в которой смешивает идеи сверток и пулинга с бекпропом, в итоге получая первую работающую сверточную нейронную сеть. Ее внедрили в почту США для распознавания индексов. Эта архитектура была стандартным шаблоном для построения сверточных сетей вплоть до недавнего времени: свертка чередуется с пулингом несколько раз, затем несколько полносвязных слоев. Такая сеть состоит из 60 тысяч параметров. Основные строительные блоки — свертки 5 x 5 со сдвигом 1 и пулинг 2 x 2 со сдвигом 2. Как вы уже знаете, свертки играют роль детекторов признаков, а пулинг (или сабсемплинг) используют для уменьшения размерности, эксплуатируя тот факт, что изображения обладают свойством локальной скоррелированности пикселей — соседние пиксели, как правило, не сильно отличаются друг от друга. Таким образом, если из нескольких соседних получить какой-либо агрегат, то потери информации будут незначительными.

Обзор топологий глубоких сверточных нейронных сетей

ImageNet Classification with Deep Convolutional Neural Networks (2012)



Прошло еще 14 лет. Алекс Крижевский из той же лаборатории, где был постдоком ЛеКун, добавил последние ингредиенты к формуле. Глубокое обучение = модель + теория обучения + большие данные + железо. GPU позволило значительно увеличить количество обучаемых параметров. Модель содержит 60 миллионов параметров, на три порядка больше, для обучения такой модели использовалось два графических ускорителя.

Обзор топологий глубоких сверточных нейронных сетей



С точки зрения топологии сети это почти тот же LeNet, просто увеличенный в тысячу раз. Добавились еще несколько сверточных слоев, а размер ядер свертки уменьшается от входа сети к выходу. Это объясняется тем, что в начале пиксели сильно скоррелированы, и рецепторную область можно смело брать большую, мы все равно теряем мало информации. Далее мы применяем пулинг, тем самым увеличивая плотность некоррелированных участков. На следующем уровне логично взять чуть меньшую рецепторную область. В итоге у авторов получилась такая вот пирамида из сверток 11 x 11 –> 5 x 5 –> 3 x 3…

Также были применены другие трюки для избежания переобучения, и некоторые из них сегодня являются стандартными для глубоких сетей: DropOut (RIP), Data Augmentation и ReLu. Мы не будем заострять внимание на этих трюках, сосредоточимся на топологии модели. Добавлю только, что с 2012 года не нейросетевые модели больше не побеждали в имаджнете.

Обзор топологий глубоких сверточных нейронных сетей

Very Deep Convolutional Networks for Large-Scale Image Recognition (12 Apr 2014)



В этом году вышли две интересные статьи, эта и Google Inception, которую мы рассмотрим ниже. Работа же Оксфордской лаборатории — это последняя работа, придерживающаяся паттерна топологии, заложенного ЛеКуном. Их модель VGG-19 состоит из 144 миллионов параметров и добавляет в архитектуру, помимо 84 миллионов параметров, еще одну простую идею. Возьмем для примера свертку 5 x 5, это отображение Обзор топологий глубоких сверточных нейронных сетей, оно содержит 25 параметров. Если заменить ее стеком из двух слоев со свертками 3 x 3, то мы получим такое же отображение, но количество параметров будет меньше: 3 x 3 + 3 x 3 = 18, а это на 22 % меньше. Если же заменить 11 x 11 на четыре свертки 3 x 3, то это уже на 70 % меньше параметров.

Обзор топологий глубоких сверточных нейронных сетей



Network in Network (4 Mar 2014)



Обзор топологий глубоких сверточных нейронных сетей

А вот тут начинаются танцы с бубном. Такой вот картинкой проиллюстрировал автор публикации свой пост в блоге, где рассказал о Сascaded Сross Сhannel Parameteric pooling. Рассмотрим основные идеи этой статьи. Очевидно, что операция свертки — это линейное преобразование патчей изображения, тогда сверточный слой — это обобщенная линейная модель (GLM). Предполагается, что образы линейно разделимы. Но почему же тогда CNN работает? Все просто: используется избыточное представление (большое количество фильтров), чтобы учесть все вариации одного образа в пространстве признаков. Чем больше фильтров на одном слое, тем больше вариаций нужно учесть следующему слою. Что делать? Давайте заменим GLM чем-нибудь поэффективнее, а самое эффективное, что есть, — однослойный персептрон. Это позволит нам эффективнее разделять пространство признаков, тем самым сократив их количество.

Обзор топологий глубоких сверточных нейронных сетей

Уверен, что вы уже начали сомневаться в целесообразности такого решения, мы и вправду уменьшим количество признаков, но значительно увеличим количество параметров. Авторы говорят, что СССР решит эту проблему. Работает это следующим образом: на выходе из сверточного слоя мы получаем куб размером W x H x D. Для каждой позиции (w, h) возьмем все значения по D, Cross Channel, и посчитаем линейную комбинацию, Parametric pooling, и так будем делать несколько раз, тем самым создавая новый объем, и так несколько раз — Cascade. Оказывается, что это просто свертки 1 x 1 с последующей нелинейностью. Этот трюк идейно такой же, как и в статье VGG про свертки 3 x 3. Получается, что сначала мы предлагаем заменить обычную свертку на MLP, но так как MLP очень дорог, то заменим каждый его полносвязный слой на сверточный слой — такой вот сингапурский трюк. Получается, что NIN — это глубокая сверточная нейронная сеть, а вместо сверток в ней — небольшие сверточные нейронные сети с ядром 1 x 1. В общем, пока они еще не подозревали, какого джинна выпустили.

Обзор топологий глубоких сверточных нейронных сетей

Следующая идея, еще более интересная, заключается в полном отказе от полносвязных слоев — global average pooling. Такую сеть называют fully convolutional network, так как она больше не требует на вход какого-либо определенного размера изображения и состоит только из сверток/пулингов. Допустим, есть задача классификации на N классов, тогда вместо полносвязных слоев используется свертка 1 x 1, для того чтобы из куба W x H x D сделать куб W x H x N, т. е. сверткой 1 x 1 можно изменять произвольно глубину куба признаков. Когда у нас есть N плашек W x H, мы можем вычислить среднее значение плашки и посчитать softmax. Чуть более глубокая идея заключена в утверждении авторов, что раньше сверточные слои выступали просто как механизмы извлечения признаков, а дискриминаторами были полносвязные слои (оттуда и такой паттерн, заданный ЛеКунном). Авторы утверждают, что свертки — это тоже дискриминаторы, так как сеть состоит только из сверток и решает задачу классификации. Стоит заметить, что в сверточных сетях формата LeNet 80 % вычислений приходится на сверточные слои, а 80 % потребления памяти — на полносвязные.

Обзор топологий глубоких сверточных нейронных сетей

Позже ЛеКун напишет у себя в фейсбуке:

In Convolutional Nets, there is no such thing as «fully-connected layers». There are only convolution layers with 1 x 1 convolution kernels and a full connection table.


Жаль только, что авторы, придумавшие столько новых идей, не участвовали в имаджнете. Зато Google вовремя подсуетился и использовал эти идеи в следующей публикации. В итоге гугл разделил призовые места 2014 года с командой из Оксфорда.

Going Deeper with Convolutions (17 Sep 2014)



Обзор топологий глубоких сверточных нейронных сетей

В игру вступает гугл, свою сеть они назвали Inception, название выбрано не случайно, оно как бы продолжает идеи предыдущей работы про «Сеть внутри Сети», а также известного мема. Вот что пишут авторы:

In this paper, we will focus on an efficient deep neural network architecture for computer vision, codenamed Inception, which derives its name from the Network in network paper by Lin et al [12] in conjunction with the famous “we need to go deeper” internet meme [1]. In our case, the word “deep” is used in two different meanings: first of all, in the sense that we introduce a new level of organization in the form of the “Inception module” and also in the more direct sense of increased network depth. In general, one can view the Inception model as a logical culmination of [12] while taking inspiration and guidance from the theoretical work by Arora et al [2].


Произвольное увеличение ширины (количество нейронов в слоях) и глубины (количество слоев) имеет ряд недостатков. Во-первых, увеличение количества параметров способствует переобучению, а увеличение количества слоев добавляет еще и проблему затухания градиента. Кстати, последнее утверждение разрешится ResNet’ом, о которой речь пойдет дальше. Во-вторых, увеличение количества сверток в слое приводит к квадратичному увеличению вычислений в этом слое. Если же новые параметры модели используются неэффективно, например многие из них становятся близки к нулю, тогда мы просто впустую тратим вычислительные мощности. Несмотря на эти проблемы, первый автор стати хотел поэкспериментировать с глубокими сетями, но со значительно меньшим количеством параметров. Для этого он обратился к статье «Provable Bounds for Learning Some Deep Representations», в которой доказывают, что если вероятностное распределение данных можно представить в виде разреженной, глубокой и широкой нейронной сети, тогда можно построить оптимальную нейронную сеть для данного датасета, анализируя корреляции нейронов предыдущего слоя и объединяя коррелированные нейроны в группы, которые будут нейронами следующего слоя. Таким образом, нейроны поздних слоев «смотрят» на сильно пересекающиеся области исходного изображения. Напомню, как выглядят рецепторные области нейронов на разных уровнях и какие признаки они извлекают.











На ранних слоях (ближе к входу) коррелированные нейроны будут концентрироваться в локальных областях. Это значит, что если несколько нейронов в одной координате (w, h) на плашке могут выучить примерно одно и то же, то в тензоре после первого слоя их активации будут располагаться на небольшом регионе в районе некоторой точки (w, h), а распределены будут вдоль размерности банка фильтров — D. Примерно так:

Обзор топологий глубоких сверточных нейронных сетей

Каким же образом поймать такие корреляции и превратить их в один признак? На помощь приходит идея сверток 1 x 1 из предыдущей работы. Продолжая эту идею, можно предположить, что чуть меньшее количество коррелированных кластеров будет чуть большего размера, например 3 x 3. То же самое справедливо для 5 x 5 и т. д., но гугл решил остановиться на 5 x 5.







После вычисления карт признаков для каждой свертки их необходимо каким-либо способом агрегировать, например конкатенировать фильтры.



Кстати, для того чтобы не терять оригинальный образ из предыдущего слоя, помимо сверток добавляются еще пулинг-признаки (мы же помним, что операция пулинга не влечет больших потерь информации). Да и вообще, все юзают пулинг — нет причин от него отказываться. Вся группа из нескольких операций называется Inception block.

Additionally, since pooling operations have been essential for the success in current state of the art convolutional networks, it suggests that adding an alternative parallel pooling path in each such stage should have additional beneficial effect, too.


Обзор топологий глубоких сверточных нейронных сетей

Чтобы выравнять размер выходных тензоров, предложено также использовать свертку 1 x 1, это вы можете видеть на рисунке справа после операции пулинга. Помимо этого, свертки 1 x 1 используются еще и для уменьшения размерности перед энергозатратными операциями свертки. Как вы можете заметить, гугл использует 1 x 1 свертки для достижения таких целей (следующие поколения сетей будут также эксплуатировать эти приемы):

  • увеличения размерности (после операции);

  • уменьшения размерности (до операции);

  • группировки коррелированных значений (первая операция в блоке).



Итоговая модель выглядит следующим образом:

Обзор топологий глубоких сверточных нейронных сетей

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

Rethinking the Inception Architecture for Computer Vision (11 Dec 2015)



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


  • Избегайте representational bottlenecks: не стоит резко снижать размерность представления данных, это нужно делать плавно от начала сети и до классификатора на выходе.

  • Высокоразмерные представления следует обрабатывать локально, увеличивая размерность: недостаточно плавно снижать размерность, стоит использовать принципы, описанные в предыдущей статье, для анализа и группировки коррелированных участков.

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

  • Необходимо соблюдать баланс между глубиной и шириной сети: не стоит резко увеличивать глубину сети отдельно от ширины, и наоборот; следует равномерно увеличивать или уменьшать обе размерности.



Помните идею VGG в 2014 году, что свертки большего размера можно факторизовать в стек сверток 3 x 3? Так вот, гугл пошел еще дальше и факторизовал все свертки в N x 1 и 1 x N.

Обзор топологий глубоких сверточных нейронных сетей



Что же касается бутылочных горлышек, то предлагается следующая схема. Допустим, если входная размерность Обзор топологий глубоких сверточных нейронных сетей, а мы хотим получить Обзор топологий глубоких сверточных нейронных сетей, то мы сначала применяем свертку из Обзор топологий глубоких сверточных нейронных сетей фильтров с шагом 1 и затем делам пулинг. Итоговая сложность такой операции Обзор топологий глубоких сверточных нейронных сетей. Если делать сначала пулинг, а затем свертку, то сложность упадет до Обзор топологий глубоких сверточных нейронных сетей, но тогда будет нарушен первый принцип. Предлагается увеличивать количество параллельных веток, делать свертки с шагом 2, но в то же время увеличивать количество каналов в два раза, тогда репрезентативная сила представления уменьшается «плавнее». А для манипулирования глубиной тензора используются свертки 1 x 1.

Обзор топологий глубоких сверточных нейронных сетей

Новую модель называют Inception V2, а если добавить batch normalization, то будет Inception V3. Кстати, убрали дополнительные классификаторы, так как оказалось, что они особо не увеличивают качество, но могут выступать регуляризатором. Но к этому моменту уже были более интересные способы регуляризации.

Deep Residual Learning for Image Recognition (10 Dec 2015)



Пришло время изучить работу китайского подразделения Microsoft Research, которому проиграл гугл в 2015 году. Давно было замечено, что если просто стекать больше слоев, то качество такой модели растет до некоторого предела (смотрите VGG-19), а затем начинает падать. Эту проблему называют degradation problem, а сети, полученные стеканием большего количества слоев, — plain, или плоские сети. Авторы смогли найти такую топологию, при которой качество модели растет при добавлении новых слоев.

Обзор топологий глубоких сверточных нейронных сетей

Достигается это простым, на первый взгляд, трюком, хотя и приводит к неожиданным математическим результатам. Благодаря Арнольду и Колмогорову мы и они в курсе, что нейросеть может аппроксимировать почти любую функцию, например некоторую сложную функцию Обзор топологий глубоких сверточных нейронных сетей. Тогда справедливо, что такая сеть легко выучит residual-функцию (по-русски будем называть ее остаточной функцией): Обзор топологий глубоких сверточных нейронных сетей. Очевидно, что наша первоначальная целевая функция будет равна Обзор топологий глубоких сверточных нейронных сетей. Если мы возьмем некоторую сеть, например VGG-19, и пристекаем к ней еще слоев двадцать, то нам хотелось бы, чтобы глубокая сеть вела себя как минимум не хуже своего неглубокого аналога. Проблема деградации подразумевает, что сложная нелинейная функция Обзор топологий глубоких сверточных нейронных сетей, полученная стеканием нескольких слоев, должна выучить тождественное преобразование, в случае если на предыдущих слоях был достигнут предел качества. Но этого не происходит по каким-то причинам, возможно, оптимизатор просто не справляется с тем, чтобы настроить веса так, чтобы сложная нелинейная иерархическая модель делала тождественное преобразование. А что, если мы поможем ей добавить shortcut-соединение, и, возможно, оптимизатору будет легче сделать все веса близкими к нулю, нежели создавать тождественное преобразование. Наверняка это вам очень напоминает идеи бустинга.

Обзор топологий глубоких сверточных нейронных сетей



Детали построения ResNet-52 на theano/lasagne описаны тут, здесь же упомянем лишь то, что 1 x 1 свертки эксплуатируются для увеличения и уменьшения размерности, как и завещал гугл. Сеть является fully convolution.

Обзор топологий глубоких сверточных нейронных сетей

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

Обзор топологий глубоких сверточных нейронных сетей

А выводы из всего этого примерно такие:

Обзор топологий глубоких сверточных нейронных сетей



Еще один интересный слайд авторов показывает, что они сделали прорыв в глубине/качестве сетей. Модель, с которой они победили на имаджнете, содержит меньше параметров, чем 19-слойный VGG, при глубине 152 слоя.

Обзор топологий глубоких сверточных нейронных сетей

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

Несколько вариантов визуализации ResNet:


Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning (23 Feb 2016)



Спустя несколько месяцев гугл публикует статью, в которой задается вопросом, а будет ли лучше работать их модель Inception, если позаимствовать идеи ResNet’а. И внезапно оказывается, что да, если добавить тождественных связей, то и их модель улучшится. Далее в статье идет множество картинок, которые еще больше подтверждают то, что их модель строится в полуавтоматическом режиме. Результатом статьи становятся модели Inception V4 и Inception ResNet.

Inception V4 не особо отличается от предыдущих поколений, здесь они поэкспериментировали с паддингом и упростили Inception-блоки. Честно говоря, мне кажется, версия 4 здесь присутствует только для того, чтобы увеличилось количество страниц, а основная цель — это просто сказать, что резнет и у них работает.



Если же в общей схеме Inception V4 заменить Inception-блоки на аналогичные, но с shortcut-связью, то получится Inception ResNet.

Обзор топологий глубоких сверточных нейронных сетей



Identity Mappings in Deep Residual Networks (12 Apr 2016)



Если вы заглянули в детали реализации оригинального ResNet, то могли заметить, что нелинейность берется после агрегирования двух ветвей: остаточной функции и тождественной связи. Авторы заявляют, что это не совсем правильная техника и лучше вообще не брать нелинейность после агрегации. Лучше как бы сдвинуть все нелинейности на один шаг назад по остаточным ветвям. Таким образом выход из блока подается на тождественную связь следующего, где он неизмененным доходит до своего выхода; а также на остаточную сеть следующего, где над выходом текущего уже применяется нелинейность. Так удалось обучить сверхглубокую нейронную сеть, состоящую из 1001 слоя. Сравните, еще в 2014 году 19-слойная нейронная сеть считалась «very deep convolutional neural networks».

Обзор топологий глубоких сверточных нейронных сетей

В статье приводится небольшой математический анализ такого трюка. Пусть

  • Обзор топологий глубоких сверточных нейронных сетей — вход текущего слоя;

  • Обзор топологий глубоких сверточных нейронных сетей — shortcut connection, в нашем случае это просто тожественное преобразование Обзор топологий глубоких сверточных нейронных сетей;

  • Обзор топологий глубоких сверточных нейронных сетей — residual network;

  • Обзор топологий глубоких сверточных нейронных сетей — агрегированный выход двух ветвей блока;

  • Обзор топологий глубоких сверточных нейронных сетей — вход следующего блока равен некоторому преобразованию от агрегации двух ветвей предыдущего блока.



Тогда можно рассмотреть две ситуации, в первой Обзор топологий глубоких сверточных нейронных сетей — это как раз вариант, предложенный в текущей статье. Обозначим любой слой сети K, тогда его значение можно вывести как сумму всех предыдущих плюс некоторое начальное значение. Напомню, что для градиентного спуска нам необходимо вычислять частную производную целевой функции по входам в каждый слой. Если продифференцировать целевую функцию по какому-либо слою k, то получим, что градиент декомпозируется в сумму двух членов: производной целевой функции по последнему слою и суммы частных производных. Это отличается от формулы для плоской сети тем, что в плоской сети формула градиента состоит из серии матрично-векторных произведений. Мы можем видеть, что градиент целевой функции доходит до каждого слоя внутри сети, а чтобы наблюдался vanishing gradients, необходимо, чтобы все Обзор топологий глубоких сверточных нейронных сетейХабрахабр

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *