При внимательном чтении замечаешь, что все статьи опираются на оригинал статьи на английском языке
https://arxiv.org/pdf/2404.19756 , содержат рисунки взятые из этой статьи и, что прекрасно, ссылаются на github создателей этой сети.
Есть также перевод этой статьи на русский
https://datasecrets.ru/articles/9 .
Сама статья написана восемью учеными (Ziming Liu, Yixuan Wang, Sachin Vaidya, Fabian Ruehle, James Halverson, Marin Soljaci, Thomas Y. Hou, Max Tegmark), представляющими Массачусетский технологический институт, Калифорнийский технологический институт, Северо-Восточный университет и Институт искусственного интеллекта и фундаментальных взаимодействий NSF . И на их github хранится вся нужная информация и новые модули, которые позволяют попробовать поработать с новой сетью.
На мой взгляд, лучший способ что-то понять - это самостоятельно сделать что-то руками. Я зашла на githab
KindXiaoming/
pykan, который писал про KAN и скачала ноут для работы, но работа сразу застопорилась. Строка !pip install kan , с которой началась программа, вроде бы выполнялась, но потом колаб не находил модель KAN ради которого, все и затевалось. Проведя некоторое время в бесплодных попытках заставить работать программу, я написала этому человеку по электронной почте и, о чудо, практически сразу же получила ответ. Отказывается нужно писать !pip install pykan . С такой строкой программа начала работать.
Давайте попробуем разобрать в чем принципиальное отличие архитектуры KAN от архитектуры многослойного персептрона. Если говорить совсем для новичков, то в случае многослойного персептрона сеть состоит из слоев, слой из нейронов и есть связи, которые соединяют нейроны различных слоев. На этих связях располагаются веса. Именно эти веса подбирает механизм обратного распространения ошибки. И внутри каждого слоя находится функция активации, как правило линейная и одинаковая для всего слоя. Каждый нейрон складывает входящие в него веса, и потом передает значение, измененное функцией активации. Итак, есть ядра, веса на ребрах между ядрами и функция активации в ядре. Эта простая конструкция находится в основе систем компьютерного зрения и больших языковых моделей, на основе которых создана ChatGPT, создающая картинки, музыку и программный код, сочиняющая стихи и прочее.
Создатели KAN переместили функцию активации из нейронов на ребра, и теперь механизм обратного распространения ошибки подбирает не просто число, а функцию.
Это, с одной стороны, позволило сделать архитектуру сети намного меньше. В сети KAN намного меньше и слоев и нейронов, с другой повысилась объяснимость моделей. В KAN можно посмотреть функцию, лежащую на каждом ребре.
Объяснимость моделей очень важна, чтобы наглядно наблюдать влияние различных факторов на результат. Когда я изучала эконометрику, нам говорили, что когда выбирают среди двух моделей, пусть первая имеет не слишком хорошие показатели качества, но имеет параметры, которые можно интерпретировать, а другая - хорошие показатели качества модели, но не интерпретируемые параметры, нужно использовать обе. Одну для интерпретации, а другую - для прогнозирования. Сейчас сети, построенные на основе многослойного персептрона, воспринимаются как черный ящик, в котором непонятно что находится, но который более менее успешно справляется с задачей.
Рассмотрим как пользоваться новой технологией на примере решения классической задачи классификации. В качестве данных взята задача классификации грибов с сайта Kaggle.com (
https://www.kaggle.com/datasets/prishasawhney/mushroom-dataset) - первая в выдаче с высоким удобством использования и делением на два класса. Данный датасет содержит 9 столбцов - 8 независимых переменных: Cap Diameter (диаметр шляпки), Cap Shape (форма шляпки), Gill Attachment (способ прикрепления нижней части шляпки), Gill Color (цвет нижней части шляпки), Stem Height (высота ножки), Stem Width (ширина ножки), Stem Color (цвет ножки), Season (сезон) и 1 целевая функция - Target Class - Is it edible or not? (целевой класс - съедобно или нет). Целевой класс содержит два значения — 0 или 1, где 0 относится к съедобному, а 1 — к ядовитому. Все данные - числовые. Датасет состоит из 54035 наблюдения, пропусков в данных нет.