Análise: AlphaGo (2017) – vamos falar sobre I.A.?

Acho extremamente importante tentar fundamentar um debate honesto, sem ilusões nem romantizações sobre a questão do desenvolvimento da Inteligência Artificial.

Apesar da ideia de máquinas inteligentes não ser algo inventado no nosso século. A noção de inteligência artificial como um campo de estudo é algo que podemos localizar no tempo e se trata de um campo com pouco mais de 60 anos.

Ainda vou falar bastante sobre a história do desenvolvimento da I.A. pois é um tópico por si só fascinante e ao mesmo tempo explicita muitas das noções e debates que se fazem presentes no estado atual da ciência.

Mas o blog não é sobre linguística computacional? Qual a relação entre as duas áreas?

A dupla linguística computacional/ processamento de linguagem natural é uma área do campo da inteligência artificial. Colocando em termos muito simples e ligeiros nessa nossa primeira aproximação: uma máquina só é considerada inteligente (o objetivo da Inteligência Artificial) se for capaz de entender e produzir linguagem natural humana (o objetivo do processamento de linguagem natural).

Voltando para a questão em mãos: está disponível na Netflix o documentário AlphaGo, lançado em setembro de 2017, que trata de uma das histórias mais impressionantes envolvendo tecnologia que aconteceram nos últimos tempos: a partida do jogo de tabuleiro Go entre um computador e o melhor jogador humano, o coreano Lee Sedol.

Antes de tudo, recomendo o documentário, pois cobre a história dando algum tratamento sobre os aspectos técnicos envolvidos ao mesmo tempo que traz os dramas humanos presentes. É interessante mesmo que você não saiba nada sobre Go ou sobre inteligência artificial.

Nota: caso por um acaso você não saiba o resultado das partidas e queira ver o filme com alguma expectativa, deixa para ler o resto do texto depois!

Eis alguns pontos que o documentário trata que merecem alguma atenção:

Jogos como uma ferramenta para compreender inteligência.

Existe uma tradição forte no campo da inteligência artificial em escolher jogos como uma área de aplicação e teste de algoritmos inteligentes, desde antes do surgimento da computação a ideia de máquinas que fossem capazes de competir contra humanos já estavam presentes.

Em específico, o jogo de xadrez, talvez pelo simbolismo de ser um jogo de demonstração de habilidade de raciocínio, foi explorado em diversas ocasiões. Dentre as pessoas que tentaram propor por nomes importantes do início do desenvolvimento da computação moderna, como Allan Turing e Claude Shannon, mas talvez um dos grandes ápices dessa história seja o do computador Deep Blue, que em 1997 venceu uma série de melhor de seis partidas contra o então melhor enxadrista humano, Garry Kasparov.

deep blue
Kasparov contra Deep Blue

Mas por que o fascínio em criar máquinas que joguem?

Claro que existe uma certa carga simbólica em uma inteligência artificial vencer um humano em um jogo justo, no qual ambos estão sujeitos as mesmas regras. Mas existe também uma razão bastante prática para escolhermos jogos.

A própria definição de jogo é o que o torna tão útil para esse fim. Um jogo tem que ser bem definido por um conjunto de regras não ambíguas que determinam os turnos, aquilo que é permitido fazer e por fim, as regras determinam também as condições necessárias para a vitória.

Com isso temos dois aspectos excelentes para trabalhar com o desenvolvimento de novos programas: em primeiro lugar, um programa só funciona direito se estiver obedecendo as regras do jogo. Além disso, podemos dizer que se o programa é bom ou ruim no jogo dependendo do seu desempenho em termos de vitórias/derrotas!

Como um bônus, podemos comparar a habilidade do programa com a de humanos naquele domínio específico.

Por fim, ainda existe um outro excelente motivo para usarmos jogos: o tipo de raciocínio utilizado em um jogo de xadrez é útil para diversas outras situações práticas, nas mais variadas áreas, portanto um programa que se comporte de forma sobre-humana no jogo pode se comportar de forma igualmente impressionante em uma outra aplicação.

Domínio específico vs. Domínio geral

Toquei involuntariamente nesse tópico, mas acho que é um ponto muito importante para discutir IA.

O Deep Blue joga xadrez melhor do que qualquer humano. O AlphaGo joga Go melhor do que qualquer humano. No entanto, um humano joga xadrez melhor do que o AlphaGo e joga Go melhor do que o Deep Blue.

Para além do divertido jogo de palavras, meu ponto é que a inteligência humana não está atrelada a um domínio específico, ao passo que a inteligência artificial tal como ela ainda existe é.

Na verdade o Deep Blue e o AlphaGo tem uma diferença fundamental neste aspecto. O Deep Blue não consegue aprender Go, o AlphaGo precisou de algumas modificações, mas em questão de horas aprendeu a jogar xadrez melhor que o Deep Blue.

Um dos grandes pontos de empolgação com o desenvolvimento da inteligência artificial nos últimos anos é que o tipo de algoritmo por trás do AlphaGo, que usa redes neurais profundas, parece ser plástico o suficiente para aprender diferentes tipos de conjuntos de regras e como vencer usando essas regras, de modo análogo aos seres com inteligência de domínio geral como os humanos.

Claro, esse aprendizado exige uma grande quantidade de exemplos, muitos mais do que qualquer ser humano tem acesso, mas que o feito é impressionante, isso é.

landscape-1457623728-alphago2
“Vamos ver se o AlphaGo é tudo isso”

Visão sistêmica não-humana

Por fim, um ponto impressionante que o documentário mostra é o movimento 37 da segunda partida entre humano e computador.

Todos os especialistas assistindo, assim como a própria equipe responsável pelo AlphaGo acharam a jogada uma coisa completamente sem sentido, um erro amador.

No entanto, o programa ganhou essa partida.

Não só isso como aquela jogada esdrúxula acabou servindo mais adiante no jogo e, apesar de não fazer sentido exatamente naquele momento, ao levar em conta um contexto mais amplo do que nós rotineiramente levamos, a jogada foi na verdade uma excelente sacada.

Nesse ponto é interessante refletir sobre o que aconteceu ali. A jogada foi bizarra ou foi genial? Por que na hora ninguém soube julgar isso?

Acho que essa linha de questionamento mostra bem como não temos nenhum tipo de preparo para lidar com inteligências não-humanas. O programa, ao invés de ser genial ou não, foi profundamente não humano. A visão que esse algoritmo tem do jogo é claramente diferente da visão que mesmo o mais hábil dos humanos tem.

Um dos aspectos mais fascinantes de mexer com a área de inteligencia artificial está justamente nesses pequenos momentos em que se vislumbra uma capacidade não-humana de fazer algo que nós consideramos inteligente, só que de uma forma de inteligência que não é nossa.

O jogador pode ter uma estratégia definida e a previsão das próximas rodadas, mas o algoritmo tem uma visão extremamente mais ampla e mais sistêmica do jogo.

O escritor Isaac Asimov escreveu um conto no livro “eu, robô” que mostra robôs que tem um pensamento sistêmico tão fino e tão abstrato que apenas gerando um pequeno erro num relatório econômico de uma determinada região, conseguem desmantelar toda uma conspiração antirrobôs.

 

Sem surpresas em Asimov prever algo praticamente inimaginável na sua época, mas continua sendo fascinante de um jeito profundamente atual. O tipo de inteligência que começa e emergir com as novas tecnologias é ao mesmo tempo fascinante e inédito, é fundamental refletirmos sobre o significado deste tipo de desenvolvimento.

 

Quando a divulgação não informa

Saiu agora um dossiê sobre inteligência artificial no portal da Super Interessante.

Era uma grande oportunidade de divulgar um tema de grande apelo sob um viés sério e científico. Infelizmente, não foi isso que essa primeira parte do dossiê mostrou.

É revoltante ler em um portal que pretende divulgar assuntos ligados à ciência uma mistura tão intensa entre o que é fato científico e ficção pura, sem que haja nenhuma preocupação com o tipo de impacto que esse tipo de coisa possa ter.

É inegável que exista um apelo muito grande da inteligência artificial na cultura popular:  vemos diversos filmes, livros e séries sobre o tema, e isso não é problema! Inclusive, considero diversas dessas histórias excelentes e, é claro, pensar nessas questões dentro da perspectiva fantástica que as ficções apresentam é uma atividade muito divertida.

Agora, é importante pensar também no papel da divulgação científica e lembrar que a inteligência artificial não é só ficção. Existem muitas pessoas que estudam esse tópico dos mais diversos pontos de vista e das mais diversas origens acadêmicas: filósofos, engenheiros, cientistas da computação, biólogos, linguistas…Esses estudos são sérios e revelam um panorama incrível que é tão atraente quanto o revelado pela ficção – com o bônus de ser real!

A grande questão é que a linguagem científica, ao se refinar ao longo do progresso de determinada área, vai se tornando cada vez menos acessível para o público geral.Daí a missão da divulgação científica: trazer a mensagem expressa no desenvolvimento científico de modo que o público geral a compreenda, mas se mantendo fiel às ideias trazidas pela comunidade científica.

154062807_science-communication_-istockphoto_thinkstock
Divulgação científica não é simples!

Essa é uma missão ingrata! Com frequência você corre o risco de perder público sendo mais rigoroso. Além disso, não tenha dúvidas de que algum técnico virá apontar qualquer detalhe perdido na sua divulgação.

Mas, o ponto importante aqui é: para se fazer divulgação científica, é fundamental ter rigor. Quando se fala de uma área tão presente no imaginário popular, é necessário ter o dobro de rigor.

Uma matéria curta sobre inteligência artificial tem que, no mínimo, tomar muito cuidado ao falar de determinados tópicos. A primeira parte dessa reportagem da Super traz uma perspectiva que:

1- Apresenta o futuro da IA como necessariamente alcançar a Singularidade (que é, no mínimo, forçar a barra)

2 – Não tem nenhum cuidado ao tratar a inteligência artificial como se fosse igual à inteligência humana, só que em robôs.

O primeiro ponto, pelo menos, é atribuído a um pesquisador (Ray Kurzweil).

Sobre o segundo ponto: como você fala de IA em geral sem falar de uma das grandes questões filosóficas da IA? Ainda mais quando a posição científica sobre a IA tende para o lado oposto ao que você defende?

É possível comparar a chamada inteligência artificial, criada por agente inteligentes em computadores com a inteligência humana, fruto da evolução biológica da espécie?

Veja o que o texto fala:

“Você está em outro nível de desenvolvimento cognitivo, lógico e filosófico. Você é um robô. Criado por robôs. Mas é como se fosse gente.”

“É como se uma pessoa tivesse, ao mesmo tempo, a genialidade de Einstein, Mozart, Marie Curie, Steve Jobs e Da Vinci. Só que ela é um computador.”

“Um robô francês chamado NAO passou na prova. Diante de perguntas simples, NAO foi capaz de raciocinar a respeito da sua própria existência – algo que, até outro dia, era exclusividade dos seres humanos.”

Apenas não! Não se faz o paralelo entre inteligência artificial e o que quer que ela alcance que se dê o nome de consciência com a consciência humana, forjada por milhões de anos de processo evolutivo biológico!!

Pelo menos não se faz isso sem apresentar as críticas (3 links apontando como essa comparação é complicada, TODOS encontrados na primeira página do google).

Além disso, a conclusão de uma matéria de divulgação científica não poderia ser mais descabida:

“Muito em breve, computadores vão tirar suas próprias conclusões, desenvolver uma ética peculiar, demonstrar uma inteligência superior inigualável e criar autossuficiência. Por que um mundo assim precisaria de humanos?”

Vender essa área como se fosse a grande responsável por criar um possível apocalipse é tremendamente irresponsável. Beira ao ludismo.

471027a-i1-0
Contra as máquinas e não contra os exploradores!

Vamos falar de realidade? O que é real sobre a inteligência artificial é que é uma área que tem criado produtos e mecanismos que afetam muito positivamente diversos aspectos da vida humana. Temos carros autônomos, algoritmos que indicam filmes e livros, assistentes pessoais no celular.

É claro que existem problemas novos trazidos pelas novas tecnologias, mas vender ficção como se fosse o resultado lógico do avanço de uma área científica é extremamente problemático. Deve ser a vontade de ganhar mais cliques.

 

Sobre Expressões Regulares

Vamos falar um pouco sobre a prática da linguística computacional?

O tema de hoje é algo fundamental para o processamento de linguagem natural: as expressões regulares!

Mas o que diabos é isso? De novo, vamos partir de uma definição da Wikipedia:

Nas ciências da computação e na teoria das linguagens formais, uma expressão regular é uma sequência de caracteres que definem um padrão de busca, usado principalmente para buscas textuais. O conceito surgiu nos anos 50, quando o matemático americano Stephen Kleene formalizou a descrição de uma linguagem regular que se popularizou  ao ser incorporada no processador de texto do sistema Unix.

Ainda hoje, pequenas variações da linguagem regular descrita por Kleene estão no coração dos principais editores de texto, mecanismos de busca e linguagens de programação.

Sem entrar nos pormenores envolvendo teoria da computação, autômatos ou linguagens formais, quero focar na extrema utilidade e elegância das expressões regulares — No fim do post deixarei alguns  links com explicações mais técnicas, para quem se interessar por esse caminho.

deterministic-finite-state-machine
Hoje não vamos falar de autômatos de estados finitos 😦

Podemos pensar nessa ferramenta (também chamada de “regex”) como uma forma simples e elegante de definir padrões de texto. A partir de uma regex, é possível procurar por esse padrão definido em qualquer documento ou conjunto de documentos.

É bem fácil ver a utilidade de uma ferramenta como essa, certo? A imensa quantidade de texto disponível num mundo pós-internet criou uma necessidade também imensa de métodos para explorar e investigar esses documentos.

Por isso, as regex são fundamentais nas áreas de extração de informação (data mining, em português contemporâneo), big data, processamento de linguagem natural, etiquetagem morfossintática, reconhecimento de entidades nomeadas, entre outras. O princípio é o seguinte: uma regex é uma sequência de caracteres. Alguns desses caracteres têm funções específicas e, a partir do padrão desenhado pela combinação desses caracteres, é possível fazer operações, como copiar as partes importantes de um texto e organizá-las em uma tabela.

Por exemplo, se você tivesse um conjunto grande de e-mails formais e quisesse descobrir o nome do destinatário de todos eles… O que você faria?Para resolver essa questão é necessário usar não só as expressões regulares, mas também algum conhecimento linguístico.

Vamos pensar: o nome do destinatário, por convenção, é sempre posto na primeira linha de um e-mail/carta formal, num formato como ‘Caro senhor X’, ‘Cara senhora X’ ou ainda ‘Prezado senhor X’ ou ‘Prezada senhora X’. Além disso, temos outra convenção importante: os nomes próprios são representados com a primeira letra maiúscula.

Em seguida, as questões dessa abordagem: temos que percorrer os dados uma vez para cada uma dessas variações de Caro/Cara/Prezado/Prezada? Isso é bastante ineficiente! Além disso, os nomes próprios são bem traiçoeiros, nenhuma lista contém todas as variações de todos os nomes possíveis do português brasileiro! Como a gente identifica um nome? Uma palavra também pode começar com letra maiúscula se ela for a primeira depois de um símbolo como “!”, “.”, “?” e isso não significa que ela é um nome, certo?

Por fim,  a nossa questão central: como fazemos para o computador capturar esse valor variável que é o nome? E o sobrenome?

Usando uma expressão regular simples, conseguimos captar o nome de qualquer e-mail que comece com algum dos cabeçalhos indicados acima, a expressão é a seguinte:

((Car(a|o)|Prezad(a|o)) (S|s)enho(ra|r)) ([A-Z][a-z]+( )*)+

Nota: essa solução não é a mais curta possível. Eu foquei mais em obter uma resposta legível do que uma resposta compacta.

O primeiro trecho, “((Car(a|o)|Prezad(a|o)) (S|s)enho(ra|r))”, identifica qualquer uma das variações de cumprimento que eu levei em conta. As expressões regulares são bem eficientes em lidar com a ideia de alternativa e o símbolo “|” expressa essa noção (como um bom operador Booleano): ou o que está à esquerda ou o que está à direita dele. Com isso, as variações são todas contempladas de uma única vez pela expressão.

O segundo trecho, muito mais condensado, é o que efetivamente captura o nome. “([A-Z][a-z]+( )*)+” identifica o seguinte padrão:

1- Uma letra maiúscula “[A-Z]” seguida por

2- Uma ou mais letras minúsculas “[a-z]+” seguidas por

3- Zero ou mais espaços  “( )*”.

4 – Repita esse processo enquanto for possível  (representado por aquele “+” no fim).

Isso faz com que a expressão identifique nomes e sobrenomes, se houver.

Note o poder expressivo dessa pequena série de caracteres. Esse é o motivo pelo qual as expressões regulares são absolutamente indispensáveis hoje para diversas áreas.

regular_expressions
XKCD já adianta: regex salvam vidas!

Ficou com vontade de estudar mais? Seguem alguns links úteis!

1 –  Regular Expressions —Wikipedia

Mais uma vez, a página da Wikipedia é um ótimo lugar para se ter um panorama sobre o assunto. É um artigo um tanto quanto técnico, ideal para quem quer entender um pouco melhor como a coisa toda funciona.

2 – Capítulo do livro Speech and Language Processing — Jurafsky & Martin

Ótima explicação, pensando no caso da aplicação na linguística computacional mesmo. Bem técnico, mas tem a vantagem de, ao contrário da Wikipedia, pensar num público alvo específico e destacar as aplicações dessa técnica para a linguística computacional. O melhor? Disponível de graça na internet!

3 – Testador de expressões regulares

Uso bastante esse site para ir construindo uma expressão regular aos poucos. A vantagem é que você escolhe os textos em que quer fazer a busca e, conforme escreve a expressão, dá pra ver ao vivo o que está sendo selecionado no texto. Grande recurso!

 

Bônus — Regex Golf

Na verdade, as regex são praticamente a base de um culto. Existe uma modalidade chamada Regex Golf, que eu conheci através do monstro Peter Norvig, em que o desafio é criar uma expressão que identifique todos os membros de um grupo de palavras e nenhum do outro grupo. Recomendo o link para uma discussão leve e extremamente produtiva sobre esse tópico.

Bônus 2 – Abecedário de regex

Nessa página, temos um resumão contendo todos os comandos de regex! Para imprimir e ter sempre à mão!

 

((A|a)braç(o|os)|(B|b)eij(o|os)\!+)

 

Estudando machine learning!

Pois bem, depois de falarmos um pouco sobre o conceito geral de aprendizado de máquina, vamos aos materiais!

1 – Livro: Learning From Data -Yaser S. Abu-Mostafa, Malik Magdon-Ismail, Hsuan-Tien Lin

front

Bom livro  sobre o assunto. Uma das grandes vantagens é que não parte de um ponto muito avançado (matematicamente falando), tem como objetivo explorar os conceitos gerais pra você entender do que está falando e o que está fazendo.

O interessante é que é um livro que aborda tanto os aspectos teóricos quanto os aspectos práticos, e conta com exercícios para ajudarem a tornar tudo ainda mais claro.

2- Vídeos: Machine Learning Recipes

maxresdefault

Uma série de vídeos do Youtube para um público leigo sobre Machine Learning. Isso já deveria bastar para esse ser uma ótima sugestão. Mas vou acrescentar uma coisa: quem fez a série foi a equipe de desenvolvedores da Google. Sério, é muito legal mesmo! E você ainda consegue brincar com o Tensor Flow – a biblioteca de redes neurais que a empresa usa como motor para suas aplicações.

3- Curso: Machine LearningAndrew Ng

large-icon

Já falamos do Andrew Ng por aqui: professor de Stanford e fundador do Coursera. Ele tem um curso na própria plataforma sobre Machine Learning que é uma abordagem muito consistente sobre o assunto. Já adianto que o curso é muito bom, mas não é tão amigável quanto os dois materiais descritos acima. Vale a pena fazer no próprio ritmo, pegando todos os conceitos de cada aula e indo estudar por conta, por que nesse curso as coisas andam bem depressa.

4- Livro: Programming Collective Intelligence: Building Smart Web 2.0 Applications – Toby Segaran

71r-ilkolol

Esse livro é um personal favorite. Ainda que o foco dele não seja explicar machine learning, e sim construir programas de inteligência coletiva, a relação entre os tópicos e o caráter extremamente didático do texto fazem a coisa toda valer a pena.

No fim do primeiro capítulo, por exemplo, você já sai com um sistema de recomendação de filmes, baseado nos primórdios dos algoritmos usados pela rede Netflix!

5 – Site: Kaggle

kaggle-logo-transparent-300

Esse site é um playground de machine learning. É possível conversar com outras pessoas interessadas no assunto usando o fórum, ler um blog muito bom sobre a área e o principal: encontrar milhares de desafios de machine learning.

Isso funciona da seguinte forma: você lê o desafio, que pode ser algo como “Preveja se esse conjunto de pessoas sobreviveria ao naufrágio do Titanic baseado no peso, altura e origem de todos os passageiros originais”, aí você baixa os dados e então fica ao seu critério criar as soluções mais eficientes para os desafios.

6 -Livro Online: A course in machine learning – Hal Daumé III

machine-learning

Outro livro introdutório. A vantagem desse é que é muito bem organizado em tópicos que abrangem todo o campo de estudo de um jeito bastante pedagógico. Além disso, esse volume possui a grande vantagem de estar disponível de graça no link acima!

7- Curso: Practical Machine Learning Tutorial with Python

maxresdefault1

Os quase 60 vídeos mostram um panorama bem completo sobre o campo. Melhor do que isso, as implementações são todas em Python! É bom pensar que se trata de uma abordagem prática, então não é uma ferramenta para se compreender o que está acontecendo exatamente dentro de cada um dos programas descritos.

Extras:

Lista de scripts: Machine Learning em Python

Um ótimo tutorial sobre  machine learning. O autor transformou a resolução de exercícios em um guia completo nesse site. É ótimo para ver os conceitos aprendidos sendo aplicados em Python.

Reddit: Machine Learning

Tem muita coisa legal nesse subreddit. É um bom lugar para ir para ver novidades da área e encontrar materiais novos para estudar.

Telegram: Machine Learning em Python – Brasil

Use o melhor aplicativo de mensagens para discutir (e ler discussões) sobre machine learning! Mais uma vez, assim como no Python, a comunidade é super receptiva e muito provavelmente qualquer dúvida (pertinente) que você tiver será levada em conta pelos membros.

Espero que o guia ajude, você conhece algum outro material? Por favor, me conte!

 

Quando o computador aprende: o que é machine learning?

Machine learning (normalmente traduzido como aprendizado de máquina) é uma área da Inteligência Artificial que trata das técnicas usadas para moldar as ações do um agente com base em determinados dados observados.

O princípio é  melhorar o desempenho de um modelo ou de um programa em uma determinada tarefa a partir de treinamento. Ou seja, mais ou menos como um ser vivo que aprende com a experiência, um determinado programa aprende e melhora seu desempenho em uma tarefa depois de ser treinado nela.

É uma ideia poderosa, certo? E realmente isso é uma coisa impressionante. Hoje você consegue, através da aplicação de técnicas diversas de aprendizado de máquina, fazer um programa que reconhece o que é um rosto em uma foto (porque o programa aprende o que é um rosto), um mecanismo que recomenda os filmes mais interessantes para uma pessoa com um determinado perfil, ou até mesmo um sistema que sabe que um determinado e-mail é um spam, sem que o usuário precise pensar nisso.

Mas, antes de nos aprofundarmos um pouco mais nesse mundo, é necessário fazer uma separação importante: Lembram o exemplo que eu dei no começo desse texto, comparando o aprendizado de máquina com o aprendizado de um ser vivo? Bom, ele funciona para fins ilustrativos, mas, na prática, a coisa é bem mais complicada.

Em primeiro lugar, computadores e seres vivos são coisas muito diferentes, muito diferentes mesmo. É importante lembrar que um ser vivo é fruto de um processo de milhões de anos de evolução e o computador é um objeto criado pelo homem. Todas as comparações entre objetos tão diferentes precisam ser feitas com muito mais cuidado do que normalmente se vê por aí.

Ainda não sabemos exatamente como os seres vivos aprendem: não chegamos na fórmula matemática que descreve o funcionamento dos processos cognitivos envolvidos com exatidão e sem ambiguidades; o problema é que um computador precisa justamente de uma fórmula matemática exata e sem ambiguidades para funcionar, então o que chamamos de aprendizado de máquina é nada mais do que uma metáfora do processo cognitivo.

Chamamos de aprendizado, mas isso não significa que o seu computador vai começar a aprender a pensar, ou que ele vai aprender a dar a patinha.

large-icon
Infelizmente, isso não é  Machine learning.

O aprendizado de máquina que estamos falando na verdade está muito mais para estatística inferencial e modelos  probabilísticos do que qualquer outra coisa.

O aprendizado de máquina do qual estamos falando, como visto por exemplo no sistema de recomendação da Netflix, na verdade está muito mais próximo do que chamamos de estatística inferencial e do conceito de modelos probabilísticos do que disso.

toptal-blog-image-1407513802706
Isso é machine learning no mundo real.

A ideia é que um determinado agente, a partir de um determinado treinamento e de um determinado modelo de aprendizagem, irá executar uma ação. Para isso, precisamos de alguns objetos que vão configurar o cenário de aprendizado de máquina:

1 – Agente: esse é o objeto que executa alguma ação.

2 – Dados para treinamento: Para que o mecanismo funcione, é importante ter uma coleção (de modo geral, quanto maior, melhor) de dados que servirão como um gabarito para o nosso agente. Ele irá se basear nos dados de treinamento para executar a tarefa de forma aprimorada.

3-  Modelo de aprendizagem: Esse objeto é o que transforma os dados usados para o treino em alguma coisa útil para o agente. O que temos aqui é algum modelo probabilístico que, a partir do que foi oferecido no treino, irá atribuir probabilidade para novas observações.

Isso pode ser esquematizado assim:

machine-learning-for-dummies-4-638
Aqui é possível ver todos os envolvidos num processo de aprendizagem de máquina.

Repare: é possível fazer infinitos tipos de modelos de aprendizagem, por isso existem aplicações tão diversas desse tópico no mundo de hoje. O curioso é que o princípio de funcionamento de todas as aplicações mostradas estão contidos neste esquema.

Espero que o panorama apresentado aqui seja o suficiente para uma discussão introdutória sobre o assunto. No próximo post, irei apresentar alguns bons materiais para quem quer começar a estudar esse tópico.

 

Estudando Estatística e métodos quantitativos – um guia amigável para linguistas

Estatística e análise de dados são fundamentais.

Não só para linguistas, não só para acadêmicos: estatística é parte fundamental do conhecimento que precisamos para lidar com o mundo de hoje. É um tipo de alfabetização lógica que todos nós deveríamos ter.

Eu digo isso pois é muito comum nos depararmos com argumentos baseados em estatística para defender a opinião X ou Y . Na verdade, é considerado uma boa prática ter a sua argumentação respaldada por fatos, e esses fatos muitas vezes são codificados de alguma forma por algum tipo de tratamento estatístico.

 

2000px-scientificgraphspeedvstime-svg
Gráfico aleatório estrategicamente colocado para respaldar minhas opiniões.

Ao mesmo tempo em que a retórica estatística está por todo lado, o respeito à metodologia, à apuração de fontes e ao próprio conhecimento mínimo sobre os métodos quantitativos não são tão bem disseminados assim. Já presenciei, por exemplo, apresentações em congressos feitas por professores que usavam estatística de modo completamente absurdo.

Ainda duvida que estatística é fundamental? Eis uma definição elegante da área:

Estatística é o estudo sobre a coleta, análise, interpretação, apresentação e organização de dados.[1] Ao aplicar estatística em um problema científico, industrial ou social, costuma-se começar com a definição da população ou do modelo estatístico que será estudado. Populações podem ser coisas distintas tais como “todas as pessoas que moram em um país” ou “todos os átomos que compõe um cristal”. A estatística lida com todos os aspectos dos dados, incluindo o planejamento da coleta de informações, como o desenvolvimento de pesquisas e experimentos.

Falando sobre a área de Linguística, a análise de dados não é útil apenas para a linguística computacional. Existem áreas dos estudos da língua que dão mais ou menos importância para as análises quantitativas, sendo a sociolinguística talvez o exemplo mais claro de como se pode ganhar juntando a análise quantitativa com as noções da linguística. Mas, de maneira geral, é muito raro fazer a associação de duas matérias que costumam ser colocadas em pontos tão distantes do aprendizado – e não são poucas as pessoas que se arrepiam ao ouvir “mostre o que você está querendo dizer em um gráfico!”.

Foi só quando eu comecei a mexer com linguística computacional que pude perceber o quanto é surreal que se forme um linguista que não tenha nenhum conforto para lidar com esse tipo de raciocínio.

Esses são os cursos e materiais de estatística que me ajudaram e ajudam a lidar com esse mundo de conteúdos:


 

6440155

Livro – Statistics for Linguists with R – Stefan Th. Gries (De Gruyter Mouton, 2013)

É difícil estudar estatística e fugir da linguagem de programação R. Apesar de não ser a minha praia, é uma ferramenta poderosíssima que ajuda a entender estatística de um jeito prático, nem que seja em termos básicos. Para quem não conhece, a linguagem R é voltada para a computação científica, e possui muitas bibliotecas específicas para processamento e análise de dados.

De todo modo, o melhor do livro é a abordagem mão na massa: primeiro explica os conceitos, depois dá exemplos linguísticos e, então, exercícios com dados linguísticos.

data-science-from-scratch

Livro – Data Science from Scratch – Joel Grus (O’Reilly, 2015)

Esse excelente livro, de leitura rápida, é um apanhado de diversos campos que compõem a chamada ciência de dados. Ele pressupõe algum conhecimento de Python ou de programação, mas se você já tem esse background, o livro é muito legal. Basicamente, o que o autor faz é ir explicando os conceitos das ciências de dados através da implementação deles em Python.

Ele apresenta um problema, o tipo de conhecimento necessário para lidar com esse problema e a implementação dessa solução em Python, tudo isso com explicações on the run. Recomendo muito!
41pptmtwvfl-_sx398_bo1204203200_

Livro – OpenIntro Statistics – David M. Diaz, Christopher D. Barr, Mine Çetinkaya-Runde (2015)

Excelente e completíssimo material de introdução à estatística, oferece um panorama geral das bases da estatística. E o melhor de tudo: está disponível para baixar de graça nesse site. A ideia é oferecer um panorama geral das bases da estatística.

É uma boa sugestão para quem quer ir além da alfabetização funcional na estatística e descobrir mais a fundo alguns dos conceitos, como regressão linear e regressão logística.

cat

Livro – Python for Data Analysis – Wes McKinney (O’Reilly, 2013)

A aplicação de Python para a análise de dados está acontecendo em diversas áreas, já que é uma linguagem fácil, eficiente e bastante intuitiva. Isso ajuda não só na hora de escrever o seu código, mas também para divulgar os resultados e apresentar o código feito.

Esse livro apresenta a análise de dados de um modo geral usando o Python como base. Também traz principais ferramentas dentro do Python que são usadas por grandes empresas e pesquisadores para atacar as questões da análise de dados. Uma versão mais aprofundada e densa do Data Science from Scratch.

 

minibook

Livro – Learning IPython for Interactive Computing and Data Visualization – Cyrille Rossant (Packt Publishing, 2015)

O IPython é uma interface para programar em Python que merece um post só para ela. De modo geral, o que vale dizer por enquanto é que, para quem é acadêmico, ela é o futuro. A facilidade de fazer um código altamente legível, combinado com texto e interativo é absurda. Mas o que é mais interessante desse livro é que ele conta com uma abordagem bem empírica como usar essa interface para fazer análise e visualização de dados.

Há um outro livro do autor, intitulado IPython Interactive Computing and Visualization Cookbook (Packt Publishing, 2014) que é um livro de receita para análise de dados usando o IPython.

 

khan-logo-vertical-transparent

Site – Khan academy

Esse site é muito bom! Ele foi criado como uma ferramenta para ajudar crianças e adolescentes na escola, mas os conteúdos, videoaulas e exercícios são muito bons para todos os que querem um reforço em algum conteúdo específico. É um jeito fácil e rápido de ir atrás daquela matemática que você teve na escola e por algum motivo acabou não aprendendo ou esquecendo com o tempo (“mas eu nunca vou usar isso na vida, professora!” ¯\_(ツ)_/¯ ).

Livro online – Online Statistics Education: An Interactive Multimedia Course of Study

Esse recurso online, criado por universidades americanas, é uma ótima fonte de conhecimento sobre estatística. Tem a vantagem de estar organizado em links, e um conceito específico está ligado tanto com os tópicos que você precisa dominar para entendê-lo como com os tópicos que estão relacionados a ele de modo geral.

Curso – Computational Statistics with Python – Universidade de Duke

Um curso completo sobre estatística. Além disso, é todo voltado para a implementação dos conceitos usando o Python. Um material incrível, que eu descobri recentemente e vou usar a partir de agora.


Outras recomendações:

Estatística na Wikipedia (Inglês) – A Wikipédia em inglês é quase sempre um ótimo jeito de começar a estudar alguma coisa. No caso da estatística, a descrição é boa e te conduz para outras leituras e fontes bem legais. A versão em português é bem interessante também, e está nesse link aqui.

Sub-reddit de Estatística: O reddit é uma ótima plataforma de fóruns onde dá para encontrar pessoas falando sobre qualquer coisa. O de estatística é um jeito legal de ter algum contato com discussões dessa comunidade.

Quora – No Quora, que eu já mencionei aqui, é possível encontrar perguntas de vários níveis respondidas pelas mais diversas pessoas, desde curiosos até professores universitários famosos. Deem uma olhada nessa pergunta que coloquei como exemplo: tem uma resposta que está no mesmo nível de livros texto. É uma fonte que, se bem trabalhada, pode contribuir muito!

O estatístico – Essa página de divulgação no Facebook é uma iniciativa super importante. Como eu disse, estatística é um mundo, e aqui você vai poder ver diversos links e artigos interessantes sobre as mais variadas áreas e aplicações da estatística.

 

Espero que uma porção significativa (p<0,05) das sugestões e dicas ajudem! Se você tiver alguma outra sugestão, por favor, compartilhe!

 

Como eu aprendi Python – compartilhando ferramentas

Aprender a programar foi uma das experiências acadêmicas mais legais que eu já tive. Comecei a estudar mais sistematicamente há quatro anos e, desde então, encontrei diversos materiais que me ajudaram a sair de um estágio de completo leigo para alguém que programa diariamente.

python-logo
A linguagem dos campeões!

A linguagem de programação que me indicaram para começar a aprender foi Python, que é, ao mesmo tempo, muito amigável com iniciantes, e bastante poderosa e versátil para quem já tem algum domínio. Ainda farei um post só sobre essas vantagens, com foco no que a linguagem tem de melhor para nós linguistas!

A quantidade de material de Python que se consegue encontrar na internet é enlouquecedora. Em parte, isso se deve não só ao sucesso da linguagem, mas também ao fato de que a comunidade de programadores Python é conhecida pela colaboração e pela defesa ferrenha da troca livre de ideias. Justamente pelo excesso de material, a ideia desse post é dar uma ajuda na hora de escolher o caminho que você vai seguir.

Em primeiro lugar, uma lista antes da lista:

A- Essa lista é voltada para pessoas que são novas no mundo da programação.

B- A quantidade de coisas que dá pra aprender sobre Python é muito grande!

C- Essa não é uma daquelas listas de “Aprenda Python em 24 horas” ou ”Ganhe dinheiro aprendendo a programar”. Minha intenção é compartilhar ferramentas que foram extremamente produtivas no meu caminho do aprendizado de programação.

D- Aprender a programar é pura diversão, mas as aplicações são MUITAS e as áreas são muito diferentes. Então, antes de começar, que tal pensar qual é realmente o seu objetivo e qual será a aplicação da programação para você? Assim, fica mais fácil escolher qual livro começar ou para qual curso você deve se dedicar mais.

Agora, ao trabalho! Eu separei os materiais que usei para aprender Python e que me foram indicados por professores, amigos e pela gloriosa internet. Falo um pouco de cada um e quero deixar bem claro: a lista é aberta! Meus estudos em Python não estão nem perto do fim!

As Ferramentas:

81lkwoe38tl

Livro: Think Python – How to think like a computer scientist – Allen B. Downey (O’reilly Media, 2012)

Meu primeiro contato bem-sucedido com programação e Python veio com esse livro. É uma ótima introdução à linguagem, ao mesmo tempo que é gentil (em oposição a ser assustador) pra te mostrar conceitos fundamentais de lógica de programação.

Ah, tem uma versão em português também disponível aqui! Além de uma tradução nova, que coloco aqui assim que estiver disponível.

 

logo_blue_dark

Curso: Python – codecademy

Esse curso do codecademy é muito bacana e amigável com iniciantes, é interativo e faz você trabalhar com muitos conceitos fundamentais através de exercícios. É um recurso complementar leve e extremamente didático ao Think Python.

 

9780262519632

Curso e livro: Introduction to Computer Science and Programming (MIT OpenCourseWare) e Introduction to Computation and Programming using Python – John B. Guttag (MIT Press, 2013)

Estou fazendo esse curso agora. Eu cheguei a fazer uma introdução às ciências da computação na USP, usando C (poucas saudades do C, mas o curso foi muito bom!), mas recomendo esse curso no lugar. Além além de aprender Python aqui, você vai aprender a ciência por trás, os conceitos fundamentais que te transformam não em alguém capaz de seguir receitas, mas em alguém que consegue pensar computacionalmente. Além dos vídeos disponíveis gratuitamente, tem o livro que é base do curso. Estou achando bem interessante!

iipp_icon

Curso: Interactive Programming with Python (Coursera)

Esse curso ensina diversos conceitos fundamentais de Python e programação através das aulas bem descontraídas (mas não é brincadeira, o curso é bem puxado) com projetos semanais que são um baita diferencial: fazer um jogo por semana como exercício. Então você aprende a programar e tem ali um resultado bem palpável, seja um jogo de adivinhar números ou de atirar em cometas.


 

Além dessas ferramentas que me diverti usando, ainda é possível encontrar inúmeras outras. Eu recomendo que o programador iniciante dê uma procurada nos seguintes lugares:

1 – Wiki da comunidade Python Brasil – Aqui tem tudo o que você vai precisar! Além disso, mostra um dos pontos mais fortes dessa linguagem de programação: a comunidade.

2-  O grupo Python Brasil no Facebook – Já que todo mundo passa tanto tempo na rede social, por que não aproveitar para dar uma olhada em artigos, discussões e sugestões reunidas nesse grupo bem ativo?

3- Fórum da comunidade Python Brasil – Para quem prefere o formato de fórum, aqui também se tem acesso aos mais diversos conteúdos sobre Python.

4- A documentação da linguagem Python – Todas as informações específicas que você poderia querer do funcionamento básico da linguagem Python estão aqui.

5 – Stackoverflow – Os acentos do texto que você está tentando abrir no Python saíram todos desconfigurados? Quer saber como ordenar as chaves de um dicionário de acordo com o valor em ordem numérica decrescente? Aqui é o lugar onde você vai achar todas as respostas às suas dúvidas específicas, uma meca digital onde todos os programadores do mundo se ajudam.

Espero que esses materiais ajudem!

print(‘Ni!’)

giphy-facebook_s

Sobre ser autodidata

Impossível começar a falar sobre o assunto sem ser brutalmente honesto: é muito difícil ser autodidata.

Hoje, basta um computador com internet para poder se enfiar nos self-studies, mesmo com todo o material do mundo disponível (seja através dos MOOCs [CourseraedX] que te dão acesso à aulas das melhores universidades do mundo ou dos reservatórios russos de livros com um potencial praticamente ilimitado) eu ainda sustento que é muito difícil ser autodidata.

O problema não é a falta de conteúdo. Hoje, claramente as dificuldades são incomparáveis com as dificuldades de 30 anos atrás, eu mal consigo imaginar como alguém conseguia bancar a ideia de ser autodidata antes da internet, tendo que ir garimpar materiais em bibliotecas, livrarias e sebos.

cabe num pen-drive
é assim que as pessoas faziam?

Além disso, cabe uma reflexão: na faculdade, tudo o que você aprendeu veio estritamente daquilo visto em aulas expositivas e bibliografia? A experiência de aprender também tem um aspecto de socialização que é inegável: conhecer colegas, conversar a respeito das matérias, ouvir as dúvidas que outras pessoas tiveram assim como as respostas. Tudo isso é essencial para o aprendizado. Na verdade, é tão importante que as plataformas de ensino online tentam simular alguns desses aspectos com os fóruns de discussão.

Provas, grades horárias definidas por especialistas e titulações são (ainda que nem sempre) ferramentas que auxiliam muito o aluno. A falta de coesão curricular e de objetivo (que eu quero explorar um pouco mais nas dicas) podem jogar meses de estudo fora e frustrar completamente alguém que está a fim de estudar uma coisa nova. Mas ao mesmo tempo, o engessamento do ensino institucionalizado também pode matar todo o seu tesão por estudar alguma coisa.

quem acredita em citações da internet?

Ser autodidata é difícil porque não existe diploma (apesar de existirem certificados), não existe uma garantia de que você está estudando aquilo que vai ser útil para você, e também não existe a mentalidade do mínimo esforço pelo certificado, o que você aprendeu você aprendeu.

Minha intenção não é defender um tipo de aprendizado no lugar do outro. Acho que o ensino presencial e institucionalizado e o auto-ensino feito à distância podem e devem complementar um ao outro. Eu acredito tanto nisso que eu levo a minha formação nas duas frentes, ao mesmo tempo. Minha formação em linguística foi bastante formal, na faculdade de letras, mas meus estudos em estatística, lógica e programação foram tocados de modo bastante (mas não totalmente) autônomo.

A importância do autodidatismo vai crescer muito nos próximos anos. Acredito que seja fundamental começar a se preparar pra isso: escolher um tópico legal e ir atrás de cursos.

Dito isso, vou listar algumas dicas que eu gostaria de ter lido quando eu fui começar a estudar coisas por conta.

  • Tenha um foco: se é um concurso, uma prova, um projeto ou um trampo, foque os estudos. A variedade de material é tanta que se você adentrar sem algum foco, é bem capaz de ficar patinando. Descobrir coisas novas, mas ser ir a fundo em nenhuma delas, pode ser interessante, mas a chance de você se frustrar e não conseguir levar nada adiante é muito grande.
  • Tenha tempo e ritmo: lembra de todas aquelas dicas que te davam na escola sobre como estudar pro vestibular? Elas se aplicam aqui – ao quadrado! Não adianta tocar os self-studies de qualquer jeito, Concentração é fundamental. Reserve umas horas só para estudar. Se os certificados de cursos online ainda não valem muita coisa no mundo profissional (mas isso deve mudar!) o que tem que ficar claro é isso: o importante é dominar o conteúdo. Para isso não dá pra correr: Não dá pra fazer um curso em uma maratona de um dia de estudo, tem que ter um bom ritmo, aprendendo e treinando um pouco ao longo de semanas.
  • Tenha curiosidade: Acho que a parte mais legal de conduzir os self-studies é que se um assunto te interessa, você pausa a aula, vai atrás da bibliografia, compra/baixa 3 livros sobre o assunto, abre 6 abas com definições, artigos e matérias. O poder disso é impressionante, o controle sobre a sua própria formação finalmente está com você.
  • Tenha um cronograma: Os cursos bem estruturados já oferecem um cronograma sugerido, mas sempre é bom você ter o seu, encaixado na sua própria rotina, se impondo o tempo para terminar um curso e partir pro próximo.

Nos próximos posts, vou exemplificar melhor como estudo cada um dos temas, com links e comentários para ajudar em específico quem quer estudar linguística computacional e programação.

Tradução – 5 perguntas para Andrew Ng

Como parte da minha iniciativa de fazer a divulgação de discussões e conceitos da linguística computacional e das áreas relacionadas, eu vou colocar aqui no blog a minha tradução livre de alguns conteúdos originalmente em inglês para aumentar o volume de textos, entrevistas, discussões e polêmicas intelectuais em português.

É fundamental para que a área cresça que tenhamos cada vez mais materiais disponíveis para todos!

Para começar esse lado do blog, escolhi uma coisa simples, mas muito interessante: o cientista britânico Andrew Ng fez uma sessão de Perguntas e Respostas pra rede social Quora (baita rede social, por um acaso!), em que fala um pouco sobre Inteligência Artificial, aprendizado de máquina e os impactos dessas tecnologias na vida de todo mundo.

Traduzi aqui apenas algumas das respostas dele, aquelas que têm mais a ver com o blog.

andrew_ng

Andrew Ng é um ex-professor de Stanford [Correção: ele ainda dá aula em Stanford, mesmo tendo as outras funções citadas aqui!], agora pesquisador na empresa Baidu , especialista em aprendizado de máquina. Mesmo que você nunca tenha ouvido falar dele (e estranhado a falta de vogais nesse sobrenome Sino-Tibetano), com certeza você já topou com o Coursera, empresa que o Ng fundou junto com Daphne Koller para difundir ensino de qualidade de graça pela internet. Ele mesmo oferece um curso na plataforma, sobre Aprendizado de Máquina. É muito bacana!

O conteúdo original completo está nesse link aqui: Andrew Ng Session.

Mãos à obra!
Como o trabalho e os empregos vão mudar nos próximos 10-20 anos?

Se você é um caminhoneiro de 50 anos que de repente perde o seu emprego por causa do surgimento da condução autônoma, o que você pode fazer?

A nossa sociedade é ótima para dar grandes oportunidades para pessoas muito bem treinadas. O problema surge quando algo como 30 anos de experiência de trabalho de repente perde o valor. Nesse caso, nós temos a obrigação moral de ajudar essas pessoas a adquirir novas habilidades e ir atrás de novas oportunidades. Felizmente, como o crescimento dos MOOCs (Cursos Massivos, Online e Abertos)  e outras formas de educação massiva (como o Coursera, Khan AcademyLynda, etc.), nós podemos fazer isso com muito pouco curso. Eu não estou preocupado com a falta de oportunidades para trabalhos vitais nos próximos 20 anos — ainda há muita coisa que os humanos podem fazer que nenhuma máquina de hoje ou do futuro próximo não conseguem. O que me preocupa é necessidade de treinar novamente as pessoas.

Eu também apoio a iniciativa de renda básica, que daria às pessoas uma rede e segurança e um chão a partir do qual elas poderiam adquirir as novas habilidades. Nossa sociedade atual a nossa realidade política indicam que a gente não está pronto para aceitar pagar as pessoas para que elas não ‘façam nada’. Eu acho que nós temos que pagá-las para que elas estudem. Com isso, ninguém fica parado, e nós estamos incentivando os desempregados a fazer alguma coisa que os ajude a voltar para a força de trabalho produtiva.

Eu adorei o livro  de Erik Brynjolfsson e Andrew McAfee, chamado “The Second Machine Age” (W. W. Norton & Company, 2014), que trata desse assunto.

A Inteligência Artificial é uma ameaça para a humanidade?

Se preocupar com uma superinteligência artificial maléfica hoje em dia é como se preocupar com a superpopulação de marte. A gente ainda nem chegou no planeta!

O campo da IA fez progressos tremendos, e eu sou bastante otimista sobre construir uma sociedade mais justa que seja apoiada de cima a baixo pela inteligência de máquinas. Mas a IA de hoje é muito limitada.  Quase todo o valor econômico e social do Deep Learning ainda é baseado em aprendizado supervisionado, que é limitado pela quantidade de dados formatados do jeito certo (ou seja, etiquetados). Ainda que a IA já esteja afetando positivamente a vida de milhões de pessoas, assim como ela está bem direcionada para ajudar mais milhões de pessoas, eu não vejo nenhum caminho realista que leve para uma IA ameaçando a humanidade.

Olhando pra frente, existem diversos outros tipos de IA além do aprendizado supervisionado que eu acho promissores, como o aprendizado não-supervisionado (em que nós temos muito mais dados disponíveis, já que eles não precisam estar etiquetados).

Há bastante empolgação acerca dessas outras formas de aprendizado no meu grupo e em outros. Todos nós estamos a espera de um avanço tecnológico, mas nenhum de nós pode prever quando ele ocorrerá.

Penso que o medo de uma ‘IA assassina malvada’ já está tendo um impacto na forma como os legisladores e líderes alocam recursos, e tudo isso por causa de um fantasma. Existem outros problemas que a IA vai causar, sendo o mais gritante a realocação de empregos. Ainda que a IA irá nos ajudar a construir uma sociedade melhor na próxima década, nós que somos os criadores da inteligência artificial temos que nos responsabilizar para resolver os problemas que nós vamos criar nesse meio tempo. Eu espero que os MOOCs (Coursera) sejam parte da solução, mas nós vamos precisar de mais do que apenas educação.

Como começar uma carreira em Aprendizado de Máquina?

O curso de Stanford de aprendizado de máquina no coursera foi pensado para ajudar o público geral a começar a mexer com aprendizado de máquina. Se você tem conhecimentos em programação (em qualquer linguagem), eu recomendo começar por lá.

Diversas pessoas conseguiram empregos na área de aprendizado de máquina só completando esse MOOC.

Existem outros cursos online similares que podem ajudar: como por exemplo a especialização em ciência de dados do John Hopkins. Participar do Kaggle e de outras competições de aprendizado de máquina também ajudam as pessoas a ganhar mais experiência. O Kaggle tem uma comunidade com discussões online onde você consegue aprender muitas coisas práticas. Participar de encontros e conferências próximas de onde você mora e conversar com pessoas que já estão mais avançadas também são ótimos jeitos de avançar.

Mas o mais importante é continuar a aprender. Não só por alguns meses, mas por anos.

Todo sábado, você vai poder escolher entre ficar em casa para ler algum paper e implementar algum algoritmo ou ver TV. Se você ficar o sábado inteiro trabalhando, provavelmente você não vai ter nenhum retorno imediato, e o seu chefe atual não vai nem saber ou te apoiar. Além disso, depois desse sábado de muito trabalho, você não vai saber muito mais sobre aprendizado de máquina. Mas aqui está o truque: Se você fizer isso não só em um fim de semana, mas ao invés disso por um ano inteiro, você vai ficar muito bom.

Existe muita demanda hoje em dia para pessoas que saibam AM, e uma vez que você trabalhe com isso, seu aprendizado só vai acelerar mais ainda.

O mundo precisa de mais pessoas mexendo com aprendizado de máquina para que os problemas da área sejam resolvidos. Nossa sociedade produz tantos dados e recursos de computação que AM é um tipo de superpoder que te permite criar coisas incríveis. Mas ainda não temos gente o suficiente para fazer tudo o que dá. Eu espero que os leitores queiram trabalhar duro e colaborar com a AM!

Qual a sua opinião sobre Deep Learning?

Deep learning é uma ferramenta incrível que está ajudando muitos grupos a criar aplicações inteligentes muito bacanas. A abordagem está nos ajudando a construir carros que dirigem sozinhos, reconhecimento de voz mais preciso, computadores que compreendem imagens e muito mais.

Apesar de todo esse progresso recente, eu ainda enxergo grandes oportunidades inexploradas adiante. Existem muitos projetos de medicina, financiamento ao consumidor, agricultura de precisão e outros em que eu vejo uma oportunidade clara para que o deep learning tenha um impacto grande, mas que ninguém ainda teve o tempo para se dedicar ainda. Por isso eu acho que o DL não vai estagnar no futuro próximo e sim que vai continuar a crescer bem rápido.

O impacto do deep learning também está sendo exagerado. As redes neurais são muito técnicas e difíceis de explicar, e muitos de nós costumávamos explicá-las fazendo uma analogia com o cérebro humano. Mas a gente não tem ideia de como o cérebro biológico funciona. Michael Jordan, professor de Berkeley, chama o deep learning de um ‘cartoon’ do cérebro biológico, ou seja, uma versão hipersimplificada de algo que a gente não entende – e eu concordo com essa visão. Apesar de estar na moda na mídia, nós não estamos nem perto de construir nada que tenha algo próximo do nível de inteligência de um ser humano. Devido ao fato de que a gente não sabe como o cérebro realmente funciona, as tentativas de simplesmente replicar o pouco que a gente sabe em um computador não resultaram em sistemas de IA úteis de verdade. Na verdade, os trabalhos mais bem sucedidos com deep learning atualmente foram feitos  não copiando a biologia, mas sim a partir de princípios de ciências da computação e engenharia com, na melhor das hipóteses, um toque de inspiração biológica.

No mundo real, se você ouvir alguém dizer: ‘O cérebro faz X. Meu sistema também faz X. Logo, nós estamos no caminho certo para construir um cérebro’, meu conselho é: Fuja!
——————————————

Muitas das ideias usadas no deep learning já estão por aí faz tempo. Por que essa abordagem só está decolando agora, então? As duas chaves para esse crescimento são (i) a quantidade de dados e (ii) a melhora na computação. Com a nossa sociedade gastando cada vez mais tempo em sites e dispositivos móveis, nos últimos 20 anos nós estamos acumulando cada vez mais dados. Só recentemente descobrimos como atingir essa grandeza de modo a construir algoritmos de aprendizado profundo que podem tirar vantagem dessa grande quantidade de dados.

Isso colocou a ciência em dois ciclos positivos, que estão acelerando o progresso do Deep Learning:

Primeiro, agora que temos grandes máquinas prontas para absorver grandes quantidades de dados, o valor do Big Data está mais consolidado. Isso cria um incentivo imenso para se adquirir mais dados, o que por sua vez, cria um incentivo para criar redes neurais maiores e mais rápidas.

Em segundo lugar, o fato de termos implementações velozes de Deep Learning também acaba acelerando inovação, e isso acelera o progresso da pesquisa em DL. Muitas pessoas subestimam o impacto dos investimentos de sistemas computacionais no Deep Learning.

Quando começamos com a pesquisa nessa área, não sabíamos quais algoritmos iam e não iam funcionar, e o nosso trabalho era fazer muitos testes para descobrir isso. Se temos uma estrutura computacional eficiente que deixa você rodar um teste em um dia ao invés de uma semana, o progresso dos seus estudos pode ser algo como 7x mais rápido!

Esse é o motivo pelo qual o meu grupo em Stanford começou a defender mover o processamento de Deep Learning para as GPUs (placas de vídeo) (essa decisão foi bem controversa na época, mas hoje em dia é a praxe); e eu agora defendo mudar esse processamento usando táticas de HPC (Computação de alta-performance/Supercomputação) para fazer esse processamento escalar ainda mais. O aprendizado de máquina deveria adotar completamente o HPC. Esses métodos vão otimizar as pesquisas e ajudar a acelerar ainda mais o progresso científico do campo como um todo.
———————-

Em resumo: Deep Learning já ajudou a IA a fazer progressos tremendos. Mas o melhor ainda está por vir!

O que despertou o seu interesse em inteligência artificial?

Eu quero construir uma sociedade melhor usando inteligência artificial.

Assim como a revolução industrial livrou a humanidade de muita labuta física (como seria a sua vida se você tivesse que costurar suas próprias roupas?), no futuro, a IA vai livrar a humanidade de muita labuta mental. Por exemplo, ter carros autônomos significa que nós não vamos precisar gastar o equivalente a 3 anos de nossas vidas dirigindo. Isso vai nos dar mais tempo para gastar com quem a gente gosta ou perseguindo objetivos mais interessantes!

Eu comecei a implementar redes neurais (que agora chamamos de Deep Learning) quando eu tinha 16 anos. Eu era um estagiário na Universidade Nacional de Singapura. O que nós fazíamos naquela época era completamente trivial se compararmos com o que fazemos hoje, mas na época eu só pensava em como era impressionante que algumas linhas de código faziam um computador aprender!

Trivia nerd: Já que os computadores que usávamos naquela época eram muito lentos para rodar o emacs, eu aprendi a usar o Vi, que até hoje é o meu editor favorito.

Por volta daquela época, eu fiz um estágio em que era o assistente em um escritório, e eu fazia muitas xerox. (Na verdade, eu era o assistente do assistente do lugar.) Foi então que eu me toquei que uma máquina de xerox mais esperta poderia nos ajudar a fazer muitas coisas, de modo que os humanos pudessem fazer as tarefas mais exigentes intelectualmente.

——————-

Na próxima década, a IA vai transformar a nossa sociedade. Ela vai mudar a relação das coisas que a gente faz e das coisas que os computadores fazem por nós. Talvez em algumas décadas, alguém venha aqui no Quora para perguntar: “Como as pessoas faziam quando elas tinham que dirigir os próprios carros?”.

Como começar a estudar Linguística Computacional?

Bom, como eu disse no último post, agora é a hora de fazer algumas indicações sobre como começar a estudar linguística computacional.

Os caminhos são muitos. O que eu posso e quero fazer aqui é compartilhar o que eu fiz, o que achei mais difícil e, principalmente, o que funcionou pra mim e recomendo.

Tive a sorte de fazer parte de um grupo de estudos que se mantém já há uns 4 anos na ativa. Dito isso, fica a primeira dica para quem quer começar a estudar linguística computacional: junte-se com outras pessoas que querem estudar.

Por ser uma área que une campos de estudo que não têm muito contato por aqui, seu aprendizado com certeza vai ser mais proveitoso se compartilhado com colegas que possuem seus próprios backgrounds, experiências e visões.

Nesse aspecto, é importante ressaltar: a Internet e as redes sociais podem ser ótimas ferramentas! Apesar disso, eu sou partidário de começar com o uso de um método de estudo mais antigo: ler.

Nessa primeira incursão, indico alguns livros (e um curso) que falam um pouco de tudo isso: linguística, estatística, computação e linguística computacional. No entanto, esses livros assumem conhecimentos prévios mais específicos ou menos.

1 – Language and Computers – Markus Dickinson, Chris Brew e Detmar Meurers (Wiley-Blackwell, 2012)

ehep002779
Esse livro é a introdução mais amigável ao assunto para quem não possui conhecimentos específicos em ciência da computação ou em linguística.
É uma boa forma de começar a pensar e conhecer as principais questões e aplicações do campo.Os autores apresentam os tópicos pensando em mostrar um panorama geral, com algumas sessões do livro apresentando o que realmente está acontecendo “por baixo dos panos” (ou seja, a parte mais técnica da discussão).
Esse era o livro que eu queria ter lido quando comecei a estudar linguística computacional, minha vida teria sido bem mais fácil!
2- Natural Language Processing with Python – Steven Bird, Ewan Klein e Edward Loper (O’Reilly Media, 2009)
51j6jcrbd-l-_sx258_bo1204203200_
Esse foi o primeiro livro sobre linguística computacional com o qual eu trabalhei. É muito bacana, pois logo no primeiro capítulo você já está com a mão na massa, fazendo a lista de palavras mais frequentes em Moby Dick (alguém chuta qual é a número 1?) e brincando com processamento de linguagem em Python. É um livro de receitas que traz boas explicações.
Mas, peraí! Eu já sabia Python quando peguei esse livro?
 Não! E acho que esse foi o meu maior problema. Começar já colocando a mão na massa é muito divertido, mas eu, por ser linguista de formação e não saber patavinas de programação antes de ir pra essa área, acabei achando muito difícil entender de verdade o que eu estava fazendo, o que o computador estava fazendo e quais eram os meus objetivos a longo prazo.
Se você já conhece Python com alguma segurança e já tem alguma noção de linguística, esse livro vai te levar longe, e você realmente vai se divertir com os exercícios. Mas se esse não for o caso, eu recomendo usar esse livro como um apoio (principalmente por causa dos exercícios) e ir atrás de outras fontes para aprender mais sobre linguística, programação e estatística.
3 – Speech and Language Processing – Daniel Jurafsky e James H. Martin (Prentice Hall, 2008)
41m9fu8xtvl-_sx258_bo1204203200_
Não sou religioso, mas aqui está a sua bíblia.
Esse livro descreve para cientistas da computação toda a área dalinguística computacional.
Primeiro apresenta como esse campo de estudo lida com todas as áreas clássicas da linguística formal (fonética, fonologia, morfologia, sintaxe e semântica), apresentando também os tipos de modelos matemáticos e estatísticos mais usados.
Depois, o livro foca em apresentar como funcionam os princípios por trás dos mecanismos mais bem-sucedidos de todas as áreas da linguística computacional: tradução automática, extração automática de informação, sumarização e outras.
É a principal referência na área. Só não é para iniciantes completos (se você nunca programou na vida, por ex.), então pode acabar gerando dor de cabeça e dar a sensação de que a linguística computacional é inacessível.
Se você já está calejado com a matemática e a programação (na verdade esse livro é menos sobre implementações do que sobre explicar o funcionamento dos algoritmos), esse daqui é o livro certo para se agarrar.
Além disso, o curso de Stanford de Processamento de linguagem natural do Coursera é bastante apoiado nas noções apresentadas nesse livro. É material muito bom mesmo!
4 – Foundations of Statistical Natural Language Processing – Christopher Manning e Hinrich Schütze (MIT Press, 1999)
fsnlp-bigger
O outro livro fundamental da área. Junto com o item 3, compõe o grande repositório de teoria da linguística computacional.
Mais ainda do que o item 3, esse livro não é recomendado para um público leitor leigo:  Apesar de ser um material para o qual eu volto constantemente se preciso entender alguma fórmula, procurar algum conceito ou resolver algum problema, é um livro bastante árido.
É impossível não colocar ele numa lista de livros sobre processamento de linguagem natural, porque ele tem muito conteúdo de qualidade para a área. Mas não é um livro que eu recomendaria para alguém que está entrando em contato com linguística computacional. Se você não é formado em ciências da computação, com uma boa base de estatística, cálculo e teoria da informação, vai ser uma leitura muito complicada.
————————————————————————
Como vocês devem ter notado, infelizmente esses materiais só estão disponíveis em inglês. Por falar nisso, que tal ver por aqui algumas traduções do que vem sendo publicado por aí? Vamos aumentar a quantidade de material dessa área disponível de graça e em português!
Nos próximos posts, eu também vou tentar reunir alguns materiais bons para o estudo de Programação (além de pregar o uso de Python para isso!), de estatística e de linguística. Infelizmente não é fácil encontrar materiais sobre todas essas áreas reunidos num lugar só.
Até lá!
PS: A palavra mais comum em Moby Dick é… ‘the’. Mais sobre isso num futuro próximo!