Comments 31
Вероятно, я ошибаюсь, но рисунок 4 выглядит так, что перед отправкой в Y все выходы (как Х1, Х2, .. так и Z1, Z2, ..) складываются и поэтому все симметрии для связей между входным и скрытым слоем сохранились (от перемены мест слагаемых сумма не меняется).
Суть в том, что если поменять в скрытом слое, скажем, первый и второй нейроны местами, то в результате будут получены значения Z2+X1 и Z1+X2, вместо Z1+X1 и Z2+X2.
Перестановочные симметрии как факт были подмечены +/- давно. Skip Connections делает лосс более гладким, особенно в случае ступенчатых активаций, но главное - не таким резким по ландшафту.
Перестановочные симметрии приводят к избыточности параметрического пространства, и skip connection тоже регуляризация, как и dropout, который это пространство нарезает на подпространства.
Я сейчас к тому, что все так, да. И еще...
Эффект хорошей генерализации, как мне видится, имеет такую причину. Регуляризация от skip connections, в отличие от енкодеров-декодеров, или просто сужающихся сеток, является некоторым аналогом, простите, бустинга, который как известно, тоже аппроксиматор. То есть с каждым стэком инпут дополняется информацией, а не просто интерпретируется в подбираемом латентном пространстве. Подбирается дополнительное пространство к инпуту, как если бы человек говорил "на этой картине изображены Петька и Василий Иванович", а не просто "здесь Петька, а здесь Василий Иванович". И генерализация обуславливается тем, что к концу сетки мы не потеряли информацию о том, что это картина всё-таки (например). у Гудфедлоу это называется медленный признак.
Дискусионно все это конечно... извините за простыню текста.
" если вдуматься, наличие слоев нормализации должно позволять градиенту течь по сети без затухания " - да, если вдуматься, то это совсем не так. От того что вы в среднем масштабируете выходы и добавляете сдвиг проблема того что все равно будут очень высокие/низкие значения градиента по крайней мере для определенных дименшенов не решается.
Они(слои нормализации) позволяют снизить эффект но полностью не избавляют от проблемы. Поэтому, ответ про скип коннекшены и проблему градиента не "не верен" а не конца точен.
Не вполне понял, что вы имеете ввиду. Если настакать глубокую VGG-like сетку с батч нормами, то градиент всполне себе дотекает до начала без затухания - это достаточно просто проверить. Если даже какие-то фильтры выродятся, то в целом на сходимость это не влияет.
А ответ таки является неправильным, поскольку даже не смотря на то, что у skip connections есть сайд эффект, помогающий побороть затухание градиента (если убрать, например, нормализацию), авторы архитектуры явно пишут, что не с затуханием градиента борятся, а с деградацией точности (вопрос не случайно именно так сформулирован: "Для решения какой проблемы были введены skip connection в residual архитектурах?").
Про VGG ничего не знаю, занимаюсь только нлп
Может она не достаточно глубокая, нормализация сильно сглаживает но не справляется 100% с эффектом градиента.
Если у вас активация ноль то по смыслу она именно ноль и дальше градиент не должен идти, другой вопрос насколько это вредит всей архитектуре и насколько она может подстроиться со всей своей избыточностью.
Претензия не к статье а к вашему стейтменту в посте про то что нормализация полностью решает проблему градиента.
"А ответ таки является неправильным" - вы можете и дальше продолжать своим неуместным академизмом рубить хороших кандидатов дальше. Ответ вполне приемлемый.
Я несколько лет работал в AI ресерче в фаанге, один из стандартных вопросов спрашиваемый многими и мной в том числе, такой ответ был допустим.
Отправляйте своих кандидатов "неправильно" ответивших на этот вопрос нам.
Простите, но с чего вы взяли, что мы "рубим хороших кандидатов", пусть они и дают на этот вопрос наиболее популярный ответ? Это было бы глупо.
Если у вас активация ноль то по смыслу она именно ноль и дальше градиент не должен идти
Не вполне понимаю, что значит "активация по смыслу", но если активация равна нулю, градиент быть нулю не обязан.
наиболее популярный ответ является правильным но не полным
Нет. См. ниже.
да, читайте статью от дипмайнда
Нет. Читайте оригинальную статью.
я прочитал оригинальную статью - аж 2015 года!
Они не выясняют решают ли слои нормализации проблему градиента, они лишь приводят ссылки где на это есть намеки.
Статья от дипмайнда вышла на целых 4 года позже что для этой области просто бездна времени - там даны как теоретические так и практические результаты, который явно показывают что слои нормализации эту проблему не решают.
Более того они даже делают эту проблему хуже - смотрите теорему 3.9 и 3.10
Может она не достаточно глубокая, нормализация сильно сглаживает но не справляется 100% с эффектом градиента.
Возьмете ResNet-152, уберете из нее skip-connections, сделаете backprop - градиенты не занулятся ни в каких слоях.
Претензия не к статье а к вашему стейтменту в посте про то что нормализация полностью решает проблему градиента.
Кстати, такого стейтмента нет. Я пишу: "И ведь действительно, если вдуматься, наличие слоев нормализации должно позволять градиенту течь по сети без затухания."
это равносильные утверждения
"если вдуматься, наличие слоев нормализации должно позволять градиенту течь по сети без затухания" - опять, и с чего бы это? Не интуитивно, не математически. Перемасштабирование выходов слоя путем нахождения среднего с отклонения из весов только исходя из текущего батча, в котором распределение может быть в принципе каким угодно, и поднастройка с помощью 2 констант - как извините это решает проблему?!
Я привел ссылку на статью со множеством экспериментов как в самой статье, так и в ссылках из нее.
Вы пишите про - возьмите такую то сетку и провертье градиент. Я больше чем уверен что вы просто считаете усредненную норму градиента по слоям что никак не меняет того факта что по подсету дименшенов градиент может быть околонулевой.
Как котр-пример вашему утверждению смотрите " The Nonlinearity Coefficient - Predicting Overfitting in Deep Neural Networks"
с выводом - "empirically noted gradient explosion happens in
deep batchnorm networks with various nonlinearities"
то что в вашем случае он "течет" не означает что он течет всегда при наличии нормализации
Как уже писал выше - возможно. И, как отмечено в посте, skip connections обладает тем свойством, что помогает градиенту протекать без затухания (хотя взрываться он и в сетках со skip connections может). Но, не в первый раз повторяю, введены skip connections были для решения проблемы деградации точности, которая обусловлена НЕ затуханием градиента.
то что в вашем случае он "течет" не означает что он течет всегда при наличии нормализации
Да, не означает.
ПС:
Околонулевой градиент по каким-то дименшенам вовсе не обязательно означает, что градиент затух - может мы достигли оптимума?
ПС2: еще раз отмечу следующее. Существуют глубокие нейронные сети (и не важно, на каком домене данных работающие), не страдающие от проблемы затухания или взрыва градиентов (хотя последнее сильно зависит от инициализации), но страдающие от проблемы деградации точности. Добавление скип коннекшенов помогает эту проблему решить. О чем спорим? О том, что неправильный ответ - не точный? Он не не точный, он не правильный. Другое дело, что он не является поводом "рубить хороших кандидатов", как почему-то вы ошибочно предположили, но является поводом подискутировать на эту тему.
"Да, не означает." - вы писали обратное
" может мы достигли оптимума?" - не меняйте тему
К проблеме деградации точности нет никаких претензий
Претензии есть к вашему неверному утверждению про неправильный ответ на интервью
и второму неверному утверждению про то что нормализция должна решать эту проблему градиента
По поводу собеседования - вы стали играть в игру "докопайся до буквального смысла слов".
Если вы задаете это вопрос на интервью, вы используете ответ для оценки кандидата. Конечно я не имел в виду что это ваш единственный критерий, зачем передергивать?!
Но это одни из критериев, по которому вы, имея неверные представления, принимаете решения.
И второе - мне просто не нравятся непрофессиональные посты от людей которые не разбираются в теме про которую пишут
И кстати вот вам интересное чтиво https://arxiv.org/pdf/1902.08129.pdf в догонку про "неправильный ответ"
Решительно не понимаю, чем вас это так зацепило? В резнетах skip connections были введены для решения проблемы деградации точности - это не я придумал, о этом авторы пишут.
зацепило ваше неправильное утверждение о "неправильном ответе"
Потому что он, как и есть - не правильный. Вопрос имеет четкую формулировку, никаких "неполных ответов" про затухающий градиент не подразумевает, так как деградация точности обусловлена НЕ затуханием градиента. Спорить не имеет смысла. Skip connections в резнетах были введены для решения проблемы деградации точности. Точка.
можно сколько угодно писать что черное это белое но белым оно не станет.
Вы почему то пытаетесь перевести тему на деградацию точности хотя я конкретно написал что вы ошибаетесь насчет градиента и привел ссылку на множественные контрпримеры вашим неверным утверждениям
Жаль что на хабре нет нормальной модерации - вы пишете ерунду и не разбираетесь в вопросе.
Это совершенно переходит все границы. Контр-примеры чему вы привели? Тому, что в оригинальной работе сделано?
Модерации действительно не хватает.
вы опять переводите тему на якобы мое несуществующее противостояние статье
тема - ваши неверные утверждения на контрпримеры которым я привел ссылки
Мне вот даже интересно стало - а у вас то самого есть какие то работы в этой области? цитирования?
Вы, почему-то, не в состоянии понять одну простую мысль, которую я все время пытаюсь донести, и напрасно обвиняете меня в перемене темы: изначально вы утверждаете, что мой тезис о некорректности ответа про затухание градиента как проблемы, которую авторы архитектуры ReNet решали путем добавления skip connections, ложен, в то время, как авторы черным по белому именно об этом и пишут - вот вам вполне существующее противостояние.
Я проигнорирую ваши необоснованные обвинения и попытки перевести дискуссию в плоскость оценки личности, что, как правило, свидетельствует о неспособности оппонента к конструктивному диалогу, и, в конечном счете, на этом закончу бесполезню дискуссию.
skip connections
Насколько я помню в голове человека тоже есть такой хак? А ещё все нейроны одной колонки соединяются не со всеми колонками следующего слоя, а только с частью.
skip connections и симметрия