Comments 29
Очень странный перевод, или сама новость: учёные обнаружили, что если удалить из нейронной сети все ненужное — она будет работать, как и работала, хм...
На самом деле оценка про «в 10 раз» ещё очень консервативная. Было исследование, где показывали сжатие сети в 100 раз без заметной потери результата.
Эффективность тренировки NN с заведомо большим числом связей, чем требуется, обусловлена тем, что в момент тренировки «ненужные» связи позволяют «проходить/проскакивать/выходить из» локальных максимумов и минимумов.
Когда сеть натренированна — разумеется ее можно очень сильно оптимизировать.
Именно такой результат продемонстрирован в их работе.
Если бы они обнаружили такой результат на задаче с сильно пересечённым рельефом и при обучении батчами по четверь выборки например, и получили такой результат я бы ему очень сильно удивился.
Кто ж вам не дает? :) openreview.net/pdf?id=rJl-b3RcF7
Вы не поняли главный посыл. Если удалить из архитектуры сети все ненужное, после этого сбросить веса и научить снова с нуля, то сеть будет столь же эффективна. Хотя с нуля училась будучи малюсенькой.
Это же очевидный факт. Любую сеть можно заменить полносвязной сетью с пороговой передаточной ф-ей, тогда процесс обучения сведется к процессу определения того, какие синапсы должны быть активны, а какие — нет. И, с-но, знание того, какие синапсы надо удалить — эквивалентно знанию весовых коэффициентов обученной сети.
Хотят научиться искать ненужное до обучения и сразу его выкидывать, упрощая весь процесс.
Сдаётся мне, они хотят повторить мой результат 4 летней давности.
habr.com/ru/post/249031 Использованная мной в этой статье разряженная нейросеть содержала всего 36 нейронов примерно в десятке слоёв. Только они задачу для себя неправильно сформулировали. Нужно не до начала обучения это определять, а на самом первом этапе обучения. Но если они будут сасредоточенно искать решение именно этой задачи, то то или иное решение, я полагаю, найдут.
А не повод ли это исследование эмайтишников, чтобы вернуться к утверждению гугловцев, что нейронки это голография. Стоит нам, как и в оптической голографии убрать часть информации, и… почти ничего в итоговой картинке не поменяется, кроме резкости, что есть суть точность результата нейронки.
В своей статье habr.com/ru/post/249031 я чётко показал, что в сети можно выделить структурные элементы хранения отдельных признаков, и они очень ограничены, остальная сеть практически не влияет. Вот только этими структурными единицами оказались не нейроны, как казалось исходя из теории «нейрона бабушки», а группы синапсов.
Теперь дело за малым — понять как находить выигрышные билеты не зная, какой номер выпадет в лотерее.
Я всю жизнь над этим бьюсь. Пока безрезультатно.
А почему, собственно, для поиска этой подсети нужны феерические ресурсы? Если мы можем натренировать полную сеть, то останется только выкинуть низковесные связи и натренировать сеть размером в 10 раз меньше оригинальной. То, что останется, будет в 10 раз быстрее работать на смартфоне, профит.
Я к тому, что даже если задача поиска подсети без обучения полной сети ещё не решена, то этот метод сокращения существующей сети можно применить ко всем используемым сетям и получить профит. Или нет?
Эти потуги ведь давно уже не новость — из этой идеи как раз и вытекли всякие фишечки типа knowledge distillation и bottleneck features.
Above this size, the winning tickets that we find learn faster than the original network and reach higher test accuracy.
Интересно то, что урезанные в 10 раз сети обучаются (сходятся) быстрее и имеют более высокую точность, чем изначально большие сети: https://openreview.net/pdf?id=rJl-b3RcF7
Интересно, что "выигрышные билеты выиграли в лотерее инициализации" и "начальные веса сделали обучение особенно эффективным", следовательно важно не расположение связи, а её инициализация?
The winning tickets we find have won the initialization lottery: their connections have initial weights that make training particularly effective.
На рисунках 9 и 10 показано, что сбрасывание весов (resetting) до начальных выигрышных весов даёт лучшую точность, чем продолжение до-обучения уже обученных выигрышных весов.
Т.е. из 3-х весов:
1. выигрышные, которые сделали обучение особенно эффективными
2. выигрышные, которые сделали обучение особенно эффективными, и обученные
3. совершенно случайные
Для урезанной архитектуры веса-1 получаются самыми лучшими.
1. Главная проблема — полученные разряженные сети не оптимизированы ни под фреймворки, ни под железо NPU/SIMD/TensorCores/… (что намного сложнее изменить). Т.е. прироста скорости не дают никакого.
2. Они делают pruning под конкретный датасет, соответственно, даже если уменьшенная в 20 раз сеть обучается с нуля до той же точности, то она это делает только на этом же датасете. А заранее ты никогда не знаешь на сколько новый датасет сложнее или легче предыдущего.
* Будет датасет сложнее — и точность сильно упадет (урезанная сеть не подходит)
* Будет датасет легче — и можно было бы обрезать весов намного больше (урезанная сеть ещё слишком большая)
3. Они не тестировали на датасетах крупнее MNIST / Cifar.
4. На более глубоких сетях уже начинаются проблемы без warmup.
We only consider vision-centric classification tasks on smaller datasets (MNIST, CIFAR10). We do not investigate larger datasets (namely Imagenet (Russakovsky et al., 2015))
Although we reduce parameter-counts, the resulting architectures are not optimized for modern libraries or hardware. In future work, we intend to study other pruning methods from the extensive contemporary literature, such as structured pruning (which would produce networks optimized for contemporary hardware) and non-magnitude pruning methods (which could produce smaller winning tickets or find them earlier).
On deeper networks (Resnet-18 and VGG-19), iterative pruning is unable to find winning tickets unless we train the networks with learning rate warmup. In future work, we plan to explore why warmup is necessary and whether other improvements to our scheme for identifying winning tickets could obviate the need for these hyperparameter modifications.
Вот тут вот пишут про прунинг в TF и вроде бы говорят, что достаточно скоро обещают оптимизированные разреженные сети в TF. В детали, впрочем, не вчитывался.
P.S. Спасибо за обзор. Без него нифига понятно не было.
С другой стороны, если мы берем частный случай — блочная разряженность с блоками от 8x8 до 32x32, то можно получить ускорение в ~7x раз на NVIDIA Titan X Pascal openai.com/blog/block-sparse-gpu-kernels
реализация для TensorFlow: github.com/openai/blocksparse
Но что будет с точностью на больших сетях, которые используются в продакшене и больших датасетах — большой вопрос.
Посмотрим когда nVidia реализует блочную разряженность в cuDNN оптимизированной под TensorCores.
Ученые из MIT нашли маленькие и точные нейросети, которые быстрее и легче учатся. Осталось понять, как их создать