Мы приняли классические многослойные перцептроны (MLP) как нечто само собой разумеющееся и построили на их основе множество архитектур. MLP являются неотъемлемой частью каждой модели LLM или фонда, которую мы видим сегодня, например,chatGPT, LLAMA, DALLE и CLIP. Или даже простые модели распознавания, такие как YOLO-v*.
А если я вам сейчас скажу, что у нас появился конкурент для тех самых МЛП? В городе появилась новая газета под названием «Сеть Колмогорова-Арнольда», или сокращенно КАН, которая бросает вызов МЛП. Если решение, которое они предлагают, действительно масштабируется, то мы сможем получить следующее поколение нейронных сетей, которые сделают нас еще на шаг ближе к общему искусственному интеллекту (AGI).
В то время как MLP содержат функции активации, такие как ReLU, сигмовидная мышца, tanh, GeLU и т. д., KAN предлагает нам изучить эти функции активации. Итак, как KAN это делает? Какая математика стоит за этим? Как это реализовано? И как мы вообще тренируем KAN?
Я постарался изо всех сил обобщить здесь статью KAN. Вы можете либо прочитать эту суть, либо прочитать статью длиной 48 страниц!
Если вы похожи на меня и хотите визуализировать вещи, чтобы лучше понять, вот видео-форма этой статьи:
Начнем с MLP, с которыми мы хорошо знакомы. MLP состоят из узлов и ребер. В каждом узле мы суммируем входные данные и применяем такие активации, как ReLU, GeLU и SeLU, для получения выходных данных для этого конкретного узла.
Эти функции активации никогда не меняются в ходе тренировочного процесса. Другими словами, у них нет никаких параметров. Они недостаточно умны, чтобы настроиться на данный набор обучающих данных. Итак, во время обучения обучается или обновляется вес каждого из этих узлов.
А что, если мы поставим под сомнение предположение о том, что функцию активации необходимо зафиксировать и сделать ее обучаемой? Итак, это проблема, которую пыталась решить сеть KAN. Функции активации сети KAN обновляются в процессе обучения. Прежде чем углубляться, давайте начнем с полиномов и аппроксимации кривой.
Итак, основная идея KAN заключается в том, что любую многомерную составную функцию можно разбить на сумму нескольких функций, которые являются отдельными переменными.
Например, предположим, что у нас есть уравнение степени 3, где y=x³, как показано желтой кривой выше. И еще одно уравнение степени 2, y=x², как показано синей кривой на анимации выше. На этой визуализации мы видим, что при использовании x² никогда не удастся достичь кривизны, достигаемой при использовании x³.
Предположим, нам даны данные, представленные красной и синей точками ниже, и мы хотим найти границу двоичной классификации между двумя классами.
Используя полином второго порядка x² , мы не сможем найти границу между ними, поскольку кривая x² имеет форму «U», а данные имеют форму «S». Хотя для этих данных подходит использование x³ , оно требует дополнительных вычислительных затрат. Другим решением может быть использование x² , когда входной сигнал x отрицательный, но использование - x² , когда x положительный (синяя кривая, нарисованная рукой на рисунке выше).
Все, что мы сделали, — это добавили два полинома более низкой степени, чтобы получить кривую с более высокой степенью свободы. Именно эта идея лежит в основе сетей KAN.
Давайте теперь возьмем немного более сложную игрушечную задачу, где мы знаем, что данные генерируются с помощью простого уравнения y=exp(sin(x1² + x2²) + sin(x3² + x4²)) . Итак, у нас есть 4 входные переменные и три операции: экспонента, синус и квадрат. Итак, мы можем выбрать четыре входных узла с тремя слоями, каждый из которых предназначен для трех различных операций, как показано ниже.
Сеть KAN для игрушечной задачи с четырьмя входами и тремя базисными функциями для вычислений — экспонентой, синусоидой и квадратом.
После обучения узлы будут сходиться к функциям квадрата, синусоиды и экспоненты, чтобы соответствовать данным.
Поскольку это игрушечная задача, мы знаем уравнение, из которого получены данные. Но на практике мы не знаем, как распределяются реальные данные. Один из способов решения этой проблемы — использование B-сплайнов.
Фундаментальная идея B-сплайнов заключается в том, что любую данную функцию или кривую можно представить как комбинацию более простых функций или кривых. Эти более простые функции называются базисными функциями. Например, возьмем красную кривую на рисунке ниже. Для простоты попробуем представить это всего с помощью двух базисных функций.
Мы можем разбить его на 3 пункта, поскольку собираемся представить его в виде суммы двух базисных функций. Эти точки называются узлами. Базисных функций может быть любое количество n . Параметром, который управляет тем, как этот базис функционирует в комбинациях, является c. Когда мы «соединяем» две кривые, в узлах могут быть разрывы. Решение состоит в том, чтобы ограничить кривизну кривых в узлах, чтобы мы получили плавную кривую. Например, мы можем ограничить наклон двух кривых одинаковым в узлах, как показано зеленой стрелкой на рисунке ниже.
Поскольку мы не можем наложить такое ограничение на нейронную сеть, в статье были представлены функции невязки . Это больше похоже на регуляризацию. Фактически это активация SeLU, которая добавляется к стандартной функции сплайна, как показано в статье ниже.
KAN представляют новый способ обучения, называемый мелкозернистым . Все мы знакомы с тонкой настройкой, при которой мы добавляем в модель больше параметров. Однако в случае мелкозернистости мы можем улучшить плотность сплайновых сеток. Это то, что они называют расширением сетки.
Как мы видим на рисунке выше из статьи, мелкозернистость просто делает сетки B-сплайнов плотными, чтобы они стали более репрезентативными и, следовательно, более мощными.
Одним из недостатков сплайнов является то, что они рекурсивны и требуют больших вычислительных затрат. Их вычислительная сложность составляет O(N²LG), что выше обычной сложности O(N²L) для MLP. Дополнительная сложность возникает из-за интервалов сетки G.
Авторы защищают эту внутреннюю проблему, показывая, что:
Графики этих защит мы увидим в разделе результатов. А пока давайте более подробно рассмотрим еще одну особенность KAN.
Поскольку KAN изучают функции, это не просто черный ящик, подобный MLP, где мы можем просто спроектировать их, выбирая глубину и ширину MLP для заданных данных или проблемы. Итак, чтобы сделать KAN более интерпретируемыми и спроектировать хорошую сеть KAN, нам необходимо выполнить следующие шаги:
fix_symbolic(l,i,j,f)
, где l, i, j — уровень и расположение узлов, а f — функция, которая может быть sine, cosine, log, etc
Краткое изложение различных шагов, предложенных в статье для создания обученной сети KAN.
Различные этапы суммированы на рисунке выше. Мы начинаем с большой сети и разрежаем ее (шаг 1), сокращаем полученную сеть (шаг 2), устанавливаем некоторую символику (шаг 3), обучаем сеть (шаг 4) и, наконец, получаем обученную модель.
Используя шаги, упомянутые выше, они обучили сети KAN решению пяти различных игрушечных задач, чтобы продемонстрировать их эффективность и сравнить их с MLP. Основные выводы из сравнения:
Первая точка обозначена толстой синей линией на пяти графиках верхнего графика выше для 5 игрушечных задач. Последние два пункта иллюстрируются графиком внизу, на котором показаны кривые потерь и количество параметров для решения любой конкретной проблемы.
Следующий вывод заключается в том, что KAN намного лучше, чем MLP, решают проблему катастрофического забывания. Если мы подаем данные последовательности для непрерывного обучения, KAN, похоже, запоминают прошлые данные гораздо лучше, чем MLP. Это показано на рисунке ниже, где KAN воспроизводит 5 фаз в данных, но MLP с трудом.
Они также провели обширные эксперименты, чтобы показать, что KAN можно использовать для решения задач, связанных с частными дифференциалами и уравнениями физики. Вместо того, чтобы вдаваться в эти детали, давайте посмотрим, когда лучше выбирать KAN или MLP.
Они привели рисунок ниже, чтобы помочь нам понять, когда следует выбирать KAN вместо MLP. Итак, выбирайте KAN, если:
В противном случае MLP все равно выиграют.
Если вам понравилась эта статья, почему бы не подписаться на меня
Также прошу подписаться на мою
По моему мнению, KAN не могут заменить MLP в плане того, как трансформеры полностью охватили ландшафт НЛП. Скорее, KAN окажутся полезными для решения нишевых задач по математике и физике. Даже в этом случае я чувствую, что нам нужно еще много улучшений. Но для решения проблем больших данных, которые решаются с помощью базовых моделей, KAN предстоит пройти долгий путь, по крайней мере, в их нынешнем состоянии.
Более того, подход к обучению и проектированию архитектуры KAN имеет тенденцию отклоняться от стандартного способа проектирования и обучения современных нейронных сетей. Тем не менее, страница GitHub уже имеет 13 тысяч звезд и 1,2 тысячи форков, что указывает на то, что она к чему-то готова. Давайте подождем и посмотрим это пространство.