Потому что он, как и есть - не правильный. Вопрос имеет четкую формулировку, никаких "неполных ответов" про затухающий градиент не подразумевает, так как деградация точности обусловлена НЕ затуханием градиента. Спорить не имеет смысла. Skip connections в резнетах были введены для решения проблемы деградации точности. Точка.
Решительно не понимаю, чем вас это так зацепило? В резнетах skip connections были введены для решения проблемы деградации точности - это не я придумал, о этом авторы пишут.
Претензия не к статье а к вашему стейтменту в посте про то что нормализация полностью решает проблему градиента.
Кстати, такого стейтмента нет. Я пишу: "И ведь действительно, если вдуматься, наличие слоев нормализации должно позволять градиенту течь по сети без затухания."
Не вполне понял, что вы имеете ввиду. Если настакать глубокую VGG-like сетку с батч нормами, то градиент всполне себе дотекает до начала без затухания - это достаточно просто проверить. Если даже какие-то фильтры выродятся, то в целом на сходимость это не влияет.
А ответ таки является неправильным, поскольку даже не смотря на то, что у skip connections есть сайд эффект, помогающий побороть затухание градиента (если убрать, например, нормализацию), авторы архитектуры явно пишут, что не с затуханием градиента борятся, а с деградацией точности (вопрос не случайно именно так сформулирован: "Для решения какой проблемы были введены skip connection в residual архитектурах?").
Здорово, спасибо за инструкцию. ПС: по ходу текста формируется впечатление, что в конце будут примеры работ в стиле Кувшинова, на примере которого вы расписываете инструкцию, но их нет - досадно)
Да, суперское замечание. Это так, если выходной нейрон равновесно суммирует выходы. Разумеется, я имел ввиду общий случай. По возможности поправлю. Спасибо.
Суть в том, что если поменять в скрытом слое, скажем, первый и второй нейроны местами, то в результате будут получены значения Z2+X1 и Z1+X2, вместо Z1+X1 и Z2+X2.
Не, не это я имел ввиду) Я имел ввиду построить диалоговую модель на TCP/UDP запросах/ответах, чтобы сеткой эмулировать игровой сервер (той же контры, например)
Мы не в одномерном мире характеристик живём, и правила сравнения больше-меньше тут не работают. Различия многогранны, часто, я бы сказал, ортогональны.
Так ведь парадокс же: если женщина утверждает, что ни чем не отличается от мужчин, то должна признать различия, которые признают мужчины, а это противоречит утверждению о том, что она ни чем не отличается.
Посыл, вероятно, был в другом. Вот есть племя мужчин. Им надо размножиться. Они находят женщин. Совершают определённые действия и отваливают. Через определённое время женщины дают потомство. В потомстве есть какая-то доля новых маленьких мужчин. Мужчины размножились. Профит.
Есть племя женщин. Им надо размножиться. Они находят мужчин. Дают им совершить определённые действия и отвалить. Через определённое время дают потомство. Есть доля маленьких женщин? Есть. Племя размножилось. Профит.
Да, описан один процесс - полового размножения - но по своей сути он опирается на различия, которые не ограничиваются только анатомическими и физиологическими, но, уже хотя бы как следствие этих двух, психологическими и социальными.
Можно ещё прибегнуть к такому аргументу: различие между мужчинами и женщинами в том, что мужчины признают разницу между полами и находят ее прекрасной, в то время, как женщины хотят быть такими же.
Разумеется, это не так, но в споре с приверженцами "одинаковости" это бы поставило последних в тупик.
Ни над каким инстансом класса никаких извещений здесь не происходит, ведь меняется поведение функций, а не инстанса класса FastAPI. Ну это так, скорее придирка. А вот проблемы, честно говоря, не понятны, слишком уж высокая степень абстракции: что, например, такого специфичного можно захотеть сделать, чтобы стало нестерпимо больно от отсутствия наследования?
Охотно верю, что вы приедете пример, но, подозреваю, что вероятность такой ситуации нивелируется удобством и гибкостью, который даёт описанный выше подход, и это общее правило (ООП тоже не безупречно). Существуй универсальный удобный и лишённый изъянов способ сделать все, что угодно - все бы только им и пользовались.
Нет. См. ниже.
Потому что он, как и есть - не правильный. Вопрос имеет четкую формулировку, никаких "неполных ответов" про затухающий градиент не подразумевает, так как деградация точности обусловлена НЕ затуханием градиента. Спорить не имеет смысла. Skip connections в резнетах были введены для решения проблемы деградации точности. Точка.
Решительно не понимаю, чем вас это так зацепило? В резнетах skip connections были введены для решения проблемы деградации точности - это не я придумал, о этом авторы пишут.
Кстати, такого стейтмента нет. Я пишу: "И ведь действительно, если вдуматься, наличие слоев нормализации должно позволять градиенту течь по сети без затухания."
Возьмете ResNet-152, уберете из нее skip-connections, сделаете backprop - градиенты не занулятся ни в каких слоях.
Простите, но с чего вы взяли, что мы "рубим хороших кандидатов", пусть они и дают на этот вопрос наиболее популярный ответ? Это было бы глупо.
Не вполне понимаю, что значит "активация по смыслу", но если активация равна нулю, градиент быть нулю не обязан.
Не вполне понял, что вы имеете ввиду. Если настакать глубокую VGG-like сетку с батч нормами, то градиент всполне себе дотекает до начала без затухания - это достаточно просто проверить. Если даже какие-то фильтры выродятся, то в целом на сходимость это не влияет.
А ответ таки является неправильным, поскольку даже не смотря на то, что у skip connections есть сайд эффект, помогающий побороть затухание градиента (если убрать, например, нормализацию), авторы архитектуры явно пишут, что не с затуханием градиента борятся, а с деградацией точности (вопрос не случайно именно так сформулирован: "Для решения какой проблемы были введены skip connection в residual архитектурах?").
Здорово, спасибо за инструкцию.
ПС: по ходу текста формируется впечатление, что в конце будут примеры работ в стиле Кувшинова, на примере которого вы расписываете инструкцию, но их нет - досадно)
Добавил примечание.
Все так.
Вот к дискуссиям как раз и призываю)
Да, суперское замечание. Это так, если выходной нейрон равновесно суммирует выходы. Разумеется, я имел ввиду общий случай. По возможности поправлю. Спасибо.
Суть в том, что если поменять в скрытом слое, скажем, первый и второй нейроны местами, то в результате будут получены значения Z2+X1 и Z1+X2, вместо Z1+X1 и Z2+X2.
Не, не это я имел ввиду) Я имел ввиду построить диалоговую модель на TCP/UDP запросах/ответах, чтобы сеткой эмулировать игровой сервер (той же контры, например)
Ещё можно попробовать взять языковую диалоговую модель и натренировать ее генерировать ответы сервера какой-нибудь игры в ответ на запросы клиента.
Мы не в одномерном мире характеристик живём, и правила сравнения больше-меньше тут не работают. Различия многогранны, часто, я бы сказал, ортогональны.
Так ведь парадокс же: если женщина утверждает, что ни чем не отличается от мужчин, то должна признать различия, которые признают мужчины, а это противоречит утверждению о том, что она ни чем не отличается.
Посыл, вероятно, был в другом. Вот есть племя мужчин. Им надо размножиться. Они находят женщин. Совершают определённые действия и отваливают. Через определённое время женщины дают потомство. В потомстве есть какая-то доля новых маленьких мужчин. Мужчины размножились. Профит.
Есть племя женщин. Им надо размножиться. Они находят мужчин. Дают им совершить определённые действия и отвалить. Через определённое время дают потомство. Есть доля маленьких женщин? Есть. Племя размножилось. Профит.
Да, описан один процесс - полового размножения - но по своей сути он опирается на различия, которые не ограничиваются только анатомическими и физиологическими, но, уже хотя бы как следствие этих двух, психологическими и социальными.
Можно ещё прибегнуть к такому аргументу: различие между мужчинами и женщинами в том, что мужчины признают разницу между полами и находят ее прекрасной, в то время, как женщины хотят быть такими же.
Разумеется, это не так, но в споре с приверженцами "одинаковости" это бы поставило последних в тупик.
То-то и оно, что здесь вполне себе заколачивание гвоздей молотком. Проблемы могут возникнуть от неправильной эксплуатации.
Повторюсь, над объектом FastAPI глумление не имеет места быть.
Ни над каким инстансом класса никаких извещений здесь не происходит, ведь меняется поведение функций, а не инстанса класса FastAPI. Ну это так, скорее придирка. А вот проблемы, честно говоря, не понятны, слишком уж высокая степень абстракции: что, например, такого специфичного можно захотеть сделать, чтобы стало нестерпимо больно от отсутствия наследования?
Охотно верю, что вы приедете пример, но, подозреваю, что вероятность такой ситуации нивелируется удобством и гибкостью, который даёт описанный выше подход, и это общее правило (ООП тоже не безупречно). Существуй универсальный удобный и лишённый изъянов способ сделать все, что угодно - все бы только им и пользовались.