Recentemente, li uma entrada de blog muito interessante no Blog de Pesquisa do Google falando sobre rede neural. Basicamente, eles usam essas redes neurais para resolver vários problemas, como reconhecimento de imagem. Eles usam algoritmos genéticos para "evoluir" os pesos dos axônios.
Então, basicamente, minha ideia é a seguinte. Se eu deveria escrever um programa que reconheça números, eu não saberia como começar (eu poderia ter alguma idéia vaga, mas o que quero dizer é: não é trivial, nem fácil.), Mas usando a rede neural, não preciso. Ao criar o contexto certo para que a rede neural evolua, minha rede neural "encontrará o algoritmo correto". Abaixo, citei uma parte realmente interessante do artigo, na qual eles explicam como cada camada tem papel diferente no processo de reconhecimento de imagem.
Um dos desafios das redes neurais é entender o que exatamente acontece em cada camada. Sabemos que após o treinamento, cada camada extrai progressivamente os recursos de níveis cada vez mais altos da imagem, até que a camada final tome uma decisão sobre o que a imagem mostra. Por exemplo, a primeira camada talvez procure por arestas ou cantos. Camadas intermediárias interpretam os recursos básicos para procurar formas ou componentes gerais, como uma porta ou uma folha. As poucas camadas finais as agrupam em interpretações completas - esses neurônios são ativados em resposta a coisas muito complexas, como edifícios ou árvores inteiras.
Então, basicamente, minha pergunta é a seguinte: não poderíamos usar algoritmos genéticos + redes neurais para resolver todos os problemas de NP? Nós apenas criamos o contexto evolutivo correto e deixamos a "natureza" encontrar uma solução.
Inceptionism: Indo mais fundo nas redes neurais
EDIT: Eu sei que podemos usar o Brute-Force ou encontrar uma solução não eficiente em muitos casos. É por isso que tento destacar as redes neurais artificiais em evolução . Como eu disse em um comentário: Com tempo suficiente e uma taxa de mutação apropriada, poderíamos encontrar a solução ideal (ou pelo menos é o que eu acho).
Respostas:
Não. É improvável que essa direção seja útil por dois motivos:
A maioria dos cientistas da computação acredita que P NP. Supondo P NP, isso significa que não existe nenhum algoritmo de tempo polinomial para resolver qualquer problema completo de NP. Se você deseja que sua rede neural resolva o problema em um período de tempo razoável, ela não poderá ser muito grande e, portanto, a rede neural será ela própria um algoritmo de tempo polinomial. Daqui resulta que, se P NP, as redes neurais não podem resolver com eficiência qualquer problema de NP-completo.≠ ≠≠ ≠ ≠
Redes neurais não são "mágicas". Eles são uma maneira de tentar encontrar padrões. Para alguns problemas em que existem padrões suficientemente fortes para serem encontrados e os padrões podem ser aprendidos com um número razoável de exemplos, eles podem ser eficazes. Mas eles não são pó mágico de fadas. Só porque você pode configurar uma rede neural não significa que a retropropagação necessariamente encontrará uma boa maneira de resolver seu problema. Pode ser que não haja padrões a serem encontrados, que os padrões só possam ser descobertos com um número inviável de exemplos ou que existam padrões, mas o procedimento de treinamento da rede neural não é capaz de encontrá-los.
As redes neurais são apenas outra forma de aprendizado de máquina. Poderíamos fazer as mesmas observações sobre SVMs ou florestas aleatórias ou regressão linear de qualquer outra forma de aprendizado de máquina. As redes neurais não são algum tipo de bala de prata mágica que resolve todos os problemas de aprendizado de máquina. Eles são tão eficazes quanto outros métodos de aprendizado de máquina, ou para alguns tipos de problemas, talvez um pouco mais eficazes, mas não são mágicos.
Às vezes, encontro pessoas que ouviram apenas um pouco sobre redes neurais, e elas se afastam pensando que as redes neurais são a resposta para tudo - talvez porque ouviram que "seu cérebro também usa redes neurais", ou viram algumas aplicação legal (reconhecimento de voz ou algo assim). Mas não se deixe enganar. Não acredite no hype. As redes neurais são uma técnica útil, mas não permitirão que os computadores resolvam problemas completos de NP, ou superem o teste de Turing, tirem todos os nossos trabalhos e substituam humanos por computadores. Não tão cedo, de qualquer maneira. Isso é apenas ficção científica.
fonte
Parece que outras respostas, embora informativas / úteis, não estão realmente entendendo sua pergunta exatamente e estão sendo um pouco demais para ela. Você não perguntou se as redes neurais superariam outros métodos, apenas perguntou se elas poderiam ser aplicadas aos problemas completos do NP. A resposta é sim, com algum sucesso e isso é conhecido há décadas e existe uma grande variedade de pesquisas sobre isso, e continua. Isso tem a ver com a flexibilidade do aprendizado de máquina. Observe que, mesmo que eles não encontrem soluções exatas ou ideais, as soluções que possuem podem ter outras propriedades desejáveis. alguns exemplos de documentos:
Redes neurais e problemas de otimização completos de NP; Um Estudo de Desempenho no Problema da Bissecção de Gráficos / Peterson, Anderson
Redes neurais para problemas NP-completos (1996) / Budinich
Encontrar soluções aproximadas para problemas NP-Hard da Neural Networks é difícil / Yao
Sobre o poder das redes neurais na solução de problemas difíceis / Bruck, Goodman
fonte
As redes neurais na verdade não resolvem problemas completos de NP. O que eles fazem é resolver problemas que são notavelmente próximos dos problemas completos de NP.
Uma grande característica das redes neurais é que elas não são obrigadas a encontrar a resposta "certa" todas as vezes. Eles podem estar "errados". Por exemplo, você pode estar resolvendo um problema de empacotamento de lixeira e chegar a uma solução com 1% de desconto da solução ideal e estar totalmente satisfeito com essa resposta.
Se você remover o requisito de estar 100% certo sempre, outras abordagens de solução de problemas funcionarão muito bem. Por exemplo, muitos algoritmos de planejamento de rota (no Google Maps) precisam ser NP-completos, mas é bastante trivial encontrar um algoritmo que encontre um caminho dentro de 1% dos 99,9% ótimos do tempo. Ele está tentando determinar os resultados nos últimos 0,1% dos casos que levam os esforços de NP a serem tão surpreendentemente caros.
Por acaso, quando tentamos usar equações completas de NP na vida real, muitas vezes não precisamos da resposta real . Geralmente, nos sentimos muito à vontade com uma resposta "próxima", embora muitas vezes não tenhamos uma redação para explicar qual métrica "próxima" estamos usando. Essas são as situações em que uma rede neural pode responder à pergunta real que você queria fazer, em vez de precisar resolver o problema NP-completo que você pediu.
fonte
Sabe-se que as redes neurais são capazes de aproximação universal de funções , mas isso exige treiná-las sobre o problema (otimização), que é um problema completo de NP por si só , e é por isso que você tem treinamento evolutivo e SGD com retropropagação e assim por diante.
Portanto, embora não seja provável que eles resolvam problemas de NP completos, eles podem ser treinados para aproximar a um grau arbitrário de precisão de uma função que modela o problema. Além disso, mesmo que você resolva um problema completo de NP de maneira otimizada usando uma rede neural, ainda não tem como provar que a solução encontrada é realmente o ideal global sem forçar brutalmente a solução (isso obviamente não é viável para praticamente qualquer prática). caso de uso de redes neurais).
Sua visualização é precisa no sentido de que algoritmos evolutivos (veja como o algoritmo puro impede que uma única espécie domine a população com uma estrutura inicialmente de alto desempenho usando aptidão compartilhada) são menos aptos que o SGD e outras técnicas de aprendizado de máquina a serem capturadas. ótimos locais, mas eles não fornecem prova de que a solução encontrada é de fato a ideal global.
fonte