Gradient descent, how neural networks learn | Chapter 2, Deep learning

Último vídeo eu expus a estrutura de uma rede neural Vou dar uma rápida recapitulação aqui só para que esteja fresco em nossas mentes E então eu tenho dois objetivos principais para este vídeo. A primeira é introduzir a ideia de descida de gradiente, que subjaz não apenas como as redes neurais aprendem, mas como muitas outras aprendizagens de máquina funcionam também Então, depois disso, vamos aprofundar um pouco mais o desempenho dessa rede específica E o que essas camadas ocultas de neurônios acabam procurando Como lembrete, nosso objetivo aqui é o exemplo clássico de reconhecimento de dígitos manuscritos o olá mundo das redes neurais esses dígitos são renderizados em uma grade de 28 por 28 pixels cada pixel com algum valor em tons de cinza entre 0 e 1 esses são os que determinam as ativações de 784 neurônios na camada de entrada da rede e Então a ativação para cada neurônio nas camadas seguintes é baseada em uma soma ponderada de Todas as ativações na camada anterior mais um número especial chamado de viés então você compõe essa soma com alguma outra função como a squishificação sigmóide ou um ReLu a maneira que eu andei através do último vídeo No total, dada a escolha um tanto arbitrária de duas camadas ocultas aqui com 16 neurônios cada rede tem cerca de 13.000 pesos e vieses que podemos ajustar e são esses valores que determinam exatamente o que a rede que você conhece realmente faz Então, o que queremos dizer quando dizemos que esta rede classifica um dado dígito É que o mais brilhante desses 10 neurônios na camada final corresponde a esse dígito E lembre-se da motivação que tínhamos em mente aqui para a estrutura em camadas foi que talvez A segunda camada pode pegar nas bordas e a terceira camada pode pegar em padrões como loops e linhas E o último poderia juntar esses padrões para reconhecer dígitos Então aqui nós aprendemos como a rede aprende O que nós queremos é um algoritmo onde você possa mostrar a esta rede um monte de dados de treinamento que vem na forma de um monte de imagens diferentes de dígitos manuscritos junto com rótulos para o que eles deveriam ser e Isso ajustará os 13000 pesos e vieses para melhorar seu desempenho nos dados de treinamento Espero que esta estrutura em camadas signifique que o que aprende generaliza para imagens além desses dados de treinamento E a maneira como testamos isso é que depois de treinar a rede Você mostra mais theta rotulado que nunca foi visto antes e você vê com que precisão ele classifica essas novas imagens Felizmente para nós e o que torna este exemplo tão comum para começar é que as pessoas boas por trás da base do MNIST reunir uma coleção de dezenas de milhares de imagens digitadas à mão, cada uma rotulada com os números que deveriam ser e É provocativo como é descrever uma máquina como aprendizado quando você realmente vê como funciona Parece muito menos como uma premissa de ficção científica louca e muito mais como um exercício de cálculo Quero dizer basicamente se resume a encontrar o mínimo de uma certa função Lembre-se conceitualmente estamos pensando em cada neurônio como sendo conectado para todos os neurônios na camada anterior e os pesos na soma ponderada definindo sua ativação são como o pontos fortes dessas conexões E o viés é uma indicação de que o neurônio tende a ser ativo ou inativo e a começar Nós vamos apenas inicializar todos esses pesos e vieses totalmente aleatoriamente desnecessário dizer que esta rede vai executar muito horrivelmente em um determinado exemplo de treinamento, pois é apenas fazendo algo aleatório, por exemplo, você se alimenta nesta imagem de um 3 eo Camada de saída, parece uma bagunça Então o que você faz é definir uma função de custo para dizer ao computador: "Nenhum computador ruim! Essa saída deve ter ativações que são zero para a maioria dos neurônios, mas uma para esse neurônio que você me deu é lixo total " Para dizer que um pouco mais matematicamente o que você faz é somar os quadrados das diferenças entre cada uma dessas ativações de saída de lixo e o valor que você quer que eles tenham e Isso é o que vamos chamar de custo de um único exemplo de treinamento Observe que esta soma é pequena quando a rede classifica com confiança a imagem corretamente Mas é grande quando a rede parece que realmente não sabe o que está fazendo Então, o que você faz é considerar o custo médio de todas as dezenas de milhares de exemplos de treinamento à sua disposição Este custo médio é a nossa medida para o quão ruim é a rede e quão ruim o computador deve se sentir, e isso é uma coisa complicada Lembre-se como a rede em si era basicamente uma função que leva em 784 números como entradas os valores de pixel e cospe dez números como sua saída e em um sentido É parametrizado por todos esses pesos e vieses Enquanto a função de custo é uma camada de complexidade em cima do que toma como sua entrada aqueles treze mil ou mais pesos e preconceitos e cospe um único número descrevendo o quão ruim esses pesos e preconceitos são e O modo como é definido depende do comportamento da rede em todas as dezenas de milhares de dados de treinamento Isso é muito para pensar Mas apenas dizer ao computador que trabalho ruim, não está ajudando muito Você quer dizer como alterar esses pesos e vieses para melhorar? Para facilitar, em vez de lutar para imaginar uma função com 13.000 entradas Imagine uma função simples que tenha um número como entrada e um número como saída Como você encontra uma entrada que minimize o valor dessa função? Os alunos de cálculo sabem que você pode, às vezes, descobrir esse mínimo explicitamente Mas isso nem sempre é viável para funções realmente complicadas Certamente não na versão de treze mil entrada desta situação para a nossa função de custo de rede neural complicada maluca Uma tática mais flexível é começar com qualquer entrada antiga e descobrir qual direção você deve tomar para diminuir essa saída.

Especificamente, se você pode descobrir a inclinação da função onde você está Em seguida, desloque-se para a esquerda se a inclinação for positiva e desloque a entrada para a direita se essa inclinação for negativa Se você fizer isso repetidamente em cada ponto, verifique a nova inclinação e execute a etapa apropriada você vai abordar algum mínimo local da função e a imagem que você pode ter em mente aqui é uma bola rolando uma colina e Observe que, mesmo para essa função de entrada simples simplificada, há muitos vales possíveis nos quais você pode pousar. Dependendo de qual entrada aleatória você começa e não há garantia de que o mínimo local Você pousa em vai ser o menor valor possível da função de custo Isso também vai acontecer com nosso caso de rede neural, e eu também quero que você perceba Como se você faz seus tamanhos de passo proporcionais à inclinação Então, quando a inclinação está diminuindo em direção ao mínimo, seus passos ficam menores e menores e isso ajuda a superar o excesso Aumentando a complexidade, imagine uma função com duas entradas e uma saída Você pode pensar no espaço de entrada como o plano XY e a função de custo como sendo representada graficamente como uma superfície acima dela Agora, em vez de perguntar sobre a inclinação da função, você deve perguntar em qual direção você deve entrar nesse espaço de entrada? De modo a diminuir a saída da função mais rapidamente em outras palavras.

Qual é a direção da descida? E novamente é útil pensar em uma bola rolando naquela colina Aqueles que estão familiarizados com o cálculo multivariável saberão que o gradiente de uma função lhe dá a direção de subida mais íngreme Basicamente, qual direção você deve tomar para aumentar a função mais rapidamente naturalmente, tomando o negativo desse gradiente, dá-lhe a direção para o passo que diminui a função mais rapidamente e Ainda mais do que isso, a extensão desse vetor gradiente é, na verdade, uma indicação de quão íngreme é a inclinação mais íngreme Agora, se você não estiver familiarizado com o cálculo multivariado E você quer saber mais, confira alguns dos trabalhos que fiz para a Khan Academy sobre o tema Honestamente, apesar de tudo que importa para você e para mim agora Em princípio, existe uma maneira de calcular esse vetor.

Este vetor que diz a você o que A direção descendente é e como é íngreme você vai ficar bem se isso é tudo que você sabe e você não é sólida sobre os detalhes porque se você conseguir que o algoritmo minimize a função é calcular essa direção do gradiente, então dê um pequeno passo para baixo e Basta repetir isso repetidamente É a mesma ideia básica para uma função que tem 13.000 entradas, em vez de duas entradas, imagine organizar tudo 13.000 pesos e vieses da nossa rede em um vetor de coluna gigante O gradiente negativo da função custo é apenas um vetor É alguma Direção dentro deste insanamente enorme espaço de entrada que lhe diz qual toques para todos esses números vai causar a diminuição mais rápida para a função de custo e é claro, com nossa função de custo especialmente projetada Alterar os pesos e vieses para diminuir significa fazer a saída da rede em cada parte dos dados de treinamento Olhe menos como uma matriz aleatória de dez valores e mais como uma decisão real que queremos fazer É importante lembrar que essa função de custo envolve uma média de todos os dados de treinamento Então, se você minimizá-lo, significa que é um melhor desempenho em todas essas amostras O algoritmo para calcular esse gradiente eficientemente, que é efetivamente o coração de como uma rede neural aprende, é chamado de propagação reversa.

E é sobre isso que eu vou falar sobre o próximo vídeo Lá eu realmente quero ter tempo para percorrer O que exatamente acontece com cada peso e cada viés para um determinado dado de treinamento? Tentando dar uma ideia intuitiva do que está acontecendo além da pilha de cálculos e fórmulas relevantes Bem aqui agora a coisa principal. Eu quero que você saiba independente dos detalhes da implementação é isso que queremos dizer quando falamos de um aprendizado de rede é que é apenas minimizar uma função de custo e Repare que uma das conseqüências disso é que é importante que esta função de custo tenha uma boa saída suave.

Para que possamos encontrar um mínimo local dando pequenos passos em declive É por isso que pelo caminho Os neurônios artificiais têm continuamente ativações variadas, em vez de simplesmente estarem ativos ou inativos de uma maneira binária se a maneira que os neurônios biológicos são Esse processo de pressionar repetidamente uma entrada de uma função por algum múltiplo do gradiente negativo é chamado de gradiente descendente. É uma maneira de convergir para um mínimo local de uma função de custo, basicamente um vale neste gráfico Eu ainda estou mostrando a imagem de uma função com duas entradas, claro, porque cutuca em uma entrada treze mil dimensões O espaço é um pouco difícil de envolver, mas na verdade existe uma boa maneira não-espacial de pensar sobre isso Cada componente do gradiente negativo nos diz duas coisas que o sinal do curso nos diz se o correspondente O componente do vetor de entrada deve ser pressionado para cima ou para baixo, mas importante é a magnitude relativa de todos esses componentes Tipo de informa quais alterações importam mais Você vê em nossa rede um ajuste para um dos pesos pode ter um muito maior impacto na função custo do que o ajuste para algum outro peso Algumas dessas conexões só importam mais para nossos dados de treinamento Então, uma maneira que você pode pensar sobre este vetor gradiente de nossa mente-warpingly função custo maciço é que ele codifica a importância relativa de cada peso e viés Isso é qual dessas mudanças vai levar o maior retorno para o seu fanfarrão Isso realmente é apenas outra maneira de pensar sobre direção Para dar um exemplo mais simples, se você tem alguma função com duas variáveis ​​como uma entrada e você Calcule que seu gradiente em algum ponto particular aparece como (3,1) Então, por um lado, você pode interpretar isso como dizendo que quando você está em pé nessa entrada movendo-se ao longo desta direção aumenta a função mais rapidamente Que quando você grava a função acima do plano de pontos de entrada, esse vetor é o que está dando a você a direção reta para cima Mas outra maneira de ler isso é dizer que mudanças nessa primeira variável Ter três vezes a importância como mudanças na segunda variável que, pelo menos na vizinhança da entrada relevante Nudging o valor de x traz muito mais estrondo para seu fanfarrão Tudo bem Vamos diminuir o zoom e resumir onde estamos até agora a rede em si é essa função com 784 entradas e 10 saídas definidas em termos de todas essas somas ponderadas a função de custo é uma camada de complexidade em cima do que leva o 13.000 pesos e vieses como entradas e cospe uma única medida de grosseria com base nos exemplos de treinamento e O gradiente da função custo é mais uma camada de complexidade ainda nos diz O que empurra para todos esses pesos e vieses causa a mudança mais rápida para o valor da função de custo O que você pode interpretar é dizer quais alterações são as que mais importam Então, quando você inicializar a rede com pesos aleatórios e vieses e ajustá-los muitas vezes com base neste processo de descida de gradiente Quão bem ele realmente funciona em imagens que nunca foram vistas antes? Bem, o que eu descrevi aqui com as duas camadas ocultas de dezesseis neurônios cada escolhidos principalmente por razões estéticas bem, não é ruim, ele classifica cerca de 96% das novas imagens que vê corretamente e Sinceramente, se você olhar para alguns dos exemplos que isso bagunça você se sente compelido a reduzir um pouco Agora, se você brincar com a estrutura de camadas ocultas e fazer alguns ajustes Você pode chegar a 98% e isso é muito bom.

Não é o melhor Você pode certamente obter um melhor desempenho ficando mais sofisticado do que esta simples rede de baunilha Mas, considerando o quão assustadora é a tarefa inicial, acho que há algo? Incrível sobre qualquer rede fazendo isso bem em imagens que nunca foi visto antes Dado que nós nunca dissemos especificamente quais padrões procurar Originalmente, a maneira que eu motivava essa estrutura era descrever uma esperança de que poderíamos ter Que a segunda camada pode pegar em pequenas arestas Que a terceira camada reuniria essas arestas para reconhecer loops e linhas mais longas e que elas poderiam ser reunidas para reconhecer dígitos Então é isso que a nossa rede está realmente fazendo? Bem, para este pelo menos De modo nenhum lembre-se como último vídeo nós olhamos como os pesos do Conexões de todos os neurônios da primeira camada a um determinado neurônio na segunda camada Pode ser visualizado como um dado padrão de pixel que aquele neurônio da segunda camada está captando Bem, quando nós realmente fazemos isso para os pesos associados a essas transições da primeira camada para a próxima Em vez de pegar em pequenas bordas isoladas aqui e ali.

Eles parecem bem quase aleatórios Basta colocar alguns padrões muito soltos no meio lá parece que no grande insondável 13.000 espaço dimensional de pesos possíveis e preconceitos nossa rede encontrou-se um pequeno mínimo local feliz que apesar de classificar com sucesso a maioria das imagens, não capta exatamente os padrões que poderíamos ter esperado e Para realmente direcionar esse ponto para casa, observe o que acontece quando você insere uma imagem aleatória se o sistema fosse inteligente, você poderia esperar que ele ou se sentisse incerto, talvez não realmente ativando qualquer um desses 10 neurônios de saída ou Ativando-os todos uniformemente Mas ao invés disso Confiantemente dá-lhe alguma resposta sem sentido, como se se sente tão certo de que este ruído aleatório é um 5, uma vez que faz um real imagem de um 5 é um 5 frase de forma diferente, mesmo se esta rede pode reconhecer dígitos muito bem, não tem idéia de como desenhar um Muito disso é porque é uma configuração de treinamento tão restrita Quero dizer, colocar-se no lugar da rede aqui, do seu ponto de vista, o universo inteiro consiste em nada Mas os dígitos imóveis, claramente definidos, centralizados em uma grade minúscula e sua função de custo nunca deram Incentivo para ser qualquer coisa, mas totalmente confiante em suas decisões Então, se esta é a imagem do que os neurônios da segunda camada estão realmente fazendo Você pode se perguntar por que eu introduziria essa rede com a motivação de pegar bordas e padrões Quero dizer, isso não é nada do que acaba fazendo Bem, isso não é para ser nosso objetivo final, mas sim um ponto de partida francamente Esta é uma tecnologia antiga o tipo pesquisado nos anos 80 e 90 e Você precisa entender antes de entender variantes modernas mais detalhadas e é claramente capaz de resolver alguns problemas interessantes Mas quanto mais você curte o que essas camadas ocultas estão realmente fazendo, menos inteligente parece Mudando o foco por um momento de como as redes aprendem para como você aprende Isso só acontecerá se você se envolver ativamente com o material aqui de alguma forma Uma coisa muito simples que eu quero que você faça é parar agora e pensar profundamente por um momento sobre o que Alterações que você pode fazer neste sistema E como ele percebe imagens se você quer que ele melhore coisas como bordas e padrões? Mas melhor que isso para realmente se envolver com o material Eu Altamente recomendo o livro de Michael Nielsen sobre aprendizagem profunda e redes neurais Nele você pode encontrar o código e os dados para baixar e reproduzir para este exemplo exato E o livro guiará você passo a passo o que esse código está fazendo O que é incrível é que este livro é gratuito e publicamente disponível Então, se você conseguir alguma coisa, considere juntar-se a mim para fazer uma doação para os esforços da Nielsen Eu também tenho ligado alguns outros recursos que eu gosto muito na descrição, incluindo o post de blog fenomenal e bonito por Chris Ola e os artigos em destilar Para fechar as coisas aqui nos últimos minutos Eu quero voltar a um trecho da entrevista que tive com Leisha Lee Você pode se lembrar dela do último vídeo.

Ela fez seu trabalho de PhD em aprendizado profundo e neste pequeno trecho Ela fala sobre dois artigos recentes que realmente mostram como algumas das redes de reconhecimento de imagem mais modernas estão realmente aprendendo Apenas para estabelecer onde estávamos na conversa, o primeiro artigo abordou uma dessas redes neurais particularmente profundas Isso é muito bom no reconhecimento de imagens e, em vez de treiná-lo em um dado corretamente rotulado Coloque-o embaralhado todos os rótulos antes de treinar Obviamente, a precisão do teste não seria melhor do que aleatória, já que tudo é rotulado aleatoriamente Mas ainda foi capaz de alcançar a mesma precisão de treinamento que você faria em um conjunto de dados adequadamente rotulado Basicamente, os milhões de pesos para esta rede em particular foram suficientes para memorizar apenas os dados aleatórios. Que tipo de questão levanta a questão de se minimizar esta função de custo realmente corresponde a qualquer tipo de estrutura na imagem? Ou é só você sabe? memorize o todo Conjunto de dados de qual é a classificação correta e, portanto, alguns de vocês sabem meio ano depois no ICML este ano Não houve exatamente refutação papel de papel que abordou alguns perguntou como hey Na verdade, essas redes estão fazendo algo um pouco mais inteligente do que isso, se você olhar para essa curva de precisão se você estivesse apenas treinando em um Conjunto de dados aleatórios que tipo de curva desceu muito você sabe muito lentamente em quase uma espécie de moda linear Então você está realmente lutando para encontrar os mínimos locais possíveis você sabe os pesos certos que você obterá essa precisão ao passo que se você está realmente treinando em um conjunto de dados estruturados que tem o Rótulos certos.

Você sabe que você brinca um pouco no começo, mas depois você cai muito rápido para chegar lá Nível de precisão e, de certa forma, foi mais fácil descobrir Local máximo e por isso também foi interessante sobre o que é pego traz à luz outro papel de fato um par de anos atrás Que tem muito mais simplificações sobre as camadas de rede Mas um dos resultados foi dizer como se você olhar para o cenário de otimização os mínimos locais que essas redes tendem a aprender são Na verdade, de igual qualidade, de alguma forma, se o seu conjunto de dados é estrutura, e você deve ser capaz de encontrar isso muito mais facilmente Meus agradecimentos como sempre àqueles de vocês apoiando no patreon Eu já disse antes o que é um patreon de mudança de jogo, mas esses vídeos realmente não seriam possíveis sem você. Também quero dar um especial. Graças à empresa VC amplifi parceiros em seu apoio a esses vídeos iniciais na série Eles se concentram em aprendizado de máquina em estágio inicial e empresas de IA e eu me sinto muito confiante no Probabilidades de que alguns de vocês assistam isso e ainda mais provavelmente algumas das pessoas que você conhece são agora nos primeiros estágios de obter tal empresa do chão e O pessoal da amplifi gostaria de ouvir de tais fundadores e eles até configuram um endereço de e-mail só para este vídeo que você pode chegar até eles através de três azuis e um marrom no amplifique parceiros com

Texto inspirado em publicação no YouTube.

Quer Saber Muito Mais? Venha para a MIND21 Educação

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.