Bagging vs Dropout em redes neurais profundas

17

Ensacamento é a geração de múltiplos preditores que funcionam como um único preditor. A desistência é uma técnica que ensina às redes neurais a média de todas as sub-redes possíveis. Olhando para as competições mais importantes do Kaggle, parece que essas duas técnicas são usadas juntas com muita frequência. Não vejo diferença teórica além da implementação real. Quem pode me explicar por que devemos usar os dois em qualquer aplicativo real? e por que o desempenho melhora quando usamos os dois?

emanuele
fonte

Respostas:

21

Ensacamento e desistência não alcançam exatamente a mesma coisa, embora ambos sejam tipos de média do modelo.

A ensacamento é uma operação em todo o conjunto de dados que treina modelos em um subconjunto dos dados de treinamento. Assim, alguns exemplos de treinamento não são mostrados para um determinado modelo.

A desistência , por outro lado, é aplicada aos recursos de cada exemplo de treinamento. É verdade que o resultado é funcionalmente equivalente a treinar exponencialmente muitas redes (com pesos compartilhados!) E depois ponderar igualmente suas saídas. Mas o dropout funciona no espaço de recursos, fazendo com que determinados recursos não estejam disponíveis na rede, não em exemplos completos. Como cada neurônio não pode confiar completamente em uma entrada, as representações nessas redes tendem a ser mais distribuídas e é menos provável que a rede superaqueça.

jamesmf
fonte
+1 para uma boa explicação. Você conhece algum link em que a implementação do Python é feita? Algum blog ou talvez Github?
Dawny33
Há um decente aqui: deeplearning.net/tutorial/lenet.html , embora eu prefira o estilo deste: neuralnetworksanddeeplearning.com/chap6.html . Para implementação e ótimas demonstrações, eu gosto do keras (bastante fácil de instalar): keras.io
jamesmf
2

Encontrei uma comparação dos dois tipos de redes na Max Out Networks, que diz:

O treinamento de abandono é semelhante ao ensacamento (Breiman, 1994), onde muitos modelos diferentes são treinados em diferentes subconjuntos dos dados. O treinamento de desistência difere da ensacamento, pois cada modelo é treinado para apenas uma etapa e todos os modelos compartilham parâmetros. Para que esse procedimento de treinamento (desistência) se comporte como se estivesse treinando um conjunto em vez de um único modelo, cada atualização deve ter um grande efeito, para que o submodelo induzido por esse µ se ajuste bem à entrada atual.

Espero que seja util.

emanuele
fonte
0

O abandono é uma técnica de regularização usada para evitar o ajuste excessivo em grandes redes neurais, especificamente deixando de fora alguns dos neurônios em camadas ocultas (daí o nome do abandono dos neurônios deixados de fora) após o treinamento. Basicamente, se a rede realmente aprendeu alguma coisa durante o treinamento, o abandono de alguns neurônios não deve afetar negativamente a precisão das previsões.

A ensacagem também é uma técnica de regularização eficaz, usada para reduzir a variação dos dados de treinamento e melhorar a precisão do seu modelo, usando várias cópias dele treinadas em diferentes subconjuntos de dados do conjunto de dados de treinamento inicial / maior.

veja esta pergunta

LiNKeR
fonte