Picking Winning Tickets Before Training by Preserving Gradient Flow
Chaoqi Wang, Guodong Zhang, Roger Grosse
Статья: https://arxiv.org/abs/2002.07376
Код: https://github.com/alecwangcq/GraSP
Вот ещё работа про прунинг. На этот раз не прунинг готовых сеток, и не прунинг во время обучения, а прунинг при инициализации!
Как видно, есть разные способы прунинга:
1) Наиболее известный и частый прунинг готовых обученных сетей (со всеми его недостатками, см.предыдущий пост)
2) Прунинг во время обучения, включая dynamic sparse training (см.предыдущий пост, RigL как раз отсюда)
3) Прунинг перед обучением (это уже что-то интересненькое!). Дальше рассматриваем этот кейс.
Lottery ticket hypothesis была бы из этой серии, если бы можно было при инициализации сразу находить эти выигрышные билеты.
В предыдущем посте упоминался метод SNIP (Single-shot Network Pruning, https://arxiv.org/abs/1810.02340), который в этой работе относят к классу foresight pruning.
Идея SNIP проста: у нас есть какая-то инициализированная (рандомом) сетка, давайте оставим в ней самые многообещающие соединения. Самые многообещающие определяются по т.н. connection sensitivity, насколько убирание конкретного веса влияет на лосс — убираются наименее влияющие. То есть SNIP стремится сохранить лосс оригинальной (инициализированной рандомом) сетки.
Авторы текущей работы утверждают, что в начале обучения важнее сохранить общую динамику обучения, чем лосс сам по себе. SNIP явным образом ничего такого не делает и может нарушить поток информации по сети. Например, при высоких pruning ratios (скажем, 99%) он стремится убрать почти все веса определённых слоёв, создавая боттлнек в сети.
Авторы считают, что важнее сохранять поток градиентов в сети и строят свой алгоритм на этом. GraSP (Gradient Signal Preservation) стремится убирать веса, которые не уменьшают поток градиентов в сети (клёво, если это ещё и увеличивают).
Метод в целом работает. Точно лучше случайного прунинга. На низких pruning rate (85-90%) и SNIP и GraSP дают близкие к бейзлайнам (работающим на уже тренированных сетях) результаты, но не превосходят их (что в общем неудивительно). При более серьёзном прунинге и более сложных сетях GraSP обгоняет SNIP и чем дальше, тем больше.
Из интересного, оба метода сравнимы или немного превосходят Lottery ticket с оригинальной инициализацией. Но после оригинальной работы с LT была вторая про обучение больших сетей (https://arxiv.org/abs/1903.01611), и там брали инициализацию не от самого начала, от небольшого числа итераций после, она была лучше.
До DSR (динамический прунинг, сравнение с ним было в предыдущем посте) недотягивают, он лидер. По идее RigL из предыдущей статьи был бы ещё лучше.
Визуализации показывают преференции по прунингу разных частей сети. Оба метода любят прунить много весов в верхних слоях, но GraSP всё же оставляет их больше.
В целом сейчас не выглядит суперпрорывом, но направление интересное. Если научатся делать хороший foresight pruning, то удастся сэкономить много ресурсов на обучении. Возможно, когда-нибудь получится что-то сравнимое по качеству с традиционным прунингом уже обученных сетей.
Chaoqi Wang, Guodong Zhang, Roger Grosse
Статья: https://arxiv.org/abs/2002.07376
Код: https://github.com/alecwangcq/GraSP
Вот ещё работа про прунинг. На этот раз не прунинг готовых сеток, и не прунинг во время обучения, а прунинг при инициализации!
Как видно, есть разные способы прунинга:
1) Наиболее известный и частый прунинг готовых обученных сетей (со всеми его недостатками, см.предыдущий пост)
2) Прунинг во время обучения, включая dynamic sparse training (см.предыдущий пост, RigL как раз отсюда)
3) Прунинг перед обучением (это уже что-то интересненькое!). Дальше рассматриваем этот кейс.
Lottery ticket hypothesis была бы из этой серии, если бы можно было при инициализации сразу находить эти выигрышные билеты.
В предыдущем посте упоминался метод SNIP (Single-shot Network Pruning, https://arxiv.org/abs/1810.02340), который в этой работе относят к классу foresight pruning.
Идея SNIP проста: у нас есть какая-то инициализированная (рандомом) сетка, давайте оставим в ней самые многообещающие соединения. Самые многообещающие определяются по т.н. connection sensitivity, насколько убирание конкретного веса влияет на лосс — убираются наименее влияющие. То есть SNIP стремится сохранить лосс оригинальной (инициализированной рандомом) сетки.
Авторы текущей работы утверждают, что в начале обучения важнее сохранить общую динамику обучения, чем лосс сам по себе. SNIP явным образом ничего такого не делает и может нарушить поток информации по сети. Например, при высоких pruning ratios (скажем, 99%) он стремится убрать почти все веса определённых слоёв, создавая боттлнек в сети.
Авторы считают, что важнее сохранять поток градиентов в сети и строят свой алгоритм на этом. GraSP (Gradient Signal Preservation) стремится убирать веса, которые не уменьшают поток градиентов в сети (клёво, если это ещё и увеличивают).
Метод в целом работает. Точно лучше случайного прунинга. На низких pruning rate (85-90%) и SNIP и GraSP дают близкие к бейзлайнам (работающим на уже тренированных сетях) результаты, но не превосходят их (что в общем неудивительно). При более серьёзном прунинге и более сложных сетях GraSP обгоняет SNIP и чем дальше, тем больше.
Из интересного, оба метода сравнимы или немного превосходят Lottery ticket с оригинальной инициализацией. Но после оригинальной работы с LT была вторая про обучение больших сетей (https://arxiv.org/abs/1903.01611), и там брали инициализацию не от самого начала, от небольшого числа итераций после, она была лучше.
До DSR (динамический прунинг, сравнение с ним было в предыдущем посте) недотягивают, он лидер. По идее RigL из предыдущей статьи был бы ещё лучше.
Визуализации показывают преференции по прунингу разных частей сети. Оба метода любят прунить много весов в верхних слоях, но GraSP всё же оставляет их больше.
В целом сейчас не выглядит суперпрорывом, но направление интересное. Если научатся делать хороший foresight pruning, то удастся сэкономить много ресурсов на обучении. Возможно, когда-нибудь получится что-то сравнимое по качеству с традиционным прунингом уже обученных сетей.