Vetores, Matrizes e Gradiente: Redes Neurais como Aproximadoras Universais de Funções

639 views6003 WordsCopy TextShare
Prof. Marlon Ferrari
Fala turma!! Iremos projetar uma Rede Neural do zero pra entender como ela aprende utilizando suas c...
Video Transcript:
esse vídeo vai mudar a forma com que você entende Deep learning Fala galera Professor Marlon aqui mais um vídeo aí que eu espero que ajude muita gente a entender esse mundo de yad Deep learning de redes neurais e dessa vez um pouco mais fundamental tenho certeza que depois dessa aula dessa visão vocês vão ter muito menos dificuldade de acompanhar as transformações que estão acontecendo nas arquiteturas de I porque no fundamento da deep learning e da ia como um todo nós temos as operações de matrizes e vetores essa imagem aqui explica tudo nós temos um conjunto de matrizes que são multiplicadas e geram resultados generativos tá inclusive isso que foi o que criou um grande assombro aí na comunidade durante os últimos tempos mas eu vou dar um passo atrás vários Passos atrás para que a gente entenda isso pela base tá pessoal então Vamos pela introdução só dando aquele like para poder ajudar o canal para disseminar para mais pessoas que querem estudar redes neurais querem entender ya e compartilha assim nos grupos de faculdade porque eu sei que tem muita gente querendo aprender galera em cima nós temos a visão mais elementar de uma rede neural certo a entrada as camadas e as saídas o que nós podemos fazer para melhorar nossa interpretação é entender estas camadas como sendo matrizes e as operações que é gerada em cada fase intermediária dessa Deep learning nós entendermos como sendo uma operação em matrizes eu trago um exemplo aqui do mecanismo de atenção dos Transformers que foi o que mudou a consistência e a escalabilidade de como se processa dados em grandes dimensões E no fim das contas são operações em matrizes feita essa introdução galera vamos trazer aqui uma visão da implementação tá a gente vai pegar aqui uma arquitetura muito básica de uma Deep learning aonde nós temos as inputs os pesos a camada de summation e do Bias né que tem a camada de somatório levando em seguida para a camada de ativação para gerar um output um resultado nós vamos implementar isso daqui bem do zero de uma forma bem didática para transformar nossa visão de grafo né essa informação visual em operações de matrizes mas antes eu vou trazer um Case é um Case simples tá pessoal antes que todo mundo saia comentando aí que ah não pegou um dataset real não tá trabalhando com dados reais a ideia é que quando a gente inicie qualquer processo de teste a gente também acaba tendo um escopo um pouco mais controlado então o que que eu fiz eu desenhei um case de uma plataforma de vendas de uma empresa de vendas aonde cada venda sendo online x venda física y e cada estorno resulte em uma taxa de lucro ou seja se a empresa teve lucro ou não naquele dia e isso é computado lá como faturamento da empresa o lucro diário dessa empresa possui como um fator limitante a quantidade de dias que ela trabalha que são 20 dias úteis em um mês ou seja ao longo de 20 dias úteis vai computando-se diariamente se ela teve lucro ou não somando isso ao faturamento de novo um exemplo Zinho bem simples e aí a gente apela aqui para os matemáticos da empresa que descobriram que a função de custo Diário da empresa é 4x + 3y - Z eu não vou entrar muito na se área de como eu achei esse valor tá até porque eu inventei mas a ideia é que a gente tenha a pesquisa operacional Minimizar despesa maximizar lucro como sendo a base mais inteligente de otimização que a ia hoje faz de uma forma muito mais massiva de novo é um exemplo Zinho bem simples de po lá pra gente poder escalar E aí olha que interessante quando este Limiar diário é maior do que 20 nós temos lucro apurado naquele dia se foi menor ou igual prejuízo E aí o diretor de posse desses resultados analíticos diariamente começou a querer um modelo preditivo que passe a estimar dia a dia a tendência para o próximo dia de ser lucro ou prejuízo Existem várias formas da gente gerar dados fictícios podemos puxar de um dataset Sem problema nenhum mas para começar aqui de uma forma mais simples e explicando a base até porque normalmente em projetos novos a gente não tem dados suficientes a gente acaba sintetizando e uma das formas de fazermos isso é a partir da distribuição uniforme nesse caso eu estou querendo 10. 000 registros gerando os valores dos pesos x y e z entre 0 e 10 também fictícios para que eu possa criar os três eixos aqui de vetores bom uma vez que eu tenho cada eixo separado uma for interessante de juntá-los em uma matriz é usando o col stack do nump aonde ele vai pegar o X e o y use vai criar colunas para que eu entenda como se fosse uma linha cada dia de faturamento da empresa o meu peso também é dado pela matemática da Fórmula 4 3 e Men e significa -1 agora conforme a gente já percebe nós temos um X maiúsculo que é design para uma anotação de matrizes no código e eu posso começar a simular os dados de faturamento Diário da empresa Olha que legal lembra que eu tenho que pegar cada valor de x y e z e multiplicar pelas constantes 4 3 e -1 respectivamente e é aqui que Nós entramos na primeira operação e na mais utilizada que é o produto de ponto produto escalar de pontos dot product E por aí vai esta operação é uma das mais usadas em Deep learning e o entendimento dela a nível básico que é aqui onde eu quero chegar é de fundamental importância pra gente entender os modelos futuros é só lembrar que a regressão linear é totalmente otimizada e construída em cima desta teoria e para implementá-la pessoal a gente tem que ter um entendimento das dimensões para que a gente faça um dot product nós temos que ter a primeira dimensão como uma orientação do tipo horizontal e a segunda como tipo vertical para que possa acontecer esta multiplicação seguida de uma concatenação desses valores escalares para no final gerar um valor de magnitude em rela esses dois vetores Olha que legal ch l Vamos só entender Qual é a dimensão de X se eu vier aqui e der um x p Shape eu vou perceber que eu tenho 10. 000 linhas por três colunas se eu pegar o shape de pesos Eu tenho simplesmente três linhas e isso já me D uma noção que eu já possuo três linhas exatamente como peso enquanto que o meu x voltando aqui de novo ele já está no formato horizontal assim se eu quiser multiplicá-los eu faço um dot um NP P dot de x e de weits é o meu vetor resultante E aí antes de chegarmos nesse nível que a gente vai fazer aqui embaixo eu só quero explorar mais um pouquinho o que que seria na prática pessoal eu sei que vocês têm muita dificuldade nesse ponto o que que é na prática um produto de pontos e ele está sim no nosso cotidiano quando a gente vai no supermercado faz uma compra online nós temos uma certa quantidade de itens e o seu preço unitário é esse exemplo que eu quero trazer aqui agora então quando a gente tem por exemplo duas dimensões e uma quantidade de itens né então são três itens o primeiro item custa 1,99 o segundo r50 e o terceiro R 10 se eu for lá num supermercado e comprar zero de uma quantidade do primeiro item dois do segundo e um do do terceiro no caixa eu tenho que ter um valor a pagar o que seria esse valor a pagar só lembrando intuitivamente que para que eu tenha o valor a pagar eu tenho que pegar 0 multiplicar por 1,99 somar com 2 x 2,5 1 x 10 certo que vai dar 15 e nesse ponto a operação de dot product de produto de pontos faz Exatamente isso ou seja se eu vier aqui e pegar NP P dot quantidade de itens e multiplicar pelo preço unitário o que que vai acontecer um belo de um erro porque as dimensões não estão propícias no formato horizontal vertical para que eu faço corretamente o produto de pontos E aí eu preciso de saber que aqui eu tenho uma dimensão diferente que não a necessária para a operação vamos ver como é que está a quantidade de itens rapidamente aqui vou rodar aqui em cima e aqui agora reparem que a quantidade de itens está num formato de três por um então ele está igual ao formato do preço unitário o que incompatibilização tá vendo e se eu fizer assim eu tenho uma dimensão diferente na minha quantidade o que vai permitir essa operação em outras palavras eu preciso de transpor o meu vetor de quantidades para a horizontal para que eu faça esta multiplicação Então o meu erro aqui no primeiro caso foi não colocar o vetor transposto Na quantidade de itens isso é fundamental agora explorando um pouquinho tá o que que o valor 15 a pagar no supermercado na loja online significa Olha que interessante essa visão intuitiva significa que D dos dois vetores de total de itens comprados versus preço unitário o resultante disso que é um produto escalar em uma nova dimensão chamada custo total possui um valor de 15 que é o valor cumulativo dessas subsequentes multiplicações Olha que legal entendendo isso um processo de comprar um item numa loja torna-se um produto em uma nova dimensão chamada Finanças certo e é aqui que eu quero fazer uma provocação você vai pagar R 15 você gastou muito ou pouco você poderia gastar isso o que que acontece quando nós queremos economizar a gente passa a a mover esse resultado tendendo a zero ou a gente passa a aumentar este valor resultante e sim a gente tende a zero eu quero economizar eu diminuo a quantidade de itens comprados Então se 15 foi muito caro eu passo agora Diminuir a quantidade de compra para que eu tenha um valor menor do 250 eu estou tendendo a zero eu estou economizando melhorando as Minhas Finanças se a gente entende produto de pontos aplicado a economia Desta forma a gente já está entendendo completamente o que que é um processo de otimizar uma rede neural que ela vai passando a tentar comprar menos produtos para que ela economize para que ela chegue no resultado mais real que é o objetivo dela então entender de econ você entendendo como uma rede neural vai entregar a descida do Gradiente que é um dos princípios fundamentais de toda Deep learning E aí eu vou chamar vocês para um caso para que saber isso galera Porque todo o passo intermediário que nós temos nas redes neurais é alcançado pelo dot prod queem aqui de sumariza transposto vezes o vetor de pesos e aqui a função de ativação Log em seguida a gente agora vai voltar pro nosso Case aqui do projeto vamos pegar os valores de x que é respectiva x y z das variáveis e multiplicar pelas constantes 4 3 e -1 dessa forma a gente vai encontrar o resultado escalar de cada dia de faturamento da empresa Lembrando que o x não precisa de ser transposto porque ele já está numa dimensão horizontal enquanto que o peso já está corretamente associado a uma dimensão de coluna o y é o resultante como nós podemos ver aqui por exemplo no nosso caso nós temos um lmar que se este valor for superior a 20 significa que a empresa naquele dia teve faturamento senão foi prejuízo para implementar isso nós vamos criar o nosso vetor de y binário ou seja Y sendo maior do que 20 convertido para inteiro ele vai falar se é zer ou se é 1 true ou false Aqui está um exemplo de como ficou o nosso Y binrio nesse dia não teve lucro ess teve se teve e assim sucessivamente agora qual que é o shape pessoal como a gente está vendo aqui no exemplo Qual que é o shape do meu Y ele tá na horizontal certo significa que nós estamos sem equivalência em relação a cada um dos dias é como se em apenas um dia ele tivesse 10.
000 colunas o que não faz muito sentido a ideia é ter 10. 000 dias dessa operação de faturamento então o nosso Shape está errado e nós podemos fazer uma operação de reshaping aonde o meu Y binário vai passar a ser uma rotação de linha para coluna nós vamos pegar os 10. 000 valores que existem o men1 aqui no reshape do nump é para que a a gente calcula ISS automaticamente e o os1 aqui significa a dimensão resultante de cada um desses 10.
000 valores do reshape ou seja em vez de eu ter um e apenas um vetor de 10. 000 colunas eu vou ter 10. 000 linhas de apenas uma coluna de novo eu poderia colocar 10.
000 aqui mas automaticamente o num pai pode fazer para mim porque fica muito mais prático Então o meu Y binário ele passa a ser em uma dimensão para cada dia então esse dia ele teve lucro esse ele teve prejuízo e assim sucessivamente nós simulamos o alvo que nós queremos chegar se é lucro ou prejuízo agora para nossa rede neural nós precisamos de Identificar qual é a função de ativação e isso impacta nos resultados diretos do nosso modelo o caso mais clássico para tarefas de classificação que é o nosso caso caso lucro ou não é a função sigmoide muito famosa aí desde os primórdios da machine learning que existe até hoje como camada de ativação de muita rede neural por aí ainda essa equação poderosa transforma a nossa Red neural em um processo constante de atualização de parâmetros enquanto esse Limiar for próximo aqui de 50% à medida que ele vai se aproximando de uma linha de decisão vai chegando perto de um ou de zero Essa zona ela vai ficando menos ativa e os gradientes vão se estabilizando isso permite com que você continue atualizando os parâmetros apenas que não atingiram esses limiares ainda olha que poderoso para implementar essa função não tem muito segredo porque basta olhar a fórmula aqui e implementá-la no formato num P ou seja a minha função sigmoide é 1 div por 1 mais a constante de eiler elevado a x inverso né E aí nós já podemos passar um vetor nesta função e obter o valor resultante entre 0 e 1 mas tem um conceito relevante que nós precisamos de entender agora que é a derivada dessa função sigmoide não saiam agora não desistam tá porque eu tenho certeza que vocês vão entender derivada é o fundamental para que se entenda se você vai atualizar ou não esse parâmetro em outras palavras se você tem que continuar a se mover para poder alcançar ali um processo de aprendizagem da sua rede neural eu vou dar um exemplo de como se fosse um carro percorrendo uma estrada Olha que interessante se a gente observar a função sigmoide onde ele começa a acelerar em função do tempo e em um dado momento ele alcança o máximo de aceleração possível e a partir disso começa a freiar E aí termina a prova nesse ponto repara que nós temos aceleração dele de forma crescente até o momento que atinge o pico exatamente na metade da prova em seguida ele passa a frear ou seja aela que nós vemos lá na física que é del V so del T é a derivada da velocidade em função do tempo Olha que legal é o mecanismo mais importante para que os parâmetros sejam atualizadas em todas as redes neurais pessoal entender isso aqui é entender quase tudo tá bom se a gente for implementar a função da derivada da sigmoide que é sigmoide vees 1 Men sigmoide nós vamos obter esta implementação aqui sigmoide vezes 1 menos sigmoide agora a gente tem que ter as dimensões de aprendizado ou seja dos pesos que vão fazer de fato essa atualização constante para que seja possível encontrar os valores ótimos desse aprendizado e no nosso diagrama os pesos que nós vamos inicializar está representado por w aqui como todo mundo já conhece inicialização de pesos pessoal é algo interessante que é tratado em muitos livros de álgebra e machine learning porque se você colocar todos igual a zero não vai se ter diferença em relação ao aprendizado Ou seja todos os neurônios passaram a ser como se fosse apenas um percep E isso não é nada legal pra convergência da nossa rede mas de uma forma bem simples basta que você tenha valores aleatórios nas dimensões necessárias e é aqui o primeiro passo porque lembra que nós temos três linhas x y e z para representar os nossos parâmetros e nós temos uma coluna Então as dimensões desta Matriz é 3 por 1 E aí para que a gente faça uma estabilização dos pesos eu vou pegar esse valor aleatório que ele gerou desses três vou multiplicar por 2 e vou subtrair um é uma forma dos pesos ficarem bem estáveis assim então o peso de X vai começar com 01 o peso de y vai começar com 0,44 e o peso de Z vai começar com menos p99 agora nós vamos começar a implementação da nossa rede de fato quando nós estudamos qualquer Arquitetura de Rede neural nós sabemos que tem o input que vai ser o meu vetor de entrada que é o x ou seja os meus valores de x y e z as saídas esperadas que é o meu output lucro ou prejuízo O Bas ele é o termo B ali da regressão linear né o Ax B é o Bias e ele permite com que se desloque no eixo Y A nossa função então ele também é an de ser inicializado e atualizado Tá mas como a nossa função vai ser muito flexível a gente consegue não atualizar ele nesse momento mas o Bias pessoal ele é fundamental e ele também recebe uma associação de pesos a learning rate eu vou explicar melhor mais para frente mas é a taxa de atualização ali o passinho que ele vai dar rumo a uma atualização no processo de aprendizagem tá se for muito alto ele não aprende Se for muito baixo ele demora muito a convergir 0. 1 aqui um valor muito defold por aí e agora nós vamos pra nossa iteração o processo de Treinamento dessa rede neural eu vou colocar aqui 10. 000 épocas significa que ele vai passar 10.
000 vezes por todos os meus dados atualizando intensamente todos os pesos da minha rede vamos implementar então a propagação direta que é muito simples então na camada de forward nós temos os inputs os pesos a função de soma e a função de ativação para gerar a saída nesse ponto estamos com a função de soma que é um produto de pontos pelos pesos mais o Bias que é muito importante esse ponto e de onde veio isso pessoal exatamente do modelo de carrinho de compras lá do supermerc aqui não é transposto porque se a gente for puxar o valor de X como a gente fez lá em cima x já está na dimensão correta para que se faça o produto de pontos e os pesos também quando nós temos a função Sigma que é a função de sumarização nós podemos proceder à função sigmoide que vai pegar esse vetor desse produto de pontos e vai calcular a minha função sigmoide em cima do resultado e aqui eu tenho as probabilidades Olha que legal entre zer e 1 do quão longe eu estou dos valores que eu tenho que atingir Então imagina que fazendo o produto de pontos da entrada com os pesos eu tenho 0. 80 se o valor original foi 1 eu errei por 0. 2 e eu preciso de atualizar o meu peso para que na próxima ele dê um passinho rumo ao 0.
9 0. 95 tendendo a diminuir essa distância em outras palavras lembra da economia eu tenho que chegar pertinho ali para um menos o outro tender a zero nesse ponto eu vou calcular o erro que é dado pelo que Ele previu menos o outputs galera e Aqui nós temos uma grande facilidade do numpy porque ele é capaz de fazer uma operação aqui vetorizada subtraindo cada um dos índices respectivos de cada um dos vetores Seguindo aqui agora nós temos o processo de retropropagação dessa rede porque ela chegou até no final e agora sabendo quanto ela errou das predições eu consigo extrair as derivadas destes valores e multiplicado pelo erro eu tenho uma noção de aonde essa função está crescendo em relação a esse erro aonde está acelerando os meus erros e é aí que eu eu tenho que agir para tentar frear nesse ponto eu estou calculando o que a gente chama de gradientes que é simplesmente o vetor resultado da derivada em função da função de erro e agora eu preciso de falar o seguinte com a minha rede neural olha não vai para cima não que você tá acelerando os seus erros desce atualiza os seus pesos proporcionalmente com a taxa de aprendizagem que a gente definiu no sentido inverso do crescimento desses erros Vai para baixo para você economizar e É nesse ponto que nós temos a operação de atualização pegar o que tinha antes dos pesos e subtrair da taxa de rate quão longo vai ser esse passinho em direção oposta ao crescimento dessa função de erro e aqui pessoal é onde que acontece a etapa mais importante porque eu estou dando um passinho na direção oposta do resultado da compra que estava muito alta e eu percebi que eu tenho que baixar aí você vai pegar o total que você está pagando que seria o valor de entrada em função do crescimento desse custo e aí você diz opa Vamos diminuir 10 centavos aqui que eu já ganho alguma coisa então o total de itens a comprar que que são os pesos vão ser diminuídos para que você tenha também um uma redução no seu custo total acho que dessa forma dá para entender legal a atualização dos pesos que é todo viu pessoal todo o processo de aprendizagem de uma rede ne oral está aqui sim de uma forma simples mas espero que já ajude para que a gente escale esse conhecimento um pouquinho mais paraa frente vamos rodar beleza nesse ponto reparem que ele está calculando o gradiente fazendo a predição calculando o erro gradiente de novo 10. 000 épocas depois ocorre o aprendizado dessa rede neural o que a gente chama de convergência os valores ótimos certo aqui uma parte técnica a gente recebeu um overflow significa que a gente sobrecarregou uma função com valores muito altos e isso foi feito por Porque nós não otimizamos a forma com que essa função sigmoid recebe valores muito altos vamos avaliar um pouquinho o nosso modelo não dá para avaliar pessoal com curva rock com Matriz de confusão seria muito legal mas vai fugir da Visão desse vídeo que é mostrar o produto de pontos e as operações de matrizes e vetores como sendo um processo fundamental pro entendimento das redes neurais e das arquiteturas modernas vou deixar de exercício Então para que depois vocês peguem até dados reais datasets verdadeiros de classificação apliquem essas técnicas e obtenham curva rock acurácia precisão Recall e todas as métricas fundamentais para que se avalie um modelo Por enquanto vou colocar entre aspas aqui como sendo uma análise bem fria tá galera ou seja o meu resultado vai ser se os outputs são iguais ao meu modelo predito arredondado com zero casas decimais como a minha função de erro foi a distância pura e simples entre o que Ele previu e o meu output essa distância é contínua Então o meu modelo não está otimizado para a classificação ainda E aí eu estou arredondando para zero Porque aí se acima de 50% ele vai jogar um abaixo disso ele joga zero para que eu tenha uma aproximação em relação ao 0,1 real binário do lucro e prejuízo do meu problema do projeto vamos avaliar aqui quantos valores foram de fato reais 7.
930 valores nós temos 10. 000 registros desses 10. 000 pessoal em torno de 79 ele acertou então sim ele conseguiu aprender ali alguma coisa Quais foram os pesos que ele definiu para esse processo de aprendizagem x 418 Y 227 e - 451 no eixo Z lembra que a nossa função era 4x + 3y - Z a rede neural reescreveu com 79 de acerto assim digamos os novos pesos sem nós darmos a função original ele aproximou a função que deveria reger o lucro ou o prejuízo dessa empresa é aqui que nós também conseguimos ter uma visão intuitiva de que a rede neural ela é um aproximador universal de funções que é para aproximar fenômenos do mundo real que nós não sabemos as funções para que nós tenhamos mecanismos de prever modelar o comportamento entender o comportamento e simular o comportamento dentro de ambientes computacionais sim é uma grande área de estudo aí equações diferenciais aproximadas por redes neurais só pegando aí o gancho que Física Matemática engenharias também estudam bastante esse mecanismo de aproximar fenômenos do mundo real agora sim a gente percebeu que dá para melhorar e aí a gente pega um pouquinho da vertente das redes neurais modernas para poder quem sabe dar uma tunada no nosso modelo Qual é a grande sacada de uma técnica de função de ativação chamada soft Max a saída de predição da nossa rede neural ela passa a ser uma razão entre aquele valor dividido pela somatório dessas saídas sim é uma noção de proporção e é aqui que nós temos a transformação de saídas em valores absolutos para probabilidades ou seja 5.
1 possui probabilidade de 0. 9 o que estabiliza a nossa saída da camada de ativação como valores entre 0 e 1 O que é muito bom para poder melhorar o nosso processo de aprendizado então agora o que nós vamos fazer é embutir a camada de soft Max dentro da nossa Arquitetura de Rede neural atual tá aqui a função de soft Max exatamente como está aqui no slide ou seja eiler elevado a x e aqui vem uma tcnica bem importante pessoal para evitar valores discrepantes e muito altos que tendam a fazer um overflow na nossa função a gente normaliza ou seja subtrai o valor atual pelo maior valor do vetor aí a gente tende a ter valores mais estáveis para trabalhar dentro da função a ausência disso ocasionou o erro de overflow em cima no nosso primeiro modelo neural basicamente eu tenho essa implementação aqui só que mais estável para o processo computacional viu pessoal é aí que a arte da Matemática se junta a computação para otimizar a computação numérica e aqui o retorno é este valor dividido pelo somatório de todos que também nós obtemos aqui em cima essa é a nossa função soft Max Olha como o conhecimento em rede neural pessoal diferente do que a gente vê por aí é em caixinhas é de um aprendizado constante e pequeno porque se eu cons chegar nas probabilidades do meu output eu posso usar uma fórmula chamada Cross entropy loss em uma explicação intuitiva é o quão surpresa a sua arquitetura vai ficar se ela acreditava que tinha um valor real e ela ficou muito longe desse valor e aí nós temos uma entropia máxima quando esse valor tá completamente errado e uma entropia mínima zero surpresa quando ela acerta e no processo de classificação somatório do total de classes do valor real multiplicado pelo logaritmo natural da minha função de saída que é a soft Max vamos ver como isso fica na prática que eu sei que parece difícil mas não é a minha função de custo de cross entropy é receber os vetores true e predito e fazer o somatório desses valores reais multiplicado pelo log do que Ele previu só isso que é implementação do Cross entropy e agora nós vamos reimplementado tenho uma mudança a minha saída já vai ser normalizada como probabilidade em função da Soft Max essa é uma pequena diferença já nessa arquitetura atual e nesse ponto a gente já vai para o gradiente Quão distante ficou a predição dada menos os valores reais para que a gente possa ter uma noção de direção para onde esse erro está crescendo e aqui pessoal mais uma otimização Zinha tá que a gente não tinha e que melhora muito a computação quando nós utilizamos gradientes muito instáveis que T valores muito absolutos 1000 10 500 1 isso acaba dificultando essa descida criando valores instáveis que dificultam também o aprendizado então computacionalmente estabilizar essa fase também é relevante e e uma forma simples de fazer isso é dividir por exemplo pela dimensão do meu vetor Então olha que interessante o shape é a quantidade de linhas do meu vetor que são 10. 000 eu tô pegando o resultado que eu tenho aqui e dividindo por 10.
000 isso permite com que eu tenho valores menores mantendo a escala de distância entre cada erro bem mais facilmente computáveis tem algoritmos como do transformer por exemplo que utiliza a divisão pela raiz da dimensão feito essa ressalva que eu acho que é importante agora a gente vai para a atualização dos pesos nós estamos em um caminho já conhecido que é se eu descobrir para onde a minha função cresce eu vou me mover na direção oposta para que eu tenha um aprendizado de fato minimizando essa perda E aí Lembrando que a gente primeiro faz um produto de pontos do meu vetor de entrada transposto pelo Gradiente Vocês acreditam que a gente com essas poucas linhas de código já treinamos uma rede neural bem legal do zero sim porque toda a teoria de álgebra de cálculo está aqui parabéns a gente fez uma rede neural do zero Se eu colocar para rodar ao final do processo vamos avaliar como ele performou e aí eu vou utilizar a mesma régua que é o quão exato ele está da saída original e aqui eu dou um NP PS resultado 10.
Copyright © 2025. Made with ♥ in London by YTScribe.com