Deep Learning têm recebido bastante atenção nos últimos anos, tanto no campo da computação como na mídia em geral.

Técnicas de Deep Learning (DL) se tornaram o estado da arte em várias tarefas de Inteligência Artificial e mudado vários grandes campos da área, na visão computacional (classificação de imagens, segmentação de imagens), NLP (tradução, classificação de textos), reinforcement learning (agentes capazes de jogar jogos complexos como Go, Atari e DOTA).

Esse impacto não fica só na teoria, DL está mudando o campo da Medicina, Ciência, Matemática, Física. Artigos de Deep Learning são rotinamente publicados em grandes revistas científicas como: Nature, Science e JAMA.

Nesta seção iremos discutir:

  • O que é Deep Learning?
  • Eu realmente deveria me importar com DL ou é só hype?
  • Por que eu como programador(a) deveria me importar?

DL = Muitos Dados + Redes Neurais + Otimização

Inteligência Artificial $\supseteq$ Machine Learning $\supseteq$ Deep Learning

IA (Inteligência Artificial), ML (Machine Learning) e DL (Deep Learning) são utilizados na mídia quase como sinônimos.

Inteligência Artificial se refere ao campo da ciência da computação que se preocupa com o estudo de máquinas para realização de atividades ditas inteligentes. Esse é um grande campo com diferentes "escolas"/"ramificações". Inteligência é um conceito muito amplo e bastante subjetivo.

Uma grande pergunta é como construir máquinas inteligentes?

Machine Learning se refere ao subcampo da IA que busca obter máquinas inteligentes através da extração de estrutura e inteligência (padrões) de dados (experiência).

"Um computador aprende a partir da experiência E com respeito a alguma tarefa T e alguma medida de performance P, se sua performance em T melhora com sua experiência E" - Tom Mitchell (1998)

A ideia de ML é que, para realizar uma tarefa, nós (programadoras(es)) não implementemos as regras que definem as saídas para uma dada entrada. Imagine que queremos traduzir qualquer frase do inglês para português, quais regras iremos utilizar? Listar todas as traduções e regras possíveis é não trivial.

“A complexidade de programas de computadores convencionais está no código (programas que as pessoas escrevem). Em Machine Learning, algoritmos são em princípio simples e a complexidade (estrutura) está nos dados. Existe uma maneira de aprender essa estrutura automaticamente? Esse é o princípio fundamental de Machine Learning.”- Andrew Ng Ao invés de listar as regras e funcionamento do sistema podemos utilizar um modelo de Machine Learning, e mostrar para o modelo vários exemplos de frases em inglês traduzidas para português. Padrões são extraídos dos dados e utilizados para que o modelo defina como tomar suas próprias decisões de modo a otimizar a tradução.

Modelos de Machine Learning extraem padrões dos dados, e claro são extremamente dependentes da qualidade dos dados para sucesso em suas tarefas, mas também depende de como os dados são representados. Por exemplo, como um modelo de ML deve representar uma frase?

Seria muito bom não ter que se preocupar com a representação dos dados... Tipo, dar para o modelo uma representação bastante simplificada e ele que se preocupe em encontrar algum sentindo nesse dado bruto...

Seria e é possível!! Essa abordagem é conhecida como Representation Learning, o modelo deve ser capaz não só de resolver a tarefa (exemplo: tradução), mas também de encontrar representações úteis para os dados de modo a resolver essa tarefa. Afinal, a gente não sabe explicar como resolve o problema, provavelmente também não sabemos qual a melhor representação para tal.

Deep Learning é um subcampo de ML que utiliza representation learning definindo representações mais complexas a partir de outras representações mais simples.

O nome Deep vem das múltiplas representações (camadas) que utilizamos para construir os modelos. Então, de maneira geral, quando pensamos em DL pensamos em um modelo com váááárias camadas, e também precisamos de muuuuitos dados. Métodos de DL tem fome de dados. Quer boas representações? Me dê vários exemplos de dados; Quer que eu saiba traduzir bem? Me dê vários exemplos de traduções de boa qualidades que eu consigo extrair os padrões e aprender umas representações bem bacanas e ser um excelente tradutor!

Importante: se modelos de DL aprendem com os padrões presentes nos dados, significa que eles podem aprender vieses e preconceitos presente nos dados.

Eu realmente deveria me importar com DL ou é só hype?

Popularização de DL

O termo Deep Learning começou a se popularizar aproximadamente em 2012 quando técnicas de DL foram aplicadas com sucesso para a tarefa de classificação de imagens num desafio chamado "Imaginet Challenge" que consiste em classificar corretamente imagens em 1000 diferentes categorias.

Desde então modelos de DL são a melhor coisa para essa tarefa e só ficam melhor. Na imagem acima é mostrado o erro do vencedor do desafio em cada ano. Sendo as barras azuis modelos de DL.

Mas... redes neurais (coração do DL) existem desde 1930, por que só agora?

Dois grandes fatores contribuiram para o sucesso de métodos de DL e sua popularização:

  1. Muitos dados disponívels
  2. Hardware disponível

Com esses fatores foi possível explorar redes neurais com muito mais camadas e novas arquiteturas. Assim DL se tornou imparável e se firmou como estado na arte não só na tarefa de classificação de imagens mas numa esmagadora gama de tarefas e áreas.

Ta... mas é hype ou não é?

O hype é real, mas o avanço também!

Ainda existem vários problemas em abertos, porém a área de DL está em constante evolução! Cada dia que passa novas técnicas surgem e mais resultados surpreendentes são alcançados.

Aprender sobre DL e seus conceitos básicos é fundamental para acompanhar, entender e contribuir para esse avanço!

Por que eu deveria me importar?

  1. ML e DL estão mudando como se constrói e se pensa sobre software!
  2. DL é muito legal, se você entender de DL você se torna mais legal e interessante por tabela :D

Mas sério, a razão 1. é realmente muito relevante, leia esse blog e entenda uma forma de ver como DL está mudando como construimos e construiremos software.