Vídeo: Cálculo de Retropropagação, Aprendizagem Profunda

Grant Sanderson • 3Blue1Brown • Boclips

Cálculo de Retropropagação, Aprendizagem Profunda

09:44

Transcrição do vídeo

A suposição central aqui é que você assistiu a parte três, dando uma explicação intuitiva do algoritmo de retropropagação. Aqui, ficamos um pouco mais formais e mergulhamos no cálculo relevante. É normal que isso seja pelo menos um pouco confuso. Portanto, o mantra para pausar e refletir regularmente se aplica tanto aqui quanto em qualquer outro lugar. Nosso principal objetivo é mostrar como as pessoas no aprendizado de máquina geralmente pensam sobre a regra da cadeia do cálculo no contexto de redes, que tem uma sensação diferente da quantidade de cursos introdutórios de cálculo que abordam o assunto. Para aqueles que não se sentem à vontade com o cálculo relevante, tenho uma série inteira sobre o assunto.

Vamos começar com uma rede extremamente simples, onde cada camada tem um único neurônio. Portanto, essa rede específica é determinada por três pesos e três vieses. E nosso objetivo é entender a sensibilidade da função de custo a essas variáveis. Dessa forma, sabemos quais ajustes nesses termos causarão a diminuição mais eficiente da função de custo. E vamos focar na conexão entre os dois últimos neurônios.

Vamos rotular a ativação desse último neurônio com um sobrescrito 𝐿, indicando em qual camada ele está. Portanto, a ativação do neurônio anterior é 𝐿 menos um. Estes não são expoentes. Eles são apenas uma maneira de indexar o que estamos falando, pois quero salvar subscritos para diferentes índices mais tarde. Agora, digamos que o valor que queremos que essa última ativação seja, para um determinado exemplo de treinamento, é 𝑦. Por exemplo, 𝑦 pode ser zero ou um. Portanto, o custo dessa rede simples para um único exemplo de treinamento é 𝐿 menos 𝑦 ao quadrado. Denotaremos o custo desse exemplo de treinamento como 𝐶 zero.

Como lembrete, essa última ativação é determinada por um peso, que chamarei de 𝑤 𝐿, vezes a ativação do neurônio anterior, mais algum viés, que chamarei de 𝑏 𝐿. E então você bombeia isso através de alguma função não linear especial como o sigmoide ou ReLU. Isso realmente facilitará as coisas para nós, se atribuirmos um nome especial a essa soma ponderada, como 𝑧, com o mesmo sobrescrito das ativações relevantes. Então, isso é um monte de termos. E uma maneira que você pode conceituar é que o peso, a ação anterior e o viés são usados ​​para calcular 𝑧, o que por sua vez nos permite calcular 𝑎, o que, finalmente, juntamente com a constante 𝑦, permite calcular o custo. E, é claro, 𝐿 menos um é influenciado por seu próprio peso, viés e tal. Mas, não vamos focar nisso agora.

Agora, todos esses são apenas números, certo? E pode ser bom pensar em cada um como tendo sua própria pequena reta numérica. Nosso primeiro objetivo é entender o quão sensível é a função de custo a pequenas mudanças em nosso peso, 𝑤 𝐿. Ou, de outro modo, qual é a derivada de 𝐶 em relação a 𝑤 𝐿? Quando você vir esse termo 𝜕𝑤, pense nele como significando uma pequena mudança em 𝑤, como uma alteração de 0.01. E pense nesse termo 𝜕𝐶 como significando qualquer que seja a mudança resultante para o custo. O que queremos é a razão deles. Conceitualmente, essa pequena mudança em 𝑤 𝐿 faz com que algumas mudanças em 𝑧 𝐿, o que, por sua vez, causa algumas mudanças em 𝑎 𝐿, o que influencia diretamente no custo.

Então, nós terminamos as coisas olhando primeiro para a razão de uma pequena alteração em 𝑧 𝐿 a essa pequena alteração em 𝑤. Ou seja, a derivada de 𝑧 𝐿 em relação a 𝑤 𝐿. Da mesma forma, você considera a razão da mudança para 𝑎 𝐿 e a pequena alteração em 𝑧 𝐿 que a causou, bem como a razão entre a alteração final para 𝐶 e essa alteração intermediária para 𝑎 𝐿. Aqui é a regra da cadeia, onde a multiplicação dessas três razões nos dá a sensibilidade de 𝐶 a pequenas mudanças em 𝑤 𝐿.

Então, na tela agora, existem muitos símbolos. Reserve um momento para garantir que fique claro o que todos eles são, porque agora calcularemos as derivadas relevantes. A derivada de 𝐶 em relação a 𝑎 𝐿 é duas vezes 𝑎 𝐿 menos 𝑦. Observe que isso significa que seu tamanho é proporcional à diferença entre a saída da rede e o que queremos que seja. Portanto, se esse resultado for muito diferente, mesmo pequenas alterações terão um grande impacto na função de custo final. A derivada de 𝑎 𝐿 em relação a 𝑧 𝐿 é apenas a derivada de nossa função sigmoide, ou qualquer não-linearidade que você escolher usar. E a derivada de 𝑧 𝐿 em relação a 𝑤 𝐿, neste caso, sai apenas para ser 𝑎 𝐿 menos um.

Agora, eu não sei sobre você. Mas acho que é fácil ficar preso de cabeça para baixo nas fórmulas sem ter um momento para refletir e lembrar-se do que elas realmente significam. No caso desta última derivada, a quantidade que essa pequena alteração no peso influenciou na última camada depende de quão forte é o neurônio anterior. Lembre-se, é aqui que a ideia dos “neurônios que se ligam” entra em cena. E tudo isso é a derivada em relação a 𝑤 𝐿, apenas o custo de um exemplo específico de treinamento. Como a função de custo total envolve a média de todos esses custos em vários exemplos de treinamento diferentes, sua derivada requer a média dessa expressão que encontramos em todos os exemplos de treinamento.

E, é claro, esse é apenas uma componente do vetor gradiente, que é construído a partir das derivadas parciais da função de custo com relação a todos esses pesos e vieses. Mas mesmo sendo apenas uma das muitas derivadas parciais de que precisamos, são mais de 50 por cento do trabalho. A sensibilidade ao viés, por exemplo, é quase idêntica. Só precisamos mudar esse termo 𝜕𝑧 𝜕𝑤 para 𝜕𝑧 𝜕𝑏. E se você olhar para a fórmula relevante, essa derivada acaba sendo um. Além disso, e é aqui que a ideia de retropropagação surge, você pode ver o quanto essa função de custo é sensível à ativação da camada anterior. Nomeadamente, essa derivada inicial na expressão da regra da cadeia, a sensibilidade de 𝑧 à ativação anterior, acaba sendo o peso, 𝑤 𝐿.

E, novamente, mesmo que não possamos influenciar diretamente a ativação da camada anterior, é útil acompanhar. Porque agora, podemos apenas repetir a mesma ideia de regra de cadeia para trás, para ver quão sensível a função de custo é a pesos anteriores e vieses anteriores. E você pode pensar que este é um exemplo muito simples, pois todas as camadas têm apenas um neurônio e as coisas ficarão exponencialmente mais complicadas para uma rede real. Mas, honestamente, isso não muda muito quando damos às camadas vários neurônios. Realmente, são apenas mais alguns índices para acompanhar. Em vez da ativação de uma determinada camada ser simplesmente 𝑎 𝐿, ela também terá um índice subscrito, indicando qual é o neurônio dessa camada. Vamos seguir em frente e usar a letra 𝑘 para indexar a camada 𝐿 menos um e 𝑗 para indexar a camada 𝐿.

Pelo custo, novamente, analisamos qual é o resultado desejado. Mas desta vez, somamos os quadrados das diferenças entre essas ativações da última camada e a saída desejada. Ou seja, você recebe uma soma sobre 𝑎 𝐿 𝑗 menos 𝑦 𝑗 ao quadrado. Como há muito mais pesos, cada um precisa ter mais alguns índices para acompanhar onde está. Então, vamos chamar o peso da borda que conecta esse 𝑘-ésimo neurônio ao 𝑗-ésimo neurônio 𝑤 𝐿 𝑗𝑘. Esses índices podem parecer um pouco para trás no início. Mas está alinhado com a forma como você indexa a matriz de peso que eu falei no primeiro vídeo.

Como antes, ainda é bom dar um nome à soma ponderada relevante, como 𝑧, para que a ativação da última camada seja apenas sua função especial, como o sigmoide, aplicada a 𝑧. Você pode entender o que quero dizer, certo, onde todas essas são essencialmente as mesmas equações que tínhamos antes no caso de um neurônio por camada. Só que parece um pouco mais complicado. E, de fato, a expressão derivada de regra de cadeia que descreve a sensibilidade do custo a um peso específico parece essencialmente a mesma. Deixo a você fazer uma pausa e pensar em cada um desses termos, se quiser.

O que muda aqui, no entanto, é a derivada do custo em relação a uma das ativações na camada 𝐿 menos um. Nesse caso, a diferença é que o neurônio influencia a função de custo por vários caminhos diferentes. Ou seja, por um lado, influencia 𝑎 𝐿 zero, que desempenha um papel na função de custo. Mas também tem influência em 𝑎 𝐿 um, que também desempenha um papel na função de custo. E você tem que somar isso. E isso - bem, é praticamente isso. Depois de saber o quão sensível é a função de custo às ativações nesta penúltima camada, você pode apenas repetir o processo para todos os pesos e vieses que alimentam essa camada.

Então, dê um tapinha nas costas! Se tudo isso faz sentido, você agora examinou profundamente o coração da retropropagação, o cavalo de batalha por trás de como as redes neurais aprendem. Essas expressões de regra da cadeia fornecem as derivadas que determinam cada componente no gradiente que ajuda a minimizar o custo da rede ao descer repetidamente ladeira abaixo. Ufa! Se você se sentar e pensar em tudo isso, há muitas camadas de complexidade para envolver sua mente. Portanto, não se preocupe se levar algum tempo para sua mente digerir tudo.

A Nagwa usa cookies para garantir que você tenha a melhor experiência em nosso site. Saiba mais sobre nossa Política de privacidade.