É razoável estudar redes neurais sem educação matemática?

7

Dado o estado moderno das tecnologias e ferramentas de aprendizado de máquina (por exemplo, TensorFlow, Theano etc.), parece que o limiar de entrada diminuiu recentemente e é suficiente ser capaz de programar, por exemplo, Python, para criar coisas interessantes. Outra fonte que suporta esse ponto é a Especialização em aprendizado de máquina no Coursera , que afirma o seguinte em suas perguntas frequentes:

Que conhecimento prévio é necessário?

Você deve ter alguma experiência com programação de computadores; a maioria das atribuições nesta especialização usará a linguagem de programação Python. Esta especialização foi projetada especificamente para cientistas e desenvolvedores de software que desejam expandir suas habilidades em ciência de dados e aprendizado de máquina, mas é apropriada para qualquer pessoa com habilidades básicas de matemática e programação e interesse em obter informações a partir de dados.

Por outro lado, existem muitos outros cursos on-line (por exemplo, Stanford Machine Learning no Coursera ou Deep Learning on Udacity do Google), além de livros clássicos, como S. Haykin, Neural Networks: A Comprehensive Foundation , repleto de matemática. . Embora eu estivesse estudando matemática por vários anos na universidade, incluindo estatística, matrizes, cálculo integral e assim por diante, faz tanto tempo que não é utilizado que sinto desespero apenas olhando essas equações. Até a Matemática Concreta de Knuth é discernida em um ritmo tão lento que parece impossível concluí-la.

Assim, surgem as seguintes perguntas:

  1. É razoável que alguém com conhecimento superficial de matemática, mas com habilidades de programação, mergulhe nos estudos de redes neurais / aprendizado de máquina?
  2. É possível criar projetos interessantes nessa área, como aqueles que jogam atari , usando apenas ferramentas de alto nível?

Ou levaria tanto tempo que é melhor não se esforçar e fazer outra coisa?

Queeq
fonte

Respostas:

5

Depende do seu tipo de trabalho:

A matemática é necessária se você estiver trabalhando em uma função aplicada à ciência, ou seja, tentar experiências com as coisas conhecidas na mão, ou seja, tentar incorporar palavras, pode estar na CNN e ver se os resultados são bons ou NÃO.

Por outro lado, muita matemática é necessária se você quiser ser um cientista pesquisador, por exemplo, encontrar novas maneiras de representar a incorporação de palavras ou melhorar a incorporação de palavras existentes, no caso de mineração de texto.

Por outro lado, se você estiver trabalhando como engenheiro de software no Machine Learning OU como engenheiro de Machine Learning, precisará treinar os modelos usando o conhecimento existente de fazer as coisas e ajustá-lo para obter um melhor desempenho.

Existe uma troca entre pesquisa e engenharia. Mais em pesquisa é mais matemática, mas mais em engenharia é menor em matemática e mais em desempenho do sistema em produção.

Outro exemplo a ser explicado seria, para os Bots de bate-papo. Os pesquisadores com experiência em matemática precisam escrever um artigo para novos modelos, como o LSTM funciona e pode ser usado. Um cientista aplicado experimentará um problema comercial, como criar um bot de bate-papo com o LSTM primeiro e publicará artigos sobre como ele funcionou para eles no Labs. Um engenheiro de aprendizado de máquina replicará o conceito que o cientista aplicado publicou para seu trabalho de engenharia (ou seja, precisa entender a matemática do papel e replicá-lo no código, é isso).

Espero que isso ajude com relação à exigência de conhecimento de matemática no aprendizado de máquina

Argho Chatterjee
fonte
3

O Google está realizando cursos sobre Deep Learning para treinar seus funcionários. Dado que a maioria deles está na situação que você descreve (pouca experiência em matemática, mas boas habilidades em software), eu diria que é uma prova de que você pode lucrar com o Deep Learning sem se destacar em matemática.

Agora, existem inúmeras ferramentas e códigos de amostra on-line em muitos projetos interessantes de aprendizado profundo, por isso é fácil começar e brincar com eles. Por exemplo, existe um fluxo de tensor que já não exige muito conhecimento de como o algoritmo de retropropagação funciona, mas existem camadas ainda mais simples que exigem ainda menos conhecimento profundo / teoria, como Keras.

Se você deseja criar o seu próprio, lembre-se de que às vezes precisará de muitos dados e muita capacidade de computação para um subconjunto desses projetos. (Por exemplo, na aula de aprendizado de máquina do MIT, muitos estudantes queriam replicar o projeto atari que você mencionou, mas os ATs sugeriram que não devido à falta de poder de computação no nível do Google).

Provavelmente, você poderá fazer um ou dois dias de esforço:

  • Crie sua própria arquitetura, relativamente simples.
  • Treine uma arquitetura complexa (usando código online) em um conjunto de dados de seu interesse.

Finalmente, se o que você deseja é criar sua nova arquitetura interessante que supere o estado da arte, eu diria que isso será difícil de fazer sem entender bem a matemática por trás dela.

etal
fonte
3

Sou doutorando em Neurociência Computacional e trabalho com esse tipo de software e outras coisas todos os dias. Também temos muitos estudantes entrando e realizando seus projetos nesse campo. Então, eu tenho um pouco de experiência.

É razoável que alguém com conhecimento superficial de matemática, mas com habilidades de programação, mergulhe nos estudos de redes neurais / aprendizado de máquina?

Sim, ele é. Você pode usar abstrações de alto nível como o Keras e começar imediatamente. Na minha opinião, você não precisa conhecer a dinâmica exata da RNA para usá-la.

Como em tudo, depende muito de você e de quanto tempo e esforço você deseja investir. Eu diria que você precisa de um pouco de matemática para entender o básico. Um exemplo são as funções de ativação em uma rede neural . Eles desempenham um papel crucial, mas são simples de entender.

Se você quiser se aprofundar e realmente entender como e por que funciona, precisará de habilidades matemáticas bastante extensas. Não há jeito de contornar isso. O que quero dizer é teoria da probabilidade avançada, cálculo avançado e álgebra avançada. Por exemplo, dê uma olhada no algoritmo de retropropagação. . Para saber mais sobre matemática no aprendizado de máquina, você pode ler esta postagem do blog .

É possível criar projetos interessantes nessa área, como aqueles que jogam atari, usando apenas ferramentas de alto nível?

Sim, ele é. Existem muitas ferramentas excelentes por aí que permitem fazer isso. É claro que, assim que você tentasse programar algo novo , atingiria seus limites muito em breve, por exemplo, se quisesse modificar uma rede neural ou um algoritmo para melhorar ou ficar mais rápido.

Quanto a Atari, sugiro que você leia este belo post no blog . Ele explica tudo com tanto detalhe que você pode implementá-lo, mas ainda é superficial o suficiente para entendê-lo.

Então, para acrescentar às outras respostas: vi alunos entrando com habilidades de matemática básica / baixa, mas com boas habilidades de programação e todos foram capazes de implementar, testar e executar um sólido pipeline de aprendizado de máquina. Aqui, um pipeline significa coletar dados, pré-processamento, treinamento e avaliação do sistema como um todo.

Então, sim, você pode fazer isso.

hh32
fonte
1

Limitarei minha resposta às redes neurais.

É razoável que alguém com conhecimento superficial de matemática, mas com habilidades de programação, mergulhe nos estudos de redes neurais / aprendizado de máquina?

É razoável e possível. Aqui estão algumas razões para apoiar esta conclusão:

  1. As redes neurais são inspiradas pelo funcionamento de nossos cérebros. Portanto, muitos conceitos são familiares e fáceis de entender: neurônios, conexões, ativação etc. Isso torna a introdução às redes neurais suave e excitante, e não requer matemática.

  2. A operação básica de uma rede neural, independentemente de seu tamanho, é fácil de entender: passagem para frente, sinais fluindo de um nível para outro, ativação de neurônios etc. Não é necessária muita matemática aqui: somas ponderadas e funções não lineares, como sigmóide.

  3. A matemática subjacente a alguns dos algoritmos mais fundamentais para o treinamento de redes neurais (por exemplo, propagação reversa) não é complexa: somas, logaritmos, multiplicações e divisões. E você calcula valores com significado concreto: custo de erro, gradiente etc. Algumas outras técnicas de ML requerem o cálculo de valores intermediários (geralmente matrizes) cujo significado não é tão claro ou intuitivo.

  4. Geralmente, não é a matemática mais sofisticada, mas a compreensão e a experiência com o básico que permitem mergulhar em tópicos mais avançados, como regularização, pré-treinamento, abandono etc.

Para deixar as coisas claras, existem arquiteturas de rede mais complexas e algoritmos matematicamente exigentes para o treinamento de redes neurais. Além disso, embora os cálculos envolvidos na propagação traseira sejam simples, sua derivação é complexa para alguém que não estudou cálculo. Ainda assim, a dificuldade de derivar ou a existência de algoritmos mais complexos não significa que estudar redes neurais não é razoável. Esses problemas não impedem que você desenvolva um bom entendimento e faça uso prático de redes neurais.

É possível criar projetos interessantes nessa área, como aqueles que jogam atari, usando apenas ferramentas de alto nível?

Nos últimos anos, o interesse em redes neurais (especialmente em aprendizado profundo) está aumentando. Isso resultou na criação de muitas boas ferramentas e bibliotecas, como você observou, algumas das quais vêm de fábricas como Google, Microsoft ou NVidia. Sem dúvida, a qualidade deles é suficiente para criar projetos interessantes. O que pode ser mais desafiador é obter a quantidade certa de dados de qualidade para treinar sua rede (dado que esses dados não estão disponíveis no momento).

krychu
fonte
11
Obrigado pela resposta. Posso perguntar qual é a sua experiência no campo e como você usa NNs? Além disso, você conhece algum projeto em particular que é criado usando apenas ferramentas de alto nível ou que são criadas por pessoas sem mergulhar profundamente em matemática?
Queeq 2/16/16
1

Depende. Suponho que você entenda o algoritmo de retropropagação, pois é usado pela maioria das arquiteturas NN e CNNs e RNNs, e todas essas coisas não são tão difíceis se você souber retropropagação.

Por um lado , o Theano / Tensorflow não parece ser um bom exemplo, pois eles são basicamente DSLs para escrever cálculos de matriz / tensor e são bastante pesados ​​e de baixo nível matemático (você escreve operações matemáticas reais e não só usar fit, transform/ predictapi).

Por outro lado , existe o Keras e o scikit-learn, que possuem apenas APIs de alto nível e não exigem muito encanamento.

Em particular, no Keras, você pode usar alguns modelos que foram pré-treinados ou que possuem uma arquitetura predefinida conhecida por funcionar com alguns problemas.

Obviamente, se você não possui um bom conhecimento de matemática, pode ter problemas com os modelos de caixa preta, mas se quiser aplicar coisas que parecem funcionar com algo em alguma outra coisa, é definitivamente possível, por exemplo, confira este projeto simples .

Você também pode se interessar por Aplicativos criativos de aprendizado profundo com o TensorFlow , pois parece ser voltado para pessoas não técnicas (não sei se é possível aprendê-lo sem nenhuma formação técnica, mas pelo menos contém muitos exemplos interessantes).

Jakub Bartczuk
fonte
-3

A essência de uma rede neural é o gráfico. Embora os gráficos possam fazer parte da matemática, seus conceitos são tão antigos quanto o próprio relacionamento e são anteriores a ele.

Se fosse necessário que a aprendizagem fosse complexa, os cérebros provavelmente não teriam evoluído, pois a probabilidade de complexidade ordenada é muito improvável.

Então, é preciso perguntar: qual é a máquina mais simples que pode aprender? Mas, é claro, isso implora pela questão epistemológica: o que é aprender?

Aprender é a justaposição de dois novos estados, formando uma memória. E aí você tem a base da IA: memória.

Marcos
fonte
11
Isso realmente não contribui para outras respostas nem aborda a questão diretamente.
Nick Cox