O que é deep learning?

Rookie

Moda é algo difícil de explicar. Em ciência e tecnologia, todo ano temos assuntos que são mais comentados, esperados, publicados, as modinhas científicas do momento. Em 2000 tínhamos a palavra cyber, em 2005 era a web 2.0, em 2010 só se falava em big data. De todas essas modas, nunca vi nada parecido com a atual. Ela transcende a moda, vejo-a em artigos de física, matemática, informática, na mídia, em palestras, até na apresentação do próximo telefone que vou comprar. Como ela faz parte de meu trabalho, chegou o momento de explicar o que é deep learning. Vou tentar fazer isso com a menor quantidade de matemática que consigo, deixo para outro post a explicação com matemática pura, sem gelo e sem limão. Primeiro, explico o que é essa história de learning. Depois, explico o que o deep quer dizer.

Essa história de learning

Aprender é ver alguém fazendo alguns exemplos e conseguir não apenas reproduzir o que viu, mas aplicar o que viu em casos que ainda não viu. Essa capacidade de lidar com casos não vistos durante o treinamento é a marca do aprendizado genuíno, chamamos isso de generalização. Em poucas palavras: entendimento é previsão que pode ser generalizada. Um aluno que só é capaz de resolver na prova as questões que ele viu na lista de exercícios não aprendeu nada. Ele memoriza, mas não entende.

Uma prova pode ser entendida, matematicamente, como uma função que leva perguntas em respostas. Todo aprendizado estatístico, seja deep learning, machine learning ou reinforcement learning, consiste apenas nisso: associar uma resposta a uma pergunta, achar a melhor função que leva nossas questões às boas soluções tanto nas situações em que nosso modelo foi treinado (a lista de exercícios), mas para outras situações em que ele não foi treinado (a prova final).

Então toda essa história de machine learning e deep learning é a arte de achar a melhor função para explicar um conjunto de dados. Em espírito, não são muito diferentes de, dados alguns pontos, encontrar a melhor reta que passa por eles. Toda a literatura científica desse meio, se você quiser ofender quem trabalha na área, pode ser resumida em técnicas mais ou menos sofisticadas que traçar retas complicadas por uma quantidade bem grande de pontos.

Vamos direto para o exemplo, então. Precisamos de pontos para traçar uma função, e eu proponho esses:

O problema é bem simples: precisamos da melhor função que poderia servir como o “modelo teórico” que gerou esses dados. Nossa mentalidade é a de que existe um mecanismo subjacente simples o suficiente para ser expresso com uma função, a que buscamos, e a diferença entre os pontos de nossa experiência e nossa função vem apenas de pequenas flutuações naturais que não conseguimos, ou não pretendemos, explicar ou incluir no modelo. Como se esses pontos fossem nossas medidas de quanto tempo um peso leva para chegar ao chão em função da altura que deixamos ele cair. Existe uma lei por trás disso, a da gravidade, mas há pequenas flutuações possíveis no resultado quando faço a experiência: minha velocidade de reação no cronômetro, resistência do ar ou o erro mecânico do relógio.

Sem um modelo, fica bem difícil resolver esse problema. Tenho muitas opções para explicar esses pontos, eis algumas:

Todo caminho é bom para quem não sabe para onde ir. Não vou entrar em detalhes de como escolher uma dessas opções se você não conhece muita coisa sobre o modelo, vou apenas pegar o caso mais simples e supor que o modelo certo é uma reta. Para descobrir qual a melhor das retas possíveis, preciso especificar dois parâmetros: inclinação e altura. Existem maneiras de encontrar exatamente, com apenas uma equação, quais parâmetros criam a reta que mais bem explica os dados ((Para quem fez exatas, o método dos mínimos quadrados está aí para isso)),  mas não pretendo usar uma dessas soluções exatas. Elas só funcionam quando o problema é fácil, como traçar uma reta, qualquer método ligeiramente mais sofisticado precisa de ajuda que nenhuma resolução exata consegue fornecer. Vamos usar uma abordagem iterativa, mais parecida com o que o deep learning usa, e muito mais próxima do conceito de aprendizado.

Nossa reta terá dois parâmetros: $\alpha$ e $\beta$. Nosso modelo será descrito pela equação $y = \alpha x + \beta$, preciso apenas encontrar os parâmetros que fazem dessa curva a melhor possível. Pense nesses parâmetros como um botão daqueles de aparelhos de som profissionais, que você pode aumentar e diminuir gradualmente. Eu começo com os valores dos parâmetros aleatórios. O resumo da estratégia é: pego um ponto, vejo se acertei. Se errei, o que é provável, vejo para que lado tenho que girar o botão de cada parâmetro para melhorar o resultado. Giro e repito o processo para o próximo ponto.

A ideia é bem simples: tento, erro, vejo para onde devia andar para errar menos, ando, repito o processo. O quanto eu mexo do botão a cada iteração, o tamanho do passo que dou, varia e depende de meu problema. Nesse contexto, chamamos de taxa de aprendizado, ou learning rate, porque tudo é importado do inglês nesse meio; e o nome da técnica é descida de gradiente (chamamos de gradiente a direção que temos que mexer os parâmetros para diminuirmos o erro do modelo). Vamos aplicar essa técnica em nosso problema:

A ideia é mais simples do que parece. Começamos com um ponto aleatório, e por acaso pegamos o segundo ponto. Traçamos uma reta qualquer. Depois, pegamos outro ponto ao acaso, que foi o sétimo, e corrigimos a reta para também passar nele. Em seguida, pegamos outro ponto e fazemos a reta andar mais na direção dele. Essa direção é guiada pelo sentido do erro calculado usando a reta como modelo. Se o erro é positivo, enviamos a reta mais para baixo. Se é negativo, mandamos a reta mais para cima. Depois de usar vários pontos, a reta muda pouco e temos um modelo que tenta, na medida do possível, satisfazer todo mundo.

Esse processo de apresentar exemplos ao modelo e ir corrigindo pouco a pouco é o que chamamos de aprendizado estatístico, é a base da palavra learning nessa história de deep learning. A reta não é a única maneira de traçar um modelo, há várias, o deep learning fornece uma delas que é particularmente poderosa para alguns problemas específicos. Se ao invés de pontos simples nós tivéssemos que encontrar um modelo que leva um conjunto de pixels, uma imagem, a um valor, que representa o conteúdo da imagem, uma reta teria bastante dificuldade em fazê-lo. Nisso entra nosso convidado de hoje, a aprendizagem profunda.

Essa história de deep learning

Nosso problema agora é esse: tenho 15 pixels, organizados em uma rede 5 x 3. Eles apenas possuem valores 0 e 1, preto e branco. Com eles, posso desenhar formas bem primitivas. Estou bem interessado em números, como aqueles do seu relógio digital velho. Por exemplo:

 

Meu objetivo é: dados esses pixels, qual número parece estar escrito neles? Não parece uma tarefa difícil, até você pensar no que essas imagens significam para o computador. Cada uma delas é uma de 32768 configurações possíveis de tabelas com quinze coordenadas cada, sendo cada coordenada um zero ou um. Para o computador, essas imagens são:

Se eu não ligar para invariâncias espaciais ((Eu deveria ligar! É possível, e recomendado, usar técnicas de aprendizagem profunda que levam em conta invariâncias translacional e rotacional. Estou ignorando aqui para simplificar as coisas.)), essas imagens são vistas pelo computador como:

[1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0]
[1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]
[1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0]
[1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0]
[1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0]

Aqui fica claro que é bem complicado interpretar esses números como imagens, e é isso que queremos fazer nosso modelo aprender. Quero uma função que leve cada conjunto de quinze coordenadas binárias em um valor entre zero e nove de forma razoavelmente precisa. Não há reta que resolva. A reta fica perdida sem entender as complicadas correlações entre pontos distantes ou próximos. Esse é um ponto que pretendo desenvolver em outro post, mas menciono aqui: métodos clássicos estatísticos focam em descobrir correlações de caráter mais simples entre os dados. A grande vantagem do deep learning é a possibilidade de descobrir correlações e padrões bem mais complicados.

E o que, afinal, é isso? Deep learning envolve o uso de um modelo chamado rede neural. Para nosso modelo anterior, o dos pontos, chutamos uma relação linear com dois parâmetros $y = \alpha x + \beta$ e pareceu funcionar bem. Primeiro, vamos imaginar como seria um jeito de tentar resolver o problema dos dígitos usando uma reta. Temos quinze valores de entrada, então uma “reta” com quinze variáveis (ela na verdade vira um plano) seria:

\[ y = \alpha_1 x_1 +\alpha_2 x_2 +\ldots +\alpha_{15} x_{15} +\beta \]

Por mais que eu mexa nos $\alpha$’s e no $\beta$, não há jeito ou maneira de fazer $y$ acertar os valores, mesmo se eu arredondar seu valor para virar um número inteiro. Os padrões do meu problema não são lineares, não existe uma correspondência clara de “quando um pixel aumenta, o valor do dígito aumenta”. Se queremos capturar uma relação mais complicada entre entrada e saída, precisamos de mais poder de fogo. Uma rede neural é exatamente isso: uma função mais complicada que a reta e com mais parâmetros para acertar, ainda que a ideia geral seja a mesma.

A rede neural consiste em pegar os quinze elementos de entrada e aplicar uma sequência de operações lineares e não-lineares. Uma operação linear é uma que envolve só soma e multiplicação, como aquela que eu usei acima para definir a “reta”. A ideia é pegar os elementos de entrada, fazer aquela operação do $\alpha_1 x_1+\ldots +\alpha_{15}x_{15}+ \beta = z_1$ e depois fazer o resultado dessa operação, que eu chamei de $z_1$ passar por alguma função não-linear que dê uma torcida nos resultados. A função não-linear escolhida para compor o valor dos $z$’s varia. Vamos pegar uma escolha clássica, a função sigmoide, que tem essa cara:

Não vou fazer isso uma vez apenas, vou fazer isso dez vezes diferentes. Ou seja, vou criar uma coleção de dez $z$’s, cada um calculado a partir das mesmas entradas, mas com coeficientes $\alpha$ diferentes. Uma imagem vale mais que esse parágrafo, a ideia é fazer uma conta assim:

Onde cada linha representa um $\alpha_{i,j}$ que multiplica a entrada $x_i$ e leva para a composição do $z_j$. Depois eu vejo qual dos meus $z$’s tem o maior valor. Se é o $z_3$, por exemplo, então digo que esses pixels correspondem ao número 3. É como se essas operações tentassem, através de combinações complicadas, definir qual $z$ é o vencedor dados esses pixels. Escolhendo o vencedor, tenho a previsão do modelo.

Parece complicado, mas realmente não é. Estou apenas multiplicando as entradas por números (os $\alpha$’s), somando, passando por uma função um pouco mais torta (a sigmoide), e colecionando o valor que dá como resposta. Terei assim 150 valores diferentes de $\alpha$’s e 15 $\beta$’s para acertar, tunar, mexer como um ladrão experimenta com a maçaneta do cofre para encontrar a combinação certa. Não vou acertar esses coeficientes na mão, claro, não sou capaz disso. Uso o mesmo método de antes: pego um ponto, vejo se acertei, vejo em qual direção eu teria que mexer os coeficientes para minha previsão chegar mais perto da resposta certa, mexo, repito o processo.

Minha função final agora é pegar o maior valor de dez possibilidades, sendo cada uma delas uma combinação das entradas com 16 parâmetros diferentes (15 $\alpha$’s e 1 $\beta$). Ela é bem mais complicada, mas me permite capturar relações mais complicadas. Com o modelo linear, a “reta”, eu tinha apenas 16 parâmetros para acertar, agora tenho 165. Isso me dá bastante espaço para aprender as sutilezas dos pixels, mas ainda não é o suficiente. Preciso de mais poder de cálculo, mais parâmetros. Preciso ir mais fundo nessa rede neural para tentar aprender alguma coisa.

Essa transformação dos valores de entrada em operações lineares e não-lineares para formar os $z$’s é chamada de camada. Para criar um modelo de aprendizagem profunda, a ideia é usar os $z$’s como entradas de uma próxima camada. Essa concatenação de camadas é o que dá o nome de deep learning. A imagem talvez deixe as coisas mais claras:

E por fim, você vê qual dos $w$ é o maior e elege ele como a previsão do modelo. Se o dígito deveria representar um 4 e o maior valor é o $w_4$, você acertou. Se errou, calcula para onde os parâmetros, que agora são 275, devem ser mexidos para você obter um $w_4$ mais elevado.

Isso funciona?

Por incrível que pareça, sim, mas ninguém sabe direito porquê. Os elementos de resposta que temos são bem complicados e deixo para um post geek ou hardcore, o de hoje termina com você brincando com a rede neural que eu descrevi acima. Gerando um monte daqueles dígitos, treinamos os 275 parâmetros e temos uma coleção de $\alpha$’s e $\beta$’s que talvez sejam capazes de entender quando uma imagem é um dígito. Tente você mesmo, na planilha abaixo, produzida por meu grande amigo Gabriel Rovina:

REDE NEURAL TREINADA PARA VOCÊ SE DIVERTIR

Salve uma cópia local (Arquivo -> Salvar uma cópia) dessa planilha para poder editá-la. Em seguida, brinque com o número na entrada, acendendo e apagando os pixels para formar o dígito que deseja. Não é um sistema perfeito, você pode não concordar com alguns resultados dele, mas é bem certinho na sua capacidade de deduzir o que é cada dígito.

Isso é deep learning, nada mais, nada menos. No final, temos uma função complicada que é uma combinação de somas, produtos e passagem por sigmoides, com muitos parâmetros para acertar usando aquela estratégia de tentar, errar, corrigir e tentar de novo. É um sistema bem eficaz para análise de dados cujos padrões são complicados de extrair, especialmente imagens, sons e linguagem. Planejo um post futuro, mais geek ou hardcore, para aprofundar nos motivos de funcionamento de deep learning e em quais problemas ele não funciona de jeito nenhum. Por enquanto, divirta-se com essa rede que eu preparei na planilha, e não me xingue se você formar algum número que ela não reconhece. Com menos de 300 parâmetros e sem invariância espacial, foi difícil fazer coisa melhor.

O oposto da ciência

Rookie

Essa época de eleição me fez questionar diversas crenças e opiniões que tive desde muito. As opções não parecem boas, nada é claro, tudo é polarizado, tenho medo de perguntar a bons amigos de longa data em quem vão votar. Nos poucos debates políticos que tive, seja com amigos, colegas ou família, tive sempre bastante dificuldade em manter o teor da conversa no científico, no exato, na estatística e no número. É verdade que minha preferência por esses terrenos é clara, quero jogar em casa, mas sempre cri que eram o território mais justo para a avaliação de propostas e ideias. É só muito, muito difícil manter a conversa nesses termos. Eu quero a ciência, eu quero manter a conversa em termos científicos, mas sou vez após vez jogado no oposto da ciência e já não sei mais o que fazer.

Qual é o oposto da ciência? Se um cientista é alguém que luta pela ciência, contra o que ele luta? Certamente não é a ignorância, que é mãe e alimento da ciência. Não é a dúvida, que é a única arma eficaz que temos. Não é a opinião, que é base também do pensamento científico antes de ser provado. Se a ciência é o mecanismo de autoverificação constante de teorias, de desconstrução permanente da própria maneira de entender as coisas, se é a sistematização da coleta de dados e comparação com a realidade, então o oposto da ciência é o oposto dessas coisas. Não a ignorância, não a dúvida, não a opinião, o oposto da ciência é a conspiração e o amor à conspiração.

Esse é um post um pouco opinião, não sou filósofo da ciência. No entanto, queria dar algumas dicas para os que querem tentar debates políticos sem enforcar o amiguinho. Sendo físico, volta e meia estou em uma conversa com alguém que quer me convencer de que a última novidade em matéria de cura quântica e cristais é a penicilina do século XXI. Os instrumentos que desenvolvi para cuidar de minha sanidade mental nessas conversas são bem úteis para a situação política atual brasileira, em que muito é dito e pouco é transmitido. São também as maneiras que uso para me policiar e me impedir de acreditar em conspirações, de perceber quando estou com pensamento dogmático insalubre e preciso reavaliar essas opiniões. Este post é, então, meu guia de como eu lido com pseudociências, conspirações e outros disparates.

Tentei várias técnicas, tentei interrogar, aprofundar no assunto, tentei citar artigos, mostrar publicações que discordavam da pessoa, perguntar fontes, nada disso foi muito útil. Isso acontece porque toda conspiração tem uma propriedade fundamental para sua sobrevivência: ela insere em sua narrativa o próprio antídoto contra os fatos. Astrologia não prevê fenômenos específicos, prevê “tendências”. Nenhum homeopata receita pílula anticoncepcional diluída para a própria filha, mas receita contra gripe e angústia. É claro que você nunca viu extraterrestres, o governo os está escondendo e qualquer fato contrário que você possa levantar é rebatido com a eficácia do governo em esconder e ocultar isso da população ((Essa é a que mais me dói. Quem acredita nisso? Como eles acham que o governo é capaz de esconder um segredo desse tamanho com essa precisão durante tanto tempo? Essas pessoas já viram qualquer outra coisa feita pelo governo?)) . Essa é, na minha opinião, a característica principal de uma pseudociência ou conspiração: a habilidade profundamente conveniente de conter em sua fundação a resposta para todas as verificações possíveis. Aprenda a reconhecer isso para se policiar e se impedir de cair em uma via de raciocínio que começa com cristais e termina no triângulo mineiro alegando que você é a quarta vinda de Jesus Cristo.

Como aplicar isso em um debate? Você não consegue racionalmente colocar a pessoa em xeque-mate, ela sempre encontra uma justificativa nova para escapar pela tangente e achar que está ganhando. Ao invés de tentar cercar a pessoa em uma armadilha lógica, o que nunca funciona, lance uma pergunta inesperada. Pergunte: O que seria capaz de provar que você está errada? Diga para a pessoa propor uma maneira de verificação, qualquer que seja, por mais absurda que seja, por mais fantasiosa, improvável, irrealista que seja, cujo resultado, ainda que impossível de acontecer (porque a pessoa acredita que está certa), provaria que a pessoa está errada. Ao invés de fazer a pessoa invocar vez após vez o privilégio conspiratório de estar sempre certa, leve a pessoa a perceber o privilégio. Na minha experiência, essa pergunta faz a pessoa refletir.

Porque toda ciência tem mil formas de provar-se errada. Relatividade geral teria que ser revista se o periélio de Mercúrio fosse alguns graus diferente do que é. Mecânica quântica teria que ser reavaliada se experiências com feixes de átomos dessem um resultado diferente do previsto. Até proposições pessoais de que estou bem certo possuem um mecanismo assim: eu acredito que meu pai é meu pai e minha mãe é minha mãe, mas existe um teste possível, um teste de paternidade, que poderia provar que estou errado. Astrologia, homeopatia, ufologia, criacionismo, a Ursal, aquela teoria que você recebeu no WhatsApp de que o governo está envenenando crianças para eleger algum candidato, nenhuma delas pode ser provada errada. É importante dizer, meu critério aqui não é provar que estão certas. Não estou no negócio de provar nada certo, nada pode ser provado certo 100%, nem as melhores leis da física se garantem nesse nível. Mas uma afirmação que não pode ser provada falsa claramente está construindo um dique de segurança absurdo e indevido. Nada pode estar certo se não tem nenhuma chance de estar errado.

Os mais informados na parte de filosofia da ciência reconhecem o princípio, é a navalha de Popper, o grande filósofo da ciência do começo do século XX. Não é um princípio ruim e pode servir de base para você sustentar ideias e opiniões pela vida, dizer apenas coisas de que tem alguma certeza, e que têm alguma chance de estarem falsas.

Caso logo mais em novembro, e nessa época pré-casório ouvi diversos conselhos. Um deles me chamou bastante a atenção: não case com alguém que, caso um divórcio seja necessário, torne sua vida um inferno. Em outras palavras, não case com alguém de quem você não gostaria de se divorciar. É contra-intuitivo, é curioso, mas é coerente com o que considero o princípio fundamental da integridade intelectual: a verdade só existe se damos a devida chance a ela não existir, porque a verdade não tem medo de testes.

Nessa reta final para a eleição, respire fundo, debata com calma, lembre-se de questionar de forma sincera aquilo em que você acredita e tenha sempre uma boa forma de justificar suas opiniões e de se provar errado. Todo o resto é o oposto daquilo que chamamos de ciência.

A justiça do aleatório

Rookie

Estatística com poucos dados sempre dá calafrios. Uma das grandes ameaças a qualquer conclusão de um estudo é, tendo poucos dados, você pode confundir um efeito real com pura sorte. Não estou nem falando de fontes de viés mais graves, como uma pesquisa online que privilegia quem tem acesso a internet ou uma pesquisa boca de urna que privilegia pessoas dispostas a parar para conversar. Estou falando de pura sorte, ou, no caso do experimento estatístico, puro azar de ter estudado casos que justamente apresentam uma conclusão diferente daquela que o estudo deveria ter dado. Hoje vamos falar dessa sorte, e de um de meus métodos favoritos para tentar separar o que é efeito e o que é acaso fortuito.

Quando você tem muitos dados e seu método de escolha não tem nenhum viés, é mais difícil sofrer com os efeitos do azar. A exata quantidade de pessoas que você precisa para evitar isso tem a ver com o teorema do limite central, um conceito que vale um post próprio. A ideia é que se você seleciona elementos o suficiente da população, você claro tem chance de pegar anomalias que poderiam mexer em seus resultados, mas se seu método de seleção é bom você deve pegar anomalias que puxam o resultado para o outro lado também. As bizarrices de uns compensa as bizarrices de outros e você termina com um resultado médio confiável. Mais ou menos como quando uma multidão sai de um estádio. Você nunca sabe para onde uma pessoa vai, mas a massa humana se move de maneira previsível e você pode criar mecanismos de escoamento adaptados a essa situação confiando nesse princípio fundamental da estatística. Mas muitos dados não é nosso caso hoje, vamos ver o que dá para fazer tendo apenas catorze.

Tenho catorze plantas de tomate e dois fertilizantes: marca A e marca B. Quero saber qual dos fertilizantes é melhor. Divido minha horta em catorze pedaços. Vou fertilizar a terra, plantar e regar, tendo plantado a mesma quantidade de pés de tomate em cada pedaço de terra. Porque não sou besta e sei que plantar com fertilizante A de um lado e B de outro pode criar uma tendência, afinal, a fertilidade inerente da terra pode estar associada com a região da horta (por receber mais sol, por exemplo), eu tiro na sorte qual fertilizante vai em cada pedaço. Tirar na sorte é fácil, basta pegar catorze cartas de baralho, sete vermelhas e sete pretas, embaralhar bem e tirar uma para cada pedaço de terra.

Com minha horta plantada, colho os tomates, peso e comparo o quanto obtive em cada pedaço de terra.

Não parece haver uma tendência de região. Digo, é possível, nunca se sabe se a tendência de região compensou a tendência do fertilizante, mas isso é um pouco especulativo. Temos nossos 14 resultados e queremos saber quem é melhor: A ou B. Fazemos a média do peso de tomates de cada um deles e o resultado é:

Fertilizante Média
A 24.9Kg
B 26.1Kg

O B parece ser o vencedor, e um estudo qualquer talvez até pudesse parar aí: B é melhor. Mas prestando atenção com calma, ele não é tão maior assim, apenas 1.2Kg de diferença na média, sendo que os valores médios são vinte vezes maiores que essa diferença! É possível que a vantagem de B seja apenas sorte, um acaso surgido de uma experiência com poucos dados? Quão provável seria sair esse resultado se A e B fossem perfeitamente equivalentes?

Essa última pergunta é bem difícil de responder, porque não conhecemos a distribuição de probabilidade de A e B, ainda que fosse a mesma. Com bastantes dados, poderíamos estimar a distribuição, calcular desvio padrão, ter toda uma pletora de ferramentas e instrumentos estatísticos para nos ajudar, temos apenas catorze pontos e vamos nos virar com isso. Minhas estratégia será usar a aleatoriedade da nossa escolha de lugares para plantar para gerar “novos dados”, apostando na justiça do aleatório para decidir se essa diferença é significativa ou não.

Qual a ideia? Nossa escolha de lugares para plantar foi A, B, A, A, B, A, B, B, B, A, B, B, A, A; confiando no coração das cartas. A diferença entre as médias de A e B foi de 1.2Kg, então eu pergunto: se a ordem dos fertilizantes fosse trocada, com os resultados ficando onde estão, qual seria essa diferença. Por exemplo, se os sete piores resultados fossem do A e os sete melhores fossem do B, a diferença seria de 2Kg. Existem outras permutações da ordem dos fertilizantes que dariam diferenças menores, variando entre 0Kg e 2Kg. Estudando todas as configurações possíveis de fertilizante, guardando os resultados onde estão, ganhamos uma boa noção do quanto é sorte ou do quanto é efeito de verdade.

Temos 3432 permutações não-repetidas possíveis desse conjunto. Uma delas é A, B, A, A, B, A, B, B, B, A, B, B, A, A, cuja diferença entre as médias é de 1.2Kg. Como são as outras? O histograma abaixo dá uma boa ideia, onde os resultados são da diferença entre as médias de B e A (por isso pode ser negativo).

Com apenas um resultado, quase invisível, no -2 e no 2, o resto todo distribuído simetricamente em torno de zero. A simetria é esperada, já que toda vez que existe uma permutação em que B ganha de A existe o oposto espelhado dessa combinação em que A ganha de B. E onde entra nosso caso, o caso real, nesse histograma?

Temos nosso resultado visualizado e com ele conseguimos ganhar alguma perspectiva. Basta contar quantas permutações de nosso conjunto produzem resultados maiores que a que obtivemos para estimarmos a probabilidade de termos dado sorte! Se nosso resultado estivesse muito perto do centro, muitas outras seriam mais discrepantes e a chance da diferença ter vindo do acaso fortuito passa a ser alta. Se nossa permutação fosse a que causa a maior diferença possível, teríamos quase certeza de que o tipo de fertilizante impacta profundamente a quantidade de tomates produzida por cada pé.

Em nosso caso, 133 das 3432 combinações possíveis são maiores que 1.2Kg, o que representa apenas 3.9% dos casos totais. Uma regra bem comum na estatística é estimar que se menos de 5% das permutações seriam melhores do que a realidade, então seu efeito provavelmente é real e não pode ser descartado facilmente. Não é uma regra fixa e perfeita, afinal, se o número de permutações fosse 6%, ou 7%, eu ainda poderia ficar desconfiado. Mas é uma maneira bonita, eu acho, de tirar leite de pedra, de fazer estatística com poucos dados sem perder o rigor da análise.

É um truque interessante que aprendi nas ruas, nem sempre temos todos os dados que queremos. É também útil para a vida, quando encontramos uma experiência na vida real e queremos estimar se um efeito é verdadeiro ou fruto do acaso. Se comparamos o horário de dois trens seis vezes e um deles está sempre mais atrasado que o outro, em todas as vezes, assumimos que o trem é atrasado porque a chance desse resultado acontecer com dois trens equivalentes é de $1/2^{6} \approx 1.6\%$. Usamos a medida do aleatório constantemente para dar chances a modelos que às vezes não merecem. É uma  maneira fundamental de medir dois efeitos, usando o acaso como justiça, como o grande mediador do nosso experimento.

Beleza

Rookie

Desde muito pequeno eu quis ser cientista.

Quando tinha entre meus oito e nove anos, aprendi finalmente a matemática da divisão. Minha mãe então me contou que a circunferência de um círculo dividida por seu diâmetro era sempre o mesmo número, algo entre 3.14 e 3.15, mas mais perto do primeiro que do segundo. Parte por meu instinto natural de querer provar minha mãe errada, parte pela incredulidade de uma propriedade tão mágica da natureza, parti fita métrica e calculadora em punho conferindo cada um dos círculos que encontrava em minha casa: botão da máquina de lavar, copos, pratos, latas; e vez após vez minha mãe tinha razão.

A simplicidade e exatidão dessa verdade despertou em mim uma sensação de euforia que tenho buscado desde então. Não consigo explicar o que é essa forma de felicidade, ela não se parece com nenhum sentimento feliz que conheço. Quando recebi a notícia de que passei na prova da Polytechnique, quando meu pai disse ter orgulho de mim, quando recebi o primeiro beijo de minha futura mulher, quando voltei ligeiramente alto para casa de bicicleta em uma noite quente de verão de Paris achando tudo lindo; fui muito feliz em todas essas vezes, mas não é esse tipo de felicidade que essa euforia atinge.

Ela veio quando ouvi pela primeira a prova de Euclides de que os números primos são infinitos. ((A prova é a seguinte: imagine que não são, imagine que existe um número primo P que é o maior de todos. Se esse número existe, podemos pensar em um número N que é o produto de todos os primos, de 2 a P: N = 2.3.5.7.11 … P. Ele é inconcebível de tão grande, mas, dado que P existe e não há primo maior que P, ele existe. Então vejamos N + 1. Como N é o produto de todos os primos, ele é divisível por todos os primos; ele é, por exemplo, par. Mas se N é par, N + 1 é ímpar. Se N é divisível por 3, então N + 1 não é divisível por 3. Se N é divisível por qualquer primo, então N + 1 não é divisível por este primo. Ora, como N é divisível por todos os primos, N + 1 não é divisível por nenhum primo e é, portanto, um número primo! Ele com certeza é muito maior que P, o que viola nossa hipótese de que P é o maior de todos, caímos em contradição e provamos ser impossível haver um primo maior que todos os primos, logo, os primos são infinitos.)) Essa demonstração é elegante, simples, completa e possui uma reviravolta deliciosa no caminho para a contradição. A sensação que me causou no momento em que o N + 1 é paulatinamente provado não ser divisível por ninguém, quando eu mentalmente completei quais seriam os próximos passos e pude apreciar o caminho todo da prova, é essa euforia, essa epifania, que vez após vez a ciência provocou em mim. Quando entendi que o conceito de osmose era um fenômeno estatístico, quando calculei o pião de Lagrange e vi em equações preto no branco que um pião precisa rodar para continuar estável, quando vi a prova de que raiz de dois é irracional, quando aprendi a termodinâmica nuclear das estrelas e entendi onde cada elemento que existe se formou; em cada vez eu fui atingido por essa felicidade difícil de descrever. Na falta de nome, chamo-a de beleza.

Chamo-a assim porque já a experimentei em outras circunstâncias: vendo obras de arte, filmes, bons livros, boas músicas. Essa euforia intelectual não é única da ciência e da matemática, tive-a lendo “Os Miseráveis”, lendo “O Livro do Desassossego”, vendo as pinturas negras de Goya, visitando sozinho a tumba de Mereruka em Saqqara. É essa busca pela beleza que me tornou cientista, eu sonhava em tê-la como ganha-pão e experimentá-la frequentemente.

Foi essa busca que motivou a criação desse blog. Senti-me obrigado a ser um tradutor da beleza que via na física e na matemática aos que não tinham tempo ou condição de atravessar muitas horas de estudo e aulas que, na vasta maioria, não eram belas. Porque muitas vezes tinha a impressão de que professores e cientistas queriam esconder o que viam de bonito em suas áreas de estudo, eu precisava caçar, minerar as joias que apresento no blog. Mergulhei na ciência e transformei minha faculdade, mestrado e doutorado em arqueologia submarina, usei esse blog para apresentar os tesouros que encontrei. Essa página é meu destilado do que acho bonito, a parte da beleza que consigo apresentar em dez parágrafos e imagens feitas no Inkscape.

Nos últimos anos de minha tese e em meu pós-doutorado, tive dificuldade em encontrar essa beleza. Vida acadêmica não é simples, o prospecto profissional não é bom, postulamos para cargos e vagas em todos os lugares do mundo e não sabemos em qual continente moraremos ano que vem, para terminarmos, se dermos sorte, em alguma cidade fora de nosso controle para uma posição permanente. O alojamento é um pequeno apartamento, a duração é curta, tudo nessa vida é temporário, tudo é uma busca pela próxima vaga para que a posição atual não seja uma forma de desemprego adiado. Essa instabilidade e essa falta de prospecto são barreiras clássicas do percurso acadêmico, e não vieram sem antes me ter sido avisadas por todos os que me precederam.

Em meu planejamento inicial de carreira, antevi essas dificuldades e era confiante de que minha motivação seria maior do que as barreiras. Não gosto de uma vida temporária por dois anos, que seria seguida por outra vida temporária de mais dois anos e quem sabe outra, até convencer alguma universidade de meu valor aos quase trinta e cinco anos de idade. Universidade esta que provavelmente não estaria em uma cidade grande, mas isolada em algum país cuja língua eu não necessariamente falo, forçando-me a sacrifícios e cálculos impossíveis para terminar, com sorte, no mesmo código postal que minha mulher. A busca pela beleza pesava e compensava esses reveses, mantendo-me até então na carreira e na academia. Contudo, a maior surpresa do final de minha tese e meu pós-doutorado, aquela que eu menos antevi, foi uma realização difícil de admitir: eu não gosto de fazer pesquisa.

Não gosto da solidão competitiva de torturar algum assunto medianamente interessante, mas que está na moda, para arrancar algum roçado da cinza e torcer para que um editor e três revisores aceitem as justificativas que concatenei na introdução do artigo. Não gosto de estudar a correção da correção do termo extra da equação, como se todo o resto que é bonito já estivesse pronto e feito. Não gosto da parte de tentar convencer pessoas de que aquilo que tem sido o centro do interesse de minha pesquisa nos últimos meses vale a pena. Não gosto de ser obrigado a ler e produzir artigos em temas que nem tanto me interessam, que não possuem beleza, mas que estão quentes no mercado. Há quem adore esse jogo, esse desafio, essa competição; eu detestava. Tinha a ilusão de que como cientista poderia pesquisar o que quisesse, seguir os raciocínios em busca de conclusões em meus assuntos favoritos; ao final vi esses assuntos taxados como “não publicáveis” e diversos colegas, dispostos a me ajudar, oferecendo-me projetos quadrados, sem sal, sem sabor e sem beleza. Sofrer os problemas do parágrafo anterior sem a redenção que esperava da carreira de pesquisador não fazia sentido, minha escolha estava clara.

Sou apaixonado por física, por matemática, por ciência; tanto que achei que queria fazer disso minha carreira. Nessa trajetória, percebi que o caminho é mais árduo do que imaginava e que as recompensas menores do que esperava. Não experimentei tantas vezes essa beleza que busco, quando cria que perto da fonte ela seria ainda mais abundante. De tanto apreciar ouro, achei que adoraria minerá-lo. Amo o metal, mas detestei trabalhar nas minas.

Este blog canalizou e inspirou diversas obsessões que tive ao longo dos anos, seja coletando dados de políticos, aniversários de jogadores de futebol, colorindo um gráfico para corresponder às casas do banco imobiliário ou criando modelos complicados para alugueis em cidades unidimensionais. Alguns leitores perceberam que ao longo dos anos meus posts foram menos física e mais estatística, isso não é acidente. Os resultados e o retorno que tive das experiências estatísticas desse blog me convenceram de que o elo comum de vários assuntos que me interessam é criar modelos matemáticos para problemas inspirados na sociedade, em algum aspecto curioso da realidade, encontrar padrões no caos que nos cerca e descrevê-los com a matemática mais bonita que conheço. Encontrei beleza mais vezes em posts desse blog do que em conclusões de minha tese. Por isso, desde 2016, reconverti minhas atenções e estudos para estatística e suas aplicações. Após uma série de entrevistas desde fevereiro, recebi semana passada uma oferta para a vaga de estatístico no Google Paris, analisando e avaliando dados populacionais para encontrar padrões e narrativas que possam ajudar os produtos Google em geral.

Aos que estão agora em mestrado ou doutorado, não tenho conselhos para o que devem seguir. Esse não é um post que avisa os perigos e problemas dessa escolha, vocês provavelmente já os conhecem. Minha decisão de sair foi única e pessoal, não espero nem desejo que se torne um farol para acadêmicos hesitantes.

Mas se não posso aconselhar no que devem seguir, urjo para que a mente de vocês não se restrinja à carreira acadêmica como única opção, tomando qualquer questionamento como anátema ao amor que vocês têm por ciência. Faça cursos fora de sua área de especialização, cultive contatos profissionais em diversas áreas, respeite outras carreiras abandonando aquele discurso entojado de quem olha por cima julgando assuntos mais aplicados como quem se vendeu ao sistema. Não é fracasso sair da academia, não é falhar como cientista. Ciência é o que faz um cientista, a descoberta de padrões e leis a partir de dados seguindo o método científico. Por sua formação e maneira de pensar, você sempre será um cientista, uma vaga e um título não mudarão isso.

O blog continua, mas mudará um pouco de assuntos, continuará seguindo meus interesses conforme eles evoluem, como tem feito nos últimos seis anos. Um pouco menos termodinâmica e um pouco mais machine learning e deep learning, não consigo evitar. Peço desculpas aos que não gostarem da mudança, mas garanto que, como autor, não mudei na busca pela beleza e no desejo de contá-la e apresentá-la até na fila do pão. Estou bem animado com meu novo prospecto profissional e espero ter bastante coisa divertida para contar nos próximos meses. Khalil Gibran disse uma vez, e concordo, que vivemos apenas para descobrir beleza, todo o resto é uma forma de espera. Não quero deixar ninguém esperando.

Sem muito esforço

Geek Rookie

Em meu post anterior, falei de retângulos inteiros e de um problema bonitinho relacionado. Nele, usei um truque sujo de livro de matemática para deixar a demonstração mais fluida e com aparência mas elegante, mas é como jogar a poeira para debaixo do tapete quando a visita vem em casa. Em um dos momentos mais importantes da demonstração, eu disse:

Tente desenhar um retângulo dentro de um quadrado 1×1 que cubra a mesma área de pretos e brancos. Sem muito esforço, você perceberá que só existem duas opções:

Não fui 100% honesto aqui. A afirmação é verdade, só existem aquelas duas opções, mas a parte do “sem muito esforço” é aquele velho truque do “é fácil ver”, “trivialmente”, “podemos mostrar que”. Eu não seria justo com vocês se não completasse essa parte, e faço isso nesse post. Isso é tanto por completude quanto por trauma, ainda lembro de passagens do Courant e Hilbert em que eu lia: “e nós podemos mostrar que“, mas no fundo entendia “e nós, e apenas nós, Courant e Hilbert, podemos mostrar que“.

O que queremos provar é a frase: o único jeito de desenhar um retângulo que contém um vértice em $(0,0)$ de forma a cobrir a mesma área preta e branca na seguinte imagem:

é se um dos lados do retângulo for um dos lados da imagem.

Para facilitar nossa vida, vamos mudar as dimensões do xadrez para que todos os quadrados pequenos tenham dimensões 1×1, o quadrado todo tem dimensões 2×2 agora. É fácil ver (e é realmente fácil ver dessa vez!) que se o retângulo começa em $(0,0)$ e está contido no xadrez, ele fica inteiro definido por um outro ponto que falta definir, o vértice oposto à origem (os outros dois vértices ficam obrigatoriamente nas arestas do xadrez).

Outro resultado realmente fácil de ver é que o único lugar em que esse retângulo tem chance de ter área preta igual à área branca é se o ponto que falta estiver nas bordas do xadrez (que são os casos que dissemos serem os únicos possíveis), ou no quadrante branco superior direito. Isso acontece por um motivo simples: o ponto que falta não pode estar no quadrante inferior branco, toda área seria branca. Ele também não pode estar em nenhum dos quadrados pretos, ele sempre pegaria área branca demais no caminho e só conseguiria compensar quando atingisse a borda (já cobrimos esse caso). Sobrou só o quadrante nordeste do xadrez, então colocamos nosso ponto lá. Já que ele sempre está no quadrante nordeste, vou parametrizar o ponto com $(1+x, 1+y)$, porque assim as contas ficam mais fáceis.

É aí que as coisas ficam interessantes. A área branca será a soma de toda a área do quadrante branco inferior (1) com a pequena área que o retângulo ganha no quadrante superior (4). A área preta é a soma das áreas dos retângulos formados acima (2) e à direita (3) do grande quadrado branco. Como os retângulos pretos são maiores que o pequeno branco e menores que o grande branco há, em teoria, a chance de juntando suas forças eles igualarem os brancos! Essa é uma possibilidade real e o único empecilho ao meu “sem muito esforço” do post anterior, eu preciso provar que a área de (1) + (4) nunca é igual à de (2) + (3).

Vamos calcular essas áreas. (1) tem sempre área $1$ (lembre que eu mudei a escala do xadrez). (2) tem área $y$ enquanto (3) tem área $x$. (4) tem área $xy$, e meu objetivo é provar que, se $0 < x , y < 1$, então

\[ 1 + xy \neq x + y. \]

Provar isso é simples, já que:

\[\Rightarrow 1 + xy-x-y \neq 0 \]

\[ \Rightarrow (1-x)(1-y) \neq 0, \]

o que de fato é verdade se $x$ e $y$ estão entre zero e um, com a igualdade se verificando quando um deles é igual a 1.

Isso termina a demonstração ((Eu sempre achei que um autor que tem que avisar quando a demonstração acaba é como um comediante que tem que avisar quando a piada acaba. “Isso termina a piada.”)), bonitinha e elegante. Mas tenho algumas opiniões fortes para terminar esse post.

A primeira é a linha tênue entre coisas que precisamos ou não demonstrar, do quão subjetivo é esse “sem muito esforço”. Perdemos bem rápido a empatia com nosso estado anterior de quem não sabia um assunto, isso é especialmente verdade depois de ver muita matemática. Alguns conceitos de base são desafiadores a explicar depois de muita exposição às exatas, eu arrisco dizer que o Ricardo de 15 anos explicaria melhor a seu colega por que $2x + 1 = y$ é uma reta do que o Ricardo de 29 anos. Contudo, isso não justifica minha mão leve na demonstração anterior; fosse isso questão de prova, eu tinha obrigação de demonstrar. Não sou desses de deixar demonstração para o leitor, quem sabe faz ao vivo.

A segunda foi meu instinto inicial para provar que $1 + xy-x-y \neq 0$ na parte interna do quadrado $0 < x,y < 1$. Eu estava sem lápis e papel quando cheguei nessa parte, a transformação, que é absolutamente simples, não me veio imediatamente. O que me veio foi: Ah, $f(x,y) = 1 + xy-x-y$ é solução da equação de Laplace, então não tem máximo ou mínimo em domínio aberto, só na borda. Nas bordas essa função é ou zero, ou $1-x$, ou $1-y$, então tranquilo, zero é mínimo e só é atingido naquela borda.

Essa aberração de demonstração vem de outra tendência minha: se há duas maneiras de resolver uma questão, eu necessariamente escolho a mais difícil. Sou aquele tipo de pessoa que, se preciso provar que $\sqrt[3]{2}$ é irracional, provaria da seguinte forma:

Suponhamos, por absurdo, que seja racional; ou seja, que existam inteiros $p$ e $q$ tais que $\sqrt[3]{2} = \frac{p}{q}$. Elevamos os dois lados ao cubo, temos que $2 = \frac{p^3}{q^3}$. Passando para o outro lado, como se deve, temos que $2q^3 = p^3$, ou seja, que $q^3 + q^3 = p^3$. Contudo, pelo último teorema de Fermat, isso não é possível, então $\sqrt[3]{2}$ é irracional.

É triste que essa demonstração não seja robusta o suficiente para provar que $\sqrt{2}$ é irracional. Pior que isso, não garanto que Wiles, em sua demonstração, não use o fato de que $\sqrt[3]{2}$ é irracional para provar o teorema, o que traria todos os problemas tautológicos dessa abominação de demonstração, que é uma de minhas favoritas.