На базе нейронных сетей построены многочисленные системы искусственного интеллекта. Они считаются прогрессивным и достаточно надёжным инструментом анализа данных там, где задачу сложно формализовать. Им доверяют управление автомобилями и роботами, идентификацию людей, антифрод у банков и страховых компаний и другие ответственные задачи. При этом даже у лучших реализаций ИИ время от времени случаются грубые ошибки, возникновение которых бывает сложно объяснить.
Специалист отдела перспективных исследований компании «Криптонит» Игорь Нетай предположил, что у разноплановых ошибок ИИ существует общая причина. Он выявил её в ходе модельного эксперимента с использованием более 50 000 сгенерированных нейронных сетей, обучение которых продолжалось в течение тысяч эпох для каждой из них.
Малая ложь, большая ложь и статистика
К настоящему времени разработано множество архитектур искусственных нейронных сетей (ИНС), но ряд свойств у них остаётся общим. В частности, любая нейросеть по мере обучения накапливает артефакты — шумы разных типов. Если шумы в обучающих и анализируемых данных ещё можно как-то фильтровать, то цифровые шумы (накапливающиеся численные ошибки, возникающие из-за ограничений вычислительной платформы), все просто игнорируют.
В работе Игоря исследуется влияние цифрового шума на стабильность результатов работы нейронных сетей. Численные эксперименты показывают, что ошибки округления и другие математические неточности могут привести к полной потере значимости выводов нейросети, а также сделать бессмысленными любые сравнения метрик качества.
Цифровой шум в нейросетях возникает главным образом из-за неточности математических операций со значениями, представленными в цифровом виде как числа с плавающей запятой. Единичные ошибки обычно не оказывают заметного влияния на работу ИНС, а вот их накопление в конечном итоге приводит к потере значимости результата.
Речь идёт не о проверке статистической надёжности выводов ИНС, а о более фундаментальной и часто игнорируемой проблеме — надёжности самой логики работы нейросети. Когда накапливаются цифровые шумы, обновления весов рассчитываются неправильно, а градиентный спуск перестаёт работать сам по себе. В итоге ломается математическая модель нейросети, а вместо её обучения происходит только дальнейшее зашумление параметров и вывода.
Это отдельная и малоизученная проблема. Если с ней не столкнулись в процессе (до)обучения нейросети, то только потому, что статистические показатели испортились раньше, чем численная схема. Момент разрушения численной схемы нейросети может быть неочевидным, но после него уже не имеет смысла принимать во внимание статистические показатели, независимо от их значений.
Сколько вешать в битах?
Обычно нейронные сети обучаются на 32-битных значениях с плавающей точкой (FP32). В то же время для оптимизации скорости используются 16-битные числа с плавающей запятой (FP16). Существуют также 8-битные тензорные процессоры, на которых работают нейросети для IoT и граничных вычислений (edge computing). Каждое уменьшение размера числа, приводящее к снижению точности, очевидно, уменьшает значимость результата. Однако обычно проверяют только качество предсказания нейросети без проверки точности вычисления значений.
Потеря значимости объясняется тем, что числа с плавающей запятой являются представлениями некоторого подмножества действительных чисел, но не самими действительными числами. Стандарт для такого представления известен как IEEE 754. Кроме того, этот стандарт описывает, как выполняются операции с числами. Все операции имеют некоторые неточности, но самая большая из них возникает в случае вычитания чисел, близких друг к другу. Сравнение значений также может вносить ошибки, поскольку реализуется через вычитание.
Размер имеет значение
На языке математики работа нейросети сводится к поиску оптимальной функции, описывающей зависимость между входными данными и результатом. Согласно теореме аппроксимации Цыбенко, любая функция может быть приближена достаточно большой нейросетью всего с одним скрытым слоем. Однако многие разработчики нейросетей стремятся использовать в них всё больше слоёв, а затем обучать ИНС как можно дольше на самом большом наборе данных. Как показывает проведённый Игорем эксперимент, «больше» — далеко не всегда означает «лучше».
Размер нейросетей традиционно указывается как количество параметров (переменных, значения которых подбираются в ходе обучения). Технически это набор весов (коэффициентов связей между нейронами, weights) и их смещений (biases) для каждого нейрона.
В таблице ниже можно увидеть, что число параметров ИНС растёт с каждым годом в геометрической прогрессии. Если в 1998 году нейронка LeNet-5 насчитывала чуть больше 48 тысяч параметров, то созданная в 2021 году китайская нейросеть Wu Dao 2.0 разрослась до 1,75 трлн параметров.
Нейросеть |
Год создания |
Кол-во параметров |
LeNet-5 |
1998 |
48 120 |
AlexNet |
2012 |
61 000 000 |
VGGNet-19 |
2015 |
144 000 000 |
GPT-3 |
2020 |
175 000 000 000 |
Wu Dao 2.0 |
2021 |
1 750 000 000 000 |
По мере увеличения размера нейросетей проблема потери точности вычислений становится всё актуальнее. В статье Игоря показано, что чем сложнее ИНС, тем больше (при прочих равных) она подвержена влиянию цифровых шумов. Проще говоря, размер нейросети может быть избыточным для конкретного набора данных.
Когда возникает новая задача из области машинного обучения, чаще всего для её решения используют какую-то готовую нейросеть, предварительно обученную на огромном наборе данных. Затем её быстренько дообучают на собственном датасете и думают, что всё прекрасно.
Однако на более простом наборе данных точность переобученной нейросети может снизиться из-за наличия слоёв, избыточных по отношению к новому датасету.
В эксперименте сравнивалось, какие нейросети в процессе обучения могут достичь лучшего качества до того, как влияние цифровых шумов станет слишком сильным. Было показано, что наилучшие результаты наблюдаются у нейросетей, лишённых избыточности.
Сокращение слоёв нейронных сетей может улучшить числовую стабильность и сходимость, а в конечном итоге — повысить результирующую производительность. Таким образом, размер нейросети всегда должен оцениваться относительно конкретного набора данных.
Колеблется — значит лжёт!
В теории большая нейросеть способна выполнить любую задачу (выразить произвольную функцию), которая доступна нейросетям меньшего размера. Однако проведённый Игорем эксперимент показывает, что не всё так однозначно. На практике избыточные нейросети запутывают сами себя, накапливая цифровой шум.
При накоплении числовых неточностей в какой-то момент возникают флуктуации — колебания функции потерь в процессе обучения. Они указывают на то, что ошибки округления уже достаточно велики, и дальнейшее обучение теряет смысл.
Функция потерь численно характеризует общую степень неточности предсказаний нейросети на обучающей выборке. Она выражает её в виде действительного числа, характеризующего отличие предсказаний нейросети от правильных ответов на размеченном обучающем датасете.
За одну флуктуацию функция потерь может возрасти на несколько порядков. Это приводит к тому, что полезный сигнал нейросети становится неразличим на фоне цифровых шумов.
Все предсказания сети, сделанные после начала флуктуаций, являются всего лишь артефактами. Поэтому обнаружение момента начала таких колебаний необходимо для сохранения значимости выводов нейросети.
Эксперименты с модельными наборами данных показывают, что для каждого набора данных существует оптимальный размер нейросети, при котором достигается максимальная точность без потери значимости. Если сеть избыточна относительно сложности датасета, то процесс её обучения становится менее стабильным и приводит к более раннему появлению флуктуаций.
Потеря точности может быть использована и как уязвимость для проведения атак на системы машинного обучения [https://kryptonite.ru/articles/ataki-na-ml/]. Глубокие сети (имеющие более одного скрытого слоя) более восприимчивы к таким атакам.
Таким образом, сокращение числа слоёв (и размеров самих слоёв) может не только повысить точность результата, но и сделать работу нейросети более надёжной за счёт уменьшения влияния цифровых шумов.
Заключение
Сложившаяся практика (до)обучения нейросетей зачастую приводит к незаметному накоплению цифровых шумов. В какой-то момент их становится настолько много, что возникают флуктуации. При этом вывод нейросети становится бесполезным, хотя формально она всё ещё может соответствовать выбранным критериям качества.
Эффект нарастания цифровых флуктуаций был выявлен как в модельных, так и в общедоступных нейросетях. В частности, он был подтверждён в LeNet-5 на наборе данных MNIST с десятком стандартных оптимизаторов.
Результаты проделанных экспериментов позволяют выдвинуть гипотезу о том, что минимальные значения функции потерь, сохраняющие значимость, достигаются у нейросетей, размер которых близок к сложности набора данных.
Обучение нейросетей должно быть остановлено, как только начинаются флуктуации. Более того, их появление следует отслеживать, чтобы избежать последующей интерпретации бессмысленных значений и не допустить принятия ошибочных решений, построенных на попытках интерпретировать цифровой шум как что-то осмысленное.
По материалам исследования в зарубежном издании IJAINN вышла научная статья [https://www.ijainn.latticescipub.com/portfolio-item/a1061123122/] «Влияние цифровых флуктуаций на поведение нейронных сетей».
Источник информации: НПК «Криптонит»
Источник фото: iStock