Ученые из MIT нашли маленькие и точные нейросети, которые быстрее и легче учатся. Осталось понять, как их создать

    Исследователи Массачусетского Технологического Института (MIT) предположили, что современные нейросети можно уменьшить до десяти раз, не потеряв в точности предсказаний. Скорость и легкость обучения таких сетей также может быть значительно выше. При этом тренировать и обеспечивать данными их смогут даже программисты-одиночки, а не только технологические гиганты с GPU-серверами и огромными датасетами.

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

    «В традиционной работе с нейросетями строится рандомная структура, и после тренировки на огромном количестве данных, она волшебным образом начинает работать», говорит профессор Майкл Карбин. «Это как покупать мешок лотерейных билетов, хотя чтобы разбогатеть надо купить лишь пару нужных. Теперь дело за малым — понять как находить выигрышные билеты не зная, какой номер выпадет в лотерее».

    Пока способ не найден, исследователи строят огромные нейросети и тренируют их классическим способом. Затем они начинают «отрезать» связи с самыми низкими весами, пока нейросеть не будет способна работать на смартфонах и слабых машинах. После этого они сбрасывают веса на всех связях до состояния, которое было перед началом обучения и начинают тренировать ту же самую сеть еще раз — но уже в урезанном виде. И она показывает аналогичные результаты.

    Гипотеза ученых состоит в том, что большинство связей в нейросети просто не нужны для ее работы. Они отрезают низковесные связи до тех пор, пока сеть не теряет способность к обучению. Чтобы подтвердить гипотезу, ученые повторяют процесс десятки тысяч раз на большом количестве сетей при различных условиях.

    Опираясь на свое исследование они утверждают, что современные способы обучения нейросетей далеки от оптимального, и есть огромное пространство для совершенствования. Чтобы оно стало возможным, ученые будут пытаться понять, как именно обучаются «подсети» и как их быстрее находить.

    Но для этого потребуется много ресурсов и годы работы. Тем не менее, сообщество считает работу перспективной. На международной конференции ICLR в Новом Орлеане проект был признан одним из лучших среди 1600 заявок.
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 29

      +5

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

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

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

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

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

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

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

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

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

                0
                Нет, не голография.
                В своей статье habr.com/ru/post/249031 я чётко показал, что в сети можно выделить структурные элементы хранения отдельных признаков, и они очень ограничены, остальная сеть практически не влияет. Вот только этими структурными единицами оказались не нейроны, как казалось исходя из теории «нейрона бабушки», а группы синапсов.
            +2
            Скорее так: «Если заранее удалить из нейронной сети связи, которые все равно ничему не обучатся, результат последующего обучения будет аналогичным полной сети», а меньшее количество связей -> меньшие вычислительные мощности для обучения.
              0
              Да вот не факт. Малое изменение веса одной связи при обучении необязательно означает что эта связь не нужна. Нейронная сеть — нелинейное преобразование сигнала, как там внутри происходит — никому неизвестно, уже на втором слое просчитать аналитически невозможно. А дальше — эффект бабочки из рассказа Бредбери. Никаких гарантий, метод тыка.
            0
            Удалено
              0
              И что эта нейросеть делает?
                0
                В статье описанно. Решает синтетическую задачу запоминания сложного рельефа опираясь на всего две входные переменные. Чтобы сделать то же самое с той же точностью обычной полносвязанной сетью потрбовалось бы в разы большее количество нейронов и синапсов.
              0
              Дистилляция нейросетей давно не новость, вроде бы?
                +4
                Теперь дело за малым — понять как находить выигрышные билеты не зная, какой номер выпадет в лотерее.

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

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

                    0

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

                      0

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

                    0
                    Почему бы не поступить обратным способом — начать с одного нейрона и добавлять связи пока удаётся улучшить результат на контрольной выборке. Как только улучшения становятся ниже некоторого критерия, прекратить добавления.
                      +1
                      Там операционной единицей является не нейрон, а синапс, у вас может быть, например слой всего с 3 нейронами, и какому-нибудь одному из них достаточно трёх синапсов и не понять как решать сколько синапсов данному конкретному новому нейрону нужно.
                      +1
                      Не наезжаю, но какое-то слабоватое предположение для исследователей из MIT, когда к такому выводу приходит кто угодно, прочитавший статью типа «Как работают нейросети» или прослушавший первый урок любого курса по нейронкам. «А неплохо было бы не полурандомно подбирать веса, а сразу их задавать идеально».
                      Эти потуги ведь давно уже не новость — из этой идеи как раз и вытекли всякие фишечки типа knowledge distillation и bottleneck features.
                        0
                        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.


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

                          P.S. Спасибо за обзор. Без него нифига понятно не было.
                            +1
                            С одной стороны, мы делаем 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.
                          0
                          Похоже, они просто дали этой нейросети поспать.
                            0
                            Ну кроме шуток. Циклы сжатия-расширения нейросети привязанные к ритмам сна зафиксированы у животных прямыми исследованиями.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое