Digamos que temos uma representação vetorial de qualquer número inteiro de magnitude n, V_n
Esse vetor é a entrada para um algoritmo de aprendizado de máquina.
Primeira pergunta: para que tipo de representações é possível aprender a primalidade / composição de n usando uma rede neural ou algum outro mapeamento ML de vetor para bit. Isso é puramente teórico - a rede neural pode ter tamanho ilimitado.
Vamos ignorar representações que já estão relacionadas ao teste de primalidade, como: a lista separada nula de fatores de n ou a existência de uma testemunha de composição como em Miller Rabin. Em vez disso, vamos nos concentrar nas representações em diferentes radias ou representações como vetores coeficientes de polinômios (possivelmente multivariados). Ou outros exóticos como são postados.
Segunda pergunta: para quais tipos de algoritmo ML, se houver algum, o aprendizado será impossível, independentemente das especificidades do vetor de representação? Novamente, vamos deixar de fora as representações "proibidas pela trivialidade", cujos exemplos são dados acima.
A saída do algoritmo de aprendizado de máquina é um bit único, 0 para prime, 1 para composto.
O título desta pergunta reflete minha avaliação de que o consenso para a pergunta 1 é 'desconhecido' e o consenso para a pergunta 2 é 'provavelmente a maioria dos algoritmos de ML'. Estou perguntando isso, porque não sei mais do que isso e espero que alguém possa apontar o caminho.
A principal motivação, se houver uma, dessa pergunta é: existe um limite "teórico da informação" para a estrutura do conjunto de primos que pode ser capturado em uma rede neural de um tamanho específico? Como não sou especialista nesse tipo de terminologia, reformule essa idéia algumas vezes e veja se entendo uma aproximação de Monte-Carlo ao conceito: qual é a complexidade algorítmica do conjunto de números primos? O fato de que os primos são diofantinos recursivamente enumeráveis (e podem satisfazer uma determinada equação diofantina grande ) pode ser usado para capturar a mesma estrutura em uma rede neural com as entradas e saídas descritas acima.
fonte
Respostas:
essa é uma pergunta / problema antigo, com muitas, muitas conexões profundas na teoria dos números, na matemática, no TCS e, em particular, na Prova automatizada de teoremas. [5]
a pergunta antiga e quase antiga é "existe uma fórmula para calcular números primos"
a resposta é sim, em certo sentido, existem vários algoritmos para calculá-lo.
a função Riemann zeta pode ser reorientada como um "algoritmo" para encontrar números primos.
Parece-me possível que uma abordagem de algoritmo genético da GA possa ter sucesso nesse problema algum dia com uma configuração engenhosa, ou seja, as GAs são a tecnologia conhecida mais próxima que tem mais chances de sucesso. [6] [7] é o problema de encontrar um algoritmo a partir de um conjunto finito de exemplos, isto é, aprendizado de máquina, que é muito semelhante à indução matemática. no entanto, parece não haver muita pesquisa sobre a aplicação de AGs na teoria dos números até o momento.
o mais próximo disso na literatura existente parece ser, por exemplo, [8] que discute o desenvolvimento da conjectura de gêmeos primos de maneira automatizada, ou seja, "criação automatizada de conjecturas".
outra abordagem é um programa que possui um grande conjunto de tabelas de funções padrão, juntamente com alguma lógica sofisticada de conversão, para reconhecer seqüências inteiras padrão. esta é uma nova função incorporada ao Mathematica chamada
findsequence
[3]também está conectado a um campo relativamente novo chamado "matemática experimental" [9,10] ou ao que também é chamado de pesquisa "empírica" no TCS.
Outro ponto básico a ser destacado aqui é que a sequência de números primos não é "suave", algoritmos de aprendizado de máquina altamente irregulares, caóticos, fractais e padrão são historicamente baseados em otimização numérica e minimização de erros (por exemplo, descida de gradiente), e não o fazem bem em encontrar respostas exatas para problemas discretos. mas, novamente, as AGs podem ter sucesso e demonstraram ter sucesso nessa área / regime.
[1] existe um eqn matemático para o enésimo nono primo, math.se
[2] fórmula para números primos , wikipedia
[3] função de sequência de wolfram
[4] função riemann zeta
[5] principais sucessos da prova automatizada de teoremas
[6] aplicações de algoritmos genéticos no mundo real
[7] aplicando algoritmos genéticos à prova automatizada de thm por Wang
[8] Confecção automatizada de conjecturas em teoria dos números usando HR, Otter e Maple colton
[9] Existem aplicações de matemática experimental no TCS?
[10] Uma lista de leitura sobre algoritmos experimentais
fonte
A pergunta é, na minha opinião, bastante vaga e envolve algum mal-entendido; portanto, essa resposta tenta apenas fornecer o vocabulário correto e direcioná-lo na direção certa.
Existem dois campos da ciência da computação que estudam diretamente esses problemas. Inferência indutiva e teoria da aprendizagem computacional . Os dois campos estão intimamente relacionados e a distinção é social e estética, e não formal.
Portanto, uma apresentação de dados positivos é uma enumeração do conceito de destino, geralmente com algumas condições adicionais de equidade. Você também pode solicitar uma apresentação que rotule as palavras, dependendo se elas estão no idioma ou não. Novamente, você pode adicionar condições adicionais para garantir justiça e cobertura de todas as palavras.
Permitam-me enfatizar que esta é apenas uma formalização específica de um modelo de aprendizado específico. Mas este é o passo zero antes que você possa começar a fazer e estudar as perguntas que lhe interessam. O modelo de aprendizado pode ser enriquecido ao permitir a interação entre o aluno e o professor. Em vez de famílias arbitrárias de idiomas, podemos considerar idiomas muito específicos ou mesmo representações específicas (como funções booleanas monótonas). Há uma diferença entre o que você pode aprender em cada modelo e a complexidade do aprendizado. Aqui está um exemplo de um resultado de impossibilidade fundamental.
Deve-se ter muito cuidado ao interpretar esse resultado. Por exemplo, Dana Angluin mostrou nos anos 80 que
Este é um resultado bastante forte e positivo e recentemente encontrou várias aplicações. No entanto, como sempre, os detalhes são importantes, como o título do artigo abaixo já sugere.
Agora você pode estar se perguntando, como isso é relevante para sua pergunta? A minha resposta é que o espaço de design para uma definição matemática do seu problema é muito grande e o ponto específico escolhido nesse espaço afetará o tipo de resposta que você obterá. O exposto acima não pretende ser uma pesquisa abrangente de como formalizar o problema de aprendizagem. Ele serve apenas para demonstrar a direção que você pode querer investigar. Todas as referências e resultados que cito são extremamente antigos, e o campo fez muito desde então. Existem manuais básicos que você pode consultar para obter os antecedentes suficientes para formular sua pergunta de maneira precisa e determinar se a resposta que você procura já existe.
fonte
O sucesso de um algoritmo de aprendizado depende criticamente da representação. Como você apresenta a entrada para o algoritmo? Em um caso extremo, suponha que você apresente os números como seqüências de fatores primos - nesse caso, o aprendizado é bastante trivial. Em outro extremo, considere representar os números como cadeias binárias. Todos os algoritmos de aprendizado padrão que conheço falhariam aqui. Aqui está uma que funcionaria: encontre a menor máquina de Turing que aceite todos os exemplos positivos e rejeite todos os negativos. [Exercício: prove que este é um aprendiz universal.] Um problema disso é que a tarefa não é computável em Turing. Para colocar as coisas em perspectiva, você pode aprender a reconhecer a primalidade com base apenas na representação binária?
fonte
Esse problema faz parte da pesquisa moderna: dados dados de entrada e saída, encontre o algoritmo mais simples que produza saída a partir da entrada. As redes RNN são completas em Turing; portanto, teoricamente, por um infinito SGD, você pode acabar na RNN, que é equivalente a este código:
neste conjunto de dados: 0 => 0, 1 => 0, 2 => 1, 3 => 1, 4 => 0, 5 => 1, ... etc
O problema é que não temos uma teoria praticamente confiável sobre convergência SGD nem estimativas de tempo necessárias para convergência ou profundidade da rede neural. Porém, pesquisas mais recentes mostram que problemas semelhantes podem ser resolvidos:
https://en.wikipedia.org/wiki/Neural_Turing_machine
https://www.microsoft.com/pt-br/research/wp-content/uploads/2017/10/curr_opin_sys_biol_17.pdf
https://www.microsoft.com/en-us/research/wp-content/uploads/2016/12/cav13.pdf
use o google scholar para pesquisar palavras-chave ...
fonte
O aprendizado de máquina está sujeito às leis da complexidade da computação.
O principal problema de fatoração está na classe de complexidade NP, possivelmente até NP-difícil (não comprovada).
É por isso que detectar números primos está entre os problemas mais difíceis do aprendizado de máquina e pode não ser possível com essa abordagem.
Os computadores quânticos (QC) podem fazê-lo em tempo polinomial, mas o Shor é o determinismo da força bruta, não o aprendizado de máquina.
Possivelmente, um algoritmo de aprendizado de CQ baseado no Shor é uma abordagem. Estou realmente apenas batendo as pedras sugerindo isso.
fonte