As redes neurais são um dos paradigmas de programação mais belos já inventados. Na abordagem convencional de programação, dizemos ao computador o que fazer, dividindo grandes problemas em muitas tarefas pequenas e precisamente definidas que o computador pode executar facilmente. Em contraste, em uma rede neural, não dizemos ao computador como resolver nosso problema. Em vez disso, ele aprende com dados observacionais, descobrindo sua própria solução para o problema em questão.
A aprendizagem automática a partir de dados parece promissora. No entanto, até 2006, não sabíamos como treinar redes neurais para superar as abordagens mais tradicionais, exceto em alguns problemas específicos. O que mudou em 2006 foi a descoberta de técnicas de aprendizagem em redes neurais profundas. Essas técnicas são agora conhecidas como aprendizagem profunda. Elas foram aprimoradas e, hoje, as redes neurais profundas e a aprendizagem profunda alcançam desempenho excepcional em muitos problemas importantes em visão computacional, reconhecimento de fala e processamento de linguagem natural. Estão sendo implementadas em larga escala por empresas como Google, Microsoft e Facebook.
O objetivo deste livro é ajudá-lo a dominar os conceitos fundamentais de redes neurais, incluindo técnicas modernas de aprendizado profundo. Ao final da leitura, você terá escrito código que utiliza redes neurais e aprendizado profundo para resolver problemas complexos de reconhecimento de padrões. Além disso, você terá uma base sólida para usar redes neurais e aprendizado profundo em problemas que você mesmo criar.
Uma abordagem orientada por princípios
Uma convicção fundamental deste livro é a de que é melhor obter uma compreensão sólida dos princípios básicos das redes neurais e do aprendizado profundo do que uma compreensão vaga de uma longa lista de ideias. Se você compreender bem as ideias centrais, poderá assimilar rapidamente outros materiais novos. Em termos de linguagens de programação, pense nisso como dominar a sintaxe, as bibliotecas e as estruturas de dados principais de uma nova linguagem. Você pode até "conhecer" apenas uma pequena fração da linguagem como um todo — muitas linguagens possuem bibliotecas padrão enormes —, mas novas bibliotecas e estruturas de dados podem ser compreendidas de forma rápida e fácil.
Isso significa que o livro definitivamente não é um tutorial sobre como usar alguma biblioteca específica de redes neurais. Se você quer principalmente aprender a usar uma biblioteca, não leia este livro! Encontre a biblioteca que deseja aprender e estude os tutoriais e a documentação. Mas esteja avisado. Embora isso traga benefícios imediatos na resolução de problemas, se você quer entender o que realmente acontece nas redes neurais, se você quer insights que ainda serão relevantes daqui a anos, então não basta apenas aprender alguma biblioteca da moda. Você precisa entender os insights duradouros que fundamentam o funcionamento das redes neurais. Tecnologias vêm e vão, mas o conhecimento é eterno.
Uma abordagem prática
Vamos aprender os princípios fundamentais das redes neurais e do aprendizado profundo atacando um problema concreto: ensinar um computador a reconhecer dígitos manuscritos. Este problema é extremamente difícil de resolver usando a abordagem convencional de programação. No entanto, como veremos, ele pode ser resolvido de forma bastante eficiente usando uma rede neural simples, com apenas algumas dezenas de linhas de código e sem bibliotecas especiais. Além disso, vamos aprimorar o programa por meio de diversas iterações, incorporando gradualmente cada vez mais os conceitos fundamentais sobre redes neurais e aprendizado profundo.
Essa abordagem prática significa que você precisará de alguma experiência em programação para ler o livro. Mas você não precisa ser um programador profissional. Eu escrevi o código em Python (versão 2.7), que, mesmo que você não programe em Python, deve ser fácil de entender com um pouco de esforço. Ao longo do livro, desenvolveremos uma pequena biblioteca de redes neurais, que você poderá usar para experimentar e aprofundar seu conhecimento. Todo o código está disponível para download aqui . Depois de terminar o livro, ou enquanto o lê, você poderá facilmente escolher uma das bibliotecas de redes neurais mais completas, destinadas ao uso em produção.
Ainda sobre o assunto, os requisitos matemáticos para a leitura do livro são modestos. Há um pouco de matemática na maioria dos capítulos, mas geralmente se trata apenas de álgebra elementar e gráficos de funções, o que a
