Engenharia de Recursos na Divisibilidade de Números Primos
Analisando como a preparação de dados impacta os modelos de divisibilidade de números primos.
― 8 min ler
Índice
Quando a gente fala sobre números, uma pergunta interessante é se um número pode ser dividido por outro número sem deixar resto. Esse problema é especialmente notável quando consideramos números primos. Números primos são aqueles que são maiores que 1 e só podem ser divididos por 1 e eles mesmos. Por exemplo, o número 5 é primo, porque só pode ser dividido de forma igual por 1 e 5. Por outro lado, números como 4 podem ser divididos por 1, 2 e 4, então não é primo.
Para os humanos, determinar se um número pode ser dividido por um número primo pequeno como 2 ou 3 é, muitas vezes, fácil. Por exemplo, um número é par se o último dígito for 0, 2, 4, 6 ou 8. Isso significa que qualquer número par, quando dividido por 2, não vai mostrar resto. Da mesma forma, para checar se um número é divisível por 3, você pode somar seus dígitos e ver se essa soma é divisível por 3.
Mas uma máquina não tem a mesma compreensão. Ela depende de instruções claras para fazer essas determinações. Nesse contexto, a gente explorou como diferentes técnicas de computação, especialmente o deep learning, podem ajudar a decidir se um número pode ser dividido por pequenos números primos.
O que é Deep Learning?
Deep learning é uma parte do machine learning que usa estruturas chamadas redes neurais para processar dados. Essas redes consistem em camadas de nós (ou neurônios) interconectados que podem aprender a identificar padrões nos dados. A ideia é que, com dados suficientes e a configuração certa, essas redes podem aprender a realizar tarefas complexas sem serem programadas para cada uma delas.
Por exemplo, quando tentamos descobrir se um número é divisível por um número primo, um modelo de deep learning poderia teoricamente ser treinado com muitos exemplos de números e sua Divisibilidade. Após o treinamento, o modelo poderia fazer previsões sobre novos números que não viu antes.
O Problema da Divisibilidade de Números Primos
Quando tentamos criar um sistema que pudesse automaticamente determinar se um número é divisível por um número primo pequeno, percebemos que a abordagem dependia muito de como representamos os números e quais características damos ao modelo. Se o modelo não receber o tipo certo de dados, pode ter dificuldade para aprender de forma eficaz.
Focamos em várias maneiras diferentes de preparar nossos dados antes de alimentá-los no modelo:
Representação Binária: Isso pega um número e expressa de um jeito que usa apenas dois símbolos, 0 e 1. Por exemplo, o número 5 em binário é representado como 101.
Representação em Base Três: Semelhante à binária, mas usando três símbolos (0, 1 e 2). Essa representação pode ajudar a revelar padrões diferentes.
Codificação One-Gram: Desmembrando um número em seus dígitos individuais. Por exemplo, o número 123 seria representado como a lista [1, 2, 3].
Codificação Two-Gram e Three-Gram: Juntando dígitos. Na codificação two-gram, o número 123 se tornaria [12, 23], enquanto na codificação three-gram, produziria apenas [123].
Esses métodos facilitam para o modelo reconhecer padrões que indicam divisibilidade.
Testando os Modelos
Nossos testes envolveram diferentes tipos de arquiteturas de redes neurais, como Redes Neurais Artificiais (ANN), Redes Neurais Convolucionais (CNN) e Redes Neurais Recorrentes (RNN). Cada arquitetura tem seus pontos fortes e fracos dependendo dos dados que processa.
Redes Neurais Artificiais: Essas consistem em nós interconectados. Sua força está na capacidade de aprender com dados complexos.
Redes Neurais Convolucionais: Especialmente boas para processar imagens e dados espaciais, mas também podem se aplicar a dados sequenciais.
Redes Neurais Recorrentes: Projetadas para dados sequenciais, tornando-as adequadas para séries temporais ou qualquer dado em que a ordem importa.
Enquanto montávamos nossos experimentos, aprendemos que simplesmente aumentar a complexidade das redes não sempre levava a melhores resultados. Em vez disso, a forma como preparávamos os dados era crucial para o desempenho.
Resultados dos Experimentos
Quando rodamos nossos experimentos, descobrimos que usar representações mais sofisticadas dos números melhorou significativamente como os modelos se saíram.
Por exemplo:
- Usar representação binária levou a uma precisão muito alta ao determinar se um número é par ou ímpar.
- As diferentes formas de codificação gram também mostraram melhorias na precisão. Especificamente, usar codificação two-gram ou three-gram ajudou o modelo a reconhecer mais padrões, embora não superasse significativamente o desempenho da codificação one-gram.
Em um dos nossos testes, notamos que depois de aplicar nossos processos de engenharia de características, o desempenho do modelo melhorou substancialmente. Veja como nosso modelo se saiu com diferentes configurações:
- Com dados brutos, o modelo teve dificuldades e mal atingiu uma taxa de precisão de 50%, que é parecido com adivinhar aleatoriamente.
- Com a representação binária, ele subiu para acima de 90% de precisão, indicando que o modelo encontrou o padrão quase que imediatamente.
- Os métodos de codificação gram também tiveram melhorias, com multi-grams proporcionando contexto adicional que foi benéfico para o modelo.
Aprendizado de Máquina Automatizado (AutoML)
À medida que os métodos de machine learning se tornaram populares, sistemas AutoML surgiram. Esses sistemas visam simplificar o processo de construção de modelos de machine learning. Eles automatizam muitos aspectos do pipeline de machine learning - desde a preparação de dados até a seleção e avaliação de modelos.
Testamos várias ferramentas AutoML oferecidas por empresas como Google, Microsoft e Amazon. No entanto, descobrimos que essas ferramentas não lidam sempre de forma eficaz com o problema da divisibilidade de números primos, a menos que dados bem preparados sejam fornecidos.
Nossos resultados indicaram que muitos sistemas AutoML tiveram dificuldades quando receberam dados brutos sem nenhum processamento de características. Isso destacou a importância da engenharia de características, já que pode fazer uma diferença significativa no sucesso dos modelos em aplicações do mundo real.
Insights do AutoML
Descobrimos que mesmo com algoritmos avançados, se os dados não fossem preparados adequadamente, os resultados não atenderiam às expectativas. Isso ressaltou um insight significativo: embora os sistemas AutoML atuais sejam incrivelmente poderosos, eles não podem substituir a necessidade de insight humano na preparação de dados.
Nossos experimentos mostraram que:
- Fornecer dados brutos aos sistemas AutoML gerou resultados decepcionantes.
- Quando aplicamos técnicas eficazes de engenharia de características, a precisão melhorou significativamente, semelhante aos nossos experimentos manuais de deep learning.
Ao usar algoritmos baseados em árvore que focam em características particulares, observamos um desempenho melhor em comparação com redes neurais mais complexas. Isso foi especialmente verdade para problemas de módulo, onde modelos mais simples se saíram muito bem com dados bem preparados.
Abordagens de Séries de Fourier
Para refinar ainda mais nossa abordagem, exploramos o uso de regressões de séries de Fourier. Essa ferramenta matemática ajuda a analisar funções periódicas e pode fornecer insights sobre padrões dentro dos dados.
No nosso contexto, isso ajudou a criar modelos que poderiam aproximar os valores da nossa função alvo. Esse método proporcionou um meio eficaz de codificar inteiros e nos permitiu capturar as características essenciais do problema de divisibilidade.
Ao utilizar séries de Fourier, observamos taxas de precisão altas que superaram nossas tentativas iniciais com redes neurais. O modelo conseguiu aproximar os resultados desejados de forma próxima, tornando-se uma ferramenta poderosa para entender a estrutura subjacente da divisibilidade de números primos.
Divisibilidade de Números Primos Usando ChatGPT
Como um teste final, investigamos se modelos de linguagem grandes como o ChatGPT poderiam resolver efetivamente o problema da divisibilidade de números primos. Pedimos ao ChatGPT para sugerir maneiras de usar algoritmos de deep learning sem depender de funções de módulo. Embora suas sugestões fossem válidas, a eficácia das soluções propostas era questionável.
O ChatGPT sugeriu usar redes neurais para analisar padrões, mas não parecia entender a complexidade da tarefa envolvida. Isso revelou limitações em sua compreensão de conceitos matemáticos, especialmente para problemas mais complexos.
Conclusão
Nosso estudo destaca a importância crucial da engenharia de características no campo do machine learning, especialmente ao lidar com problemas como a divisibilidade de números primos. Descobrimos que vários métodos de preparação de dados levam a diferenças significativas no desempenho dos modelos.
A eficácia de usar modelos de deep learning e sistemas AutoML depende muito da qualidade dos dados de entrada. Embora algoritmos avançados possam oferecer capacidades impressionantes, eles exigem uma preparação eficaz e insight de especialistas humanos para funcionar melhor.
No geral, concluímos que, seja usando métodos tradicionais de machine learning ou sistemas automatizados, a intervenção humana continua essencial na formação dos dados em uma forma que as máquinas possam aprender efetivamente. O desafio de determinar a divisibilidade de números primos persiste, mas com um foco contínuo na engenharia de características e na compreensão dos padrões subjacentes, podemos aproveitar ao máximo as capacidades do machine learning.
Título: Classification of integers based on residue classes via modern deep learning algorithms
Resumo: Judging whether an integer can be divided by prime numbers such as 2 or 3 may appear trivial to human beings, but can be less straightforward for computers. Here, we tested multiple deep learning architectures and feature engineering approaches on classifying integers based on their residues when divided by small prime numbers. We found that the ability of classification critically depends on the feature space. We also evaluated Automated Machine Learning (AutoML) platforms from Amazon, Google and Microsoft, and found that they failed on this task without appropriately engineered features. Furthermore, we introduced a method that utilizes linear regression on Fourier series basis vectors, and demonstrated its effectiveness. Finally, we evaluated Large Language Models (LLMs) such as GPT-4, GPT-J, LLaMA and Falcon, and demonstrated their failures. In conclusion, feature engineering remains an important task to improve performance and increase interpretability of machine-learning models, even in the era of AutoML and LLMs.
Autores: Da Wu, Jingye Yang, Mian Umair Ahsan, Kai Wang
Última atualização: 2023-09-08 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2304.01333
Fonte PDF: https://arxiv.org/pdf/2304.01333
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.