Kolmogorov-Arnold Networks (KAN) Alternativa promissora para Perceptron multicamadas?
Introdução
Um novo artigo sobre aprendizado de máquina que apresenta ousadamente um novo caminho no campo do aprendizado profundo. A recente publicação sobre Redes Kolmogorov-Arnold (KANs) é precisamente um desses trabalhos inovadores. Hoje, tentaremos entender as ideias e os conceitos fundamentais dos KANs neste artigo.
Um novo algoritmo de aprendizado de máquina, Kolmogorov-Arnold Networks (KANs) promete ser uma alternativa ao Multi-Layer Perceptron. Perceptrons multicamadas (MLPs), ou redes neurais feedforward totalmente conectadas, são como os blocos fundamentais do aprendizado profundo moderno. Eles são importantes para resolver problemas complexos porque são bons em aproximar relações curvas entre dados de entrada e saída.
Mas, os KANs são a solução definitiva para a construção de modelos que entendem e preveem coisas?
Apesar de seu uso generalizado, os MLPs apresentam algumas desvantagens. Por exemplo, em modelos como transformadores, os MLPs usam muitos parâmetros que não estão envolvidos na incorporação de dados. Além disso, muitas vezes são difíceis de entender, o que os torna um modelo de caixa preta, em comparação com outras partes do modelo, como camadas de atenção, o que pode tornar mais difícil descobrir por que fazem certas previsões sem ferramentas de análise adicionais.
Pré-requisitos
- Cálculo Básico e Álgebra Linear: Noções básicas sobre diferenciação, integração e operações matriciais.
- Análise Real Elementar: Familiaridade com funções contínuas, séries e espaços funcionais.
- Cálculo Multivariável: Conhecimento de derivadas parciais e funções multivariáveis.
- Sistemas Dinâmicos: Exposição a conceitos básicos como espaços de fase, estabilidade e pontos fixos.
- Noções básicas de aprendizado de máquina: compreensão de redes neurais, funções de ativação e algoritmos de treinamento.
- Teorema de Kolmogorov-Arnold: Alguns antecedentes do teorema que garantem qualquer função contínua multivariada podem ser representados como uma composição de funções univariadas contínuas.
Esses conceitos ajudarão você a compreender melhor o conceito de KANs.
Por que é considerado uma alternativa ao MLP?
Embora os MLPs tratem de funções de ativação fixas em nós, os KANs invertem o script colocando funções de ativação que podem ser aprendidas nas bordas. Isso significa que cada parâmetro de peso em um KAN é substituído por uma função 1D que pode ser aprendida, tornando a rede mais flexível. Surpreendentemente, apesar dessa complexidade adicional, os KANs geralmente exigem gráficos de computação menores que os MLPs. Na verdade, em alguns casos, um KAN mais simples pode superar um MLP muito maior tanto em precisão quanto em eficiência de parâmetros, como na resolução de equações diferenciais parciais (PDE).
Conforme declarado no artigo de pesquisa, para resolução de PDE, um KAN de 2 camadas com largura de 10 é 100 vezes mais preciso do que um MLP de 4 camadas com largura de 100 (10-7 vs 10-5 MSE) e 100 vezes mais eficiente em parâmetros ( Parâmetros 102 vs 104).> Conforme declarado no artigo de pesquisa, que para resolução de PDE, um KAN de 2 camadas com largura de 10 é 100 vezes mais preciso do que um MLP de 4 camadas com largura de 100 (10−7 vs 10−5 MSE ) e 100 vezes mais eficiente em termos de parâmetros (102 vs 104 parâmetros).
As redes Kolmogorov-Arnold são uma homenagem a dois grandes matemáticos tardios, Andrey Kolmogorov e Vladimir Arnold (Fonte)
Outros trabalhos de pesquisa também tentaram aplicar este teorema para treinar modelos de aprendizado de máquina no passado. No entanto, este artigo específico dá um passo adiante ao expandir a ideia. Ele introduz uma abordagem mais generalizada para que possamos treinar redes neurais de qualquer tamanho e complexidade usando retropropagação.
O que é KAN?
KANs são baseados no teorema de representação de Kolmogorov-Arnold,
Se f é uma função contínua multivariada em um domínio limitado, então f pode ser escrito como uma composição finita de funções contínuas de uma única variável e a operação binária de adição. Mais especificamente, para um f suave: [0, 1]n → R,
Se f é uma função contínua multivariada em um domínio limitado, então f pode ser escrito como uma composição finita de funções contínuas de uma única variável e a operação binária de adição. Mais especificamente, para um f suave: [0, 1]n → R,
Para entender isso, tomemos um exemplo de uma equação multivariada como esta,
Esta é uma função multivariada porque aqui, y depende de x1, x2,…xn.
De acordo com o teorema, podemos expressar isto como uma combinação de funções de variável única. Isto permite-nos decompor a equação multivariável em várias equações individuais, cada uma envolvendo uma variável e outra função dela, e assim por diante. Em seguida, some os resultados de todas essas funções e passe essa soma por outra função univariada, f conforme mostrado aqui.
Função Univariada
Passando a saída somada para outra função (composição única)
Além disso, em vez de fazer uma composição, fazemos múltiplas composições, como m composições diferentes e as somamos.
Além disso, podemos reescrever a equação acima para,
Visão geral do artigo
O artigo demonstrou que a adição é a única função multivariada verdadeira, já que qualquer outra função pode ser expressa por meio de uma combinação de funções univariadas e soma. À primeira vista, isso pode parecer um avanço para o aprendizado de máquina, reduzindo o desafio de aprender funções de alta dimensão ao domínio de um número polinomial de funções 1D.
Em termos mais simples, é como dizer que mesmo quando lidamos com uma equação complicada ou uma tarefa de aprendizagem automática onde o resultado depende de muitos factores, podemos dividi-la em partes mais pequenas e mais fáceis de manusear. Nós nos concentramos em cada fator individualmente, como resolver uma peça do quebra-cabeça de cada vez, e depois juntamos tudo para resolver o problema maior. Portanto, o principal desafio é descobrir como lidar com essas partes individuais, e é aí que o aprendizado de máquina e técnicas como a retropropagação entram em ação para nos ajudar.
A equação de representação original de Kolmogorov-Arnold alinha-se com um KAN de 2 camadas com uma forma de [n, 2n + 1, 1]
.
É importante notar que todas as operações dentro desta representação são diferenciáveis, o que nos permite treinar KANs usando retropropagação.
A equação acima mostra que a soma externa percorre todas as diferentes composições de 1 a m. Além disso, a soma interna percorre cada variável de entrada x1 a xn para cada função externa q. Na forma de matriz, isso pode ser representado abaixo.
Aqui, a função interna pode ser representada como uma matriz preenchida com várias funções de ativação (denotadas como phi). Além disso, temos um vetor de entrada (x) com n características, que percorrerá todas as funções de ativação. Observe aqui que phi representa a função de ativação e não os pesos. Essas funções de ativação são chamadas de B-Splines. Para adicionar aqui cada uma dessas funções são curvas polinomiais simples. As curvas dependem da entrada de x.
Representação Visual do KAN
Aqui está uma representação visual do treinamento de um KAN de 3 camadas,
Representação visual do KAN-Observe como o valor de x altera a curva e isso por sua vez altera os valores de ativação
Esquerda: notações de ativações que fluem pela rede. À direita: uma função de ativação é parametrizada como B-spline, que permite alternar entre grades de granulação grossa e granulação fina.
Na ilustração fornecida, existem dois recursos de entrada e uma primeira camada de saída composta por cinco nós. Cada saída desses nós passa por cinco funções de ativação univariadas parametrizadas distintas. As ativações resultantes são então somadas para produzir os recursos de cada nó de saída. Todo esse processo constitui uma única camada KAN com uma dimensão de entrada 2 e uma dimensão de saída 5. Assim como o perceptron multicamadas (MLP), várias camadas KAN podem ser empilhadas umas sobre as outras para gerar uma rede neural longa e mais profunda. A saída de uma camada é a entrada para a próxima. Além disso, como os MLPs, o gráfico de computação é totalmente diferenciável, pois depende de funções de ativação diferenciáveis e somatório no nível do nó, permitindo o treinamento por meio de retropropagação e gradiente descendente.
Diferença entre MLPs e KANs
Um diferencial importante entre as duas redes é que as MLPs colocam funções fixas de ativação nos nós. Em contraste, os KANs colocam funções de ativação que podem ser aprendidas ao longo das bordas e os nós resumem isso.
Em MLPs, as funções de ativação são livres de parâmetros e executam operações fixas nas entradas, enquanto os parâmetros que podem ser aprendidos são apenas pesos e tendências lineares. Em contraste, os KANs carecem inteiramente de matrizes de peso linear; em vez disso, cada parâmetro de peso é substituído por uma função de ativação não linear que pode ser aprendida.
Além disso, considerar o problema de instabilidade com funções de ativação tradicionais em redes neurais torna o treinamento bastante desafiador. Para resolver isso, os autores dos KANs empregam B-splines, que oferecem maior estabilidade e comportamento limitado.
Splines B
Agora, vamos entender brevemente os B-splines. B-splines são essencialmente curvas compostas de segmentos polinomiais, cada um com um nível especificado de suavidade. Imagine cada segmento como uma pequena curva, onde vários pontos de controle influenciam a forma. Ao contrário das curvas spline mais simples, que dependem de apenas dois pontos de controle por segmento, as splines B usam mais, resultando em curvas mais suaves e adaptáveis.
A magia dos B-splines reside no seu impacto local. O ajuste de um ponto de controle afeta apenas a seção próxima da curva, deixando o restante intacto. Esta propriedade oferece vantagens notáveis, especialmente na manutenção da suavidade e na facilitação da diferenciabilidade, o que é crucial para uma retropropagação eficaz durante o treinamento.
Uma curva B-spline quadrática (p=2) (Fonte)
Treinamento de KANs
A retropropagação é uma técnica crucial para reduzir a perda no aprendizado de máquina. É crucial treinar redes neurais ajustando iterativamente seus parâmetros com base nos erros observados. Em KANs, a retropropagação é essencial para o ajuste fino dos parâmetros da rede, incluindo pesos de borda e coeficientes de funções de ativação que podem ser aprendidas.
O treinamento dos KANs começa com a inicialização aleatória dos parâmetros da rede. A rede então passa por passagens para frente e para trás: os dados de entrada são alimentados pela rede para gerar previsões, que são comparadas com rótulos reais para calcular a perda. A retropropagação calcula gradientes de perda em relação a cada parâmetro usando a regra da cadeia de cálculo. Esses gradientes orientam as atualizações dos parâmetros por meio de métodos como descida de gradiente, descida de gradiente estocástica ou otimização de Adam.
Um desafio importante no treinamento de KANs é garantir estabilidade e convergência durante a otimização. Os pesquisadores usam técnicas como abandono e redução de peso para regularização e selecionam cuidadosamente algoritmos de otimização e taxas de aprendizagem para resolver isso. Além disso, as técnicas de normalização de lote e de normalização de camada ajudam a estabilizar o treinamento e acelerar a convergência.
KANs ou MLPs?
A principal desvantagem dos KANs é sua lenta velocidade de treinamento, que é cerca de 10 vezes mais lenta que os MLPs com o mesmo número de parâmetros. No entanto, a investigação ainda não se concentrou muito na otimização da eficiência dos KANs, pelo que ainda há margem para melhorias. Se você precisa de um treinamento rápido, opte por MLPs. Mas se você prioriza a interpretabilidade e a precisão e não se importa com um treinamento mais lento, vale a pena tentar os KANs.
KANs ou MLPs (fonte)
Os principais diferenciais entre MLPs e KANs são:
(i) As funções de ativação estão nas bordas em vez de nos nós,
(ii) As funções de ativação podem ser aprendidas em vez de fixas.
Vantagens dos KANs
- Os KANs podem aprender suas funções de ativação, tornando-os mais expressivos que os MLPs padrão e capazes de aprender funções com menos parâmetros.
- Além disso, o artigo mostra que os KANs superam os MLPs usando significativamente menos parâmetros.
- Uma técnica chamada extensão de grade permite o ajuste fino dos KANs, tornando as grades de controle spline mais refinadas, aumentando a precisão sem precisar retreinar do zero. Isso adiciona mais parâmetros ao modelo para maior variância e expressividade.
KANs são menos propensos ao esquecimento catastrófico devido ao controle local dos B-splines.
- O esquecimento catastrófico ocorre quando uma rede neural treinada esquece o treinamento anterior ao fazer o ajuste fino com novos dados.
- Nas MLPs, os pesos mudam globalmente, fazendo com que a rede esqueça dados antigos ao aprender novos dados.
- Nos KANs, o ajuste dos pontos de controle dos splines afeta apenas as regiões locais, preservando o treinamento anterior.
Um exemplo de esquecimento catastrófico em MLPs e KANs
Faça os KANs funcionarem
Instalar via github
!pip install git+https://github.com/KindXiaoming/pykan.git
Instalar via PyPI:
!pip install pykan
Requisitos
# python==3.9.7
matplotlib==3.6.2
numpy==1.24.4
scikit_learn==1.1.3
setuptools==65.5.0
sympy==1.11.1
torch==2.2.2
tqdm==4.66.2
Inicialize o KAN e crie um KAN,
from kan import *create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).
model = KAN(width=[2,5,1], grid=5, k=3, seed=0)
# create dataset f(x,y) = exp(sin(pi*x)+y^2)
f = lambda x: torch.exp(torch.sin(torch.pi*x[:,[0]]) + x[:,[1]]**2)
dataset = create_dataset(f, n_var=2)
dataset['train_input'].shape, dataset['train_label'].shape
# plot KAN at initialization
model(dataset['train_input']);
model.plot(beta=100)
# train the model
model.train(dataset, opt="LBFGS", steps=20, lamb=0.01, lamb_entropy=10.);
model.plot()
model.prune()
model.plot(mask=True)
model = model.prune()
model(dataset['train_input'])
model.plot()
model.train(dataset, opt="LBFGS", steps=50);
perda de trem: 2.09e-03 | perda de teste: 2.17e-03 | registro: 1.64e+01: 100%|██| 50/50 [00:20<00:00, 2,41it/s]
model.plot()
mode = "auto" # "manual"
if mode == "manual":
# manual mode
model.fix_symbolic(0,0,0,'sin');
model.fix_symbolic(0,1,0,'x^2');
model.fix_symbolic(1,0,0,'exp');
elif mode == "auto":
# automatic mode
lib = ['x','x^2','x^3','x^4','exp','log','sqrt','tanh','sin','abs']
model.auto_symbolic(lib=lib)
corrigindo (0,0,0) com log, r2=0,9692028164863586
fixando (0,0,1) com tanh, r2=0,6073551774024963
fixando (0,0,2) com sen, r2=0,9998868107795715
fixando (0,1,0) com sen, r2=0,9929550886154175
fixando (0,1,1) com sen, r2=0,8769869804382324
fixando (0,1,2) com x ^2, r2=0,9999980926513672
fixando (1,0,0) com tanh, r2=0,902226448059082
fixando (1,1,0) com abs, r2=0,9792929291725159
fixando (1,2,0) com exp, r2=0,9999933242797852
model.train(dataset, opt="LBFGS", steps=50);
perda de trem: 1.02e-05 | perda de teste: 1.03e-05 | registro: 1.10e+03: 100%|██| 50/50 [00:09<00:00, 5,22it/s]
Resumo das limitações e direções futuras dos KANs
De acordo com a pesquisa, descobrimos que os KANs superam os MLPs em tarefas científicas, como ajuste de equações físicas e resolução de PDEs. Eles são promissores para problemas complexos, como equações de Navier-Stokes e teoria do funcional de densidade. Os KANs também poderiam aprimorar modelos de aprendizado de máquina, como transformadores, criando potencialmente “kansformers”. ”
Os KANs se destacam porque se comunicam na “linguagem” das funções científicas. Isto os torna ideais para a colaboração entre cientistas e IA, permitindo uma interação mais fácil e eficaz entre IA e pesquisadores. Em vez de visar cientistas de IA totalmente automatizados, é mais prático desenvolver uma IA que ajude os cientistas a compreender as suas necessidades e preferências específicas.
Além disso, preocupações significativas precisam ser abordadas antes que os KANs possam substituir potencialmente os MLPs no aprendizado de máquina. O principal problema é que os KANs não podem utilizar o processamento paralelo da GPU, impedindo-os de aproveitar as vantagens das multiplicações rápidas de matrizes que as GPUs oferecem. Essa limitação significa que os KANs são treinados muito lentamente, uma vez que suas diferentes funções de ativação não conseguem aproveitar com eficiência a computação em lote ou processar vários pontos de dados em paralelo. Conseqüentemente, se a velocidade é crucial, os MLPs são melhores. No entanto, se você prioriza a interpretabilidade e a precisão e pode tolerar um treinamento mais lento, os KANs são uma boa escolha.
Além disso, os autores não testaram KANs em grandes conjuntos de dados de aprendizado de máquina, portanto não está claro se eles oferecem alguma vantagem sobre MLPs em cenários do mundo real.
Esperamos que você tenha achado este artigo interessante. É altamente recomendável verificar a seção de recursos para obter mais informações sobre KANs.
Obrigado!
Recursos
- Artigo de pesquisa original
- Artigo da Kolmogorov Arnold Networks (KAN) explicado - Um novo paradigma empolgante para aprendizado profundo?