{"id":328197,"date":"2021-12-08T21:29:00","date_gmt":"2021-12-08T18:29:00","guid":{"rendered":"https:\/\/inform.com.de\/?p=328197"},"modified":"2021-12-07T19:36:48","modified_gmt":"2021-12-07T16:36:48","slug":"em-palavras-simples-sobre-o-complexo-o-que-sao-redes-neurais-escrevendo-uma-rede-neural-feedforward-do-zero","status":"publish","type":"post","link":"https:\/\/inform.com.de\/pt-pt\/em-palavras-simples-sobre-o-complexo-o-que-sao-redes-neurais-escrevendo-uma-rede-neural-feedforward-do-zero\/","title":{"rendered":"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero."},"content":{"rendered":"<h2>O que \u00e9 uma rede neural?<\/h2>\n<p>Como voc\u00ea sabe, nosso c\u00e9rebro \u00e9 uma coisa complexa. A coordena\u00e7\u00e3o de seu trabalho ocorre por meio de neur\u00f4nios &#8211; c\u00e9lulas nervosas com ramos que se estendem a partir deles. Entrela\u00e7ando-se entre si, os neur\u00f4nios formam uma rede neural &#8211; um mecanismo intrincado que determina toda a diversidade da psique humana. Esta \u00e9 a raiz de nossa autoconsci\u00eancia, o sentimento de n\u00f3s como indiv\u00edduos, guiados por nossos desejos e aspira\u00e7\u00f5es interiores.<\/p>\n<p>Se algum tipo de mau funcionamento ocorre no trabalho dos neur\u00f4nios, a pessoa muda irreconhec\u00edvel. Dependendo da gravidade da les\u00e3o, as mudan\u00e7as variam de sinais leves de comportamento desviante \u00e0 cessa\u00e7\u00e3o do funcionamento normal do corpo. Os danos cerebrais costumam ser fatais.<\/p>\n<p>Mas hoje n\u00e3o vamos falar sobre biologia, porque n\u00e3o apenas o sistema do nosso c\u00e9rebro \u00e9 chamado de redes neurais, mas tamb\u00e9m um programa de computador complexo com princ\u00edpios operacionais semelhantes. Como a massa cinzenta, \u00e9 fractal, ou seja, consiste em muitos programas mais simples que formam uma esp\u00e9cie de simbiose.<\/p>\n<p>Enquanto funciona, a rede neural aprende, ganha experi\u00eancia e se torna mais perfeita. Trata-se, assim, de um verdadeiro organismo digital, que um dia dever\u00e1 ultrapassar o seu criador.<\/p>\n<h2>Como as redes neurais apareceram<\/h2>\n<p>O surgimento do conceito de redes neurais artificiais remonta \u00e0 d\u00e9cada de 40 do s\u00e9culo anterior. Em particular, est\u00e1 associado aos cientistas McCulloch e Pitts, que tentaram simular os processos do c\u00e9rebro. Eles tamb\u00e9m propuseram a ideia de criar um sistema de autoaprendizagem projetado para realizar v\u00e1rias opera\u00e7\u00f5es l\u00f3gicas. O problema era que as tecnologias da \u00e9poca estavam longe das de hoje e os inventores n\u00e3o conseguiram concretizar totalmente suas id\u00e9ias.<\/p>\n<p>(Warren McCulloch e Walter Pitts)<\/p>\n<p>Seu trabalho foi continuado pelo fisiologista canadense Donald Hebb, e em 1949 o primeiro algoritmo para calcular ANN foi apresentado ao mundo. Pelos pr\u00f3ximos 10 anos, serviu de base para o desenvolvimento de outros cientistas, at\u00e9 que, finalmente, em 1958, Frank Rosenblatt criou o parceptron, uma tecnologia que imita o trabalho de nossos c\u00e9rebros. Para a \u00e9poca, essa novidade era incr\u00edvel. Cientistas sovi\u00e9ticos e americanos se juntaram ao trabalho, que tamb\u00e9m deram uma contribui\u00e7\u00e3o consider\u00e1vel para a pesquisa.<\/p>\n<p>No final do s\u00e9culo XX &#8211; in\u00edcio do s\u00e9culo XXI, a tecnologia deu um salto brusco, que serviu como um bom incentivo para atividades cient\u00edficas mais intensas, e em 2007 o cientista da computa\u00e7\u00e3o Jeffrey Hinton desenvolveu um algoritmo de aprendizado profundo para redes neurais, que agora \u00e9 amplamente utilizado em carros aut\u00f4nomos.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3d9471a.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>(Geoffrey Hinton)<\/p>\n<h3>Um pouco de historia<\/h3>\n<p>Pela primeira vez, o conceito de redes neurais artificiais (RNA) surgiu ao tentar simular os processos do c\u00e9rebro. O primeiro grande avan\u00e7o nesta \u00e1rea pode ser considerado a cria\u00e7\u00e3o do modelo de rede neural McCulloch-Pitts em 1943. Os cientistas desenvolveram primeiro um modelo de neur\u00f4nio artificial. Eles tamb\u00e9m propuseram a constru\u00e7\u00e3o de uma rede desses elementos para realizar opera\u00e7\u00f5es l\u00f3gicas. Mas o mais importante \u00e9 que os cientistas provaram que essa rede \u00e9 capaz de aprender.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\"  title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3e7c52e.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>O pr\u00f3ximo passo importante foi o desenvolvimento por Donald Hebb do primeiro algoritmo para calcular ANN em 1949, que se tornou fundamental para as d\u00e9cadas seguintes. Em 1958, Frank Rosenblatt desenvolveu o parceptron, um sistema que imita os processos do c\u00e9rebro. Ao mesmo tempo, a tecnologia n\u00e3o tinha an\u00e1logos e ainda \u00e9 fundamental nas redes neurais. Em 1986, quase simultaneamente, independentemente um do outro, os cientistas americanos e sovi\u00e9ticos melhoraram significativamente o m\u00e9todo fundamental de ensino do <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D1%81%D0%BB%D0%BE%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BF%D0%B5%D1%80%D1%86%D0%B5%D0%BF%D1%82%D1%80%D0%BE%D0%BD_%D0%A0%D1%83%D0%BC%D0%B5%D0%BB%D1%8C%D1%85%D0%B0%D1%80%D1%82%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">perceptron multicamadas<\/a>. Em 2007, as redes neurais renasceram. Cientista da computa\u00e7\u00e3o brit\u00e2nico <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A5%D0%B8%D0%BD%D1%82%D0%BE%D0%BD,_%D0%94%D0%B6%D0%B5%D1%84%D1%84%D1%80%D0%B8\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Jeffrey Hinton<\/a> desenvolveu pela primeira vez um algoritmo de aprendizado profundo para redes neurais multicamadas, que agora \u00e9, por exemplo, usado para operar ve\u00edculos n\u00e3o tripulados.<\/p>\n<h3>Resumidamente sobre o principal<\/h3>\n<p>No sentido geral da palavra, as redes neurais s\u00e3o modelos matem\u00e1ticos que funcionam com base no princ\u00edpio das redes de c\u00e9lulas nervosas em um organismo animal. ANNs podem ser implementadas em solu\u00e7\u00f5es program\u00e1veis \u200b\u200be de hardware. Para facilitar a percep\u00e7\u00e3o, um neur\u00f4nio pode ser imaginado como um tipo de c\u00e9lula, que tem muitos orif\u00edcios de entrada e uma sa\u00edda. Quantos sinais de entrada s\u00e3o formados no de sa\u00edda determina o algoritmo de c\u00e1lculo. Os valores efetivos s\u00e3o alimentados para cada entrada de neur\u00f4nio, que s\u00e3o ent\u00e3o propagados ao longo de conex\u00f5es interneuronais (sinopse). As sinapses t\u00eam um par\u00e2metro &#8211; peso, devido ao qual as informa\u00e7\u00f5es de entrada mudam quando se movem de um neur\u00f4nio para outro. A maneira mais f\u00e1cil de imaginar como as redes neurais funcionam pode ser representada pelo exemplo de mistura de cores. Os neur\u00f4nios azuis, verdes e vermelhos t\u00eam pesos diferentes.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea3f7db4e.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>A pr\u00f3pria rede neural \u00e9 um sistema de muitos desses neur\u00f4nios (processadores). Individualmente, esses processadores s\u00e3o bastante simples (muito mais simples do que um processador de computador pessoal), mas quando conectados a um grande sistema, os neur\u00f4nios s\u00e3o capazes de realizar tarefas muito complexas.<\/p>\n<p>Dependendo da \u00e1rea de aplica\u00e7\u00e3o, uma rede neural pode ser interpretada de diferentes maneiras. Por exemplo, do ponto de vista do aprendizado de m\u00e1quina, uma RNA \u00e9 um m\u00e9todo de reconhecimento de padr\u00f5es. Do ponto de vista matem\u00e1tico, este \u00e9 um problema multipar\u00e2metro. Do ponto de vista da cibern\u00e9tica, \u00e9 um modelo de controle adaptativo da rob\u00f3tica. Para a intelig\u00eancia artificial, a RNA \u00e9 um componente fundamental para modelar a intelig\u00eancia natural usando algoritmos computacionais.<\/p>\n<p>A principal vantagem das redes neurais sobre os algoritmos de computa\u00e7\u00e3o convencionais \u00e9 sua capacidade de aprender. No sentido geral da palavra, a aprendizagem consiste em encontrar os coeficientes de acoplamento corretos entre os neur\u00f4nios, bem como em generalizar dados e identificar rela\u00e7\u00f5es complexas entre sinais de entrada e sa\u00edda. Na verdade, o treinamento bem-sucedido de uma rede neural significa que o sistema ser\u00e1 capaz de identificar o resultado correto com base em dados n\u00e3o presentes no conjunto de treinamento.<\/p>\n<h2>Aplica\u00e7\u00e3o de redes neurais<\/h2>\n<p>A gama de aplica\u00e7\u00e3o das redes neurais \u00e9 incrivelmente ampla e \u00e9 limitada apenas pela nossa imagina\u00e7\u00e3o. Vamos listar alguns deles:<\/p>\n<ul>\n<li>Sistemas autom\u00e1ticos de controle de transporte. Pilotos autom\u00e1ticos.<\/li>\n<li>A Internet. Assistentes de voz, navegadores inteligentes, programas de tradu\u00e7\u00e3o.<\/li>\n<li>Economia e neg\u00f3cios. Previs\u00e3o de taxas de c\u00e2mbio, programas de contabilidade modernos, rob\u00f4s comerciais, programas de avalia\u00e7\u00e3o de risco, gerenciamento de m\u00e1quinas de produ\u00e7\u00e3o, controle de qualidade, etc.<\/li>\n<li>Medicamento. M\u00e9todos modernos de diagn\u00f3stico, an\u00e1lise da efic\u00e1cia do tratamento, processamento de imagens m\u00e9dicas.<\/li>\n<li>Rob\u00f3tica. Planejamento de rotas, reconhecimento de fala e gestos.<\/li>\n<li>Seguran\u00e7a. Gest\u00e3o de sistemas de videovigil\u00e2ncia e alarmes.<\/li>\n<li>Jogos e entretenimento de computador. Bots inteligentes, programas anal\u00edticos para xadrez e outros jogos.<\/li>\n<li>Arte. Cria\u00e7\u00e3o de pinturas, livros e outros artefatos culturais.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4177889.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<h3>Situa\u00e7\u00e3o de hoje<\/h3>\n<p>E por mais promissora que essa tecnologia seja, at\u00e9 agora as RNAs ainda est\u00e3o muito longe das capacidades do c\u00e9rebro e do pensamento humanos. No entanto, as redes neurais j\u00e1 est\u00e3o sendo usadas em muitas \u00e1reas da atividade humana. At\u00e9 agora, eles n\u00e3o s\u00e3o capazes de tomar decis\u00f5es altamente intelectuais, mas s\u00e3o capazes de substituir uma pessoa onde antes ela era necess\u00e1ria. Dentre as in\u00fameras \u00e1reas de aplica\u00e7\u00e3o da ANN, pode-se destacar: a cria\u00e7\u00e3o de sistemas de autoaprendizagem de processos de produ\u00e7\u00e3o, ve\u00edculos n\u00e3o tripulados, sistemas de reconhecimento de imagem, sistemas de seguran\u00e7a inteligentes, rob\u00f3tica, sistemas de monitoramento de qualidade, interfaces de intera\u00e7\u00e3o de voz, sistemas anal\u00edticos e muito mais. Esse uso generalizado de redes neurais, entre outras coisas, se deve ao surgimento de v\u00e1rias maneiras de acelerar o aprendizado de RNA.<\/p>\n<p>Hoje, o mercado de redes neurais \u00e9 enorme &#8211; bilh\u00f5es e bilh\u00f5es de d\u00f3lares. Como mostra a pr\u00e1tica, a maioria das tecnologias de rede neural em todo o mundo diferem pouco umas das outras. No entanto, o uso de redes neurais \u00e9 uma tarefa muito cara, que na maioria dos casos apenas grandes empresas podem pagar. Para o desenvolvimento, treinamento e teste de redes neurais, \u00e9 necess\u00e1rio grande poder de computa\u00e7\u00e3o, \u00e9 \u00f3bvio que grandes players do mercado de TI j\u00e1 est\u00e3o fartos disso. Entre as principais empresas l\u00edderes de desenvolvimento nesta \u00e1rea est\u00e3o Google DeepMind, Microsoft Research, IBM, Facebook e Baidu.<\/p>\n<p>Claro, tudo isso \u00e9 bom: as redes neurais est\u00e3o se desenvolvendo, o mercado est\u00e1 crescendo, mas at\u00e9 agora a tarefa principal n\u00e3o foi resolvida. A humanidade falhou em criar uma tecnologia que se aproxima em capacidades do c\u00e9rebro humano. Vamos dar uma olhada nas principais diferen\u00e7as entre o c\u00e9rebro humano e as redes neurais artificiais.<\/p>\n<h3>Por que as redes neurais ainda est\u00e3o longe do c\u00e9rebro humano?<\/h3>\n<p>A diferen\u00e7a mais importante, que muda fundamentalmente o princ\u00edpio e a efici\u00eancia do sistema, \u00e9 a diferente transmiss\u00e3o de sinais em redes neurais artificiais e na rede biol\u00f3gica de neur\u00f4nios. O fato \u00e9 que na RNA os neur\u00f4nios transmitem valores que s\u00e3o valores reais, ou seja, n\u00fameros. No c\u00e9rebro humano, os impulsos com amplitude fixa s\u00e3o transmitidos, e esses impulsos s\u00e3o quase instant\u00e2neos. Conseq\u00fcentemente, h\u00e1 uma s\u00e9rie de vantagens na rede humana de neur\u00f4nios.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea437f470.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Primeiro, as linhas de comunica\u00e7\u00e3o no c\u00e9rebro s\u00e3o muito mais eficientes e econ\u00f4micas do que nas RNAs. Em segundo lugar, o circuito de impulso garante a simplicidade da implementa\u00e7\u00e3o da tecnologia: basta usar circuitos anal\u00f3gicos em vez de mecanismos computacionais complexos. Em \u00faltima an\u00e1lise, as redes de impulso s\u00e3o protegidas contra interfer\u00eancia ac\u00fastica. Os n\u00fameros v\u00e1lidos est\u00e3o sujeitos a ru\u00eddo, o que aumenta a chance de ocorr\u00eancia de erros.<\/p>\n<h2>Perspectivas para redes neurais<\/h2>\n<p>O movimento ludita come\u00e7ou no in\u00edcio do s\u00e9culo XIX. Esta palavra foi usada para descrever as pessoas que participam de protestos contra a urbaniza\u00e7\u00e3o. Com a industrializa\u00e7\u00e3o da sociedade, quando as m\u00e1quinas come\u00e7aram a substituir gradativamente os trabalhadores, muitas pessoas ficaram desempregadas e extremamente insatisfeitas com sua situa\u00e7\u00e3o. Imaginem que choque eles teriam sentido se soubessem que em algumas centenas de anos as m\u00e1quinas ser\u00e3o capazes de falar e at\u00e9 mesmo se mover independentemente!<\/p>\n<p>Enquanto isso, esses tempos chegaram e hoje tamb\u00e9m h\u00e1 retr\u00f3grados que temem que a rob\u00f3tica e o desenvolvimento da tecnologia em geral possam fazer uma brincadeira cruel com as pessoas. Afinal, se as m\u00e1quinas j\u00e1 s\u00e3o capazes de realizar tantas tarefas hoje, no futuro ocupar\u00e3o todas as fun\u00e7\u00f5es, tornando as pessoas desnecess\u00e1rias. E essa posi\u00e7\u00e3o s\u00f3 \u00e9 confirmada pelas avalia\u00e7\u00f5es de especialistas que, de vez em quando, predizem o desaparecimento iminente de uma determinada profiss\u00e3o.<\/p>\n<p>Esta posi\u00e7\u00e3o tem o direito de existir, mas n\u00e3o \u00e9 totalmente correta, pois com o tempo, n\u00e3o s\u00f3 as velhas profiss\u00f5es desaparecem, mas tamb\u00e9m surgem novas. Sim, h\u00e1 uma ordem de magnitude menos pastores e ca\u00e7adores do que antes, mas apareceram programadores e profissionais de marketing. Em momentos decisivos da hist\u00f3ria, a economia se reorienta, eliminando o que \u00e9 desnecess\u00e1rio e dotando generosamente os que precisam.<\/p>\n<p>A crescente influ\u00eancia das redes neurais artificiais \u00e9 \u00f3bvia e \u00e9 prov\u00e1vel que em breve estar\u00e3o literalmente em toda parte, mas ter medo disso significa rejeitar a pr\u00f3pria natureza humana, que consiste no desejo de descoberta e realiza\u00e7\u00e3o.<\/p>\n<h2>Cria\u00e7\u00e3o de blocos neurais<\/h2>\n<p>Primeiro, voc\u00ea precisa decidir quais s\u00e3o os componentes b\u00e1sicos de uma rede neural &#8211; <strong>neur\u00f4nios<\/strong>. O neur\u00f4nio recebe dados de entrada, realiza certas <strong>opera\u00e7\u00f5es matem\u00e1ticas com eles<\/strong> e, em seguida, produz o resultado. Um neur\u00f4nio com duas entradas se parece com isto:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/fed4726d9a0d92019fee18550c1d79a0-1.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Tr\u00eas coisas est\u00e3o acontecendo aqui. Primeiro, cada entrada \u00e9 multiplicada por seu peso (mostrado em <strong>vermelho<\/strong> no diagrama ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea460c31b.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Em seguida, todas as entradas ponderadas s\u00e3o adicionadas juntamente com o deslocamento <code>b<\/code>(indicado em <strong>verde<\/strong> no diagrama ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea46be05a.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Por fim, o valor \u00e9 transferido por meio da fun\u00e7\u00e3o de ativa\u00e7\u00e3o (marcada em <strong>amarelo<\/strong> no diagrama ):<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea477ea32.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>A fun\u00e7\u00e3o de ativa\u00e7\u00e3o \u00e9 usada para conectar entradas n\u00e3o relacionadas a uma sa\u00edda de formato simples e previs\u00edvel. Como regra, a fun\u00e7\u00e3o <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%B8%D0%B3%D0%BC%D0%BE%D0%B8%D0%B4%D0%B0\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sigm\u00f3ide<\/a> \u00e9 considerada como a fun\u00e7\u00e3o de ativa\u00e7\u00e3o usada :<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4848293.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p><strong>A fun\u00e7\u00e3o sigm\u00f3ide<\/strong> exibe apenas n\u00fameros em um intervalo <code>(0, 1)<\/code>. Voc\u00ea pode pensar nisso como compactar de <code>(\u2212\u221e, +\u221e)<\/code>para <code>(0, 1)<\/code>. Grandes n\u00fameros negativos tornam-se <code>~0<\/code>, e grandes n\u00fameros positivos tornam-se <code>~1<\/code>.<\/p>\n<h2>Um exemplo simples de como trabalhar com neur\u00f4nios em Python<\/h2>\n<p>Suponha que temos um <strong>neur\u00f4nio com duas entradas<\/strong> que usa uma fun\u00e7\u00e3o de <strong>ativa\u00e7\u00e3o sigm\u00f3ide<\/strong> e tem os seguintes par\u00e2metros:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea491789f.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p><code>w = [0,1]<\/code>\u00c9 apenas uma forma de escrever <code>w1 = 0, w2 = 1<\/code>em vetor. Vamos atribuir uma entrada com um valor ao neur\u00f4nio <code>x = [2, 3]<\/code>. Para uma representa\u00e7\u00e3o mais compacta, o <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BA%D0%B0%D0%BB%D1%8F%D1%80%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">produto escalar<\/a> ser\u00e1 usado .<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea49c304f.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Dado que a entrada foi <code>x = [2, 3]<\/code>, a sa\u00edda ser\u00e1 igual <code>0.999<\/code>. Isso \u00e9 tudo. Esse processo de <strong>passar dados de entrada<\/strong> para receber sa\u00edda \u00e9 chamado de feedforward.<\/p>\n<h2>Construindo um neur\u00f4nio do zero em Python<\/h2>\n<p>Vamos come\u00e7ar a implementar o neur\u00f4nio. Isso exigir\u00e1 o uso de NumPy. \u00c9 uma biblioteca Python computacional poderosa que usa opera\u00e7\u00f5es matem\u00e1ticas:<\/p>\n<table>\n<tbody>\n<tr>\n<td>\n<div>\n<p><span><span>1<\/span><\/span><\/p>\n<p><span><span>2<\/span><\/span><\/p>\n<p><span><span>3<\/span><\/span><\/p>\n<p><span><span>quatro<\/span><\/span><\/p>\n<p><span><span>cinco<\/span><\/span><\/p>\n<p><span><span>6<\/span><\/span><\/p>\n<p><span><span>7<\/span><\/span><\/p>\n<p><span><span>oito<\/span><\/span><\/p>\n<p><span><span>nove<\/span><\/span><\/p>\n<p><span><span>10<\/span><\/span><\/p>\n<p><span><span>onze<\/span><\/span><\/p>\n<p><span><span>12<\/span><\/span><\/p>\n<p><span><span>13<\/span><\/span><\/p>\n<p><span><span>quatorze<\/span><\/span><\/p>\n<p><span><span>quinze<\/span><\/span><\/p>\n<p><span><span>dezesseis<\/span><\/span><\/p>\n<p><span><span>17<\/span><\/span><\/p>\n<p><span><span>dezoito<\/span><\/span><\/p>\n<p><span><span>dezenove<\/span><\/span><\/p>\n<p><span><span>vinte<\/span><\/span><\/p>\n<p><span><span>21<\/span><\/span><\/p>\n<p><span><span>22<\/span><\/span><\/p>\n<p><span><span>23<\/span><\/span><\/p>\n<p><span><span>24<\/span><\/span><\/p>\n<p><span><span>25<\/span><\/span><\/p>\n<p><span><span>26<\/span><\/span><\/p>\n<p><span><span>27<\/span><\/span><\/p>\n<\/div>\n<\/td>\n<td>\n<div>\n<p><span><span><span>importar <\/span><\/span><\/span><span><span><span>numpy <\/span><\/span><span><span>como <\/span><\/span><span><span>np<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>def <\/span><\/span><\/span><span><span><span>sigm\u00f3ide <\/span><\/span><span><span>( <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># Nossa fun\u00e7\u00e3o de ativa\u00e7\u00e3o: f (x) = 1 \/ (1 + e ^ (- x))<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>retornar <\/span><\/span><\/span><span><span><span>1 <\/span><\/span><span><span>\/ <\/span><\/span><span><span>( <\/span><\/span><span><span>1 <\/span><\/span><span><span>+ <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>exp <\/span><\/span><span><span>( <\/span><\/span><span><span>&#8211; <\/span><\/span><span><span>x <\/span><\/span><span><span>) <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>classe <\/span><\/span><\/span><span><span><span>Neuron <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>__init__ <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>, <\/span><\/span><span><span>weight <\/span><\/span><span><span>, <\/span><\/span><span><span>bias <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>eu <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>pesos <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>pesos<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>eu <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>vi\u00e9s <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>vi\u00e9s<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>def <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><span><span>( <\/span><\/span><span><span>self <\/span><\/span><span><span>, <\/span><\/span><span><span>inputs <\/span><\/span><span><span>) <\/span><\/span><span><span>:<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># Insira os dados de peso, adicione o deslocamento<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span># e uso subsequente da fun\u00e7\u00e3o de ativa\u00e7\u00e3o<\/span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>total <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>ponto <\/span><\/span><span><span>( <\/span><\/span><span><span>auto <\/span><\/span><span><span>. <\/span><\/span><span><span>pesos <\/span><\/span><span><span>, <\/span><\/span><span><span>entradas <\/span><\/span><span><span>) <\/span><\/span><span><span>+ <\/span><\/span><span><span>auto <\/span><\/span><span><span>. <\/span><\/span><span><span>tend\u00eancia<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><\/span><span><span><span>retornar <\/span><\/span><\/span><span><span><span>sigm\u00f3ide <\/span><\/span><span><span>( <\/span><\/span><span><span>total <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>pesos <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matriz <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>0 <\/span><\/span><span><span>, <\/span><\/span><span><span>1 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># w1 = 0, w2 = 1<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>polariza\u00e7\u00e3o <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>4 <\/span><\/span><span><span># b = 4<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>n <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>Neur\u00f4nio <\/span><\/span><span><span>( <\/span><\/span><span><span>pesos <\/span><\/span><span><span>, <\/span><\/span><span><span>polariza\u00e7\u00e3o <\/span><\/span><span><span>)<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>x <\/span><\/span><\/span><span><span><span>= <\/span><\/span><span><span>np <\/span><\/span><span><span>. <\/span><\/span><span><span>matriz <\/span><\/span><span><span>( <\/span><\/span><span><span>[ <\/span><\/span><span><span>2 <\/span><\/span><span><span>, <\/span><\/span><span><span>3 <\/span><\/span><span><span>] <\/span><\/span><span><span>) <\/span><\/span><span><span># x1 = 2, x2 = 3<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<p><span><span><span>imprimir <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>n <\/span><\/span><\/span><span><span><span>. <\/span><\/span><\/span><span><span><span>feedforward <\/span><\/span><\/span><span><span><span>( <\/span><\/span><\/span><span><span><span>x <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span>) <\/span><\/span><\/span><span><span><span># 0.9990889488055994<\/span><\/span><\/span><span><\/span><span><span><\/span><\/span><\/p>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Voc\u00ea reconhece os n\u00fameros? Este \u00e9 o mesmo exemplo discutido anteriormente. A resposta recebida desta vez tamb\u00e9m \u00e9 igual <code>0.999<\/code>.<\/p>\n<h2>Um exemplo de coleta de neur\u00f4nios em uma rede neural<\/h2>\n<p><strong>Uma rede neural<\/strong> \u00e9 essencialmente um grupo de <strong>neur\u00f4nios interconectados<\/strong>. Uma rede neural simples se parece com isto:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/12\/0e2c31c441e9cdc4eb35c1c746dc5651-1.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Na camada introdut\u00f3ria da rede, existem duas entradas &#8211; <code>x1<\/code>e <code>x2<\/code>. Existem dois n\u00eautrons na camada oculta &#8211; <code>h1<\/code>e <code>h2<\/code>. H\u00e1 um neur\u00f4nio na camada de sa\u00edda &#8211; <code>\u043e1<\/code>. Observe que as entradas para <code>\u043e1<\/code>s\u00e3o resultados de sa\u00edda <code>h1<\/code>e <code>h2<\/code>. Esta <strong>\u00e9 a forma como a rede neural \u00e9 constru\u00eddo<\/strong>.<\/p>\n<blockquote>\n<p><strong>Uma camada oculta<\/strong> \u00e9 qualquer camada entre a camada de entrada e a camada de sa\u00edda, que s\u00e3o a primeira e a \u00faltima camadas, respectivamente. Pode haver v\u00e1rias camadas ocultas.<\/p>\n<\/blockquote>\n<h2>Treinamento de rede neural<\/h2>\n<p>Sa\u00edda <strong>\u0177 de uma<\/strong> rede neural simples de duas camadas:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Na equa\u00e7\u00e3o acima, os pesos W e os vieses b s\u00e3o as \u00fanicas vari\u00e1veis \u200b\u200bque afetam o produto \u0177.<\/p>\n<p>Naturalmente, os valores corretos para os pesos e vieses determinam a precis\u00e3o das previs\u00f5es. O processo de ajuste fino de pesos e vieses dos dados de entrada \u00e9 conhecido como treinamento de rede neural.<\/p>\n<p>Cada itera\u00e7\u00e3o do processo de treinamento consiste nas seguintes etapas<\/p>\n<ul>\n<li>calcular a sa\u00edda prevista \u0177 chamada de propaga\u00e7\u00e3o direta<\/li>\n<li>atualizar pesos e vieses chamados backpropagation<\/li>\n<\/ul>\n<p>O gr\u00e1fico sequencial abaixo ilustra o processo:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4c1cc09.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<h3>Distribui\u00e7\u00e3o direta<\/h3>\n<p>Como vimos no gr\u00e1fico acima, a propaga\u00e7\u00e3o direta \u00e9 apenas um c\u00e1lculo simples e, para uma rede neural b\u00e1sica de 2 camadas, a sa\u00edda da rede neural \u00e9 dada por:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4b5814e.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Vamos adicionar feedforward ao nosso c\u00f3digo Python para fazer isso. Observe que, para simplificar, assumimos que os deslocamentos s\u00e3o 0.<\/p>\n<p>No entanto, precisamos de uma forma de avaliar a &#8220;bondade&#8221; de nossas previs\u00f5es, ou seja, o qu\u00e3o longe nossas previs\u00f5es est\u00e3o). <strong>A fun\u00e7\u00e3o de perda<\/strong> nos permite fazer exatamente isso.<\/p>\n<h3>Fun\u00e7\u00e3o de perda<\/h3>\n<p>Existem muitas fun\u00e7\u00f5es de perda dispon\u00edveis, e a natureza do nosso problema deve ditar nossa escolha da fun\u00e7\u00e3o de perda. Neste artigo, usaremos a <strong>soma dos quadrados dos erros<\/strong> como a fun\u00e7\u00e3o de perda.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4dd5677.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>A soma dos erros quadrados \u00e9 a m\u00e9dia da diferen\u00e7a entre cada valor previsto e o valor real.<\/p>\n<p><strong>O objetivo do treinamento \u00e9 encontrar um conjunto de pesos e vieses que minimizem a fun\u00e7\u00e3o de perda.<\/strong><\/p>\n<h3>Propaga\u00e7\u00e3o de volta<\/h3>\n<p>Agora que medimos nosso erro de previs\u00e3o (perdas), precisamos encontrar uma maneira de <strong>propagar o erro de volta<\/strong> e atualizar nossos pesos e vieses.<\/p>\n<p>Para descobrir o valor apropriado para corrigir os pesos e vieses, precisamos saber a derivada da fun\u00e7\u00e3o de perda com rela\u00e7\u00e3o aos pesos e vieses.<\/p>\n<p>Lembre-se da an\u00e1lise que a <strong>derivada de uma fun\u00e7\u00e3o \u00e9 a tangente da inclina\u00e7\u00e3o da fun\u00e7\u00e3o.<\/strong><\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4e9fbda.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Se tivermos uma derivada, podemos simplesmente atualizar os pesos e vieses aumentando \/ diminuindo-os (consulte o diagrama acima). Isso \u00e9 chamado de <strong>descida gradiente<\/strong>.<\/p>\n<p>No entanto, n\u00e3o podemos calcular diretamente a derivada da fun\u00e7\u00e3o de perda com rela\u00e7\u00e3o aos pesos e vieses, uma vez que a equa\u00e7\u00e3o da fun\u00e7\u00e3o de perda n\u00e3o cont\u00e9m pesos e vieses. Portanto, precisamos de uma regra em cadeia para auxiliar no c\u00e1lculo.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea4fe692d.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Fuh! Era complicado, mas nos permitiu obter o que precisamos &#8211; a derivada (inclina\u00e7\u00e3o) da fun\u00e7\u00e3o de perda em rela\u00e7\u00e3o aos pesos. Agora podemos ajustar os pesos de acordo.<\/p>\n<p>Vamos adicionar a fun\u00e7\u00e3o backpropagation ao nosso c\u00f3digo Python:<\/p>\n<h2>Derivadas parciais<\/h2>\n<p>Derivadas parciais podem ser calculadas, para que se saiba qual foi a contribui\u00e7\u00e3o para o erro de cada peso. A necessidade de derivados \u00e9 \u00f3bvia. Imagine uma rede neural tentando encontrar a velocidade ideal para um ve\u00edculo aut\u00f4nomo. Se o carro detectar que est\u00e1 indo mais r\u00e1pido ou mais devagar do que a velocidade necess\u00e1ria, a rede neural mudar\u00e1 a velocidade, acelerando ou desacelerando o carro. O que est\u00e1 acelerando \/ desacelerando ao mesmo tempo? Derivadas de velocidade.<\/p>\n<p>Vejamos a necessidade de derivadas parciais usando um exemplo.<\/p>\n<p>Suponha que as crian\u00e7as sejam solicitadas a lan\u00e7ar um dardo em um alvo, visando o centro. Aqui est\u00e3o os resultados:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51122d6.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Agora, se encontrarmos um erro geral e simplesmente subtra\u00ed-lo de todos os pesos, resumiremos os erros cometidos por cada um. Ent\u00e3o, digamos que a crian\u00e7a bateu muito baixo, mas pedimos a todas as crian\u00e7as que se esforcem para atingir o alvo, ent\u00e3o isso levar\u00e1 \u00e0 seguinte imagem:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea51cbdd8.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>O erro de v\u00e1rias crian\u00e7as pode diminuir, mas o erro total ainda est\u00e1 aumentando.<\/p>\n<p>Tendo encontrado as derivadas parciais, encontramos os erros correspondentes a cada peso separadamente. Se voc\u00ea corrigir seletivamente os pesos, obter\u00e1 o seguinte:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea528fe3a.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<h2>Hiperpar\u00e2metros<\/h2>\n<p>Uma rede neural \u00e9 usada para automatizar a sele\u00e7\u00e3o de recursos, mas alguns par\u00e2metros s\u00e3o configurados manualmente.<\/p>\n<h3>Taxa de Aprendizagem<\/h3>\n<p>A taxa de aprendizagem \u00e9 um hiperpar\u00e2metro muito importante. Se a taxa de aprendizado for muito baixa, mesmo depois de treinar a rede neural por um longo tempo, os resultados estar\u00e3o longe de serem \u00f3timos. Os resultados ser\u00e3o mais ou menos assim:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea534e6eb.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Por outro lado, se a taxa de aprendizado for muito alta, a rede responder\u00e1 muito rapidamente. O resultado \u00e9 o seguinte:<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea540f66b.jpg\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<h2>Redes neurais profundas<\/h2>\n<p>Aprendizado profundo \u00e9 uma classe de algoritmos de aprendizado de m\u00e1quina que aprendem a entender os dados mais profundamente (de forma mais abstrata). Algoritmos populares para redes neurais de aprendizado profundo s\u00e3o apresentados no diagrama abaixo.<\/p>\n<p><a href=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" data-rel=\"lightbox-image-bGlnaHRib3g=\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/inform.com.de\/wp-content\/uploads\/2021\/04\/post-190136-607bea55368b9.png\" alt=\"Em palavras simples sobre o complexo: o que s\u00e3o redes neurais? Escrevendo uma rede neural feedforward do zero.\" ><\/a><\/p>\n<p>Algoritmos de rede neural populares (<a href=\"http:\/\/www.asimovinstitute.org\/neural-network-zoo\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/www.asimovinstitute.org\/neural-network-zoo<\/a> )<\/p>\n<p>Mais formalmente na aprendizagem profunda:<\/p>\n<ul>\n<li>Uma cascata (pipeline, como um fluxo transmitido sequencialmente) \u00e9 usada a partir de uma variedade de camadas de processamento (n\u00e3o linear) para extrair e transformar recursos;<\/li>\n<li>Baseado no estudo de caracter\u00edsticas (apresenta\u00e7\u00e3o de informa\u00e7\u00f5es) em dados sem aprendizagem supervisionada. As fun\u00e7\u00f5es de n\u00edvel superior (que est\u00e3o nas \u00faltimas camadas) s\u00e3o obtidas a partir das fun\u00e7\u00f5es de n\u00edvel inferior (que est\u00e3o nas camadas das camadas iniciais);<\/li>\n<li>Explora visualiza\u00e7\u00f5es em camadas que correspondem a diferentes n\u00edveis de abstra\u00e7\u00e3o; n\u00edveis formam uma hierarquia de apresenta\u00e7\u00e3o.<\/li>\n<\/ul>\n<h2>Treine a rede neural usando fun\u00e7\u00f5es XOR<\/h2>\n<p>Por que a fun\u00e7\u00e3o XOR \u00e9 t\u00e3o interessante? Simplesmente porque n\u00e3o pode ser obtido por um neur\u00f4nio: 0 ^ 0 = 0, 0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0. No entanto, \u00e9 facilmente obtido aumentando o n\u00famero de neur\u00f4nios. Tentaremos treinar uma rede com 3 neur\u00f4nios na camada oculta e 1 sa\u00edda (j\u00e1 que temos apenas uma sa\u00edda). Para fazer isso, precisamos criar uma matriz de vetores X e Y com dados de treinamento e a pr\u00f3pria rede neural:<\/p>\n<pre><code>\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] X = { new Vector(0, 0), new Vector(0, 1), new Vector(1, 0), new Vector(1, 1) }; \/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 Vector[] Y = { new Vector(0.0), \/\/ 0 ^ 0 = 0 new Vector(1.0), \/\/ 0 ^ 1 = 1 new Vector(1.0), \/\/ 1 ^ 0 = 1 new Vector(0.0) \/\/ 1 ^ 1 = 0 }; Network network = new Network(new int[]{2, 3, 1}); \/\/ \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u0441\u0435\u0442\u044c \u0441 \u0434\u0432\u0443\u043c\u044f \u0432\u0445\u043e\u0434\u0430\u043c\u0438, \u0442\u0440\u0435\u043c\u044f \u043d\u0435\u0439\u0440\u043e\u043d\u0430\u043c\u0438 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0441\u043b\u043e\u0435 \u0438 \u043e\u0434\u043d\u0438\u043c \u0432\u044b\u0445\u043e\u0434\u043e\u043c <\/code><\/pre>\n<p>Em seguida, come\u00e7amos o treinamento com os seguintes par\u00e2metros: taxa de aprendizagem &#8211; 0,5, n\u00famero de \u00e9pocas &#8211; 100.000, valor de erro &#8211; 1e-7:<\/p>\n<pre><code>network.Train(X, Y, 0.5, 1e-7, 100000); \/\/ \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0441\u0435\u0442\u0438 <\/code><\/pre>\n<p>Ap\u00f3s o treinamento, vamos ver os resultados realizando uma passagem direta para todos os elementos:<\/p>\n<pre><code>for (int i = 0; i <\/code><\/pre>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte de grava\u00e7\u00e3o:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/lastici.ru\" class=\"external external_icon\">lastici.ru<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Estamos falando de redes neurais: apresenta\u00e7\u00e3o f\u00e1cil de informa\u00e7\u00f5es complexas para que at\u00e9 uma crian\u00e7a possa entender. Estudamos a base e nos aprofundamos no t\u00f3pico do zero.<\/p>\n","protected":false},"author":1,"featured_media":413743,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[433,254,367,334,324,169,290],"tags":[],"class_list":["post-328197","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-computador","category-diversos","category-o-negocio","category-para-homens","category-para-mulheres","category-pesquisa","category-tecnologias-2"],"_links":{"self":[{"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/posts\/328197","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/comments?post=328197"}],"version-history":[{"count":0,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/posts\/328197\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/media\/413743"}],"wp:attachment":[{"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/media?parent=328197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/categories?post=328197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.com.de\/pt-pt\/wp-json\/wp\/v2\/tags?post=328197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}