Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Aula 6.1 — Visão geral da descida de gradiente em minibatch
Aula 6.1 — Visão geral da descida de gradiente em minibatch [Redes neurais para aprendizado de máquina]
Neste vídeo, abordaremos o aprendizado estocástico de gradiente descendente para redes neurais, com foco na versão mini-batch, que é amplamente utilizada em grandes redes neurais. A superfície de erro de um neurônio linear forma uma tigela quadrática, onde os eixos horizontais representam os pesos e o eixo vertical representa o erro. Para redes não lineares multicamadas, a superfície de erro é mais complexa, mas aproximada localmente por uma fração de uma tigela quadrática.
Ao usar o aprendizado em lote completo, descer ao longo da direção do gradiente mais íngreme pode não levar ao destino desejado. A direção da descida mais íngreme geralmente é quase perpendicular à direção desejada, causando problemas de convergência. Esse problema persiste em redes multicamadas não lineares, pois as superfícies de erro tendem a ser altamente curvas em algumas direções e menos curvas em outras.
Para resolver isso, a descida do gradiente estocástico (SGD) é empregada. Em vez de calcular o gradiente em todo o conjunto de dados, o SGD calcula o gradiente em subconjuntos ou mini-lotes dos dados. Essa abordagem oferece várias vantagens, como computação reduzida para atualizações de peso e a capacidade de paralelizar cálculos de gradiente para vários casos de treinamento.
O uso de mini-lotes ajuda a evitar a perda de peso desnecessária. É importante ter mini-lotes representativos de todo o conjunto de dados e evitar aqueles que não são característicos, como ter todos os exemplos de uma única classe. Embora existam algoritmos de gradiente completos disponíveis, o aprendizado em minilote é geralmente preferido para conjuntos de treinamento grandes e redundantes devido à sua eficiência computacional.
O algoritmo básico de aprendizado de descida de gradiente de minilote envolve adivinhar uma taxa de aprendizado inicial e monitorar o desempenho da rede. Se o erro piorar ou oscilar, a taxa de aprendizado é reduzida. Se o erro cair muito lentamente, a taxa de aprendizado pode ser aumentada. Automatizar o ajuste da taxa de aprendizado com base nessas observações é benéfico. No final do aprendizado, geralmente é útil diminuir a taxa de aprendizado para suavizar as flutuações nos pesos causadas por gradientes de minilote. Os conjuntos de validação são usados para avaliar quando diminuir a taxa de aprendizado e determinar quando o erro para de diminuir consistentemente.
Ao ajustar cuidadosamente a taxa de aprendizado e ajustá-la ao longo do processo de treinamento, a descida de gradiente em minilote fornece uma abordagem eficaz para treinar grandes redes neurais em conjuntos de dados redundantes.
Além disso, vale a pena notar que existem dois tipos principais de algoritmos de aprendizado para redes neurais: algoritmos de gradiente completo e algoritmos de mini-lote. Algoritmos de gradiente completo calculam o gradiente usando todos os casos de treinamento, permitindo várias técnicas de otimização para acelerar o aprendizado. No entanto, esses métodos desenvolvidos para funções não lineares suaves podem exigir modificações para funcionar efetivamente com redes neurais multicamadas.
Por outro lado, o aprendizado em minilote é vantajoso para conjuntos de treinamento altamente redundantes e grandes. Embora os mini-lotes precisem ser relativamente grandes, eles oferecem eficiência computacional. O uso de mini-lotes permite a computação paralela de gradientes para vários casos de treinamento simultaneamente, aproveitando os recursos de processadores modernos, como unidades de processamento gráfico (GPUs).
Ao longo do processo de formação, é importante encontrar um equilíbrio com o ritmo de aprendizagem. Ajustes na taxa de aprendizado devem ser feitos com base no desempenho da rede e no comportamento observado do erro. No final do aprendizado, reduzir a taxa de aprendizado pode ajudar a alcançar um conjunto final de pesos que é um bom compromisso, suavizando as flutuações causadas por gradientes de minilote.
Os conjuntos de validação desempenham um papel crucial no monitoramento do progresso da rede. Ao medir o erro em um conjunto de validação separado, pode-se avaliar se o erro para de diminuir consistentemente e determinar o tempo apropriado para ajustar a taxa de aprendizado. Esses exemplos de validação não são usados para treinamento ou teste final.
O algoritmo de aprendizado de descida de gradiente de minilote fornece uma abordagem prática e eficiente para treinar grandes redes neurais em conjuntos de dados redundantes. O ajuste cuidadoso da taxa de aprendizado, o monitoramento do desempenho da rede usando conjuntos de validação e o uso de mini-lotes representativos contribuem para resultados de treinamento bem-sucedidos.
Aula 6.2 — Um saco de truques para descida de gradiente em mini lote
Aula 6.2 — Um pacote de truques para descida de gradiente em minibatch [Redes neurais para aprendizado de máquina]
Neste vídeo, discutiremos vários problemas que surgem ao usar a descida de gradiente estocástica com mini-lotes. Existem inúmeros truques que podem melhorar significativamente o desempenho, muitas vezes referidos como a "arte negra" das redes neurais. Abordarei alguns dos principais truques neste vídeo.
Vamos começar com a primeira questão: inicialização de peso em uma rede neural. Se duas unidades ocultas tiverem os mesmos pesos e vieses, elas sempre receberão o mesmo gradiente e nunca se diferenciarão. Para capacitá-los a aprender diferentes detectores de recursos, precisamos inicializá-los com pesos diferentes. Isso normalmente é feito usando pequenos pesos aleatórios para quebrar a simetria. É importante observar que o tamanho dos pesos iniciais não deve ser o mesmo para todas as unidades. Unidades ocultas com maior fan-in (conexões de entrada) tendem a saturar com pesos maiores, então pesos menores são preferidos nesses casos. Por outro lado, unidades ocultas com menor fan-in se beneficiam de pesos maiores. O tamanho dos pesos iniciais deve ser proporcional à raiz quadrada do fan-in.
Outro fator importante é o deslocamento das entradas. Adicionar um valor constante a cada componente de entrada pode ter um impacto significativo na velocidade de aprendizado. Mudar as entradas é particularmente eficaz ao usar a descida mais íngreme. Recomenda-se deslocar cada componente de entrada para que, em média, nos dados de treinamento, tenha um valor médio de zero.
Em seguida, vamos considerar a superfície de erro e como ela se relaciona com os pesos e casos de treinamento. Em alguns casos, quando os pesos atendem a diferentes casos de treinamento, a superfície de erro pode se tornar alongada, dificultando o aprendizado. No entanto, subtraindo um valor constante de cada componente de entrada, podemos transformar a superfície de erro em uma forma circular, o que facilita o aprendizado.
Outro fator a considerar é a função de ativação para unidades ocultas. As tangentes hiperbólicas, que variam entre -1 e 1, são frequentemente preferidas porque levam a atividades de unidades ocultas com um valor médio próximo de zero. Isso pode facilitar o aprendizado mais rápido nas camadas subsequentes. No entanto, as funções de ativação logística têm vantagens, pois fornecem uma saída de zero para pequenas entradas negativas, permitindo que a rede ignore flutuações nessas entradas. Tangentes hiperbólicas requerem entradas maiores para ignorar tais flutuações.
Dimensionar as entradas também é crucial para uma aprendizagem eficaz. Ao transformar os componentes de entrada para ter variação de unidade em todo o conjunto de treinamento, com um valor típico de um ou menos um, podemos melhorar a superfície de erro. Dimensionar as entradas garante que as mudanças nos pesos tenham efeitos semelhantes em todos os componentes de entrada, levando a um processo de aprendizado mais equilibrado.
Para acelerar o aprendizado em minilote, existem quatro métodos principais a serem considerados:
Momentum: Em vez de alterar diretamente os pesos com base no gradiente, o momentum usa o gradiente para acelerar a velocidade dos pesos. Essa abordagem permite que os pesos retenham informações de gradientes anteriores.
Taxas de aprendizagem adaptáveis: Usar uma taxa de aprendizagem adaptativa separada para cada parâmetro e ajustá-la com base em medições empíricas pode melhorar a aprendizagem. Se o gradiente continuar mudando de sinal, a taxa de aprendizado é reduzida. Se o gradiente permanecer consistente, a taxa de aprendizado é aumentada.
RMSprop: Este método divide a taxa de aprendizado por uma média de execução das magnitudes de gradiente recentes. Ele lida efetivamente com uma ampla gama de gradientes, dimensionando-os adequadamente.
Aprendizado em lote completo: essa abordagem envolve o uso de todo o conjunto de treinamento para aprendizado e o emprego de técnicas avançadas de otimização que consideram as informações de curvatura. Embora possa ser eficaz, pode exigir adaptação adicional para trabalhar com mini-lotes.
Estas são apenas algumas das técnicas que podem melhorar significativamente o desempenho da descida de gradiente estocástico com mini-lotes.
Em resumo, discutimos várias questões e técnicas importantes relacionadas à descida de gradiente estocástico com mini-lotes em redes neurais. Essas técnicas servem como a "arte negra" das redes neurais e podem melhorar muito seu desempenho. Vamos recapitular os principais pontos:
Inicialização de peso: para permitir que as unidades ocultas aprendam diferentes detectores de recursos, é crucial inicializar seus pesos de maneira diferente. Usando pequenos pesos aleatórios que quebram a simetria, podemos garantir que cada unidade comece distinta uma da outra. O tamanho dos pesos iniciais deve ser proporcional à raiz quadrada do fan-in, o que ajuda a obter um bom ponto de partida.
Mudando as entradas: Mudar as entradas adicionando uma constante a cada componente pode ter um impacto significativo na velocidade do aprendizado. É benéfico deslocar cada componente para que, em média, a entrada tenha um valor de zero. Isso pode ser obtido subtraindo a média dos valores de entrada nos dados de treinamento.
Entradas de escala: Escalar os valores de entrada é outra técnica útil na descida de gradiente estocástico. Transformar as entradas de forma que cada componente tenha variação de unidade em todo o conjunto de treinamento simplifica o processo de aprendizado. O redimensionamento das entradas ajuda a criar uma superfície de erro circular, o que torna a descida do gradiente mais eficiente.
Decorrelacionando componentes de entrada: Decorrelacionar os componentes de vetores de entrada melhora o aprendizado removendo as correlações entre os recursos. A análise de componentes principais é um método valioso para conseguir isso. Ao remover os componentes com autovalores pequenos e dimensionar os componentes restantes, podemos obter uma superfície de erro circular, facilitando a descida do gradiente.
Problemas comuns: Alguns problemas comuns encontrados no treinamento de redes neurais incluem grandes taxas iniciais de aprendizado que levam a que unidades ocultas fiquem travadas, aprendizado lento ao iniciar com pesos pequenos e redução prematura da taxa de aprendizado. É importante encontrar um equilíbrio no ajuste da taxa de aprendizado para garantir o aprendizado ideal.
Acelerando o aprendizado de mini-lote: Existem quatro métodos principais para acelerar o aprendizado de mini-lote explicitamente projetado para um aprendizado mais rápido: impulso, taxas de aprendizado adaptativo, RMSprop e aprendizado de lote completo com informações de curvatura. Essas técnicas alavancam vários mecanismos, como impulso, ajustes adaptativos e magnitudes de gradiente, para acelerar o processo de aprendizagem.
Embora essas técnicas melhorem significativamente o desempenho da descida de gradiente estocástico com mini-lotes em redes neurais, é essencial considerar o problema específico em questão e experimentar diferentes abordagens para obter os melhores resultados. O campo da otimização oferece métodos avançados que vale a pena explorar para um aprendizado ainda mais eficiente em redes neurais.
Isso conclui os principais pontos abordados neste vídeo sobre os desafios e técnicas relacionadas à descida de gradiente estocástico com mini-lotes em redes neurais.
Aula 6.3 — O método do momento
Aula 6.3 — O método momentum [Neural Networks for Machine Learning]
Neste vídeo, discutiremos vários problemas relacionados ao uso de gradiente descendente estocástico com mini-lotes e exploraremos algumas técnicas para aumentar sua eficácia. Essas técnicas são frequentemente consideradas a "arte negra" das redes neurais, e abordaremos algumas das principais.
Primeiramente, vamos abordar o problema de inicialização de peso em uma rede neural. Se duas unidades ocultas tiverem pesos e vieses idênticos, elas sempre receberão o mesmo gradiente e não poderão aprender detectores de características diferentes. Para capacitá-los a aprender recursos distintos, é crucial inicializar seus pesos de maneira diferente. Conseguimos isso usando pequenos pesos aleatórios que quebram a simetria. Além disso, é benéfico que os pesos iniciais tenham magnitudes diferentes, considerando o fan-in de cada unidade escondida. Por exemplo, pesos maiores podem levar à saturação em unidades com fan-in significativo, enquanto pesos menores são adequados para unidades com fan-in pequeno. Como regra geral, o tamanho dos pesos iniciais deve ser proporcional à raiz quadrada do fan-in.
Mudar as entradas ou adicionar uma constante a cada componente de entrada pode, surpreendentemente, ter um impacto significativo na velocidade do aprendizado. Essa mudança ajuda na descida mais íngreme, pois pode alterar substancialmente a superfície de erro. Muitas vezes, é recomendável deslocar cada componente de entrada para ter um valor médio de zero em todo o conjunto de treinamento.
Escalar as entradas é outra consideração importante ao usar a descida mais íngreme. O dimensionamento envolve a transformação dos valores de entrada para garantir que cada componente tenha variação de unidade em todo o conjunto de treinamento, tornando-os valores típicos de um ou menos um. Essa escala permite um melhor comportamento da superfície de erro, evitando alta curvatura para grandes componentes de entrada e baixa curvatura para os pequenos.
Decorrelacionar os componentes de entrada pode facilitar muito o aprendizado. Ao remover as correlações entre os componentes de entrada, reduzimos a redundância e melhoramos a eficiência do aprendizado. A análise de componentes principais (PCA) é uma técnica comumente usada para alcançar a decorrelação. Envolve a remoção de componentes com pequenos autovalores e dimensionamento dos componentes restantes, dividindo-os pelas raízes quadradas de seus autovalores. Este processo leva a uma superfície de erro circular para sistemas lineares, o que simplifica o aprendizado.
Agora vamos abordar alguns problemas comuns encontrados no treinamento de redes neurais. Começar com uma taxa de aprendizado excessivamente grande pode levar as unidades ocultas a estados extremos, onde suas derivadas se tornam próximas de zero. Isso faz com que o aprendizado pare, muitas vezes dando a impressão de estar preso em um mínimo local. Na realidade, a rede provavelmente está presa em um platô.
Outro desafio surge ao classificar usando erro quadrado ou erro de entropia cruzada. Inicialmente, a rede aprende rapidamente a melhor estratégia de adivinhação, que é tornar a unidade de saída igual à proporção esperada de ser um. No entanto, melhorias adicionais além dessa estratégia de adivinhação podem ser lentas, especialmente com redes profundas e pesos iniciais pequenos.
Ao ajustar a taxa de aprendizado, é essencial encontrar o equilíbrio certo. Diminuir a taxa de aprendizado muito cedo ou muito pode atrapalhar o progresso, enquanto reduzi-la no final do treinamento pode ajudar a estabilizar o desempenho da rede.
Agora vamos explorar quatro métodos específicos para acelerar significativamente o aprendizado de mini-lote:
Momentum: Em vez de alterar diretamente os pesos com base no gradiente, o momentum envolve o uso do gradiente para atualizar a velocidade das atualizações de peso. Esse impulso permite que a rede se lembre de gradientes anteriores e ajuda a acelerar o aprendizado.
Taxas de aprendizado adaptáveis: atribuir uma taxa de aprendizado separada para cada parâmetro e ajustá-lo lentamente com base em medições empíricas pode melhorar o aprendizado. Se o sinal do gradiente continuar mudando, indicando oscilação, a taxa de aprendizado diminui. Se o sinal permanecer consistente, indicando progresso, a taxa de aprendizado é aumentada.
RMSprop: Este método envolve dividir as atualizações de peso por uma média de execução das magnitudes de gradiente recentes. Ele ajusta dinamicamente as atualizações de peso com base na magnitude dos gradientes, permitindo o manuseio eficaz de vários intervalos de gradiente. O RMSprop é uma adaptação em minilote do Rprop.
Aula 6.4 — Taxas de aprendizagem adaptáveis para cada conexão
Aula 6.4 — Taxas de aprendizado adaptativo para cada conexão [Redes neurais para aprendizado de máquina]
Neste vídeo, vamos explorar um método conhecido como taxas de aprendizado adaptativo, que foi inicialmente desenvolvido por Robbie Jacobs no final dos anos 1980 e posteriormente aprimorado por outros pesquisadores. O conceito por trás das taxas de aprendizado adaptativo é atribuir uma taxa de aprendizado única a cada conexão em uma rede neural, com base em observações empíricas de como o peso dessa conexão se comporta durante as atualizações. Essa abordagem permite o ajuste fino do processo de aprendizado diminuindo a taxa de aprendizado quando o gradiente do peso continua se invertendo e aumentando quando o gradiente permanece consistente.
Ter taxas de aprendizagem adaptativa separadas para cada conexão é vantajoso, especialmente em redes multicamadas profundas. Em tais redes, as taxas de aprendizagem podem variar significativamente entre diferentes pesos, particularmente entre pesos em diferentes camadas. Além disso, a ventilação de uma unidade, que determina o tamanho dos efeitos de overshoot ao ajustar vários pesos de entrada para corrigir um erro, também exige diferentes taxas de aprendizado. Fan-ins maiores podem levar a efeitos de overshoot mais significativos, tornando necessário adaptar as taxas de aprendizado de acordo.
Para implementar taxas de aprendizagem adaptáveis, uma taxa de aprendizagem global é definida manualmente e multiplicada por um ganho local específico para cada peso. Inicialmente, o ganho local é definido como 1 para cada peso. A atualização do peso é então determinada multiplicando a taxa de aprendizado pelo ganho local e a derivada de erro para esse peso. O ganho local é adaptado aumentando-o se o gradiente para o peso não mudar de sinal e diminuindo-o se os gradientes tiverem sinais opostos. São empregados aumentos aditivos e diminuições multiplicativas, com o objetivo de amortecer rapidamente grandes ganhos caso ocorram oscilações.
É interessante considerar o comportamento das taxas de aprendizado adaptativo quando os gradientes são aleatórios. Nesses casos, haverá um número igual de aumentos e diminuições nos ganhos, resultando em um ganho de 1. Se os gradientes tiverem consistentemente a mesma direção, o ganho pode se tornar muito maior que 1, enquanto gradientes consistentemente opostos podem tornam o ganho muito menor que 1, indicando oscilação em uma ravina.
Para melhorar a eficácia das taxas de aprendizado adaptativo, é importante limitar o tamanho dos ganhos dentro de uma faixa razoável, como 0,1 a 10 ou 0,01 a 100. Ganhos excessivos podem levar à instabilidade e impedir que os pesos converjam. Embora as taxas de aprendizado adaptativo tenham sido inicialmente projetadas para aprendizado em lote completo, elas também podem ser aplicadas com minilotes. No entanto, mini-lotes maiores são preferidos para minimizar a influência dos erros de amostragem e garantir que as mudanças de sinal nos gradientes reflitam a travessia de uma ravina.
É possível combinar taxas de aprendizado adaptativo com momentum, conforme sugerido por Jacobs. Em vez de comparar o gradiente atual com o gradiente anterior, determina-se a concordância de sinal entre o gradiente atual e a velocidade (gradiente acumulado) para aquele peso. Essa combinação aproveita os benefícios das taxas de aprendizagem dinâmica e adaptativa. Enquanto as taxas de aprendizado adaptativo lidam com efeitos alinhados ao eixo, o momento pode lidar com elipses diagonais e navegar rapidamente em direções diagonais, o que as taxas de aprendizado adaptativo sozinhas não podem alcançar.
Existem algumas considerações e técnicas adicionais para melhorar o desempenho das taxas de aprendizado adaptativo. É crucial encontrar um equilíbrio e evitar que os ganhos se tornem excessivamente grandes. Se os ganhos se tornarem muito grandes, eles podem levar à instabilidade e não diminuir com rapidez suficiente, podendo causar danos aos pesos.
Além disso, vale a pena observar que as taxas de aprendizado adaptativo foram projetadas principalmente para aprendizado em lote completo, em que todos os exemplos de treinamento são processados em uma única iteração. No entanto, eles também podem ser aplicados ao aprendizado de mini-batch, onde subconjuntos de exemplos de treinamento são processados por vez. Ao usar minilotes, é importante garantir que o tamanho do minilote seja relativamente grande para mitigar a influência de erros de amostragem. Isso ajuda a garantir que as mudanças de sinal nos gradientes sejam indicativas de atravessar uma ravina, em vez de serem devidas apenas à variabilidade de amostragem do minilote.
Também é possível combinar taxas de aprendizado adaptativo com impulso, o que pode aprimorar ainda mais o processo de otimização. Em vez de comparar o gradiente atual com o gradiente anterior, a concordância no sinal pode ser avaliada entre o gradiente atual e a velocidade (isto é, o gradiente acumulado) para aquele peso. Ao incorporar o impulso, uma sinergia entre as vantagens do impulso e as taxas de aprendizado adaptativo podem ser alcançadas. As taxas de aprendizado adaptativo concentram-se em lidar com efeitos alinhados ao eixo, enquanto o impulso é capaz de lidar efetivamente com elipses diagonais e navegar rapidamente em direções diagonais que podem ser desafiadoras apenas para taxas de aprendizado adaptativo.
As taxas de aprendizado adaptativo oferecem uma maneira de ajustar o processo de aprendizado em redes neurais, atribuindo taxas de aprendizado individuais a cada conexão com base em observações empíricas. Eles abordam os desafios de taxas de aprendizado variadas em diferentes pesos em redes multicamadas profundas e consideram a distribuição de unidades. Técnicas como limitar o tamanho dos ganhos, seleção apropriada de mini-lotes e combinar taxas de aprendizagem adaptativa com impulso podem otimizar ainda mais o processo de treinamento, resultando em melhor desempenho e convergência.
Aula 6.5 — Rmsprop: normalize o gradiente
Aula 6.5 — Rmsprop: normalize o gradiente [Neural Networks for Machine Learning]
O vídeo apresenta um método chamado Rprop (Resilient Backpropagation), inicialmente projetado para aprendizado em lote completo. Ele compartilha semelhanças com o popular algoritmo de retropropagação, mas com algumas diferenças. O palestrante discute como estender o Rprop para trabalhar com mini-lotes, o que é essencial para grandes conjuntos de dados redundantes. O método resultante, chamado iRprop (Improved Rprop), combina as vantagens do Rprop com a eficiência do mini-batch learning.
A principal motivação por trás do Rprop é enfrentar o desafio de variar as magnitudes do gradiente. Gradientes em redes neurais podem variar de minúsculos a enormes, dificultando a escolha de uma única taxa de aprendizado global. O Rprop aborda esse problema considerando apenas o sinal do gradiente, garantindo que todas as atualizações de peso sejam do mesmo tamanho. Essa técnica é particularmente útil para escapar de platôs com pequenos gradientes, pois mesmo com pequenos gradientes, as atualizações de peso podem ser substanciais.
Rprop combina o sinal do gradiente com tamanhos de passo adaptativos com base no peso que está sendo atualizado. Em vez de considerar a magnitude do gradiente, ele se concentra no tamanho do passo previamente determinado para aquele peso. O tamanho do passo se adapta ao longo do tempo, aumentando multiplicativamente se os sinais dos dois últimos gradientes concordarem e diminuindo multiplicativamente se eles discordarem. Ao limitar os tamanhos dos passos, evita que eles se tornem muito grandes ou muito pequenos.
Embora o Rprop funcione bem para aprendizado em lote completo, ele enfrenta desafios quando aplicado a minilotes. Isso viola a ideia central por trás da descida do gradiente estocástico, que se baseia na média de gradientes em sucessivos mini-lotes ao usar uma pequena taxa de aprendizado. O palestrante explica que o Rprop incrementa o peso várias vezes com seu tamanho de passo atual e o diminui apenas uma vez, levando a um aumento indesejado na magnitude do peso.
Para superar essa limitação, o palestrante apresenta o RMSprop (Root Mean Square propagation) como uma versão em minilote do Rprop. RMSprop garante que o número usado para dividir o gradiente permaneça consistente em mini-lotes próximos. Ele consegue isso mantendo uma média móvel dos gradientes quadrados para cada peso. Os gradientes ao quadrado são ponderados usando um fator de decaimento (por exemplo, 0,9) e combinados com o quadrado médio anterior para calcular o quadrado médio atualizado. A raiz quadrada do quadrado médio é então usada para normalizar o gradiente, permitindo um aprendizado mais eficaz.
O palestrante menciona que outros desenvolvimentos podem ser feitos no RMSprop, como combiná-lo com taxas de impulso ou aprendizado adaptativo em cada conexão. Além disso, eles se referem a métodos relacionados, como Nesterov momentum e um método proposto pelo grupo de Yann LeCun, que compartilha semelhanças com o RMSprop.
Em resumo, o palestrante recomenda diferentes métodos de aprendizado com base nas características do conjunto de dados. Para conjuntos de dados pequenos ou grandes sem muita redundância, métodos de lote completo como gradiente conjugado não linear, LBFGS ou L-BFGS-B são adequados. As taxas de aprendizado adaptativo ou Rprop também podem ser usadas para redes neurais. No caso de grandes conjuntos de dados redundantes, os métodos de mini-batch são essenciais. A primeira opção a tentar é a descida de gradiente padrão com impulso. O RMSprop é outro método eficaz a ser considerado, pois combina os benefícios do Rprop e do aprendizado em minilote. O palestrante sugere explorar mais aprimoramentos, mas atualmente não há uma receita simples para treinar redes neurais devido à natureza diversificada das redes e tarefas.
Aula 7.1 — Modelando sequências: uma breve visão geral
Aula 7.1 — Sequências de modelagem: uma breve visão geral [Redes neurais para aprendizado de máquina]
Neste vídeo, o palestrante fornece uma visão geral dos diferentes tipos de modelos usados para sequências. Eles começam discutindo modelos autorregressivos, que prevêem o próximo termo em uma sequência com base nos termos anteriores. Eles então mencionam variações mais complexas de modelos autorregressivos que incorporam unidades ocultas. O palestrante apresenta modelos com estado e dinâmica ocultos, como sistemas dinâmicos lineares e modelos ocultos de Markov. Embora esses modelos sejam complexos, seu objetivo é mostrar a relação entre redes neurais recorrentes e esses tipos de modelos no contexto da modelagem de sequência.
Ao modelar sequências usando aprendizado de máquina, o objetivo geralmente é transformar uma sequência em outra. Por exemplo, converter palavras em inglês para palavras em francês ou transformar pressões sonoras em identidades de palavras para reconhecimento de fala. Em alguns casos, pode não haver uma sequência alvo separada, então o próximo termo na sequência de entrada pode servir como um sinal de ensino. Essa abordagem é mais natural para sequências temporais, pois há uma ordem natural para previsões. No entanto, também pode ser aplicado a imagens, obscurecendo a distinção entre aprendizado supervisionado e não supervisionado.
O palestrante fornece uma revisão de outros modelos de sequência antes de mergulhar nas redes neurais recorrentes (RNNs). Eles explicam que os modelos autorregressivos sem memória podem ser estendidos adicionando unidades ocultas em uma rede neural de alimentação direta. No entanto, eles enfatizam que os modelos sem memória são apenas uma subclasse de modelos para sequências. Outra abordagem é usar modelos com estados ocultos e dinâmica interna, que podem armazenar informações por mais tempo. Esses modelos, como sistemas dinâmicos lineares e modelos ocultos de Markov, envolvem inferência probabilística e algoritmos de aprendizado.
Os sistemas dinâmicos lineares são amplamente utilizados na engenharia e possuem estados ocultos de valor real com dinâmica linear e ruído gaussiano. Os modelos ocultos de Markov, por outro lado, usam distribuições discretas e transições de estado probabilísticas. Eles são comumente usados em reconhecimento de fala e possuem algoritmos de aprendizado eficientes baseados em programação dinâmica.
O palestrante explica as limitações dos modelos ocultos de Markov quando se trata de transmitir grandes quantidades de informação entre a primeira e a segunda metade de um enunciado. Essa limitação se deve à capacidade de memória limitada do estado oculto. Isso leva à introdução de redes neurais recorrentes, que distribuem estados ocultos e dinâmicas não lineares, tornando-as mais eficientes na lembrança de informações.
Redes neurais recorrentes podem exibir vários comportamentos, incluindo oscilação, acomodação em atratores pontuais (útil para recuperação de memória) e comportamento caótico (útil em certas circunstâncias). A ideia de que uma RNN pode aprender a implementar vários programas usando diferentes subconjuntos de seu estado oculto foi inicialmente pensada para torná-los muito poderosos. No entanto, RNNs são computacionalmente desafiadores para treinar, e explorar todo o seu potencial tem sido uma tarefa difícil.
O vídeo fornece uma visão geral de diferentes modelos de sequência, apresenta o conceito de redes neurais recorrentes e destaca seu poder computacional e desafios no treinamento.
Aula 7.2 — Treinando RNNs com retropropagação
Aula 7.2 — Treinamento de RNNs com retropropagação [Redes neurais para aprendizado de máquina]
Neste vídeo, discutirei o algoritmo backpropagation through time, que é um método comum para treinar redes neurais recorrentes. O algoritmo é direto quando você entende a relação entre uma rede neural recorrente e uma rede neural feed-forward com várias camadas representando diferentes intervalos de tempo. Também cobrirei várias abordagens para fornecer entrada e saídas desejadas para redes neurais recorrentes.
O diagrama ilustra uma rede recorrente simples com três neurônios interconectados. Cada conexão tem um atraso de um, e a rede opera em tempo discreto com ticks inteiros. Para treinar uma rede recorrente, precisamos reconhecer que ela é essencialmente uma versão expandida de uma rede feed-forward no tempo. A rede recorrente começa em um estado inicial no tempo zero e usa seus pesos de conexão para gerar um novo estado no tempo um. Ele repete esse processo, utilizando os mesmos pesos para produzir novos estados subseqüentes.
A retropropagação é eficaz no aprendizado quando as restrições de peso estão presentes. Isso também foi observado em redes convolucionais. Para incorporar as restrições de peso, calculamos os gradientes como de costume, ignorando as restrições e, a seguir, modificamos os gradientes para manter as restrições. Por exemplo, se quisermos que w1 seja igual a w2, garantimos que a alteração em w1 seja igual à alteração em w2 tomando as derivadas em relação a w1 e w2, somando-as ou tirando a média delas e aplicando a mesma quantidade para atualizar ambos os pesos. Desde que os pesos satisfaçam as restrições inicialmente, eles continuarão a fazê-lo.
O algoritmo backpropagation through time é simplesmente um termo usado para descrever o processo de tratar uma rede recorrente como uma rede feed-forward com pesos compartilhados e treiná-la usando backpropagation. No domínio do tempo, a passagem para frente acumula atividades em cada fatia de tempo, enquanto a passagem para trás extrai atividades da pilha e calcula as derivadas de erro para cada passo de tempo. Essa passagem para trás a cada etapa de tempo dá ao algoritmo seu nome - retropropagação ao longo do tempo.
Após o retrocesso, somamos ou calculamos a média das derivadas de todas as etapas de tempo para cada peso. Em seguida, atualizamos todas as instâncias desse peso pelo mesmo valor, proporcional à soma ou média das derivadas. Uma consideração adicional surge se não especificarmos o estado inicial de todas as unidades, como unidades ocultas ou de saída. Nesse caso, precisamos iniciá-los em um estado específico. Uma abordagem é definir valores padrão, como 0,5, mas pode não produzir resultados ideais. Alternativamente, podemos aprender os estados iniciais tratando-os como parâmetros e ajustando-os com base no gradiente da função de erro em relação ao estado inicial.
Existem vários métodos para fornecer entrada para uma rede neural recorrente. Podemos especificar o estado inicial de todas as unidades, um subconjunto das unidades ou os estados em cada intervalo de tempo para um subconjunto das unidades. O último é frequentemente usado ao lidar com dados sequenciais. Da mesma forma, existem diferentes maneiras de especificar os destinos para uma rede recorrente. Podemos especificar os estados finais desejados para todas as unidades ou para várias etapas de tempo se quisermos treiná-lo para se estabelecer em um atrator específico. Ao incluir derivadas de cada etapa de tempo durante a retropropagação, podemos facilmente incorporar essas especificações e incentivar o aprendizado de atratores.
O algoritmo backpropagation through time é uma extensão direta do backpropagation para treinar redes neurais recorrentes. Ao tratar a rede recorrente como uma rede feed-forward expandida com pesos compartilhados, podemos aplicar retropropagação e ajustar os estados e pesos iniciais para otimizar o treinamento. Existem vários métodos para fornecer entradas e saídas desejadas para redes recorrentes, permitindo flexibilidade no manuseio de dados sequenciais e treinamento para objetivos específicos.
Aula 7.3 — Um exemplo de brinquedo para treinar um RNN
Aula 7.3 — Um exemplo de brinquedo para treinar uma RNN [Neural Networks for Machine Learning]
Neste vídeo, explicarei como uma rede neural recorrente (RNN) resolve um problema de brinquedo. Um problema de brinquedo é escolhido para mostrar as capacidades de RNNs que não são facilmente alcançáveis com redes neurais feed-forward. O problema aqui demonstrado é a adição binária. Depois que a RNN aprende a resolver o problema, podemos examinar seus estados ocultos e compará-los com os estados ocultos de um autômato de estado finito que resolve o mesmo problema.
Para ilustrar o problema de somar dois números binários, poderíamos treinar uma rede neural feed-forward. No entanto, existem limitações com esta abordagem. Devemos determinar o número máximo de dígitos para os números de entrada e o número de saída com antecedência. Além disso, o processamento aplicado a diferentes bits dos números de entrada não é generalizado. Como resultado, o conhecimento de somar os dois últimos dígitos e lidar com carregamentos reside em pesos específicos. Ao lidar com diferentes partes de um número binário longo, o conhecimento precisa ser codificado em diferentes pesos, levando a uma falta de generalização automática.
O algoritmo para adição binária é representado na imagem. Os estados no algoritmo se assemelham aos de um modelo oculto de Markov, exceto que não estão realmente ocultos. O sistema opera em um estado por vez, executando uma ação ao entrar em um estado (imprimindo 1 ou 0). Quando em um estado, recebe entrada, que consiste em dois números da próxima coluna, causando uma transição para um novo estado. Por exemplo, se está no estado carry e apenas imprimiu um 1, ao encontrar um 1 1, ele permanece no mesmo estado e imprime outro 1. No entanto, se encontrar um 1 0 ou 0 1, ele transita para o carry estado, mas imprime um 0. Da mesma forma, um 0 0 o leva ao estado sem transporte, onde imprime um 1. Esse processo continua para cada passo de tempo.
Uma rede neural recorrente para adição binária requer duas unidades de entrada e uma unidade de saída. Ele recebe dois dígitos de entrada a cada intervalo de tempo e produz uma saída correspondente à coluna que encontrou há dois intervalos de tempo. Para contabilizar o atraso, a rede precisa de um atraso de duas etapas de tempo, onde a primeira etapa atualiza as unidades ocultas com base nas entradas e a segunda gera a saída do estado oculto. A arquitetura de rede consiste em três unidades ocultas interconectadas, embora mais unidades ocultas possam ser usadas para um aprendizado mais rápido. Essas unidades ocultas possuem conexões bidirecionais com pesos variados. As conexões entre as unidades ocultas permitem que o padrão de atividade em uma etapa de tempo influencie o padrão de atividade oculta na próxima etapa de tempo. As unidades de entrada têm conexões de alimentação para as unidades ocultas, permitindo que a rede observe os dois dígitos em uma coluna. Da mesma forma, as unidades ocultas têm conexões de alimentação para a unidade de saída, permitindo a produção de uma saída.
É fascinante analisar o que a rede neural recorrente aprende. Ele aprende quatro padrões de atividade distintos em suas três unidades ocultas, que correspondem aos nós no autômato de estado finito para adição binária. É crucial não confundir as unidades em uma rede neural com os nós em um autômato de estado finito. Os nós no autômato se alinham com os vetores de atividade da rede neural recorrente. O autômato é restrito a um estado de cada vez, assim como as unidades ocultas na RNN, que possuem precisamente um vetor de atividade a cada intervalo de tempo. Enquanto um RNN pode emular um autômato de estado finito, é exponencialmente mais poderoso na representação. Com N neurônios ocultos, ele pode ter dois elevado a N possíveis vetores de atividade binária. Embora tenha apenas N pesos ao quadrado, pode não explorar totalmente todo o poder representacional. Se o gargalo estiver na representação, uma RNN pode superar um autômato de estado finito.
Isso é particularmente importante quando o fluxo de entrada contém dois processos separados ocorrendo simultaneamente. Um autômato de estado finito precisa aumentar exponencialmente seu número de estados para lidar com os processos paralelos. Em contraste, uma rede neural recorrente só precisa dobrar o número de unidades ocultas, dobrando assim o número de unidades e quadruplicando o número de estados de vetores binários que pode representar.
Aula 7.4 — Por que é difícil treinar uma RNN?
Aula 7.4 — Por que é difícil treinar uma RNN? [Redes neurais para aprendizado de máquina]
Neste vídeo, discutirei o problema de explosão e desaparecimento de gradientes que dificultam o treinamento de redes neurais recorrentes (RNNs). Por muitos anos, os pesquisadores acreditaram que modelar dependências de longo prazo com RNNs era quase impossível. No entanto, existem agora quatro abordagens eficazes para resolver este problema.
Para entender por que o treinamento de RNNs é desafiador, precisamos reconhecer uma diferença crucial entre as passagens para frente e para trás em uma RNN. Na passagem direta, funções de esmagamento, como a função logística, são usadas para evitar que os vetores de atividade explodam. Cada neurônio na RNN emprega uma unidade logística, que restringe a saída entre 0 e 1. Isso evita que os níveis de atividade cresçam descontroladamente.
Em contraste, a passagem para trás é completamente linear. Surpreendentemente, se dobrarmos as derivadas de erro na camada final, todas as derivadas de erro também dobrarão durante a retropropagação. Os gradientes são determinados pelas inclinações das curvas logísticas em pontos específicos (marcados por pontos vermelhos no vídeo). Uma vez que a passagem direta é concluída, as inclinações dessas tangentes são fixas. Durante a retropropagação, os gradientes se propagam através de um sistema linear onde a inclinação da não linearidade foi fixada. No entanto, os sistemas lineares tendem a sofrer com o problema de explodir ou morrer gradientes à medida que iteram. Se os pesos forem pequenos, os gradientes encolhem exponencialmente e tornam-se insignificantes. Por outro lado, se os pesos forem grandes, os gradientes explodem e dominam o processo de aprendizagem. Esses problemas são mais graves em RNNs em comparação com redes neurais feed-forward, especialmente ao lidar com sequências longas.
Mesmo com uma inicialização de peso cuidadosa, continua sendo um desafio capturar as dependências entre a saída atual e os eventos que ocorreram muitos passos de tempo atrás. RNNs lutam para lidar com dependências de longo alcance. O vídeo fornece um exemplo de como os gradientes podem desaparecer ou explodir ao treinar uma rede neural recorrente para aprender os estados do atrator. Pequenas diferenças nos estados iniciais não levam a nenhuma mudança no estado final (gradientes de fuga), enquanto pequenas variações perto dos limites resultam em divergência significativa (gradientes de explosão).
Para enfrentar esses desafios, existem quatro métodos eficazes para treinar RNNs. O primeiro método é Long Short-Term Memory (LSTM), que altera a arquitetura da rede para melhorar os recursos de memória. A segunda abordagem envolve o uso de otimizadores avançados que podem lidar com pequenos gradientes de forma eficaz. A otimização sem Hessian, adaptada para redes neurais, é excelente na detecção de pequenos gradientes com baixa curvatura. O terceiro método envolve a inicialização cuidadosa dos pesos e a criação de um reservatório de osciladores fracamente acoplados dentro do estado oculto. Isso permite que a rede reverbere e lembre-se das sequências de entrada. As conexões entre unidades ocultas e saídas são então treinadas, enquanto as conexões recorrentes permanecem fixas. O quarto método utiliza o momento e o combina com a técnica de inicialização usada em redes de estado de eco. Essa modificação melhora a dinâmica da rede, tornando-a ainda mais eficaz.
A capacidade de treinar RNNs melhorou com essas abordagens, superando os desafios impostos pela explosão e desaparecimento de gradientes.
Aula 7.5 — Memória de longo prazo e de curto prazo
Aula 7.5 — Memória de longo prazo e de curto prazo [Redes neurais para aprendizado de máquina]
Neste vídeo, explicarei a abordagem conhecida como "Long Short-Term Memory" (LSTM) para treinamento de redes neurais recorrentes. O LSTM visa criar uma memória de curto prazo de longa duração em uma rede neural, empregando módulos especializados que facilitam a passagem de informações.
A célula de memória no LSTM foi projetada para reter informações por um período prolongado. Consiste em unidades logísticas e lineares com interações multiplicativas. Quando um portão de "gravação" logístico é ativado, as informações entram na célula de memória do restante da rede recorrente. O estado do portão "gravar" é determinado pela rede recorrente. A informação permanece na célula de memória enquanto o portão "keep" estiver ligado, que é controlado pelo resto do sistema. Para ler as informações da célula de memória, uma porta logística de "leitura" é ativada e o valor armazenado é recuperado e influencia os estados futuros da rede neural recorrente.
O LSTM utiliza unidades logísticas porque possuem propriedades diferenciáveis, permitindo retropropagação através delas. Isso permite que a rede aprenda e otimize a célula de memória em várias etapas de tempo. A retropropagação através da célula de memória envolve a atualização dos pesos com base nas derivadas de erro, que podem ser propagadas de volta por centenas de intervalos de tempo.
O LSTM tem sido particularmente bem-sucedido em tarefas como reconhecimento de manuscrito. Ele pode armazenar e recuperar informações de forma eficaz, mesmo na presença de caligrafia cursiva. Ele mostrou desempenho superior em comparação com outros sistemas em tarefas de leitura e escrita, e o Canada Post começou a usar sistemas baseados em LSTM para tais propósitos.
No vídeo, é mostrada uma demonstração de um sistema de reconhecimento de escrita baseado em LSTM. O sistema recebe as coordenadas da caneta como entrada e produz caracteres reconhecidos como saída. A linha superior exibe os caracteres reconhecidos, a segunda linha mostra os estados das células de memória selecionadas, a terceira linha visualiza a escrita real com as coordenadas da caneta e a quarta linha ilustra o gradiente retropropagado para os locais XY, indicando o impacto de eventos passados em decisões de reconhecimento de caracteres.
O LSTM provou ser uma abordagem poderosa para treinar redes neurais recorrentes, permitindo a captura e utilização de dependências de longo prazo em dados sequenciais.