{"componentChunkName":"component---src-templates-section-template-js","path":"/pt/5/3","result":{"data":{"markdown":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"lead","properties":{},"children":[{"type":"text","value":"Na secção anterior, discutimos as ideias fundamentais subjacentes à maioria dos métodos de redes neuronais: redes multicamadas, funções de ativação não lineares e regras de aprendizagem, tais como o algoritmo de retropropagação. "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Essas técnicas sustentam praticamente todas as aplicações modernas de redes neuronais. No entanto, há algumas variações interessantes e poderosas do tema, que levaram a grandes avanços na aprendizagem profunda, em muitas áreas."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Redes neuronais convolucionais (CNN)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uma área em que a aprendizagem profunda alcançou um êxito extraordinário foi o processamento de imagens. O classificador simples que estudámos em pormenor na secção anterior é extremamente limitado — conforme verificou, nem sequer foi possível classificar corretamente todos os smileys. Em princípio, acrescentar mais camadas à rede e utilizar a retropropagação para saber quais são os pesos resolve este problema, mas cria um outro: o número de pesos torna-se extremamente elevado e, por conseguinte, a quantidade de dados de treino necessária para alcançar uma exatidão satisfatória pode tornar-se demasiado grande para ser realista."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Felizmente, há uma solução muito elegante para o problema da existência de demasiados pesos: um tipo especial de rede neuronal, ou melhor, um tipo especial de camada que pode ser incluída numa rede neuronal profunda. Este tipo especial de camada é designada por "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"camada convolucional"}]},{"type":"text","value":". As redes que incluem camadas convolucionais são designadas "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"redes neuronais convolucionais"}]},{"type":"text","value":" (CNN, do inglês, convolutional neural networks). A sua propriedade fundamental é que conseguem detetar características de imagens como pontos claros ou escuros (ou de uma cor específica), extremidades com várias orientações, padrões, etc. Estas formam a base para detetar características mais abstratas, como as orelhas de um gato, o focinho de um cão, o olho de uma pessoa ou a forma octogonal de um sinal de STOP. Normalmente, seria difícil treinar uma rede neuronal para detetar essas características com base nos píxeis da imagem de entrada, porque as características podem aparecer em diferentes posições, orientações e tamanhos na imagem: mover o objeto ou o ângulo da câmara mudará drasticamente os valores dos píxeis, mesmo que o objeto em si nos pareça exatamente igual. Para que a rede aprendesse a detetar um sinal de STOP em todas estas diferentes condições, seriam necessárias grandes quantidades de dados de treino, visto que a rede apenas detetaria o sinal nas condições em que este tivesse aparecido nos dados de treino. Assim, por exemplo, um sinal de STOP no canto superior direito da imagem seria detetado apenas caso os dados de treino tivessem incluído uma imagem com o sinal de STOP no canto superior direito. As CNN conseguem reconhecer o objeto em qualquer local da imagem, independentemente de onde tenha sido observado nas imagens de treino."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Por que precisamos de CNN","description":"As CNN utilizam um truque inteligente para reduzir a quantidade de dados de treino necessários para detetar objetos em diferentes condições. Basicamente, o truque consiste em utilizar os mesmos pesos de entrada para muitos neurónios — para que todos estes sejam ativados pelo mesmo padrão — mas com diferentes píxeis de entrada. Por exemplo, podemos ter um conjunto de neurónios que são ativados pela orelha pontiaguda de um gato. Quando a entrada é a fotografia de um gato, são ativados dois neurónios, um para a orelha esquerda e outro para a direita. Também podemos permitir que os píxeis de entrada do neurónio sejam obtidos de uma área mais pequena ou maior, para que sejam ativados diferentes neurónios consoante a orelha apareça em diferentes escalas (tamanhos) e assim conseguirmos detetar as orelhas de um gato pequeno, mesmo que os dados de treino apenas incluíssem imagens de gatos grandes."},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Regra geral, os neurónios convolucionais são colocados nas camadas inferiores da rede, que processam os píxeis de entrada em bruto. Os neurónios básicos (como o neurónio percetrão discutido anteriormente) são colocados nas camadas mais elevadas, que processam a saída das camadas inferiores. As camadas inferiores podem normalmente ser treinadas utilizando a aprendizagem sem supervisão, sem uma tarefa de previsão específica em mente. Os seus pesos serão afinados para detetar características que aparecem frequentemente nos dados de entrada. Assim, nas fotografias de animais, as características habituais são orelhas e focinhos, enquanto nas imagens de edifícios, as características são componentes arquitetónicos como paredes, telhados, janelas, etc. Se for utilizada uma combinação de vários objetos e cenas como dados de entrada, então as características aprendidas pelas camadas inferiores serão mais ou menos genéricas. Isto significa que as camadas convolucionais pré-treinadas podem ser reutilizadas em muitas tarefas diferentes de processamento de imagens. Isto é extremamente importante, pois é fácil ter quantidades praticamente ilimitadas de dados de treino não etiquetados — imagens sem etiquetas — que podem ser utilizados para treinar as camadas inferiores. As camadas superiores são sempre treinadas mediante técnicas de aprendizagem automática supervisionada, como a retropropagação."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"illustrations","properties":{"motive":"gan","color":"#00B5AA","frombottom":"0","totalheight":"54%"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"As redes neuronais sonham com ovelhas elétricas? Redes generativas antagónicas (GAN)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tendo criado uma rede neuronal com base na aprendizagem a partir de dados, a mesma pode ser usada para efeitos de previsão. Uma vez que as camadas superiores da rede foram treinadas de forma supervisionada para realizar uma tarefa específica de classificação ou previsão, as camadas superiores apenas são efetivamente úteis para essa tarefa. Uma rede treinada para detetar sinais de STOP é inútil para detetar números manuscritos ou gatos."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"É fascinante observar o resultado de uma análise das camadas inferiores pré-treinadas que vise estudar o aspeto das características que aprenderam. É possível fazê-lo gerando imagens que ativam um determinado conjunto de neurónios nas camadas inferiores. Analisando as imagens geradas, podemos ver qual o aspeto que a rede neuronal «pensa» que uma determinada característica tem, ou que aspeto teria uma imagem com um conjunto selecionado de características. Algumas pessoas até gostam de dizer que as redes «sonham» ou «alucinam» imagens (ver o "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/DeepDream","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"sistema DeepDream"}]},{"type":"text","value":" da Google)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Cuidado com as metáforas","description":"No entanto, gostaríamos de sublinhar, uma vez mais, o problema com metáforas como «redes que sonham», quando o que se pretende referir é a simples otimização da imagem de entrada — lembre-se das «palavras mala» de que falámos no Capítulo 1. A rede neuronal não sonha verdadeiramente, nem tem um conceito de gato que compreenderia de forma semelhante a um ser humano. Foi simplesmente treinada para reconhecer objetos e consegue gerar imagens que são semelhantes aos dados de entrada com os quais foi treinada."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para gerar efetivamente gatos de aspeto real, rostos humanos ou outros objetos (obterá o que tiver usado como dados de treino), "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Ian_Goodfellow","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ian Goodfellow"}]},{"type":"text","value":", que atualmente trabalha no Google Brain, propôs uma combinação inteligente de duas redes neuronais. A ideia é permitir que as duas redes concorram entre si. Uma das redes é treinada para gerar imagens como as existentes nos dados de treino. A tarefa da outra rede é separar as imagens geradas pela primeira rede das imagens reais dos dados de treino — esta é designada por rede antagónica e o sistema completo é designado rede generativa antagónica, ou GAN (do inglês, generative adversarial network)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"O sistema treina os dois modelos lado a lado. No início do treino, o modelo antagónico tem uma tarefa fácil, distinguir entre as imagens reais dos dados de treino e as tentativas desajeitadas do modelo generativo. No entanto, à medida que a rede generativa vai melhorando, lenta, mas progressivamente, o modelo antagónico também tem de melhorar, e o ciclo continua até que, eventualmente, as imagens geradas são praticamente indistinguíveis das reais. A GAN não tenta apenas reproduzir as imagens nos dados de treino: essa seria uma estratégia demasiado simples para derrotar a rede antagónica. Ao invés disso, o sistema é treinado para também conseguir gerar imagens novas, de aspeto real."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 674px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 99.72222222222223%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQEC/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAbdOXs6YjXOcHoNM8If/xAAeEAACAQMFAAAAAAAAAAAAAAABAgMAEhMEESEiM//aAAgBAQABBQLhjKA2rlAWRmO7dqsjakJxXHJP6//EABYRAAMAAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPwEd/8QAFREBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQIBAT8BCP/EAB4QAAICAgIDAAAAAAAAAAAAAAABAhEhMRIiQXGh/9oACAEBAAY/Ak6yO14GkScaqP0jLFtbO/Gyfsq8KOhn/8QAGxABAQEBAQADAAAAAAAAAAAAAREAQTEhYXH/2gAIAQEAAT8h8aQ0XR6QMNKSfWUSGjTCIgcW65TzvlyvmzrIU4369//aAAwDAQACAAMAAAAQ1DCC/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERMf/aAAgBAwEBPxBtORGi4PT/xAAYEQEBAQEBAAAAAAAAAAAAAAABABExIf/aAAgBAgEBPxBDdYPI4xy//8QAHRABAQACAwADAAAAAAAAAAAAAREAITFRYXGRof/aAAgBAQABPxBGNCPY2P5h6haEXXeA2g8bTzE0vtLHU9ygb67ASEsyM8tLiOGXWsQVXT7C5qeCwWXBtVSjv4M//9k='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"alt":"fakecelebrityfaces","title":"fakecelebrityfaces","src":"/static/ac3753c9c9a3248de4bc71231b483be1/a6d30/5_3_fake-celebrity.jpg","srcSet":["/static/ac3753c9c9a3248de4bc71231b483be1/158ba/5_3_fake-celebrity.jpg 360w","/static/ac3753c9c9a3248de4bc71231b483be1/a6d30/5_3_fake-celebrity.jpg 674w"],"sizes":["(max-width:","674px)","100vw,","674px"],"style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;","loading":"lazy"},"children":[]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"As imagens acima foram geradas por uma GAN desenvolvida pela NVIDIA, no âmbito de um projeto liderado pelo "},{"type":"element","tagName":"a","properties":{"href":"https://users.aalto.fi/~lehtinj7/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Prof. Jaakko Lehtinen"}]},{"type":"text","value":" (consulte "},{"type":"element","tagName":"a","properties":{"href":"https://www.technologyreview.com/the-download/609290/meet-the-fake-celebrities-dreamed-up-by-ai/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"este artigo para obter mais detalhes"}]},{"type":"text","value":")."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teria conseguido reconhecê-las como falsas?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"part-summary","properties":{"chapter":"5","heading":"Após concluir o Capítulo 5, deverá conseguir:","listitems":"[ {\"content\":\"Explicar o que é uma rede neuronal e onde é que estas redes estão a ser usadas com êxito\"}, {\"content\":\"Compreender os métodos técnicos que sustentam as redes neuronais\"}]"},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"frontmatter":{"path":"/pt/5/3","title":"Técnicas avançadas de redes neuronais","section":3,"part":5,"lang":"pt"}},"allRelatedSections":{"totalCount":3,"edges":[{"node":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"lead","properties":{},"children":[{"type":"text","value":"O nosso próximo tema, a aprendizagem profunda e as redes neuronais, costuma despertar mais interesse do que muitos dos outros temas."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Um dos motivos para o interesse é a esperança de compreender a nossa própria mente, que surge do processamento neuronal no nosso cérebro. Outro motivo são os avanços na aprendizagem automática alcançados nos últimos anos, ao combinar enormes conjuntos de dados e técnicas de aprendizagem profunda."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"O que são as redes neuronais?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para compreender melhor o todo, começaremos por debater as unidades individuais que o compõem. Uma rede neuronal pode significar uma rede neuronal biológica «real», como a que existe no seu cérebro, ou uma rede neuronal artificial simulada num computador."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"key-terminology","properties":{"terminologies":"[{\n\t\"title\": \"Aprendizagem profunda\",\n\t\"content\": \"Aprendizagem profunda refere-se a determinadas técnicas de aprendizagem automática, em que várias «camadas» de unidades de processamento simples são ligadas numa rede, para que a entrada fornecida ao sistema passe através de cada uma delas, à vez. Esta arquitetura foi inspirada pelo processamento de informações visuais no cérebro, que chegam através dos olhos e são captadas pela retina. Esta profundidade permite à rede aprender estruturas mais complexas sem precisar de quantidades de dados irrealisticamente grandes.\"},{\n\t\"title\": \"Neurónios, corpos celulares e sinais\",\n\t\"content\": \"Uma rede neuronal, quer seja biológica ou artificial, é composta por um grande número de unidades simples, os neurónios, que recebem e transmitem sinais entre si. Os neurónios são processadores de informação muito simples, compostos por um corpo celular e fios que os ligam aos outros neurónios. A maior parte do tempo, não fazem nada, aguardando e estando atentos a sinais que chegam através dos fios.\"},{\n\t\"title\": \"Dendrites, axónios e sinapses\",\n\t\"content\": \"No jargão biológico, os fios que fornecem as informações de entrada aos neurónios são designados dendrites. Por vezes, dependendo dos sinais que chegam, o neurónio pode disparar e enviar um sinal, que será recebido pelos outros neurónios. O fio que transmite o sinal de saída é designado axónio. Cada axónio pode estar ligado a uma ou mais dendrites, em cruzamentos que são designados sinapses.\"}]"},"children":[{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Isolado dos seus companheiros, um único neurónio é pouco impressionante, sendo apenas capaz de um conjunto muito limitado de comportamentos. No entanto, quando estão ligados uns aos outros, o sistema resultante da sua ação concertada pode tornar-se extremamente complexo. Para encontrar provas disto, basta olhar (para usar jargão jurídico) para o «Elemento de prova A»: o seu cérebro! O comportamento do sistema é determinado pelas formas como os neurónios estão ligados. Cada neurónio reage aos sinais recebidos de uma forma específica, que também se pode adaptar ao longo do tempo. Sabe-se que esta adaptação é a chave para funções como a memória e a aprendizagem."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"quiz","properties":{"quizid":"ebc0f06e-18f7-5678-a485-74b35b460062"},"children":[{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Porque desenvolver redes neuronais artificiais?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"O objetivo de desenvolver modelos artificiais do cérebro pode ser a neurociência, o estudo do cérebro e do sistema nervoso em geral. É tentador pensar que, se mapearmos o cérebro humano de forma suficientemente detalhada, podemos descobrir os segredos da cognição e da consciência humana e animal."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"illustrations","properties":{"motive":"brain"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Modelar o cérebro","description":"A iniciativa BRAIN (<a target='_blank' rel='noopener noreferrer' href='https://www.braininitiative.nih.gov'>The BRAIN Initiative</a>), liderada por investigadores americanos no domínio da neurociência, está a promover tecnologias para formar imagens do cérebro, bem como para o modelar e simular, a uma escala mais alargada e detalhada do que o alguma vez feito. Alguns projetos de investigação sobre o cérebro traçaram objetivos muito ambiciosos. O Projeto Cérebro Humano (<a target='_blank' rel='noopener noreferrer' href='https://www.youtube.com/watch?v=JqMpGrM5ECo'>The Human Brain Project</a>) prometeu, há cerca de 5 anos, que «os mistérios da mente podem ser resolvidos… em breve». Após anos de trabalho, o Projeto Cérebro Humano enfrentou questões sobre quando é que os <a target='_blank' rel='noopener noreferrer' href='https://www.scientificamerican.com/article/why-the-human-brain-project-went-wrong-and-how-to-fix-it/'>1 000 milhões de EUR investidos pela União Europeia</a> levarão à concretização dessa promessa, embora seja justo reconhecer que alguns marcos menos ambiciosos foram alcançados."},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"No entanto, apesar de aparentemente continuarmos ainda muito longe de compreender a mente e a consciência, foram alcançados marcos claros na neurociência. Graças à melhor compreensão da estrutura e do funcionamento do cérebro, já estamos a colher alguns frutos concretos. Podemos, por exemplo, identificar o funcionamento anormal e tentar ajudar o cérebro a evitá-lo, restabelecendo o funcionamento normal. Isto pode levar a novos tratamentos médicos, capazes de mudar a vida das pessoas que sofrem de perturbações neurológicas: epilepsia, doença de Alzheimer, problemas causados por perturbações no desenvolvimento ou danos causados por ferimentos, etc."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Perspetivas para o futuro: interfaces cérebro/computador","description":"Uma direção da investigação na neurociência são as interfaces cérebro/computador, que permitem interagir com um computador simplesmente pelo pensamento. As interfaces atuais são muito limitadas e podem ser utilizadas, por exemplo, para <a target='_blank' rel='noopener noreferrer' href='https://www.youtube.com/watch?v=Ecvv-EvOj8M'>reconstruir, de forma muito básica, o que uma pessoa está a ver</a>, ou <a target='_blank' rel='noopener noreferrer' href='https://www.youtube.com/watch?v=7t84lGE5TXA'>controlar braços robóticos ou drones através do pensamento</a>. Talvez algum dia consigamos implementar máquinas capazes de ler o pensamento, que permitam instruções precisas, mas atualmente estas pertencem ao domínio da ficção científica. Também é concebível que consigamos fornecer informações ao cérebro, ao estimulá-lo por via de pequenos impulsos eletrónicos. Essa estimulação é utilizada atualmente para fins terapêuticos. Pelo menos para já, o fornecimento de informações detalhadas, como palavras, ideias, memórias ou emoções específicas, é ficção científica e não realidade, mas é evidente que não conhecemos os limites dessa tecnologia, nem quão difícil será alcançá-los."},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Afastámo-nos um pouco do tema do curso. Na verdade, outro dos principais motivos para desenvolver redes neuronais artificiais tem pouco que ver com a compreensão de sistemas biológicos. Trata-se de utilizar os sistemas biológicos como uma inspiração para desenvolver melhores técnicas de IA e aprendizagem automática. A ideia é muito natural: o cérebro é um sistema de processamento de informação incrivelmente complexo, capaz de um vasto leque de comportamentos inteligentes (e, pontualmente, de alguns menos inteligentes), pelo que faz sentido inspirarmo-nos nele quando tentamos criar sistemas artificialmente inteligentes."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"As redes neuronais têm sido uma grande tendência na IA desde os anos 60. Voltaremos a falar sobre as ondas de popularidade na história da IA na parte final. Atualmente, as redes neuronais estão novamente no topo da lista, com a aprendizagem profunda a ser utilizada para alcançar melhorias significativas em muitas áreas, como o processamento de linguagem natural e de imagens, que tradicionalmente têm sido pontos sensíveis da IA."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"O que têm de tão especial as redes neuronais?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A defesa da utilização das redes neuronais, em geral, como uma abordagem à IA, assenta num argumento semelhante ao das abordagens baseadas na lógica. Neste último caso, pensou-se que, para atingir um nível de inteligência equivalente à humana, temos de simular processos mentais de nível superior, nomeadamente, a manipulação de símbolos que representam determinados conceitos concretos ou abstratos utilizando regras lógicas."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"O argumento em prol das redes neuronais é que ao simular o nível inferior — o processamento de dados «subsimbólicos» ao nível dos neurónios e das redes neuronais — a inteligência irá surgir. Tudo isto parece muito razoável, mas tenha em mente que construir máquinas voadoras não significa construirmos aviões que batem as asas, ou que são feitos de ossos, músculos e penas. Do mesmo modo, nas redes neuronais artificiais, normalmente o mecanismo interno dos neurónios é ignorado e os neurónios artificiais são frequentemente muito mais simples do que os seus homólogos naturais. Os mecanismos de sinalização eletroquímicos entre os neurónios naturais também são largamente ignorados nos modelos artificiais, quando o objetivo é construir sistemas de IA, ao invés de simular sistemas biológicos."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Em comparação com o funcionamento tradicional dos computadores, as redes neuronais têm determinadas características especiais:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Primeira característica essencial das redes neuronais"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Em primeiro lugar, num computador tradicional, as informações são processadas num processador central (apropriadamente designado unidade central de processamento, ou CPU na forma abreviada [do inglês, central processing unit]), que apenas se consegue concentrar em fazer uma coisa de cada vez. A CPU consegue obter os dados a processar da memória do computador, armazenando o resultado igualmente na memória. Assim, o armazenamento e o processamento de dados são tratados por dois componentes separados do computador: a memória e a CPU. Nas redes neuronais, o sistema é composto por um grande número de neurónios, cada um dos quais consegue processar informações sozinho, pelo que ao invés ter uma CPU que processa cada elemento de informação, um após outro, os neurónios processam grandes quantidades de informações em simultâneo."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h3","properties":{},"children":[{"type":"text","value":"Segunda característica essencial das redes neuronais"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A segunda diferença é que o armazenamento (memória) e o processamento de dados não estão separados, tal como sucede nos computadores tradicionais. Os neurónios armazenam e processam informação, pelo que não há necessidade de obter dados da memória para efeitos de processamento. Os dados podem ser armazenados a curto prazo nos próprios neurónios (disparam ou não num dado momento), ou, no caso do armazenamento a longo prazo, nas ligações entre os neurónios — os seus pesos, que discutiremos adiante."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Devido a estas duas diferenças, as redes neuronais e os computadores tradicionais adequam-se a tarefas algo diferentes. Embora seja perfeitamente possível simular redes neuronais em computadores tradicionais, tendo sido assim que foram utilizadas durante muito tempo, a sua capacidade máxima é atingida apenas quando utilizamos hardware especial (dispositivos informáticos) capaz de processar muitos elementos de informação em simultâneo. Isto é designado "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"processamento paralelo"}]},{"type":"text","value":". Verificou-se, por acaso, que os processadores gráficos (ou unidades de processamento gráfico, ou ainda GPU [do inglês, graphics processing units]) têm esta capacidade, pelo que se tornaram uma solução económica para executar métodos maciços de aprendizagem profunda."}]}],"data":{"quirksMode":false}},"excerpt":"Um dos motivos para o interesse é a esperança de compreender a nossa própria mente, que surge do processamento neuronal no nosso cérebro…","frontmatter":{"path":"/pt/5/1","title":"Conceitos básicos das redes neuronais","part":5,"type":"section","lang":"pt","section":1}}},{"node":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"lead","properties":{},"children":[{"type":"text","value":"Conforme referido anteriormente, os neurónios são unidades de processamento muito simples. Tendo abordado a regressão linear e logística no Capítulo 4, os detalhes técnicos essenciais das redes neuronais podem ser vistos como ligeiras variações da mesma ideia."}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Pesos e entradas","description":"O modelo de neurónio artificial básico envolve um conjunto de parâmetros adaptativos, designados pesos, à semelhança da regressão linear e logística. Tal como na regressão, estes pesos são utilizados como multiplicadores das entradas do neurónio, que são adicionadas. A soma dos pesos multiplicados pelas entradas é designada por combinação linear das entradas. Provavelmente lembra-se da analogia da conta do supermercado: multiplicamos o valor de cada artigo pelo seu preço unitário e adicionamos para obter o total."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Se tivermos um neurónio com seis entradas (análogas às quantidades dos seus artigos comprados: batatas, cenouras, etc.), entrada1, entrada2, entrada3, entrada4, entrada5 e entrada6, também precisamos de seis pesos. Os pesos são análogos aos preços dos artigos. Vamos designá-los peso1, peso2, peso3, peso4, peso5 e peso6. Além disso, queremos normalmente incluir um termo de interceto, tal como fizemos na regressão linear. Podemos pensar nisto como um encargo adicional fixo, devido ao processamento de um cartão de crédito, por exemplo."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Então, podemos calcular a combinação linear, da seguinte forma: Combinação linear = interceto + peso1 × entrada1 + … + peso6 × entrada6 (em que “…“ é uma notação abreviada, que significa que a soma inclui todos os termos de 1 a 6)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Utilizando alguns números a título de exemplo, poderíamos então obter:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"codesnippet","properties":{"text":"10.0 + 5.4 × 8 + (-10.2) × 5 + (-0.1) × 22 + 101.4 × (-5) + 0.0 × 2 + 12.0 × (-3) = -543.0"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"quiz","properties":{"quizid":"fefb342a-9c4b-51b7-8549-febd710fc586"},"children":[{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Os pesos são quase sempre aprendidos a partir dos dados, usando as mesmas ideias que na regressão linear ou logística, conforme abordado anteriormente. Mas antes de discutirmos isto mais aprofundadamente, vamos apresentar outra etapa importante que é concluída por um neurónio antes de enviar um sinal de saída."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Ativações e saídas"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Após o cálculo da combinação linear, o neurónio realiza outra operação. Pega na combinação linear e submete-a a uma chamada função de ativação. Os exemplos típicos da função de ativação incluem:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"ul","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"função de identidade: não fazer nada e produzir simplesmente a combinação linear"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"função de passo: se o valor da combinação linear for superior a zero, enviar um impulso (ATIVADO), caso contrário, não fazer nada (DESATIVADO)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"li","properties":{},"children":[{"type":"text","value":"função sigmoide: uma versão «suave» da função de passo"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tenha em atenção que, com a primeira função de ativação, a função de identidade, o neurónio é exatamente igual à regressão linear. É por isso que a função de identidade raramente é utilizada nas redes neuronais: não leva a nada de novo e interessante."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Como são ativados os neurónios","description":"Os neurónios biológicos reais comunicam enviando impulsos elétricos agudos, designados «picos», pelo que em qualquer dado momento o seu sinal de saída está ativado ou desativado (1 ou 0). A função de passo imita este comportamento. No entanto, as redes neuronais artificiais costumam usar o segundo tipo de funções de ativação, pelo que produzem sempre um nível de ativação numérica contínua. Assim, usando uma comparação um pouco estranha, os neurónios reais comunicam através de algo semelhante ao código Morse, enquanto os neurónios artificiais comunicam ajustando o tom da voz, como se estivessem a cantar à tirolesa."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"illustrations","properties":{"motive":"carstop","color":"#ebe9ef","frombottom":"0","totalheight":"35%"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A saída do neurónio, determinada pela combinação linear e pela função de ativação, pode ser usada para extrair uma previsão ou uma decisão. Por exemplo, se a rede for concebida para identificar um sinal de STOP à frente de um carro autónomo, a entrada podem ser os píxeis de uma imagem captada por uma câmara fixa na parte dianteira do carro, e a saída pode ser usada para ativar um procedimento de paragem, que para o carro antes do sinal."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A aprendizagem ou adaptação na rede ocorre quando os pesos são ajustados para fazer a rede produzir as saídas corretas, tal como na regressão linear ou logística. Muitas redes neuronais são muito grandes e as maiores contêm centenas de milhares de milhões de pesos. Otimizá-los a todos pode ser uma tarefa hercúlea, que exige uma enorme capacidade de computação."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"exercise22","properties":{"quizid":"2898ed28-ee96-5ddc-afbf-927034207144"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Percetrão: o pai de todas as redes neuronais artificiais"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"O percetrão é simplesmente um nome extravagante para um modelo de neurónio simples, com a função de ativação de passo mencionada anteriormente. Foi um dos primeiros modelos formais de computação neuronal e, devido ao seu papel fundamental na história das redes neuronais, não seria injusto chamar-lhe o «pai de todas as redes neuronais artificiais»."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Pode ser usado como um classificador simples em tarefas de classificação binária. Em 1957, o psicólogo Frank Rosenblatt apresentou um método para aprender os pesos do percetrão a partir de dados, designado o algoritmo Percetrão. Não vamos estudar o algoritmo Percetrão em pormenor, bastando dizer que é tão simples como o classificador vizinho mais próximo. O princípio básico é fornecer dados de treino à rede, um exemplo de cada vez, e cada classificação incorreta leva a uma atualização do peso."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Hipérbole da IA","description":"Após a sua descoberta, o algoritmo Percetrão recebeu muita atenção, quanto mais não seja, devido às declarações otimistas do seu inventor, Frank Rosenblatt. Um exemplo clássico de hipérbole da IA é um artigo publicado no New York Times, em 8 de julho de 1958:<br>«A Marinha revelou hoje o embrião de um computador eletrónico, que espera que venha a conseguir caminhar, falar, ver, reproduzir-se e estar consciente da sua existência».<br><br>Tenha em atenção que os entusiastas das redes neuronais não são, de todo, os únicos com propensão ao otimismo. A ascensão e queda da abordagem à IA assente nos sistemas periciais baseados na lógica apresentou todas as características típicas de um entusiasmo exagerado em relação à IA, com as pessoas a alegarem que o progresso decisivo estava ao virar da esquina. O resultado, tanto no início dos anos 60 como no final dos anos 80, foi um decréscimo abrupto no financiamento da investigação, designado um «inverno» da IA."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"A história do debate que, nos anos 60, acabaria por levar ao quase completo abandono da abordagem de redes neuronais, durante mais de duas décadas, é extremamente fascinante. O artigo "},{"type":"element","tagName":"i","properties":{},"children":[{"type":"element","tagName":"a","properties":{"href":"http://journals.sagepub.com/doi/10.1177/030631296026003005","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"A Sociological Study of the Official History of the Perceptrons Controversy"}]}]},{"type":"text","value":" (Um estudo sociológico da história oficial da controvérsia dos percetrões), da autoria de Mikel Olazaran (publicado na revista académica "},{"type":"element","tagName":"i","properties":{},"children":[{"type":"text","value":"Social Studies of Science"}]},{"type":"text","value":", em 1996) analisa os acontecimentos do ponto de vista da sociologia da ciência, sendo bastante sugestivo lê-lo hoje em dia. Ler histórias sobre heróis aclamados da IA, que tinham desenvolvido algoritmos de redes neuronais que em breve atingiriam o nível de inteligência humana e se tornariam autoconscientes, pode evocar algumas declarações feitas durante o atual período de entusiasmo exagerado. Se passar os olhos pelo artigo mencionado, mesmo que não o leia na íntegra, este fornecerá um contexto interessante para as notícias atuais. Considere, por exemplo, um "},{"type":"element","tagName":"a","properties":{"href":"https://www.technologyreview.com/s/608911/is-ai-riding-a-one-trick-pony/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"artigo publicado na MIT Technology Review"}]},{"type":"text","value":", em setembro de 2017, no qual Jordan Jacobs, cofundador do instituto Vector para a IA, que movimenta muitos milhões de dólares, compara Geoffrey Hinton (uma figura de proa do atual boom da aprendizagem profunda) a Einstein, devido aos seus contributos para o desenvolvimento de algoritmos de redes neuronais a partir dos anos 80. Lembre-se também do Projeto Cérebro Humano mencionado na secção anterior."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Segundo Hinton, «o facto de não funcionar é apenas um contratempo temporário» (embora, de acordo com o artigo, Hinton se estivesse a rir quando fez esta declaração, pelo que é difícil saber quão a sério estava a falar). O Projeto Cérebro Humano alega estar "},{"type":"element","tagName":"a","properties":{"href":"https://www.humanbrainproject.eu/en/follow-hbp/news/the-quest-for-consciousness/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"«perto de um enorme avanço na nossa compreensão da consciência»"}]},{"type":"text","value":". Não lhe parece familiar?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Ninguém sabe ao certo o que trará o futuro, mas conhecendo o historial de anúncios de avanços iminentes, é aconselhável ter espírito crítico. Voltaremos ao futuro da IA no último capítulo, mas, por agora, vejamos como são construídas as redes neuronais artificiais."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Juntar neurónios: redes"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Um único neurónio seria demasiado simples para tomar decisões e prever com fiabilidade na maioria das aplicações na vida real. Para aproveitar todas as potencialidades das redes neuronais, podemos usar a saída de um neurónio como a entrada de outros neurónios, cujas saídas podem ser as entradas de outros neurónios, e assim por diante. A saída de toda a rede é obtida como a saída de um determinado subconjunto de neurónios, que tem a designação de camada de saída. Voltaremos a isto um pouco adiante, depois de discutirmos a forma como as redes neuronais se adaptam para produzir diferentes comportamentos, ao aprenderem os seus parâmetros a partir dos dados."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"key-terminology","properties":{"terminologies":"[\n      {\"title\":\"Camadas\",\"content\":\"Muitas vezes, a arquitetura da rede é composta por camadas. A camada de entrada é composta por neurónios que recebem as suas entradas diretamente dos dados. Assim, por exemplo, numa tarefa de reconhecimento de imagens, a camada de entrada utilizaria os valores de píxeis da imagem de entrada como as suas entradas. Por norma, a rede também tem camadas ocultas, que utilizam as saídas dos outros neurónios como as suas entradas, e cujas saídas são usadas como entradas por outras camadas de neurónios. Finalmente, a camada de saída produz a saída de toda a rede. Todos os neurónios numa determinada camada recebem entradas dos neurónios da camada anterior e fornecem a sua saída à camada seguinte.\"}\n  ]"},"children":[{"type":"text","value":"\n"}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Um exemplo clássico de uma rede multicamadas é o chamado percetrão multicamadas. Conforme mencionado anteriormente, o algoritmo Percetrão pode ser usado para saber quais são os pesos de um percetrão. No caso do percetrão multicamadas, o problema de aprendizagem correspondente é muito mais difícil e foi preciso muito tempo para descobrir uma solução funcional, mas, eventualmente, foi inventada uma: o algoritmo de retropropagação levou à revitalização das redes neuronais no final dos anos 80, continuando a estar no cerne de muitas das soluções mais avançadas de aprendizagem profunda."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Entretanto, em Helsínquia…","description":"Os caminhos que levaram ao algoritmo de retropropagação são bastante longos e sinuosos. Uma parte interessante da história está relacionada com o departamento de informática da Universidade de Helsínquia. Cerca de três anos após a fundação do departamento, em 1967, um estudante chamado Seppo Linnainmaa escreveu <a target='_blank' rel='noopener noreferrer' href='http://people.idsia.ch/~juergen/linnainmaa1970thesis.pdf'>uma tese de mestrado</a>. O tema da tese foi «Erro de arredondamento cumulativo de algoritmos, como uma aproximação Taylor para erros de arredondamento individuais» (a tese foi escrita em finlandês, pelo que esta é uma tradução do título «Algoritmin kumulatiivinen pyöristysvirhe yksittäisten pyöristysvirheiden Taylor-kehitelmänä»).<br><br>O método de diferenciação automática desenvolvido na tese foi depois aplicado por outros investigadores para quantificar a sensibilidade da saída de uma rede neuronal multicamadas no que se refere aos pesos individuais, que é a ideia fundamental da retropropagação."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Um classificador de rede neuronal simples"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para dar um exemplo relativamente simples de utilização de um classificador de redes neuronais, vamos considerar uma tarefa que é muito semelhante à tarefa de reconhecimento de dígitos do MNIST, nomeadamente, a classificação de imagens em duas classes. Em primeiro lugar, criaremos um classificador para classificar se uma imagem mostra uma cruz (x) ou um círculo (o). As nossas imagens são representadas aqui como píxeis que são coloridos ou brancos, sendo que os píxeis estão distribuídos numa grelha 5 × 5. Neste formato, as nossas imagens de uma cruz e um círculo (para dizer a verdade, parece-se mais com um diamante) têm este aspeto:"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"exercise23a","properties":{},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para construir um classificador de rede neuronal, precisamos de formalizar o problema de maneira a podermos resolvê-lo utilizando os métodos que aprendemos. O nosso primeiro passo é representar a informação nos píxeis por meio de valores numéricos, que podem ser usados como a entrada para um classificador. Vamos usar 1 se o quadrado for colorido, e 0 se for branco. Tenha em atenção que, embora os símbolos no gráfico anterior sejam de cores diferentes (verde e azul), o nosso classificador irá ignorar a informação relativa à cor, utilizando apenas a informação colorido/branco. Os 25 píxeis na imagem correspondem às entradas do nosso classificador."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para garantir que sabemos qual é cada píxel na representação numérica, podemos decidir listar os píxeis na mesma ordem em que leria texto, ou seja, em filas consecutivas a contar do topo, e ler cada fila da esquerda para a direita. A primeira fila da cruz, por exemplo, é representada como 1,0,0,0,1; a segunda fila como 0,1,0,1,0, e assim por diante. Assim, a entrada completa para a entrada da cruz é: 1,0,0,0,1,0,1,0,1,0,0,0,1,0,0,0,1,0,1,0,1,0,0,0,1."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vamos usar o modelo de neurónio básico, em que o primeiro passo é calcular uma combinação linear das entradas. Assim, é necessário um peso para cada um dos píxeis de entrada, o que corresponde a um total de 25 pesos."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Por fim, usamos a função de ativação de passo. Se a combinação linear for negativa, a ativação do neurónio é zero, que decidimos utilizar para significar uma cruz. Se a combinação linear for positiva, a ativação do neurónio é um, que decidimos utilizar para significar um círculo."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Vejamos o que acontece quando todos os pesos assumem o mesmo valor numérico, 1. Com esta configuração, a nossa combinação linear para a imagem da cruz será 9 (9 píxeis coloridos, portanto 9 × 1, e 16 píxeis brancos, 16 × 0), e para a imagem do círculo será 8 (8 píxeis coloridos, 8 × 1, e 17 píxeis brancos, 17 × 0). Por outras palavras, a combinação linear é positiva para ambas as imagens, pelo que são classificadas como círculos. Não é um resultado muito bom, tendo em conta que temos apenas duas imagens para classificar."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para melhorar o resultado, temos de ajustar os pesos de tal maneira que a combinação linear seja negativa para uma cruz e positiva para um círculo. Se pensarmos no que diferencia as imagens de cruzes e círculos, podemos ver que os círculos não têm píxeis coloridos no centro da imagem, ao contrário das cruzes. Do mesmo modo, os píxeis nos cantos da imagem são coloridos no caso da cruz, mas são brancos no caso do círculo."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Agora, podemos simplesmente ajustar os pesos. Há uma quantidade infinita de pesos que funcionam. Por exemplo, atribua o peso -1 ao píxel do centro (o 13.º píxel) e o peso 1 aos píxeis no meio de cada um dos quatro lados da imagem, deixando que todos os restantes pesos sejam 0. Agora, para a entrada da cruz, o píxel do centro produz o valor -1, enquanto para todos os outros píxeis, o valor do píxel ou do peso é 0, fazendo com que -1 também seja o valor total. Isto leva à ativação 0 e a cruz é classificada corretamente."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"E relativamente ao círculo? Cada um dos píxeis dos lados da faixa horizontal central produz o valor 1, o que corresponde a 4 × 1 = 4 no total. Para todos os outros píxeis, o valor do píxel ou do peso é 0, pelo que o total é 4. Uma vez que 4 é um número positivo, a ativação é 1, e o círculo também é corretamente reconhecido."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Feliz ou não?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Seguiremos agora um raciocínio semelhante para construir um classificador para smileys. Pode atribuir pesos aos píxeis de entrada na imagem, clicando nos mesmos. Clicar uma vez define o peso como 1 e clicar novamente define-o como -1. A ativação 1 indica que a imagem é classificada como uma cara feliz, o que pode ser correto ou não, enquanto a ativação -1 indica que a imagem é classificada como uma cara triste."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Não se sinta desanimado(a) por não conseguir classificar todos os smileys corretamente. Na verdade, é impossível fazê-lo com o nosso classificador simples! Este é um objetivo de aprendizagem importante: por vezes, a classificação perfeita não é, de facto, possível, porque o classificador é demasiado simples. Neste caso, o neurónio simples que utiliza a combinação linear das entradas é demasiado simples para realizar a tarefa. Observe como pode construir classificadores que funcionam bem em diferentes casos: alguns classificam corretamente a maioria das caras felizes, apresentando um desempenho pior para as caras tristes, ou vice-versa."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Consegue atingir 6/8 classificações corretas para caras felizes e tristes?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"exercise23b","properties":{},"children":[]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"excerpt":"Se tivermos um neurónio com seis entradas (análogas às quantidades dos seus artigos comprados: batatas, cenouras, etc.), entrada1, entrada…","frontmatter":{"path":"/pt/5/2","title":"Como são construídas as redes neuronais","part":5,"type":"section","lang":"pt","section":2}}},{"node":{"htmlAst":{"type":"root","children":[{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"lead","properties":{},"children":[{"type":"text","value":"Na secção anterior, discutimos as ideias fundamentais subjacentes à maioria dos métodos de redes neuronais: redes multicamadas, funções de ativação não lineares e regras de aprendizagem, tais como o algoritmo de retropropagação. "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Essas técnicas sustentam praticamente todas as aplicações modernas de redes neuronais. No entanto, há algumas variações interessantes e poderosas do tema, que levaram a grandes avanços na aprendizagem profunda, em muitas áreas."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"Redes neuronais convolucionais (CNN)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Uma área em que a aprendizagem profunda alcançou um êxito extraordinário foi o processamento de imagens. O classificador simples que estudámos em pormenor na secção anterior é extremamente limitado — conforme verificou, nem sequer foi possível classificar corretamente todos os smileys. Em princípio, acrescentar mais camadas à rede e utilizar a retropropagação para saber quais são os pesos resolve este problema, mas cria um outro: o número de pesos torna-se extremamente elevado e, por conseguinte, a quantidade de dados de treino necessária para alcançar uma exatidão satisfatória pode tornar-se demasiado grande para ser realista."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Felizmente, há uma solução muito elegante para o problema da existência de demasiados pesos: um tipo especial de rede neuronal, ou melhor, um tipo especial de camada que pode ser incluída numa rede neuronal profunda. Este tipo especial de camada é designada por "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"camada convolucional"}]},{"type":"text","value":". As redes que incluem camadas convolucionais são designadas "},{"type":"element","tagName":"strong","properties":{},"children":[{"type":"text","value":"redes neuronais convolucionais"}]},{"type":"text","value":" (CNN, do inglês, convolutional neural networks). A sua propriedade fundamental é que conseguem detetar características de imagens como pontos claros ou escuros (ou de uma cor específica), extremidades com várias orientações, padrões, etc. Estas formam a base para detetar características mais abstratas, como as orelhas de um gato, o focinho de um cão, o olho de uma pessoa ou a forma octogonal de um sinal de STOP. Normalmente, seria difícil treinar uma rede neuronal para detetar essas características com base nos píxeis da imagem de entrada, porque as características podem aparecer em diferentes posições, orientações e tamanhos na imagem: mover o objeto ou o ângulo da câmara mudará drasticamente os valores dos píxeis, mesmo que o objeto em si nos pareça exatamente igual. Para que a rede aprendesse a detetar um sinal de STOP em todas estas diferentes condições, seriam necessárias grandes quantidades de dados de treino, visto que a rede apenas detetaria o sinal nas condições em que este tivesse aparecido nos dados de treino. Assim, por exemplo, um sinal de STOP no canto superior direito da imagem seria detetado apenas caso os dados de treino tivessem incluído uma imagem com o sinal de STOP no canto superior direito. As CNN conseguem reconhecer o objeto em qualquer local da imagem, independentemente de onde tenha sido observado nas imagens de treino."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Por que precisamos de CNN","description":"As CNN utilizam um truque inteligente para reduzir a quantidade de dados de treino necessários para detetar objetos em diferentes condições. Basicamente, o truque consiste em utilizar os mesmos pesos de entrada para muitos neurónios — para que todos estes sejam ativados pelo mesmo padrão — mas com diferentes píxeis de entrada. Por exemplo, podemos ter um conjunto de neurónios que são ativados pela orelha pontiaguda de um gato. Quando a entrada é a fotografia de um gato, são ativados dois neurónios, um para a orelha esquerda e outro para a direita. Também podemos permitir que os píxeis de entrada do neurónio sejam obtidos de uma área mais pequena ou maior, para que sejam ativados diferentes neurónios consoante a orelha apareça em diferentes escalas (tamanhos) e assim conseguirmos detetar as orelhas de um gato pequeno, mesmo que os dados de treino apenas incluíssem imagens de gatos grandes."},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Regra geral, os neurónios convolucionais são colocados nas camadas inferiores da rede, que processam os píxeis de entrada em bruto. Os neurónios básicos (como o neurónio percetrão discutido anteriormente) são colocados nas camadas mais elevadas, que processam a saída das camadas inferiores. As camadas inferiores podem normalmente ser treinadas utilizando a aprendizagem sem supervisão, sem uma tarefa de previsão específica em mente. Os seus pesos serão afinados para detetar características que aparecem frequentemente nos dados de entrada. Assim, nas fotografias de animais, as características habituais são orelhas e focinhos, enquanto nas imagens de edifícios, as características são componentes arquitetónicos como paredes, telhados, janelas, etc. Se for utilizada uma combinação de vários objetos e cenas como dados de entrada, então as características aprendidas pelas camadas inferiores serão mais ou menos genéricas. Isto significa que as camadas convolucionais pré-treinadas podem ser reutilizadas em muitas tarefas diferentes de processamento de imagens. Isto é extremamente importante, pois é fácil ter quantidades praticamente ilimitadas de dados de treino não etiquetados — imagens sem etiquetas — que podem ser utilizados para treinar as camadas inferiores. As camadas superiores são sempre treinadas mediante técnicas de aprendizagem automática supervisionada, como a retropropagação."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n"},{"type":"element","tagName":"illustrations","properties":{"motive":"gan","color":"#00B5AA","frombottom":"0","totalheight":"54%"},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"h2","properties":{},"children":[{"type":"text","value":"As redes neuronais sonham com ovelhas elétricas? Redes generativas antagónicas (GAN)"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Tendo criado uma rede neuronal com base na aprendizagem a partir de dados, a mesma pode ser usada para efeitos de previsão. Uma vez que as camadas superiores da rede foram treinadas de forma supervisionada para realizar uma tarefa específica de classificação ou previsão, as camadas superiores apenas são efetivamente úteis para essa tarefa. Uma rede treinada para detetar sinais de STOP é inútil para detetar números manuscritos ou gatos."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"É fascinante observar o resultado de uma análise das camadas inferiores pré-treinadas que vise estudar o aspeto das características que aprenderam. É possível fazê-lo gerando imagens que ativam um determinado conjunto de neurónios nas camadas inferiores. Analisando as imagens geradas, podemos ver qual o aspeto que a rede neuronal «pensa» que uma determinada característica tem, ou que aspeto teria uma imagem com um conjunto selecionado de características. Algumas pessoas até gostam de dizer que as redes «sonham» ou «alucinam» imagens (ver o "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/DeepDream","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"sistema DeepDream"}]},{"type":"text","value":" da Google)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"note","properties":{"heading":"Cuidado com as metáforas","description":"No entanto, gostaríamos de sublinhar, uma vez mais, o problema com metáforas como «redes que sonham», quando o que se pretende referir é a simples otimização da imagem de entrada — lembre-se das «palavras mala» de que falámos no Capítulo 1. A rede neuronal não sonha verdadeiramente, nem tem um conceito de gato que compreenderia de forma semelhante a um ser humano. Foi simplesmente treinada para reconhecer objetos e consegue gerar imagens que são semelhantes aos dados de entrada com os quais foi treinada."},"children":[]},{"type":"text","value":"\n"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Para gerar efetivamente gatos de aspeto real, rostos humanos ou outros objetos (obterá o que tiver usado como dados de treino), "},{"type":"element","tagName":"a","properties":{"href":"https://en.wikipedia.org/wiki/Ian_Goodfellow","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Ian Goodfellow"}]},{"type":"text","value":", que atualmente trabalha no Google Brain, propôs uma combinação inteligente de duas redes neuronais. A ideia é permitir que as duas redes concorram entre si. Uma das redes é treinada para gerar imagens como as existentes nos dados de treino. A tarefa da outra rede é separar as imagens geradas pela primeira rede das imagens reais dos dados de treino — esta é designada por rede antagónica e o sistema completo é designado rede generativa antagónica, ou GAN (do inglês, generative adversarial network)."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"O sistema treina os dois modelos lado a lado. No início do treino, o modelo antagónico tem uma tarefa fácil, distinguir entre as imagens reais dos dados de treino e as tentativas desajeitadas do modelo generativo. No entanto, à medida que a rede generativa vai melhorando, lenta, mas progressivamente, o modelo antagónico também tem de melhorar, e o ciclo continua até que, eventualmente, as imagens geradas são praticamente indistinguíveis das reais. A GAN não tenta apenas reproduzir as imagens nos dados de treino: essa seria uma estratégia demasiado simples para derrotar a rede antagónica. Ao invés disso, o sistema é treinado para também conseguir gerar imagens novas, de aspeto real."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-wrapper"],"style":"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 674px; "},"children":[{"type":"text","value":"\n      "},{"type":"element","tagName":"span","properties":{"className":["gatsby-resp-image-background-image"],"style":"padding-bottom: 99.72222222222223%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQEC/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/2gAMAwEAAhADEAAAAbdOXs6YjXOcHoNM8If/xAAeEAACAQMFAAAAAAAAAAAAAAABAgMAEhMEESEiM//aAAgBAQABBQLhjKA2rlAWRmO7dqsjakJxXHJP6//EABYRAAMAAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPwEd/8QAFREBAQAAAAAAAAAAAAAAAAAAASD/2gAIAQIBAT8BCP/EAB4QAAICAgIDAAAAAAAAAAAAAAABAhEhMRIiQXGh/9oACAEBAAY/Ak6yO14GkScaqP0jLFtbO/Gyfsq8KOhn/8QAGxABAQEBAQADAAAAAAAAAAAAAREAQTEhYXH/2gAIAQEAAT8h8aQ0XR6QMNKSfWUSGjTCIgcW65TzvlyvmzrIU4369//aAAwDAQACAAMAAAAQ1DCC/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAERMf/aAAgBAwEBPxBtORGi4PT/xAAYEQEBAQEBAAAAAAAAAAAAAAABABExIf/aAAgBAgEBPxBDdYPI4xy//8QAHRABAQACAwADAAAAAAAAAAAAAREAITFRYXGRof/aAAgBAQABPxBGNCPY2P5h6haEXXeA2g8bTzE0vtLHU9ygb67ASEsyM8tLiOGXWsQVXT7C5qeCwWXBtVSjv4M//9k='); background-size: cover; display: block;"},"children":[]},{"type":"text","value":"\n  "},{"type":"element","tagName":"img","properties":{"className":["gatsby-resp-image-image"],"alt":"fakecelebrityfaces","title":"fakecelebrityfaces","src":"/static/ac3753c9c9a3248de4bc71231b483be1/a6d30/5_3_fake-celebrity.jpg","srcSet":["/static/ac3753c9c9a3248de4bc71231b483be1/158ba/5_3_fake-celebrity.jpg 360w","/static/ac3753c9c9a3248de4bc71231b483be1/a6d30/5_3_fake-celebrity.jpg 674w"],"sizes":["(max-width:","674px)","100vw,","674px"],"style":"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;","loading":"lazy"},"children":[]},{"type":"text","value":"\n    "}]}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"As imagens acima foram geradas por uma GAN desenvolvida pela NVIDIA, no âmbito de um projeto liderado pelo "},{"type":"element","tagName":"a","properties":{"href":"https://users.aalto.fi/~lehtinj7/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"Prof. Jaakko Lehtinen"}]},{"type":"text","value":" (consulte "},{"type":"element","tagName":"a","properties":{"href":"https://www.technologyreview.com/the-download/609290/meet-the-fake-celebrities-dreamed-up-by-ai/","target":"_blank","rel":["noopener","noreferrer"]},"children":[{"type":"text","value":"este artigo para obter mais detalhes"}]},{"type":"text","value":")."}]},{"type":"text","value":"\n"},{"type":"element","tagName":"p","properties":{},"children":[{"type":"text","value":"Teria conseguido reconhecê-las como falsas?"}]},{"type":"text","value":"\n"},{"type":"element","tagName":"div","properties":{},"children":[{"type":"text","value":"\n  "},{"type":"element","tagName":"part-summary","properties":{"chapter":"5","heading":"Após concluir o Capítulo 5, deverá conseguir:","listitems":"[ {\"content\":\"Explicar o que é uma rede neuronal e onde é que estas redes estão a ser usadas com êxito\"}, {\"content\":\"Compreender os métodos técnicos que sustentam as redes neuronais\"}]"},"children":[{"type":"text","value":"\n  "}]},{"type":"text","value":"\n"}]}],"data":{"quirksMode":false}},"excerpt":"Essas técnicas sustentam praticamente todas as aplicações modernas de redes neuronais. No entanto, há algumas variações interessantes e…","frontmatter":{"path":"/pt/5/3","title":"Técnicas avançadas de redes neuronais","part":5,"type":"section","lang":"pt","section":3}}}]},"allParts":{"totalCount":6,"edges":[{"node":{"frontmatter":{"title":"O que é a IA?","path":"/pt/1","section":null,"part":1,"lang":"pt","bannerImage":{"publicURL":"/static/5cb707dcbce557b358c736c82a82b847/banner1.png"}}}},{"node":{"frontmatter":{"title":"Resolução de problemas com IA","path":"/pt/2","section":null,"part":2,"lang":"pt","bannerImage":{"publicURL":"/static/3217219fe81de9c2f030e51f04557962/banner2.png"}}}},{"node":{"frontmatter":{"title":"IA no mundo real","path":"/pt/3","section":null,"part":3,"lang":"pt","bannerImage":{"publicURL":"/static/8433f94cdf930cb1172a332eda51a0ae/banner3.png"}}}},{"node":{"frontmatter":{"title":"Aprendizagem automática","path":"/pt/4","section":null,"part":4,"lang":"pt","bannerImage":{"publicURL":"/static/fdc0e4c1dc187a976325542364658e54/banner4.png"}}}},{"node":{"frontmatter":{"title":"Redes neuronais","path":"/pt/5","section":null,"part":5,"lang":"pt","bannerImage":{"publicURL":"/static/8d6d86ca3c422d98b6213f5ddfbe8c07/banner5.png"}}}},{"node":{"frontmatter":{"title":"Implicações","path":"/pt/6","section":null,"part":6,"lang":"pt","bannerImage":{"publicURL":"/static/2943d36053a6dd8bd40b3dc3832bb0f8/banner6.png"}}}}]},"currentPart":{"htmlAst":{"type":"root","children":[],"data":{"quirksMode":false}},"frontmatter":{"path":"/pt/5","title":"Redes neuronais","part":5,"lang":"pt","quote":"Tradicionalmente, áreas como o processamento de linguagem natural e de imagens têm sido pontos sensíveis da IA. As redes neuronais e a aprendizagem profunda estão a ser utilizadas para alcançar melhorias significativas nestas áreas.","quoteAuthor":"","bannerImage":{"publicURL":"/static/8d6d86ca3c422d98b6213f5ddfbe8c07/banner5.png"}}},"allSections":{"totalCount":18,"edges":[{"node":{"frontmatter":{"title":"Como devemos definir a IA?","path":"/pt/1/1","section":1,"part":1,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Pesquisa e resolução de problemas","path":"/pt/2/1","section":1,"part":2,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Chances e probabilidade","path":"/pt/3/1","section":1,"part":3,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Tipos de aprendizagem automática","path":"/pt/4/1","section":1,"part":4,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Conceitos básicos das redes neuronais","path":"/pt/5/1","section":1,"part":5,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Sobre prever o futuro","path":"/pt/6/1","section":1,"part":6,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Domínios relacionados","path":"/pt/1/2","section":2,"part":1,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Resolução de problemas com a IA","path":"/pt/2/2","section":2,"part":2,"lang":"pt"}}},{"node":{"frontmatter":{"title":"A regra de Bayes","path":"/pt/3/2","section":2,"part":3,"lang":"pt"}}},{"node":{"frontmatter":{"title":"O classificador vizinho mais próximo","path":"/pt/4/2","section":2,"part":4,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Como são construídas as redes neuronais","path":"/pt/5/2","section":2,"part":5,"lang":"pt"}}},{"node":{"frontmatter":{"title":"As implicações da IA para a sociedade","path":"/pt/6/2","section":2,"part":6,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Filosofia da IA","path":"/pt/1/3","section":3,"part":1,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Pesquisa e jogos","path":"/pt/2/3","section":3,"part":2,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Classificação naïve Bayes","path":"/pt/3/3","section":3,"part":3,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Regressão","path":"/pt/4/3","section":3,"part":4,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Técnicas avançadas de redes neuronais","path":"/pt/5/3","section":3,"part":5,"lang":"pt"}}},{"node":{"frontmatter":{"title":"Resumo","path":"/pt/6/3","section":3,"part":6,"lang":"pt"}}}]},"site":{"siteMetadata":{"languages":{"defaultLangKey":"en","langs":["en","fi","se","de","ee","fr","it","fr-be","no","lt","lv","nl-be","mt","hr","pl","en-ie","ga","nl","sk","da","ro","sl","is","de-at","en-lu","bg","cs","pt","es","el"]}}}},"pageContext":{"part":5,"type":"section","lang":"pt"}},"staticQueryHashes":["3539470774","3539470774"]}