Pull to refresh

Comments 29

Очень странный перевод, или сама новость: учёные обнаружили, что если удалить из нейронной сети все ненужное — она будет работать, как и работала, хм...

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

На самом деле оценка про «в 10 раз» ещё очень консервативная. Было исследование, где показывали сжатие сети в 100 раз без заметной потери результата.
Вот насчет «повторно натренировать» обрезанную NN до того же уровня точности предсказаний — готов поставить под сомнения.
Эффективность тренировки NN с заведомо большим числом связей, чем требуется, обусловлена тем, что в момент тренировки «ненужные» связи позволяют «проходить/проскакивать/выходить из» локальных максимумов и минимумов.
Когда сеть натренированна — разумеется ее можно очень сильно оптимизировать.
«Вот насчет «повторно натренировать» обрезанную NN до того же уровня точности предсказаний — готов поставить под сомнения.»
Именно такой результат продемонстрирован в их работе.
Тут нужно внимательно смотреть оригинал. Как правильно заметил комментатор выше, дополнительные синапсы облегчают прохождение мелкоямчатого рельефа в котором много маленьких локальных минимумов. Соответственно нужно смотреть какие задачи они использовали, в одних задачах такая «стиральная доска» естествнным образом возникает, в других функция потерь относительно равномернеькая. Второй важный момент — какой они алгоритм используовали для обучения. Потому что Стохастический спуск или обучение небольшими батчами, например по 5-10% от учебной выборки и меньше, уже сами по себе имеют мощные механизмы проскакивания микрорельефа.

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

Это же очевидный факт. Любую сеть можно заменить полносвязной сетью с пороговой передаточной ф-ей, тогда процесс обучения сведется к процессу определения того, какие синапсы должны быть активны, а какие — нет. И, с-но, знание того, какие синапсы надо удалить — эквивалентно знанию весовых коэффициентов обученной сети.

Новость в другом. Ненужное не только не влияет на результат работы обученной сети(это очевидно), но и не влияет на процесс обучения(совсем не очевидно).

Хотят научиться искать ненужное до обучения и сразу его выкидывать, упрощая весь процесс.
Ну на самом деле, из моих исследований исходя, они в первом обучении, до регуляризации и резни — определяют оптимальную архитектуру слоёв и количества синапсов под задачу. А на втором проходе убеждаются, что именно такая архитектура минимально достаточна. О полной независимости результата от, например, стартовой точки обучения, речь, я надеюсь, не идёт. Это не только не очевидно, но и является некоторым преувеличением.

Сдаётся мне, они хотят повторить мой результат 4 летней давности.
habr.com/ru/post/249031 Использованная мной в этой статье разряженная нейросеть содержала всего 36 нейронов примерно в десятке слоёв. Только они задачу для себя неправильно сформулировали. Нужно не до начала обучения это определять, а на самом первом этапе обучения. Но если они будут сасредоточенно искать решение именно этой задачи, то то или иное решение, я полагаю, найдут.

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

Нет, не голография.
В своей статье habr.com/ru/post/249031 я чётко показал, что в сети можно выделить структурные элементы хранения отдельных признаков, и они очень ограничены, остальная сеть практически не влияет. Вот только этими структурными единицами оказались не нейроны, как казалось исходя из теории «нейрона бабушки», а группы синапсов.
Скорее так: «Если заранее удалить из нейронной сети связи, которые все равно ничему не обучатся, результат последующего обучения будет аналогичным полной сети», а меньшее количество связей -> меньшие вычислительные мощности для обучения.
UFO just landed and posted this here
И что эта нейросеть делает?
В статье описанно. Решает синтетическую задачу запоминания сложного рельефа опираясь на всего две входные переменные. Чтобы сделать то же самое с той же точностью обычной полносвязанной сетью потрбовалось бы в разы большее количество нейронов и синапсов.
Дистилляция нейросетей давно не новость, вроде бы?
Теперь дело за малым — понять как находить выигрышные билеты не зная, какой номер выпадет в лотерее.

Я всю жизнь над этим бьюсь. Пока безрезультатно.

А почему, собственно, для поиска этой подсети нужны феерические ресурсы? Если мы можем натренировать полную сеть, то останется только выкинуть низковесные связи и натренировать сеть размером в 10 раз меньше оригинальной. То, что останется, будет в 10 раз быстрее работать на смартфоне, профит.

Я к тому, что даже если задача поиска подсети без обучения полной сети ещё не решена, то этот метод сокращения существующей сети можно применить ко всем используемым сетям и получить профит. Или нет?

Насколько мне известно, так и происходит — смартфон использует уже обученные и прореженные сети. Новость в том что, видимо, можно обучать сеть на порядок меньшего размера

UFO just landed and posted this here
Там операционной единицей является не нейрон, а синапс, у вас может быть, например слой всего с 3 нейронами, и какому-нибудь одному из них достаточно трёх синапсов и не понять как решать сколько синапсов данному конкретному новому нейрону нужно.
Не наезжаю, но какое-то слабоватое предположение для исследователей из MIT, когда к такому выводу приходит кто угодно, прочитавший статью типа «Как работают нейросети» или прослушавший первый урок любого курса по нейронкам. «А неплохо было бы не полурандомно подбирать веса, а сразу их задавать идеально».
Эти потуги ведь давно уже не новость — из этой идеи как раз и вытекли всякие фишечки типа 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 получаются самыми лучшими.

image

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.


medium.com/tensorflow/tensorflow-model-optimization-toolkit-pruning-api-42cac9157a6a
Вот тут вот пишут про прунинг в TF и вроде бы говорят, что достаточно скоро обещают оптимизированные разреженные сети в TF. В детали, впрочем, не вчитывался.

P.S. Спасибо за обзор. Без него нифига понятно не было.
С одной стороны, мы делаем pruning только для весов, но не для input, т.е. вместо GEMM dense-dense, мы можем делать sparse-GEMM sparse-dense, а это в общем случае ещё медленнее, даже используя оптимизированную библиотеку cuSPARSE: github.com/tensorflow/tensorflow/issues/5193#issuecomment-350989310

С другой стороны, если мы берем частный случай — блочная разряженность с блоками от 8x8 до 32x32, то можно получить ускорение в ~7x раз на NVIDIA Titan X Pascal openai.com/blog/block-sparse-gpu-kernels
реализация для TensorFlow: github.com/openai/blocksparse
Но что будет с точностью на больших сетях, которые используются в продакшене и больших датасетах — большой вопрос.

Посмотрим когда nVidia реализует блочную разряженность в cuDNN оптимизированной под TensorCores.
Ну кроме шуток. Циклы сжатия-расширения нейросети привязанные к ритмам сна зафиксированы у животных прямыми исследованиями.
Sign up to leave a comment.

Other news

Change theme settings