Como alguém começa a aprender inteligência artificial?

16

Sou estudante de engenharia de software e sou iniciante em IA. Eu li muitos artigos sobre como começar a aprender IA, mas cada artigo sugere uma maneira diferente. Fiquei pensando se alguns de vocês especialistas podem me ajudar a começar da maneira certa.

Algumas perguntas mais específicas

  1. Em qual idioma devo me concentrar? Muitos artigos sugerem Python, C ++ ou Lisp para AI. Posso usar Java em vez de qualquer um dos outros idiomas mencionados?

  2. Que tipo de formação matemática devo ter? Durante o primeiro ano, fiz matemática discreta, que incluía os seguintes tópicos: conjuntos, matrizes, vetores, funções, lógica e teoria dos grafos (eles ensinaram esses tópicos brevemente). Existem mais tópicos que devo aprender agora? Por exemplo, cálculo?

Se possível, eu apreciaria quaisquer recursos ou livros que eu pudesse usar para começar, ou talvez vocês possam me dar um procedimento detalhado que eu possa seguir para acompanhar o seu nível.

Nota: Por enquanto, gostaria de focar em redes neurais e aprendizado de máquina. Depois disso, gostaria de explorar a robótica e o processamento de linguagem natural.

aspire29
fonte

Respostas:

16

A Inteligência Artificial é um campo muito amplo e abrange muitas e muito profundas áreas da ciência da computação, matemática, design de hardware e até biologia e psicologia. Quanto à matemática: acho que cálculo, estatística e otimização são os tópicos mais importantes, mas aprender o máximo de matemática que você puder não será prejudicial.

Existem muitos bons recursos introdutórios gratuitos sobre IA para iniciantes. Eu recomendo começar com este: http://aiplaybook.a16z.com/ Eles também publicaram dois vídeos sobre os conceitos gerais de IA. Você pode encontrá-los no Vimeo: "AI, Deep Learning e Machine Learning: A Primer "e" A promessa da IA ​​"

Depois de entender claramente os termos e abordagens básicos da IA, você precisa descobrir quais são seus objetivos. Que tipo de software de IA você deseja desenvolver? Em quais indústrias você está interessado? Quais são suas chances de se envolver em projetos de grandes empresas? É mais fácil escolher as ferramentas certas quando você sabe exatamente o que deseja alcançar.

Para a maioria dos recém-chegados à IA, a área mais interessante é o Deep Learning. Apenas para esclarecer, existem muitas áreas de IA fora do Machine Learning e há muitas áreas de Machine Learning fora do Deep Learning. (Inteligência artificial> Aprendizado de máquina> Aprendizado profundo) A maioria dos desenvolvimentos recentes e notícias sensacionalistas são sobre DL.

Se você também se interessou pelo Deep Learning, precisa aprender sobre os conceitos de redes neurais artificiais. Felizmente, não é muito difícil entender o básico, e há muitos tutoriais, exemplos de código e recursos de aprendizado gratuitos na Web, e há muitas estruturas de código aberto para começar a experimentar.

A estrutura mais popular do Deep Learning é o TensorFlow. É apoiado pelo Google. Ame ou odeie, é um framework baseado em Python. Existem muitos outros frameworks baseados em Python também. O Scikit-learn, Theano, Keras também são mencionados com frequência nos tutoriais. (Uma dica: se você usa o Windows, pode baixar o WinPython que inclui todas essas estruturas.)

Quanto às estruturas Java, infelizmente não existem muitas opções. A estrutura Java mais importante para DL é o Deeplearning4j. Ele foi desenvolvido por uma pequena empresa e sua base de usuários é muito menor do que a multidão em torno do TensorFlow. Existem menos projetos e tutoriais para essa estrutura. No entanto, especialistas do setor dizem que as estruturas baseadas em Java acabam se integrando melhor às soluções de Big Data baseadas em Java e podem fornecer um nível mais alto de portabilidade e implantação mais fácil do produto. Apenas uma nota lateral: o Laboratório de Propulsão a Jato da NASA usou o Deeplearning4j em muitos projetos.

Se você decidir seguir o fluxo e quiser começar a aprender mais sobre o TensorFlow, recomendo que confira os canais do YouTube de "DeepLearning.TV", "sentdex" e "Siraj Raval". Eles têm bons tutoriais e algumas demos legais. E se você decidir se aprofundar, pode se inscrever em um curso on-line no udacity ou coursera.

Também pode ser interessante para você saber que existem outras estruturas de Deep Learning para a Java Virtual Machine com linguagens alternativas, por exemplo, Clojure. (Clojure é um dialeto do LISP e foi inventado por John McCarthy, o mesmo cientista da computação que cunhou o termo "inteligência artificial". Em outras palavras, existem linguagens e ferramentas de programação mais modernas e populares, mas ainda é possível / e meio legal / para usar a linguagem para IA criada originalmente para AI.A ThinkTopic em Boulder e a Freiheit em Hamburgo são duas empresas que usam o Clojure para projetos de IA. Eu recomendo que você assista ao vídeo do YouTube "OSCON 2013: Carin Meier, a alegria de voar robôs com Clojure".

(+++ Qualquer pessoa pode me corrigir se eu disser alguma coisa errada. +++)

akopacsi
fonte
Como há menos estruturas para Java, é possível escrever minhas próprias estruturas, que eu posso usar como substituto do TensorFlow? Graças
aspire29
1
Criar sua própria estrutura para estudar os conceitos básicos é uma ótima idéia. Por outro lado, o TensorFlow é desenvolvido por uma enorme comunidade e por muitos profissionais muito talentosos. Honestamente, não acho que qualquer estrutura caseira possa competir com sucesso. Btw, eu não entendo por que existem tão poucos frameworks Java AI ... considerando que ainda é o no.1. linguagem de programação e JVM está em quase todos os lugares. Eu acho que a IA ainda é mais sobre pesquisa do que produção.
Akopacsi
6

Você verá que o Cálculo e a Álgebra Linear têm alguma aplicação nas técnicas de AI / ML. Em muitos sentidos, você pode argumentar que a maior parte do ML se reduz à Álgebra Linear, e o Cálculo é usado, por exemplo. o algoritmo de retropropagação para o treinamento de redes neurais.

Você estaria bem servido para assistir a uma ou duas aulas de probabilidade e estatística também.

A escolha da linguagem de programação é menos importante, IMO. Você pode fazer AI / ML em praticamente qualquer idioma mainstream e em muitos idiomas não mainstream. A maior diferença envolve desempenho e disponibilidade de bibliotecas / ferramentas. O C ++, por exemplo, geralmente supera o Java ou Python e permite que você fique "próximo do metal" para realmente maximizar os recursos do seu hardware. O Python, no entanto, tem um FFI muito bom e é frequentemente usado em conjunto com C ou C ++. Python, C ++, Java, R, Octave / Matlab e algumas outras linguagens tendem a ter muitas bibliotecas de alta qualidade disponíveis, o que pode ser importante para você, dependendo do que você deseja fazer.

Dito isto, você provavelmente não quer tentar fazer ML / AI em, digamos, COBOL ou PL / I ou RPG / 400 ou algo assim. Atenha-se a algo pelo menos razoavelmente popular. Dê uma olhada no mloss.org e veja quais bibliotecas / kits de ferramentas estão disponíveis em diferentes idiomas e que devem ajudar a orientar sua escolha.

crime mental
fonte
5

Quando me interessei pela IA, comecei com as coisas mais básicas. Meu primeiro livro foi a Inteligência Artificial de Russell & Norvig - Uma Abordagem Moderna . Eu acho que é um bom lugar para começar, mesmo se você estiver interessado principalmente nas redes profundas. Ele trata não apenas os conceitos e algoritmos básicos de IA (sistemas especialistas, pesquisa em profundidade e amplitude em primeiro lugar, representação de conhecimento, etc.), mas também a matemática fundamental (raciocínio bayesiano, lógica de primeira ordem, NL gramas, etc.) e alguns problemas conhecidos (como o problema do vendedor ambulante, por exemplo).

Também pode ser uma boa idéia aprender estatística, pois você está particularmente interessado em ML. Após o livro mencionado, você também deve ter uma boa idéia sobre o que aprender a seguir.

  • Não se importe muito com a linguagem de programação.

É muito mais importante entender a programação em si e as técnicas relacionadas. Aprenda algo sobre estruturas de dados, algoritmos e os diferentes paradigmas de programação (como OOP, Programação Funcional etc.). Tente entender a lógica por trás da programação e não apenas uma linguagem específica. Afinal, aprender um novo idioma não é tão difícil assim que você entende como programar (aprender um novo idioma é apenas mais ou menos açúcar sintático).

BobbyPi
fonte
1
Fiz uma ligeira edição para facilitar a leitura e adicionei um link ao livro. Bons conselhos, especialmente sobre linguagens de programação (Observe os codificadores que trabalham em "qualquer idioma com sintaxe"). Realmente se resume ao que é mais ideal ou conveniente para um determinado projeto ou tarefa.
DukeZhou
4

Aqui estão alguns recursos que eu achei úteis para conhecer o básico da IA

Andrew Ng é professor visitante em Stanford, fundador do Coursera e atualmente chefe de pesquisa no Alibaba. Os vídeos acima devem fornecer a você (todos) os conceitos básicos de que você precisa sobre IA.

Raj Subrameyer
fonte
3

Para iniciar a IA, antes de tudo, entenda o que é AI. Por que a precisão do MNIST aumenta rapidamente após 2012. Por que o aprendizado de máquina precisa da IA ​​para aumentar sua precisão.

Para iniciar e criar o Application on Machine Learning com IA, você não precisava de matemática ou algum tipo de ciência de foguetes. Você chegou atrasado, meu pessoal cria atalhos para todos os problemas de aprendizado de máquina, como um invólucro. Você só precisa passar dados para um método, e o método fará toda a merda. Comece com o problema do MNIST, é emocionante. Leia sobre a história do MNIST e use o algoritmo básico. Tente Regressão Linear, Regressão Logística, Kmean Clusting, KNN. Ferramentas para aprendizado de máquina Skite learn (python lib) ou Tensorflow (python lib) tflearn (api de nível superior do Tensorflow como um invólucro) Ambos são de código aberto. Exemplos estão disponíveis no GitHub. Comece a pesquisar no GitHub. Você encontrou um ótimo exemplo. Para ambos lib. Use o kaggel para resolver o problema, participe da competição.

Quando você concluir todo o algoritmo acima, tente se concentrar no seu erro. Agora a IA entrou em ação. Tente descobrir como a rede neural ajuda a diminuir os erros e aumentar a precisão. Em seguida, tente alguma rede neural básica como sigmoid, relu e cnn. Não se esqueça de usar a evasão na sua rede neural. Você pode usar o Tensorflow ou keras ou o Tensorflow com keras

Verifique lado a lado 3 vídeos de álgebra linear do Blue 1 Brown para melhorar sua matemática. uma vez por dia, mas todos os dias um vídeo.

E agora concentre-se na matemática por trás da lógica (qualquer algoritmo) Você pode tentar criar um curso de aprendizado de máquina.

Use o Tensorflow para criar aplicativos para Android, IOS, RaspPi Check Tensorflow dev summit 2016/2017.

Ou, se você precisar de um curso intensivo, verifique este https://youtu.be/u4alGiomYP4

evalsocket
fonte
1
Vamos esclarecer, AI não é tudo sobre a leitura de livros html e você começa a programar, vamos esclarecer aqui! OP deve consultar professores de Oxford, a Harvad etc
quintumnia
3

Antes de entrar na Inteligência Artificial, é preciso fazer os pré-requisitos. Não há uma lista sólida, mas um bom conhecimento de vários algoritmos é obrigatório. Além disso, você deve se sentir confortável com pelo menos uma linguagem de programação, como C ++ ou Java. Não vou sugerir que você mergulhe na Inteligência Artificial se for completamente novo na Ciência da Computação. Alguma experiência com programação antes de mergulhar na Inteligência Artificial será um ponto positivo para você.

Comece a ler (blogs, artigos, artigos acadêmicos, etc.) sobre Inteligência Artificial. Como o que é, suas aplicações, status atual e outras coisas que você pode encontrar. Comece a criar códigos AI para pequenos jogos como Tic Tac Toe, Sudoku, Reversi (Othello) etc. para o início. Você pode criar seu próprio simulador e criar um código que resolva o cubo Rubik. Da mesma forma, crie códigos para reconhecimento de padrões e aprendizado de máquina. Nada é melhor do que aprender fazendo. Idiomas como LISP e python serão muito úteis. Aqui estão duas respostas que ajudarão você: ans1 e ans2 .

Se você é uma pessoa que gosta de ler e aprender com livros (como eu), pode comprar Inteligência Artificial: Uma Abordagem Moderna (Peter Norvig e Stuart Russell). O livro é muito bom e funciona bem para os níveis intermediário e avançado. Tente resolver os problemas de exercícios dados no livro. O pdf da solução dos livros está disponível online . Para o Machine Learning, dois livros que eu recomendo são: Reconhecimento de Padrões e Machine Learning (Christopher M. Bishop) e Programming Collective Intelligence (O'Reilly).

Para começar, há um artigo muito bom sobre Inteligência Artificial e Singularidade Tecnológica.

O artigo é longo e dividido em duas partes. Eu recomendo fortemente que você leia este artigo se você é sério sobre Inteligência Artificial. Isso lhe dará algumas boas idéias.

O conhecimento da teoria computacional o ajudará muito. Especialmente quando você trabalha na área de Processamento de linguagem natural. Outros subcampos da IA ​​que podem interessar você serão Aprendizado de Máquina, Computação Evolutiva, Algoritmos Genéticos, Aprendizado por Reforço, Aprendizado Profundo etc. A lista continua. Melhor seu conhecimento de Estatística, melhor será para Inteligência Artificial. Fique atento aos acontecimentos recentes em campo por meio de fóruns, sites, etc. O site Open AI também é uma fonte muito boa.

Ugnes
fonte