Ensemble Learning Methods for Deep Learning Neural Networks

Tweet Share

Lest Updated on August 6, 2019

How to Improve Performance By Combining Predictions From Multiple Models.

Deep learning neural networks are nonlinear methods.

They offer increased flexibility and can scale in proportion to the amount of training data available. Uma desvantagem dessa flexibilidade é que elas aprendem através de um algoritmo de treinamento estocástico, o que significa que são sensíveis às especificidades dos dados de treinamento e podem encontrar um conjunto diferente de pesos cada vez que são treinadas, o que, por sua vez, produz previsões diferentes.

Geralmente, isso é chamado de redes neurais com alta variância e pode ser frustrante quando se tenta desenvolver um modelo final para fazer previsões.

Uma abordagem bem sucedida para reduzir a variância dos modelos de redes neurais é treinar vários modelos em vez de um único modelo e combinar as previsões desses modelos. Isso é chamado de aprendizado em conjunto e não só reduz a variância das previsões como também pode resultar em previsões melhores que qualquer modelo.

Neste post, você descobrirá métodos para redes neurais de aprendizado profundo para reduzir a variância e melhorar o desempenho das previsões.

Após a leitura deste post, você saberá:

  • Os modelos de redes neurais são não-lineares e têm uma variância alta, o que pode ser frustrante ao preparar um modelo final para fazer previsões.
  • Ensemble learning combina as previsões de múltiplos modelos de redes neurais para reduzir a variância das previsões e reduzir o erro de generalização.
  • Técnicas para o aprendizado em conjunto podem ser agrupadas pelo elemento que é variado, como dados de treinamento, o modelo e como as previsões são combinadas.

Kick-start your project with my new book Better Deep Learning, including step-by-step tutorials and the Python source code files for all examples.

Let’s get start.

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks

Ensemble Methods to Reduce Variance and Improve Performance of Deep Learning Neural Networks
Photo by University of San Francisco’s Performing Arts, some rights reserved.

Overview

This tutorial is divided into four parts; they are:

  1. High Variance of Neural Network Models
  2. Reduce Variance Using an Ensemble of Models
  3. How to Ensemble Neural Network Models
  4. Summary of Ensemble Techniques

High Variance of Neural Network Models

Training deep neural networks can be very computationally expensive.

Very deep networks trained on millions of examples may take days, weeks, and sometimes months to train.

O modelo de base do Google era uma rede neural profunda e convolutiva que tinha sido treinada por cerca de seis meses usando descida assíncrona de gradiente estocástico em um grande número de núcleos.

– Distilling the Knowledge in a Neural Network, 2015.

Após o investimento de tanto tempo e recursos, não há garantia de que o modelo final terá baixo erro de generalização, tendo um bom desempenho em exemplos não vistos durante o treinamento.

… treinar muitas redes de candidatos diferentes e depois selecionar o melhor, e descartar o resto. Há duas desvantagens com tal abordagem. Primeiro, todo o esforço envolvido no treinamento das redes restantes é desperdiçado. Segundo, a rede que teve melhor desempenho no conjunto de validação pode não ser a que teve melhor desempenho em novos dados de teste.

– Páginas 364-365, Neural Networks for Pattern Recognition, 1995.

Neural network models are a nonlinear method. Isto significa que eles podem aprender relações complexas não-lineares nos dados. Uma desvantagem dessa flexibilidade é que eles são sensíveis às condições iniciais, tanto em termos dos pesos aleatórios iniciais quanto em termos do ruído estatístico no conjunto de dados de treinamento.

Esta natureza estocástica do algoritmo de aprendizado significa que cada vez que um modelo de rede neural é treinado, ele pode aprender uma versão ligeiramente (ou dramaticamente) diferente da função de mapeamento de entradas para saídas, que por sua vez terá um desempenho diferente nos conjuntos de dados de treinamento e de retenção.

Como tal, podemos pensar em uma rede neural como um método que tem um viés baixo e alta variância. Mesmo quando treinado em grandes conjuntos de dados para satisfazer a alta variância, ter qualquer variância em um modelo final que se destina a ser usado para fazer previsões pode ser frustrante.

Want Better Results with Deep Learning?

Take my free 7-day email crash course now (with sample code).

Click to sign-up and also get a PDF Ebook version of the course.

Download Your FREE Mini-Course

Reduzir Variância Usando um Conjunto de Modelos

Uma solução para a alta variação das redes neurais é treinar vários modelos e combinar suas previsões.

A idéia é combinar as previsões de vários bons mas diferentes modelos.

Um bom modelo tem habilidade, o que significa que suas previsões são melhores do que chances aleatórias. Importante, os modelos devem ser bons de diferentes maneiras; eles devem fazer diferentes erros de previsão.

A razão pela qual a média de modelos funciona é que modelos diferentes normalmente não cometerão todos os mesmos erros no conjunto de testes.

– Página 256, Aprendizagem Profunda, 2016.

Combinando as previsões de múltiplas redes neurais adiciona-se um viés que, por sua vez, contraria a variância de um único modelo de rede neural treinado. Os resultados são previsões menos sensíveis às especificidades dos dados de treinamento, à escolha do esquema de treinamento e à serendipidade de uma única execução de treinamento.

Além de reduzir a variância na previsão, o conjunto também pode resultar em melhores previsões do que qualquer um dos melhores modelos.

… o desempenho de um comitê pode ser melhor do que o desempenho da melhor rede única usada isoladamente.

– Página 365, Neural Networks for Pattern Recognition, 1995.

Esta abordagem pertence a uma classe geral de métodos chamada “ensemble learning” que descreve métodos que tentam fazer o melhor uso das previsões de múltiplos modelos preparados para o mesmo problema.

Em geral, a aprendizagem em conjunto envolve o treino de mais do que uma rede no mesmo conjunto de dados, usando depois cada um dos modelos treinados para fazer uma previsão antes de combinar as previsões de alguma forma para fazer um resultado final ou uma previsão.

De facto, a combinação de modelos é uma abordagem padrão na aprendizagem aplicada à máquina para assegurar que a previsão mais estável e melhor possível é feita.

Por exemplo, Alex Krizhevsky, et al. em seu famoso trabalho de 2012 intitulado “Imagenet classification with deep convolutional neural networks” que introduziu redes neurais convolucionais muito profundas para classificação de fotos (ou seja, AlexNet) usaram modelos com média de desempenho em vários modelos CNN de bom desempenho para alcançar resultados de última geração na época. O desempenho de um modelo foi comparado com as previsões de conjuntos de dois, cinco e sete modelos diferentes.

A média das previsões de cinco CNNs similares dá uma taxa de erro de 16,4%. A média das previsões de duas CNNs que foram pré-treinadas com as cinco CNNs acima mencionadas dá uma taxa de erro de 15,3%.

Ensembling é também a abordagem utilizada pelos vencedores em competições de aprendizagem de máquinas.

Outra técnica poderosa para obter os melhores resultados possíveis em uma tarefa é a montagem de modelos. Se você olhar para os concursos de aprendizagem de máquinas, em particular no Kaggle, você verá que os vencedores usam conjuntos muito grandes de modelos que inevitavelmente batem qualquer modelo, não importa quão bom.

– Página 264, Deep Learning With Python, 2017.

Como montar modelos de redes neurais

Talvez a mais antiga e ainda mais comumente usada abordagem de agrupamento para redes neurais seja chamada de “comitê de redes”

Uma coleção de redes com a mesma configuração e diferentes pesos aleatórios iniciais é treinada no mesmo conjunto de dados. Cada modelo é então utilizado para fazer uma previsão e a previsão real é calculada como a média das previsões.

O número de modelos no conjunto é frequentemente mantido pequeno, tanto por causa das despesas computacionais nos modelos de treinamento, como por causa dos retornos decrescentes no desempenho da adição de mais membros do conjunto. Os conjuntos podem ser tão pequenos quanto três, cinco ou 10 modelos treinados.

O campo de aprendizagem do conjunto é bem estudado e há muitas variações sobre este tema simples.

Pode ser útil pensar em variar cada um dos três elementos principais do método de conjunto; por exemplo:

  • Dados de treinamento: Varia a escolha dos dados usados para treinar cada modelo no ensemble.
  • Ensemble Models: Varia a escolha dos modelos utilizados no ensemble.
  • Combinações: Varia a escolha da forma como os resultados dos membros do conjunto são combinados.

Variemos cada elemento por sua vez.

Variar dados de treinamento

Os dados usados para treinar cada membro do conjunto podem ser variados.

A abordagem mais simples seria usar a validação cruzada k-fold para estimar o erro de generalização da configuração do modelo escolhido. Neste procedimento, k diferentes modelos são treinados em k diferentes subconjuntos dos dados de treinamento. Estes k modelos podem então ser salvos e usados como membros de um conjunto.

Uma outra abordagem popular envolve a reamostragem do conjunto de dados de treinamento com substituição, depois o treinamento de uma rede usando o conjunto de dados reamostragem. O procedimento de reamostragem significa que a composição de cada conjunto de dados de treinamento é diferente com a possibilidade de exemplos duplicados, permitindo que o modelo treinado no conjunto de dados tenha uma expectativa ligeiramente diferente da densidade das amostras e, por sua vez, erro de generalização diferente.

Esta abordagem é chamada de agregação bootstrap, ou ensacamento para abreviar, e foi projetada para uso com árvores de decisão não podadas que têm alta variância e baixo viés. Tipicamente um grande número de árvores de decisão são usadas, como centenas ou milhares, dado que são rápidas de preparar.

… uma forma natural de reduzir a variância e, portanto, aumentar a precisão da previsão de um método de aprendizagem estatística é pegar muitos conjuntos de treinamento da população, construir um modelo de previsão separado usando cada conjunto de treinamento, e fazer a média das previsões resultantes. É claro que isto não é prático porque geralmente não temos acesso a múltiplos conjuntos de treinamento. Em vez disso, podemos iniciar, retirando amostras repetidas do conjunto de dados de treinamento (único).

– Páginas 216-317, Uma introdução à aprendizagem estatística com aplicações em R, 2013.

Uma abordagem equivalente poderia ser usar um subconjunto menor do conjunto de dados de treinamento sem regularização para permitir treinamento mais rápido e algum ajuste excessivo.

O desejo de modelos ligeiramente sub-optimizados aplica-se à selecção dos membros do conjunto de forma mais geral.

… os membros do comitê não devem ser escolhidos individualmente para ter um ótimo trade-off entre viés e variância, mas devem ter viés relativamente menor, uma vez que a variância extra pode ser removida pela média.

– Página 366, Neural Networks for Pattern Recognition, 1995.

Outras abordagens podem envolver a seleção de um subespaço aleatório do espaço de entrada para alocar a cada modelo, como um subconjunto do hiper-volume no espaço de entrada ou um subconjunto de recursos de entrada.

Ensemble Tutorials

Para exemplos de conjuntos de aprendizagem profunda que variam os dados de treinamento, veja:

  • Como desenvolver um conjunto de Random-Split, Cross-Validation, e Bagging Ensemble for Deep Learning

Varying Models

Training the same under-constrained model on the same data with different initial conditions will result in different models given the difficulty of the problem, and the stochastic nature of the learning algorithm.

Isso porque o problema de otimização que a rede está tentando resolver é tão desafiador que existem muitas soluções “boas” e “diferentes” para mapear entradas para saídas.

Os algoritmos de rede neural mais complexos atingem desempenho sub-ótimo especificamente devido à existência de um número esmagador de mínimos locais sub-ótimos. Se pegarmos um conjunto de redes neurais que convergiram para os mínimos locais e aplicarmos a média, podemos construir uma estimativa melhorada. Uma maneira de entender este fato é considerar que, em geral, as redes que caíram em diferentes mínimos locais terão um mau desempenho em diferentes regiões do espaço de características e, portanto, seus termos de erro não serão fortemente correlacionados.

– Quando as redes discordam: Ensemble methods for hybrid neural networks, 1995.

Isso pode resultar em uma variância reduzida, mas pode não melhorar dramaticamente o erro de generalização. Os erros cometidos pelos modelos podem ainda estar muito correlacionados, pois todos os modelos aprenderam funções de mapeamento semelhantes.

Uma abordagem alternativa pode ser a de variar a configuração de cada modelo de conjunto, como o uso de redes com diferentes capacidades (por exemplo, número de camadas ou nós) ou modelos treinados sob diferentes condições (por exemplo, taxa de aprendizagem ou regularização).

O resultado pode ser um conjunto de modelos que aprenderam uma coleção mais heterogênea de funções de mapeamento e, por sua vez, têm uma correlação menor em suas previsões e erros de predição.

Diferenças na inicialização aleatória, seleção aleatória de minibatches, diferenças nos hiperparâmetros, ou diferentes resultados de implementações não-determinísticas de redes neurais são freqüentemente suficientes para fazer com que diferentes membros do conjunto cometam erros parcialmente independentes.

– Páginas 257-258, Aprendizagem Profunda, 2016.

Tal conjunto de modelos configurados de forma diferente pode ser alcançado através do processo normal de desenvolvimento da rede e ajuste de seus hiperparâmetros. Cada modelo poderia ser salvo durante este processo e um subconjunto de melhores modelos poderia ser escolhido para compor o conjunto.

As redes com treinamento ligeiramente inferior são um subproduto livre da maioria dos algoritmos de ajuste; é desejável usar tais cópias extras mesmo quando seu desempenho é significativamente pior do que o melhor desempenho encontrado. Um melhor desempenho ainda pode ser alcançado através de um planejamento cuidadoso para a classificação de um conjunto, usando os melhores parâmetros disponíveis e treinando diferentes cópias em diferentes subconjuntos da base de dados disponível.

– Neural Network Ensembles, 1990.

Nos casos em que um único modelo pode levar semanas ou meses para treinar, outra alternativa pode ser salvar periodicamente o melhor modelo durante o processo de treinamento, chamado snapshot ou checkpoint models, então selecione os membros do conjunto entre os modelos salvos. Isto proporciona os benefícios de ter vários modelos treinados com os mesmos dados, embora coletados durante uma única execução de treinamento.

Snapshot Ensembling produz um conjunto de modelos precisos e diversos a partir de um único processo de treinamento. No coração do Snapshot Ensembling está um processo de otimização que visita vários mínimos locais antes de convergir para uma solução final. Tiramos instantâneos de modelos nestes vários mínimos, e calculamos a média das suas previsões no momento do teste.

– Snapshot Ensembles: Train 1, get M for free, 2017.

Uma variação no conjunto Snapshot é para salvar modelos de uma série de épocas, talvez identificadas pela revisão das curvas de aprendizagem do desempenho do modelo no trem e dos conjuntos de dados de validação durante o treinamento. Os conjuntos de tais sequências contíguas de modelos são referidos como conjuntos horizontais.

P>Primeiro, as redes treinadas para um intervalo relativamente estável de épocas são seleccionadas. As previsões da probabilidade de cada etiqueta são produzidas por classificadores padrão da época selecionada, e então calculadas como média.

– Conjunto horizontal e vertical com representação profunda para classificação, 2013.

Um outro aprimoramento do conjunto de snapshot é variar sistematicamente o procedimento de otimização durante o treinamento para forçar diferentes soluções (ou seja, conjuntos de pesos), o melhor dos quais pode ser salvo em pontos de verificação. Isto pode envolver a injeção de uma quantidade oscilante de ruído durante as épocas de treinamento ou a oscilação da taxa de aprendizagem durante as épocas de treinamento. Uma variação desta abordagem chamada Descida de Gradiente Estocástico com Reinício de Aquecimento (SGDR) demonstrou um aprendizado mais rápido e resultados de última geração para tarefas de classificação de fotos padrão.

Nosso SGDR simula reinícios quentes programando a taxa de aprendizado para alcançar resultados competitivos aproximadamente duas a quatro vezes mais rápidos. Também alcançamos novos resultados de última geração com o SGDR, principalmente usando ainda mais amplos e conjuntos de instantâneos da trajetória do SGDR.

– SGDR: Descida Estocástica Gradiente com Reinícios Quentes, 2016.

Um benefício das redes neurais muito profundas é que as camadas intermediárias ocultas fornecem uma representação aprendida dos dados de entrada de baixa resolução. As camadas ocultas podem emitir suas representações internas diretamente, e a saída de uma ou mais camadas ocultas de uma rede muito profunda pode ser usada como entrada para um novo modelo de classificação. Isto é talvez mais eficaz quando o modelo profundo é treinado usando um modelo autocodificador. Este tipo de conjunto é referido como um conjunto vertical.

Este método agrupa uma série de classificadores cujas entradas são a representação de camadas intermediárias. Uma taxa de erro mais baixa é esperada porque estas características parecem diversas.

– Conjunto horizontal e vertical com representação profunda para classificação, 2013.

Tutoriais de montagem

Para exemplos de conjuntos de aprendizagem profunda que variam modelos veja:

  • Como desenvolver um conjunto de imagens instantâneas para aprendizagem profunda
  • Como desenvolver um conjunto de imagens instantâneas para aprendizagem profunda

Combinações variáveis

A forma mais simples de combinar as previsões é calcular a média das previsões dos membros do conjunto.

Isso pode ser ligeiramente melhorado pela ponderação das previsões de cada modelo, onde os pesos são otimizados usando um conjunto de dados de validação de hold-out. Isso fornece um conjunto médio ponderado que é às vezes chamado de combinação de modelos.

… podemos esperar que alguns membros do comitê façam previsões melhores do que outros membros. Portanto, poderíamos esperar ser capazes de reduzir ainda mais o erro se dermos mais peso a alguns membros do comitê do que a outros. Assim, consideramos uma previsão generalizada do comitê dada por uma combinação ponderada das previsões dos membros …

– Página 367, Neural Networks for Pattern Recognition, 1995.

Mais um passo na complexidade envolve o uso de um novo modelo para aprender a melhor forma de combinar as previsões de cada membro do comitê.

O modelo poderia ser um modelo linear simples (por exemplo, muito parecido com a média ponderada), mas poderia ser um método sofisticado não linear que também considera a amostra de entrada específica, além das previsões fornecidas por cada membro. Esta abordagem geral de aprendizado de um novo modelo é chamada de empilhamento de modelos, ou generalização empilhada.

A generalização empilhada funciona deduzindo os vieses do(s) generalizador(es) com respeito a um conjunto de aprendizado fornecido. Esta dedução procede através da generalização num segundo espaço cujos inputs são (por exemplo) os palpites dos generalizadores originais quando ensinados com parte do conjunto de aprendizagem e tentando adivinhar o resto do mesmo, e cujo output é (por exemplo) o palpite correcto. Quando usado com um único generalizador, a generalização empilhada é um esquema para estimar (e depois corrigir) o erro de um generalizador que foi treinado num determinado conjunto de aprendizagem e depois fez uma pergunta específica.

– Generalização empilhada, 1992.

Existem métodos mais sofisticados para empilhar modelos, tais como o empilhamento onde os membros do conjunto são adicionados um de cada vez, a fim de corrigir os erros dos modelos anteriores. A complexidade acrescida significa que esta abordagem é menos utilizada com modelos de grandes redes neurais.

Uma outra combinação um pouco diferente é combinar os pesos de múltiplas redes neurais com a mesma estrutura. Os pesos de múltiplas redes podem ser calculados como média, para se esperar que resulte em um novo modelo único que tenha melhor desempenho geral do que qualquer modelo original. Esta abordagem é chamada de model weight average.

… sugere que é promissor calcular a média desses pontos no espaço de peso, e usar uma rede com esses pesos médios, ao invés de formar um conjunto calculando a média das saídas das redes no espaço do modelo

– A Average Weights Leads to Wider Optima and Better Generalization, 2018.

Ensemble Tutorials

Para exemplos de conjuntos de aprendizagem profunda que variam combinações ver:

  • Como desenvolver um conjunto de modelos de médias para Aprendizagem Profunda
  • Como desenvolver um conjunto de médias ponderadas para Aprendizagem Profunda
  • Como desenvolver um conjunto de empilhamento para Aprendizagem Profunda
  • Como criar um conjunto de Polyak-Ruppert para Aprendizagem Profunda

Sumário de Técnicas de Conjunto

Em resumo, we can list some of the more common and interesting ensemble methods for neural networks organized by each element of the method that can be varied, as follows:

  • Varying Training Data
    • k-fold Cross-Validation Ensemble
    • Bootstrap Aggregation (bagging) Ensemble
    • Random Training Subset Ensemble
  • Varying Models
    • Multiple Training Run Ensemble
    • Hyperparameter Tuning Ensemble
    • Snapshot Ensemble
    • Horizontal Epochs Ensemble
    • Vertical Representational Ensemble
  • Varying Combinations
    • Model Averaging Ensemble
    • Weighted Average Ensemble
    • Stacked Generalization (stacking) Ensemble
    • Boosting Ensemble
    • Model Weight Averaging Ensemble

There is no single best ensemble method; perhaps experiment with a few approaches or let the constraints of your project guide you.

Further Reading

This section provides more resources on the topic if you are looking to go deeper.

Books

  • Section 9.6 Committees of networks, Neural Networks for Pattern Recognition, 1995.
  • Section 7.11 Bagging and Other Ensemble Methods, Deep Learning, 2016.
  • Section 7.3.3 Model ensembling, Deep Learning With Python, 2017.
  • Section 8.2 Bagging, Random Forests, Boosting, An Introduction to Statistical Learning with Applications in R, 2013.

Papers

  • Neural Network Ensembles, 1990.
  • Neural Network Ensembles, Cross Validation, and Active Learning, 1994.
  • When networks disagree: Ensemble methods for hybrid neural networks, 1995.
  • Snapshot Ensembles: Train 1, get M for free, 2017.
  • SGDR: Stochastic Gradient Descent with Warm Restarts, 2016.
  • Horizontal and vertical ensemble with deep representation for classification, 2013.
  • Stacked generalization, 1992.
  • Averaging Weights Leads to Wider Optima and Better Generalization, 2018.

Articles

  • Ensemble learning, Wikipedia.
  • Bootstrap aggregating, Wikipedia.
  • Boosting (machine learning), Wikipedia.

Summary

In this post, you discovered ensemble methods for deep learning neural networks to reduce variance and improve prediction performance.

Specifically, you learned:

  • Neural network models are nonlinear and have a high variance, which can be frustrating when preparing a final model for making predictions.
  • Ensemble learning combina as previsões de vários modelos de redes neurais para reduzir a variância das previsões e reduzir o erro de generalização.
  • Técnicas para a aprendizagem em conjunto podem ser agrupadas pelo elemento que é variado, como dados de treinamento, o modelo e como as previsões são combinadas.

Você tem alguma dúvida?
Cutem suas dúvidas nos comentários abaixo e farei o meu melhor para responder.

Desenvolver Melhores Modelos de Aprendizagem Profunda Hoje!

Melhor Aprendizagem Profunda

Treinar Mais Rápido, Reduzir Overftting, e Ensembles

…com apenas algumas linhas de código python

Descobre como no meu novo Ebook:
Better Deep Learning

Proporciona tutoriais de auto-estudo em tópicos como:
decadência de peso, normalização de lotes, desistência, empilhamento de modelos e muito mais…

Bring better deep learning to your projects!

Skip the Academics. Just Results.

See What’s Inside

Tweet Share Share

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *