Estou muito interessado em Redes Neurais Artificiais, mas estou procurando um lugar para começar.
Que recursos existem e o que é um bom projeto inicial?
Estou muito interessado em Redes Neurais Artificiais, mas estou procurando um lugar para começar.
Que recursos existem e o que é um bom projeto inicial?
Respostas:
Aqui estão alguns exemplos de programação de Rede Neural. http://www.codeproject.com/KB/recipes/neural_dot_net.aspx
você pode começar a ler aqui: http://web.archive.org/web/20071025010456/http://www.geocities.com/CapeCanaveral/Lab/3765/neural.html
De minha parte, visitei um curso sobre o assunto e trabalhei em alguma literatura.
Em primeiro lugar, desista de qualquer noção de que as redes neurais artificiais têm algo a ver com o cérebro, exceto uma semelhança passageira com redes de neurônios biológicos. Aprender biologia não o ajudará a aplicar redes neurais com eficácia; aprender álgebra linear, cálculo e teoria da probabilidade. Você deve, no mínimo, se familiarizar com a ideia de diferenciação básica de funções, a regra da cadeia, derivadas parciais (o gradiente, a Jacobiana e a Hessiana) e a compreensão da multiplicação e diagonalização de matrizes.
Na verdade, o que você está fazendo quando treina uma rede é otimizar uma função grande e multidimensional (minimizando sua medida de erro em relação a cada um dos pesos na rede) e, portanto, uma investigação de técnicas para otimização numérica não linear pode ser instrutiva. Este é um problema amplamente estudado com uma grande base de literatura fora das redes neurais, e há muitas notas de aula sobre otimização numérica disponíveis na web. Para começar, a maioria das pessoas usa a descida gradiente simples , mas isso pode ser muito mais lento e menos eficaz do que métodos com mais nuances, como
Assim que tiver as ideias básicas, você pode começar a experimentar diferentes funções de "esmagamento" em sua camada oculta, adicionando vários tipos de regularização e vários ajustes para tornar o aprendizado mais rápido. Consulte este documento para obter uma lista abrangente de "melhores práticas".
Um dos melhores livros sobre o assunto é Neural Networks for Pattern Recognition, de Chris Bishop . É bastante antigo neste estágio, mas ainda é um excelente recurso, e você pode frequentemente encontrar cópias usadas online por cerca de $ 30. O capítulo sobre redes neurais em seu livro mais recente, Pattern Recognition and Machine Learning , também é bastante abrangente. Para obter um tutorial centrado em implementação particularmente bom, consulte este em CodeProject.com, que implementa um tipo inteligente de rede chamada rede convolucional, que restringe a conectividade de forma a torná-la muito boa em aprender a classificar padrões visuais.
Máquinas de vetores de suporte e outros métodos de kernel tornaram-se bastante populares porque você pode aplicá-los sem saber o que diabos está fazendo e frequentemente obter resultados aceitáveis. As redes neurais, por outro lado, são enormes problemas de otimização que requerem um ajuste cuidadoso, embora ainda sejam preferíveis para muitos problemas, particularmente problemas de grande escala em domínios como a visão computacional.
Eu recomendo fortemente esta excelente série de Anoop Madhusudanan no Code Project .
Ele leva você através dos fundamentos para entender como eles funcionam de uma maneira fácil de entender e mostra como usar sua brainnet
biblioteca para criar a sua própria.
Redes Neurais estão meio que desclassificadas atualmente. Máquinas de vetor de suporte e métodos de kernel são melhores para mais classes de problemas do que a retropropagação. Redes neurais e algoritmos genéticos capturam a imaginação de pessoas que não sabem muito sobre o aprendizado de máquina moderno, mas não são o estado da arte.
Se você quiser aprender mais sobre IA e aprendizado de máquina, recomendo a leitura de Artificial Intelligence: A Modern Approach, de Peter Norvig . É uma ampla pesquisa de IA e muita tecnologia moderna. Ele vai ao longo da história e também de técnicas mais antigas e lhe dará uma base mais completa nos fundamentos da IA e do aprendizado de máquina.
As redes neurais são muito fáceis, no entanto. Especialmente se você usar um algoritmo genético para determinar os pesos, em vez da retropropagação adequada.
Segundo a recomendação da dwf de Redes Neurais para Reconhecimento de Padrões, de Chris Bishop. Embora, talvez não seja um texto inicial. Norvig ou um tutorial online (com código em Matlab!) Seria provavelmente uma introdução mais suave.
Um bom projeto inicial seria OCR (Optical Character Recognition). Você pode digitalizar páginas de texto e alimentar cada personagem pela rede para realizar a classificação. (Você teria que treinar a rede primeiro, é claro!).
O livro de Raul Rojas é um ótimo começo (também é gratuito). Além disso, a terceira edição do livro de Haykin , embora de grande volume, está muito bem explicada.
Posso recomendar por onde não começar. Comprei An Introduction to Neural Networks de Kevin Gurney, que tem boas críticas na Amazon e afirma ser uma "introdução altamente acessível a um dos tópicos mais importantes da ciência cognitiva e da computação". Pessoalmente, não recomendaria este livro como um começo. Consigo compreender apenas cerca de 10%, mas talvez seja só eu (o inglês não é minha língua nativa). Vou examinar outras opções deste tópico.
http://www.ai-junkie.com/ann/evolved/nnt1.html é uma introdução clara ao perceptron multicamadas, embora não descreva o algoritmo de retropropagação
você também pode dar uma olhada em generation5.org, que oferece muitos artigos sobre IA em geral e alguns ótimos textos sobre redes neurais
Se você não se importa em gastar dinheiro, o Manual de Teoria do Cérebro e Redes Neurais é muito bom. Ele contém 287 artigos cobrindo pesquisas em muitas disciplinas. Ele começa com uma introdução e teoria e, em seguida, destaca caminhos através dos artigos para melhor cobrir seus interesses.
Como para um primeiro projeto, os mapas de Kohonen são interessantes para categorização : encontre relações ocultas em sua coleção de músicas, construa um robô inteligente ou resolva o prêmio Netflix .
Dois livros que foram usados durante meu estudo:
Curso introdutório: Uma introdução à computação neural por Igor Aleksander e Helen Morton.
Curso avançado: Neurocomputação por Robert Hecht-Nielsen
Achei Fundamentos de Redes Neurais de Fausett um livro introdutório direto e fácil de entrar.
Achei o livro "Inteligência Computacional" incrivelmente útil.
A inteligência coletiva de programação discute isso no contexto dos algoritmos de busca e classificação. Além disso, no código disponível aqui (no capítulo 4), os conceitos discutidos no livro são ilustrados em um exemplo Python.
Concordo com outras pessoas que disseram que estudar biologia não é um bom ponto de partida ... porque há muitas informações irrelevantes em biologia. Você não precisa entender como um neurônio funciona para recriar sua funcionalidade - você só precisa simular suas ações. Eu recomendo "How To Create A Mind" de Ray Kurzweil - vai para o aspecto da biologia que é relevante para modelos computacionais, (criando um neurônio simulado combinando várias entradas e disparando uma vez que um limite é atingido), mas ignora as coisas irrelevantes como como o neurônio realmente adiciona as entradas ao couro. (Você usará apenas + e uma desigualdade para comparar a um limite, por exemplo)
Devo também apontar que o livro não é realmente sobre 'criar uma mente' - ele apenas se concentra no reconhecimento de padrões hierárquicos / o neocórtex. O tema geral tem sido falado desde a década de 1980, creio eu, então há muitos livros mais antigos que provavelmente contêm formas ligeiramente datadas da mesma informação. Eu li documentos antigos afirmando que o sistema de visão, por exemplo, é um reconhecedor de padrões de várias camadas. Ele afirma que isso se aplica a todo o neocórtex. Além disso, considere suas 'previsões' com cautela - suas estimativas de hardware são provavelmente bastante precisas, mas acho que ele subestima o quão complicadas tarefas simples podem ser (ex: dirigir um carro). Concedido, ele viu muitos progressos (e fez parte de alguns deles), mas ainda acho que ele está otimista demais. Há uma grande diferença entre um carro com IA ser capaz de dirigir uma milha com sucesso 90% do tempo, quando comparado aos 99,9 +% que um humano pode fazer. Não espero que nenhuma IA me conduza de verdade por pelo menos 20 anos ... (não conto os carros de corrida BMW que precisam ser "treinados" no percurso real, pois não estão jogando da mesma forma jogos)
Se você já tem uma ideia básica do que é IA e como pode ser modelado, é melhor pular para algo mais técnico.
Se você deseja aprender rapidamente sobre as aplicações de alguns conceitos de rede neural em um simulador real, há um ótimo livro online (agora wiki) chamado 'Neurociência Cognitiva Computacional' em http://grey.colorado.edu/CompCogNeuro/index. php / CCNBook / Main
O livro é usado nas escolas como um livro-texto e leva você por muitas áreas diferentes do cérebro, desde neurônios individuais até o funcionamento executivo de ordem superior.
Além disso, cada seção é aumentada com 'projetos' de lição de casa que já estão prontos para você. Basta fazer o download, seguir os passos e simular tudo que o capítulo falou. O software que eles usam, Emergent, é um pouco mimado, mas incrivelmente robusto: é o produto de mais de 10 anos de trabalho, acredito.
Passei por isso em uma aula de graduação no semestre passado, e foi ótimo. Percorre tudo passo a passo