[Música] Olá bem-vindos essa vídeo aula do curso de redes neurais Eu sou professor Marcos killes e na aula de hoje nós vamos conhecer alguns métodos utilizados para o treinamento das redes Multilaser e também conhecer algumas formas a gente regularizar os pesos regularizar rede para evitar o fenômeno de overflite que nós já vimos nas aulas anteriores então nessa aula eu vou apresentar para vocês algoritmos utilizados em particular vou apresentar dois algoritmos que representam o estado da arte em treinamento de redes neurais que é o algoritmo RMS próprio e apresentar algumas regularizações em particular a L2 e a sua variação L1 e o mecanismo de dropáltico também é bastante utilizado em redes profundas bom qualquer ideia nós apresentamos o algoritmo da propagação baseado no Gradiente descendentes tocástico e a gente viu que ele consegue treinar o modelo consegue ajustar os pesos do modelo fazendo com que o modelo sempre responda ao longo do treinamento melhor do que ele respondia no tempo anterior Qual que é o problema pode ser que esse processo de aprendizado de acordo com o tipo de superfície de erro que nós temos ele pode ser bastante lento então a gente não conhece como que essa superfície de erro essa energia do erro ela se comporta quantos mínimos existem Qual que é o mínimo Global então encontrar o mínimo Global Nem sempre é um processo trivial então a gente pode tentar desenvolver algoritmos que melhoram a busca nessa superfície de erro visando encontrar atingi-la é com o tempo menor ou com uma convergência mais alta então por exemplo a gente pode ter mínimos locais na nossa superfície da energia de erro tem diversos ninhos locais que podem travar o processo de Treinamento evitando que a gente atinge o mínimo Global a gente pode ter platôs na nossa superfície de erro ou seja regiões planas onde a derivada do sinal nessa região ela é muito próxima de zero como a taxa atualização do Peso Ela depende da derivada se a derivada é muito próxima de zero passo de atualização vai ser muito próximo zero Então a gente vai demorar muito para caminhar ao longo desse platô a gente pode ter oscilações Principalmente quando a taxa de aprendizagem muito alta a gente pode ficar oscilando entre regiões de um mínimo e nunca atingir aquele mínimo então qualquer ideia as adaptações são realizadas em função diretamente da derivada parcial da energia do e em relação aos parâmetros sabe que a gente não consegue extrair outras informações ou melhorar os parâmetros dessa equação de tal formas acelerar esse processo então aqui tá um gráfico mostrando diversos algoritmos alguns algoritmos que a gente tem na literatura onde nós temos aqui o custo de treino a função de custo né o erro quadrático médio ou qualquer outro e aqui as épocas que que a gente observa que todos os algoritmos convergem mas alguns convergem para valores mais baixos outros com viagem para valores mais altos então de acordo com o algoritmo a gente pode ter uma convergência melhor ou pior além disso a questão do tempo o algoritmo adama como a gente pode ver aqui com um tempo muito pequeno ele já atingiu um valor que os outros algoritmos só vão atingir lá na frente com muito mais épocas Então a gente tem diversos sabores proporção literatura como r. prop ada grade rmsprop Adam dentro de diversos outros que podem ser encontrados aqui outra ilustração mostrando o cenário que eu tô começando nessa região aqui então tô começando com a rede na mesma condição Inicial e aplicando diversos algoritmos e observando como que os parâmetros estão caminhando nessa superfície de erro nosso objetivo é chegar aqui que que a gente observa é diversas realiza um trajetória diferentes enquanto eles estão chegando lá o sgd que é o nosso algoritmo padrão tá caminhando lentamente aqui até chegar eventualmente no nosso mínimo da função de custo então mudando algoritmo a gente pode mudar a eficiência do processo de Treinamento o Hermes próprio de rootment Square propagation ele foi proposto pelo Jofre hinton não sei se você recordam de alfrey ele é um dos proponentes do algoritmo de propagação original também é um dos criadores da máquina de Bolt mas um dos pesquisadores mais citados na área de computação na ciência como um todo tem acho que mais de 600 mil situações e ele proporcio algoritmo em uma das aulas dele e acabou não publicando esse algoritmo formalmente o algoritmo amplamente utilizado só que não tem um artigo formal descrevendo esse algoritmo ele foi proposto pelo Joe e uma das suas aulas como sendo uma das variações possíveis do algoritmo de reta propagação padrão então qualquer ideia ele calcula a média móvel dos gradientes para cada peso ao longo do processo de Treinamento então o que que nós temos se essa esse Gradiente ele se altera muito ele é muito grande ao longo do processo a gente utiliza esse valor Grande para reduzir o passo que eu tô considerando para atualizar cada peso da rede por outro lado se eu tenho que essa oscilação é muito baixa eu tento amplificar o passo de atualização na rede por exemplo no caso de um platô como mencionei ela atrás se eu tiver naquele platô derivado é muito pequeno o gradiente é pequeno aqui indicando uma seta muito pequena se eu tenho Passos muito pequenos que estão oscilando pouco eu posso tentar ampliar o tamanho desse passo por outro lado se eu tô entre duas regiões e oscilando muito quer dizer que o vetor Gradiente é muito grande seria interessante talvez reduzir o tamanho desse passo vai ser exatamente que o algoritmo RMS próprios ou seja grandes variações reduzem o plástico de atualização e pequenas variações amplificam o nosso passo de atualização Como que Como funciona o processo de atualização exatamente o mesmo Que nós tínhamos anteriormente ou seja Eta menos reta vezes a derivada parcial da energia do erro em relação aos parâmetros Qual que é a diferença esse valor essa raiz de S que tem aqui embaixo Então o que a gente pode pensar sem olhar na fórmula de cima se o s for um valor muito grande o que que eu tô fazendo com ela eu tô reduzindo o valor de reta logo eu tô reduzindo o passo de atualização se o valor de S for um valor muito pequeno menor do que um o que que tá acontecendo com ela eu tô amplificando o valor direto eu tô ampliando o valor de dieta para valores maiores passos de atualização maior Então esse eta ele vai ser uma espécie de fator de normalização do tamanho do Passo da atualização ao longo do processo de Treinamento como que a gente calcula esse s o Sr vai ser é um somatório mas soma é uma média móvel do S que eu tinha calculado no instante anterior mas o quadrado do Gradiente calculado instantaneamente Então se o gradiente ele tem um valor alto ao quadrado Independente se ele é positivo ou negativo ao quadrado eu vou ter uma posição positiva Então se esses valores são muito grandes oscilam muito entre valores grandes esse termo tende a ser grande se esse termo é grande a gente vai utilizá-lo de maneira preponderante para definição do S por outro lado se esse termo aqui ele é pequeno o que que vai acontecer com o valor de S ele tende a ser reduzido e o que que a gente observa Com referência esse termo Beta aqui esse tempo Beta geralmente é um valor bem grande Então significa que eu tô para manter uma estabilidade do algoritmo eu tô mantendo o valor de S bastante estável em relação aos valores anteriores Então vamos pensar que eu tô caminhando Numa superfície no qual Gradiente Ele é bem pequeno e tem poucas oscilações se algum momento eu tenho um ruído ou naquela naquele ponto específico o eu tô no valor muito alto o impacto que ele vai ter sobre o valor de S é pequeno porque o valor de Beta é grande então esse valor aqui é próximo de zero então por isso eu garanto uma certa estabilidade ou seja vou reduzindo ou aumentando a essa taxa de normalização do Eta de maneira gradativa e controlada a partir desse Beta quanto menor o Beta mais agressivo vão ser as modificações quanto maior o Beta mais suave vão ser as modificações realizadas que que é interessante esse algoritmo ele consegue então controlar para cada sinapse da rede qual que é uma espécie dieta adequado para aquele momento do treinamento Então se o a média móvel o segundo momento né do Gradiente quadrático tá oscilando muito então talvez é um momento da gente reduzir baixa de atualização por outro lado se eu tô com uma taxa muito pequena e constante Então a gente vai definir um s para ampliar a taxa de atualização então com isso a gente não precisa mais se preocupar em começar com uma taxa grande e reduzindo essa taxa que o próprio algoritmo já vai fazer isso pra gente de maneira automática o Adam ele basicamente ele junta diversas heurísticas adotadas em outros algoritmos outros métodos que tentam melhorar o algoritmo de retropropagação padrão em particular ele consiste uma extensão do RMS próprio no qual a gente ao invés de utilizar o gradiente local calculado instantaneamente e o aquele S que define a normalização do Eta a gente também vai utilizar o termo de momento então o Adam nada mais é do que o RMS próprio que já é uma melhoria de algoritmos anteriores adicionando-se o termo de momento ele foi proposto pelo King me pelo by em 2014 algoritmo bastante recente em comparação com outros algoritmos que a gente tem na literatura Como o próprio algoritmo de reto propagação lá da década de 80 1986 Qual que é a ideia doada a forma de atualização é praticamente a mesma onde a gente está tendo Eta normalizado por esse parâmetro S que exatamente o que nós tínhamos no algoritmo arremesso próprio Qual que é a diferença agora em vez da gente colocar direto Gradiente aqui que é esse Gradiente a gente vai colocar uma média móvel desse Gradiente que é o nosso termo de momento que está definido nessa primeira equação de m aqui então qual que a ideia a gente vai utilizar o gradiente calcular no instante mas de forma preponderante a gente vai utilizar o a média dos gradientes calculadas anteriormente então o gradiente a gente vai pegar o gradiente calculado no Passo anterior multiplicado por um valor de Beta geralmente alto mas um menos Beto seja um termo pequeno em relação ao Gradiente calculado instantaneamente então o gradiente calculado ele vai influenciar na atualização sim mas a gente vai levar muito em consideração os passos anteriores que nós tivemos na superfície da energia e dinheiro então com isso a gente consegue uma maior estabilidade do modelo então a gente consegue controlar tanto a variação do Eta necessário para para aquela situação do treino quanto possíveis instabilidades que possam ser geradas aí por variações do Gradiente é que não são obtidas sem a utilização do sistema de momento não tem momento ele vai inserir para a gente Aquela inércia no processo a energia como se fosse uma energia cinética naquela bolinha que tá descendo da superfície evitando que ela fique presa por exemplo em meninos locais ela consiga romper barreiras de potencial já tem duas constantes a mais um algoritmo então ainda taxa de aprendizagem etc que a gente já tem para configurar na rede padrão agora a gente tem que configurar um beta um e um beta 2 A vantagem disso assim como não é RMS próprio porque a gente tem um beta bem definido um beta que é robusto para diversos cenários utilizar um beta um de 0. 9 um beta 2 de 0.
99 representam valores adequados aí para para a utilização do algoritmo Adam sem necessidade de ajustes não ficar testando mais esse parâmetro para conseguir atingir o modelo adequado bom então nós temos dois algoritmos dentre os diversos dentes que podem ser utilizados para para configurar de maneira mais eficiente os parâmetros de uma rede e agora vou abordar com vocês o mecanismo de regularização Só lembrando para que que ela serve né Vamos pensar que Nós criamos o modelo que apresentam baixo erro de treino porém a hora que eu tento avaliar esse modelo com um conjunto de validação a gente tem que esse erro de validação ele tende a crescer muito ou seja o modelo conseguiu decorar o conjunto de treino mas ele não consegue generalizar para aqueles dados não vistos durante o processo de Treinamento ele não consegue generalizar para o conjunto de validação ou seja tá com over Fitness uma das formas a gente controlar Fitness seria o que reduzir a quantidade de parâmetros da rede ao reduzir a quantidade de parâmetros da rede a gente está diminuindo a flexibilidade do modelo que é exatamente com a regularização vai fazer não reduzir a quantidade de parâmetros mas reduzir a flexibilidade desses parâmetros reduzindo como consequência a flexibilidade de aprendizagem do modelo e objetivando sempre reduzir a possibilidade de over Fitness sobre ajuste aqui eu vou apresentar para vocês a regularização L2 L1 e o mecanismo de dropáltico que tem o mesmo propósito regularizar o processo de Treinamento Qual que é a ideia da regularização de dois vamos pensar que aqui esse é de 0 representa a nossa função de custo adotada por exemplo quadrático médico nós já vimos até então só que agora minha função de custo vai ser definida com a função de custo anterior que eu tinha mas um somatório dos pesos ao quadrado multiplicado por um fator um termo lambda qualquer ideia se lambda for igual a zero a função de custo exatamente a função de custo que eu já tinha conforme o aumento o valor de lambda mais importância o comércio dá para esse termo o que que esse termo que me fala eu tô fazendo somatório quadrático dos pesos ou seja se minha rede Ela tá aprendendo e os pesos estão crescendo amplitude dele está ficando muito grande esse somatório tende a crescer muito se a somatório cresce a minha função de custo cresce e eu quero reduzir a função de custo então para reduzir a função de custo a hora que aplica o gradiente descendente sobre a superfície Ele vai tentar ajustar os parâmetros da rede e também reduzir o tamanho desses parâmetros fazendo com que os parâmetros sejam pequenos então ele vai evitar que a rede consiga aprender o problema com a utilizando adotando pesos muito grandes então a gente tá meio que restringindo até qual valor que o conjunto de pesos consegue atingir então com isso a gente consegue uma certa restrição sobre a flexibilidade de aprendizagem do modelo que que ele dois faz na prática ela reduz o tamanho dos pesos e como que isso afeta como que isso ajuda na solução do Over Fit Vamos pensar o seguinte Nossa função sigmoide logística aqui que ela vai de menos infinita mais infinito e o valor dela vai de 0 a 1 o valor de saída dela de 0 a 1 o v que é o valor que tá aqui embaixo no X Ele é o campo local induzido ele é calculado pelo somatório ponderado das entradas pelos respectivos pesos que acontece o tempero muito grandes todos positivos ou todos negativos ou mistos pode ser que tenha valores muito à esquerda ou muito à direita nesse gráfico de fato uma superfície bastante não linear eu consigo aprender uma função Não linear que acontece eu começo a reduzir os valores desses pesos aqui pode ser que agora já não consiga atingir valores de ver muito grandes eu fiquei restrito aqui a entre menos dois e dois que acontece o restring ainda mais o vetor de peso o tamanho agora uma escala de 10 a menos três por exemplo da forma que eu consiga atingir valores de ver apenas entre menos 0. 1 e 0. 1 a gente vai estar representando a saída do neurônio só no intervalo dessa região aqui E se a gente analisar der um zoom nessa região a gente observa que aqui a gente tem praticamente uma reta então o que que a gente está fazendo eu tô transformando uma função que é não linear é uma saída de ativação no caso extremo linear para esse neurônio e o que que nós vimos quando a gente tem múltiplas camadas de neurônios lineares isso seria equivalente a ter uma única camada de neurônio linear as múltiplas camadas não não agregariam maior poder computacional à rede então utilizando a regularização conforme eu vou aumentando o valor de lã aumentando a importância do tamanho dos pesos eu tô transformando esse modelo de algo não linear e aproximando aquela função de ativação de uma função de ativação linear então com isso restringindo a flexibilidade a capacidade de aprendizagem do modelo a regularização L1 ela é Idêntica L2 no sentido que eu tô utilizando também o somatório dos pesos só que agora em vez de utilizar o somatório quadrático dos pesos a gente vai utilizar o somatório absoluto dos pesos Qual que é a consequência disso quando a gente tem a soma quadrática dos pesos se qualquer peso ultrapassar um dado Limiar ali ele é o quadrado ele vai gerar um valor muito grande para que ele somatório que eu tô fazendo somatório quadrático Ou seja eu não vou deixar que nem um peso extrapole muito qualquer peso começa a extrapolar o custo cresce muito e o método vai tentar reduzir aquele peso quando a gente utiliza L1 Ou seja a soma a soma absoluta dos valores dos pesos a gente permite que a rede para um peso ou outro ela consiga atingir valores altos especializa aquele peso para aquele dado padrão é sem comprometer muito o conjunto de custos até por isso essa técnica a regularização nenhuma é bastante utilizada para seleção de atributos a gente deixa algumas sinapses se especializarem para algum tipo de padrão então a gente consegue com base nos pesos apreendidos da rede Quais são os atributos mais relevantes a utilizar uma regularização L1 tem uma técnica bastante comum chamada de laço que é utilizada é basicamente L1 sobre o regressor linear para fazer a seleção de atributos em aprendizado de máquina por fim aqui a regularização global de qualquer ideia a gente vai desativar neurônios ao longo do processo de Treinamento não tem uma rede aqui uma topologia definida no qual tem seis neurônios na camada oculta se eu treinasse essa rede de maneira integral o que que aconteceu pode ser que algum desses neurônios especializem um dado padrão que eu recebo da camada de entrada Vamos pensar que esse neurônio aqui eles especializou um dado um padrão então toda vez que eu apresentar aquele padrão pra rede ele vai ter uma importância muito grande para o cálculo da saída o que que acontece ao longo do processo treinamento eu falar o seguinte ó Desative aleatoriamente 50% dos alunos da camada oculta eu vou fazer num primeiro momento desligar esses dois neurônios aqui desligar esse e deixar apenas esses três neurônios marcados aí que não estão rachados ativos ao longo do processo de Treinamento então de alguma forma esses três neurônios vão ter que aprender mapear a entrada na saída numa outra apresentação eu seleciona um outro subconjunto de neurônios por exemplo Vamos pensar que eu fiz o inverso agora selecione esses dois como ativos Esse aqui também como ativo e desativei os outros três que estava ativos no instante anterior que que eu fiz com isso que que eu carreto com isso eu não deixo que um neurônio apenas especialize naquele padrão apresentado então de alguma forma eu vou tentar distribuir capacidade de aprendizagem não especializando em um único neurônio mas distribuído por todos os números da rede por quê porque pode ser que seu sobrecarregar a importância de um neurônio Em algum momento o treinamento ele não vai estar presente logo o erro vai ser alto então fazendo isso o que que a gente está fazendo na prática eu tô reduzindo a flexibilidade modelo invés de utilizar de fato seis neurônios eu tô utilizando três neurônios na camada oculta Então seria como se eu tivesse restringindo a quantidade de parâmetros desse modelo então ela evita que o único neurônio decore é um dado padrão e a carga do exemplo ela passa a ser distribuída por toda a rede por toda a camada e não fica a gente evita que ela fique a cargo de um único neurônio o parâmetro para Drpa Alt é basicamente o percentual de neurônios que eu vou desligar ao longo do processo nesse exemplo que nós temos 50%.