Глубокое обучение — очень странная технология. На протяжении десятилетий он следовал совершенно отличной от основного направления искусственного интеллекта траектории, выживая благодаря усилиям нескольких верующих. Когда я начал использовать его несколько лет назад, это напомнило мне о том, как я впервые играл с iPhone — ощущение, будто я получил что-то, что пришло нам из будущего, или инопланетные технологии.
Одним из результатов является то, что моя инженерная интуиция по этому поводу часто оказывается ошибочной. Когда я наткнулся на im2col, из своего опыта обработки изображений избыточность памяти казалась безумием, но оказалось, что это эффективный способ решить эту проблему. Хотя есть и более изощренные способы добиться лучших результатов, они не соответствуют моему графическому опыту.
Еще одна ключевая область, которая, кажется, смущает многих людей, заключается в том, что вам нужна вычислительная точность в нейронной сети. Точные потери было довольно легко оценить на протяжении большей части моей карьеры. Мне почти никогда не нужно больше, чем 32-битные числа с плавающей запятой, а если и нужно, то это должно быть из-за хрупкого алгоритма, который даже на 64-битной быстро выйдет из строя. 16-битные числа с плавающей запятой подходят для многих графических операций, если они не связаны друг с другом слишком тесно. Я мог бы использовать 8-битные значения для отображения конечного вывода или в конце алгоритма, но для чего-либо еще они малопригодны.
Оказывается, нейронные сети бывают разные. Вы можете запускать их с 8-битными параметрами и промежуточным буфером без заметной потери конечного результата. Это меня удивляло, но открывалось снова и снова. В единственной статье, которую я нашел об этом результате (в конце абзаца), он верен для каждого приложения, которое я пробовал. Мне также пришлось убедить почти всех инженеров, что я сказал, что я не сумасшедший, наблюдая, как они доказывают это своими собственными тестами, поэтому в этом посте я попытаюсь обойти некоторых из них!
Обратите внимание, чтобы вовремя получать больше контента компьютерного зрения.
Название бумаги:
Improving the speed of neural networks on CPUs
Адрес бумаги:
static.Google user content.com/Media/Hot colors…
Ответьте "0001" в публичном аккаунте, чтобы получить эту статью.
Как это работает?
Вы можете увидеть пример низкоточного подхода в мобильной среде Jetpac, но для простоты я оставил промежуточные вычисления плавающими и использовал только 8 бит для сжатия весов. Библиотека Nervana NEON также поддерживает fp16, хотя она еще не 8-битная. Вам не нужны числа с плавающей запятой, вы можете сохранить все входные и выходные данные как 8-битные, если длинное точечное произведение лежит в основе операций полной конкатенации и свертки (которые занимают большую часть времени). Я даже видел доказательства того, что вы можете сбросить одну или две карты меньше 8, не проиграв! Слои пула также хороши для 8 бит, я обычно видел функции добавления смещения и активации, выполненные с более высокой точностью (помимо простого relu), но даже для этих 16 бит точности кажутся довольно хорошими.
Я обычно использую сеть, обученную полностью с плавающей запятой, а затем преобразовывающую с понижением частоты, так как я фокусируюсь на выводе, но обучение также может выполняться с низкой точностью. Ограничив область действия уровня активации, можно добиться развертывания с низкой точностью при обучении с числами с плавающей запятой.
Почему это работает?
Я не вижу какой-либо основной математической причины, почему результаты так точны, поэтому я начинаю верить, что это побочный эффект успешного тренировочного процесса. Когда мы пытаемся научить сеть, цель состоит в том, чтобы она воспринимала закономерности как полезное свидетельство и отбрасывала эти бессмысленные изменения и не относящиеся к делу детали. Это означает, что мы ожидаем, что эта сеть будет давать хорошие результаты, даже когда она очень шумная. Dropout — хороший пример, поэтому конечная сеть может работать даже с очень неблагоприятными данными.
Полученная в результате этого процесса сеть должна быть очень устойчивой в числовом отношении, с большим количеством избыточности в вычислениях, чтобы небольшие различия во входных выборках не влияли на результаты. По сравнению с различиями в позе, положении и ориентации шум на изображениях на самом деле представляет собой относительно небольшую проблему. Все слои в той или иной степени подвержены влиянию этих небольших изменений входных данных, поэтому все они проявляют устойчивость к небольшим изменениям. Это означает, что различия, вносимые низкоточными вычислениями, находятся в пределах допусков, с которыми сеть научилась справляться. Интуитивно они ощущаются как плаксы, и сколько бы вы на них ни давили, они не рухнут.
Я инженер, поэтому я рад видеть, как это работает на практике, не слишком беспокоясь о том, почему, потому что я не хочу смотреть, как поезд мчится с набитым ртом! Некоторые исследователи проводили исследования по этому поводу. Ниже бумага.
Название бумаги:
Training deep neural networks with low precision multiplications
Адрес бумаги:
Ответьте "0001" в публичном аккаунте, чтобы получить эту статью.
Этотчто это означает?
Это очень хорошая новость для всех, кто пытается оптимизировать глубокие нейронные сети. Со стороны ЦП в целом современные наборы инструкций SIMD, как правило, ориентированы на числа с плавающей запятой, поэтому 8-битные вычисления не дают огромных вычислительных преимуществ на последних чипах x86 или ARM. Но доступ к DRAM требует много энергии, а также медленный, поэтому простое снижение пропускной способности на 75% может оказаться большим подспорьем. Возможность втиснуть больше значений в быстрые кэши и регистры SRAM с низким энергопотреблением также является преимуществом.
Графические процессоры изначально были разработаны для получения 8-битных значений текстур, вычисления их с более высокой точностью, а затем перезаписи их в 8-битных, поэтому они идеально подходят для наших нужд. У них обычно очень широкие каналы для DRAM, поэтому преимущества не так просто реализовать, но их можно использовать, приложив некоторые усилия. Я также научился понимать, что DSP являются решениями с низким энергопотреблением, а их наборы команд ориентированы на операции с фиксированной точкой, которые нам нужны. Индивидуальные чипы технического зрения, такие как Myriad от Movidius, также отлично подходят для использования.
Надежность глубоких сетей означает, что они могут быть эффективно реализованы на очень широком спектре оборудования. Объедините эту гибкость с их почти волшебным эффектом на многие задачи ИИ, которые не наблюдались десятилетиями, и вы поймете, почему я так взволнован тем, как они изменят наш мир в ближайшие годы!
Оригинальная ссылка:
Эта статья взята из серии публикаций в Техническом руководстве CV для общедоступных аккаунтов.
Добро пожаловать в техническое руководство CV для общедоступной учетной записи, в котором основное внимание уделяется техническому обзору компьютерного зрения, отслеживанию новейших технологий и интерпретации классических статей.
Ответьте на ключевое слово «Техническое резюме» в официальном аккаунте, чтобы получить резюме следующих статей в формате pdf.
Другие статьи
Как просмотреть пузырь искусственного интеллекта
Четкое обнаружение границ с использованием Dice loss
PVT — многофункциональная основа для плотного прогнозирования без свертки
CVPR2021 | Обнаружение объектов в открытом мире
Визуальное обнаружение и распознавание объектов Прошлое, настоящее и возможное
Краткое изложение методов недообучения и переобучения
Краткое изложение общих идей бумажных инноваций
Резюме методов эффективного чтения англоязычной литературы по направлению CV
Обзор непродолжительного обучения компьютерному зрению
Краткий обзор дистилляции знаний
Оптимизировать скорость чтения видео OpenCV
Краткое изложение методов функции потерь
Техническое резюме механизма внимания
Краткое изложение технологии пирамиды функций
Краткое изложение технологии объединения
Краткое изложение методов увеличения данных
Резюме эволюции структуры CNN (1) Классическая модель
Резюме эволюции структуры CNN (2) Облегченная модель
Резюме эволюции структуры CNN (3) Принципы проектирования
Как увидеть будущее направление компьютерного зрения
Краткое изложение технологии визуализации CNN (1) Визуализация карты характеристик
Краткое описание технологии визуализации CNN (2) Визуализация ядра свертки
Краткое изложение технологии визуализации CNN (три) визуализации
Краткое описание технологии визуализации CNN (4) инструменты и проекты визуализации