Quero melhorar meu entendimento das redes neurais e seus benefícios em comparação com outros algoritmos de aprendizado de máquina. Meu entendimento é o seguinte e minha pergunta é:
Você pode corrigir e complementar minha compreensão, por favor? :)
Meu entendimento:
(1) Redes neurais artificiais = Uma função que prediz valores de saída dos valores de entrada. De acordo com um Teorema Universal de Aproximação ( https://en.wikipedia.org/wiki/Universal_approximation_theorem ), geralmente você pode ter qualquer função de previsão possível (embora deva se comportar bem), com neurônios suficientes.
(2) O mesmo se aplica à regressão linear, considerando polinômios dos valores de entrada como valores de entrada adicionais, pois é possível aproximar (comparar a expansão de Taylor) cada função bem por polinômios.
(3) Isso significa que (em certo sentido, com relação aos melhores resultados possíveis), esses dois métodos são equivalentes.
(4) Portanto, sua principal diferença reside em qual método se presta a uma melhor implementação computacional. Em outras palavras, com qual método você pode encontrar, com base em exemplos de treinamento, bons valores mais rápidos para os parâmetros que eventualmente definem a função de previsão.
Congratulo-me com quaisquer pensamentos, comentários e recomendações para outros links ou livros para melhorar meu pensamento.
fonte
Respostas:
Aqui está o acordo:
Tecnicamente, você escreveu frases verdadeiras (ambos os modelos podem aproximar-se de qualquer função "não muito louca", com parâmetros suficientes), mas essas frases não o levam a lugar algum!
Por que é que? Bem, olhe mais de perto a teoria da aproximação universal ou qualquer outra prova formal de que uma rede neural possa calcular qualquer f (x) se houver neurônios suficientes.
Todos esses tipos de provas que eu vi usam apenas uma camada oculta.
Dê uma olhada rápida aqui http://neuralnetworksanddeeplearning.com/chap5.html para alguma intuição. Existem trabalhos mostrando que, em certo sentido, o número de neurônios necessários cresce exponencialmente se você estiver usando apenas uma camada.
Então, enquanto na teoria você está certo, na prática, você não tem uma quantidade infinita de memória, então você realmente não quer treinar uma rede de 2 ^ 1000 neurônios, não é? Mesmo que você tenha uma quantidade infinita de memória, essa rede será superestimada, com certeza.
Na minha opinião, o ponto mais importante da ML é o ponto prático! Vamos expandir um pouco nisso. O grande problema aqui não é apenas como os polinômios aumentam / diminuem muito rapidamente fora do conjunto de treinamento. De modo nenhum. Como um exemplo rápido, o pixel de qualquer imagem está dentro de um intervalo muito específico ([0,255] para cada cor RGB). Assim, você pode ter certeza de que qualquer nova amostra estará dentro do intervalo de valores do conjunto de treinamento. Não. O grande problema é: essa comparação não é útil para começar (!).
Sugiro que você experimente um pouco com o MNIST e tente ver os resultados reais que pode obter usando apenas uma única camada.
As redes práticas usam muito mais do que uma camada oculta, às vezes dezenas (bem, redefina a rede ainda mais ...) de camadas. Por uma razão. Essa razão não está comprovada e, em geral, a escolha de uma arquitetura para uma rede neural é uma área importante de pesquisa. Em outras palavras, embora ainda precisemos saber mais, os dois modelos que você comparou (regressão linear e NN com apenas uma camada oculta), para muitos conjuntos de dados, não são de todo úteis!
A propósito, no caso de você entrar no ML, existe outro teorema inútil que é realmente uma 'área de pesquisa' atual - dimensão PAC (provavelmente aproximadamente correta) / VC. Vou expandir isso como um bônus:
Se a aproximação universal afirma basicamente que, dada uma quantidade infinita de neurônios, podemos aproximar qualquer função (muito obrigado?), O que o PAC diz em termos práticos é que, dada (praticamente!) Uma quantidade infinita de exemplos rotulados, podemos chegar o mais perto possível queremos a melhor hipótese dentro do nosso modelo. Foi absolutamente hilário quando calculei a quantidade real de exemplos necessários para que uma rede prática estivesse dentro de uma taxa de erro prática desejada e com alguma probabilidade aceitável :) Era mais do que o número de elétrons no universo. O PS para aumentá-lo também pressupõe que as amostras sejam IID (isso nunca é verdade!).
fonte
É verdade que qualquer função pode ser aproximada arbitrariamente, tanto por algo que conta como uma rede neural quanto por algo que conta como um polinômio.
Primeiro de tudo, lembre-se de que isso é verdade para muitas construções. Você pode aproximar qualquer função combinando senos e cossenos (transformadas de Fourier) ou simplesmente adicionando muitos "retângulos" (não uma definição realmente precisa, mas espero que você entenda).
Segundo, bem como a resposta de Yoni, sempre que você está treinando uma rede ou ajustando uma regressão com muitos poderes, o número de neurônios ou o número de poderes é fixo. Então você aplica algum algoritmo, talvez descida de gradiente ou algo assim, e encontra os melhores parâmetros com isso. Os parâmetros são os pesos em uma rede e os coeficientes para um grande polinômio. A potência máxima que você absorve em um polinômio, ou o número de neurônios usados, é chamado de hiperparâmetro. Na prática, você experimentará alguns deles. Você pode argumentar que um parâmetro é um parâmetro, com certeza, mas não é assim que isso é feito na prática.
Porém, com o aprendizado de máquina, você não quer uma função que se encaixe perfeitamente nos seus dados. Isso não seria muito difícil de conseguir, na verdade. Você quer algo que se encaixe bem, mas provavelmente também funciona para pontos que você ainda não viu. Veja esta imagem, por exemplo, tirada da documentação para
scikit-learn
.Uma linha é muito simples, mas a melhor aproximação não está à direita, está no meio, embora a função à direita se encaixe melhor. A função à direita faria algumas previsões bastante estranhas (e provavelmente subótimas) para novos pontos de dados, especialmente se eles caírem perto dos bits perversos à esquerda.
O motivo final para redes neurais com alguns parâmetros funcionando tão bem é que elas podem se encaixar em algo, mas não são realmente super ajustadas. Isso também tem muito a ver com a forma como são treinados, com alguma forma de descida estocástica do gradiente.
fonte
Como ainda não foram fornecidas respostas (embora eu aceite o comentário de user1952009, que foi postado como resposta), deixe-me compartilhar o que aprendi nesse meio tempo:
(1) Parece-me que meu entendimento geralmente está correto, mas o diabo está nos detalhes.
(2) Uma coisa que faltou em "meu entendimento": quão boa será a hipótese parametrizada generalizar para dados fora do conjunto de treinamento? A natureza não polinomial das previsões da rede neural pode ser melhor por lá do que a regressão linear / polinomial simples (lembre-se de como os polinômios aumentam / diminuem muito rapidamente fora do conjunto de treinamento).
(3) Um link que explica mais a importância de poder calcular parâmetros rapidamente: http://www.heatonresearch.com/2017/06/01/hidden-layers.html
fonte
Talvez este documento possa ajudá-lo:
Regressão polinomial como alternativa às redes neurais
O resumo diz:
fonte