Quantos dados para aprendizado profundo?


9

Estou aprendendo sobre o aprendizado profundo (especificamente CNNs) e como normalmente exige uma enorme quantidade de dados para evitar o ajuste excessivo. No entanto, também me disseram que quanto maior a capacidade / mais parâmetros de um modelo, mais dados são necessários para evitar o ajuste excessivo. Portanto, minha pergunta é: Por que você não pode apenas reduzir o número de camadas / nós por camada em uma rede neural profunda e fazê-la funcionar com uma quantidade menor de dados? Existe um "número mínimo de parâmetros" fundamental que uma rede neural exige até que "entre em ação"? Abaixo de um certo número de camadas, as redes neurais parecem não ter um desempenho tão bom quanto os recursos codificados manualmente.

Respostas:


10

Essa é uma ótima pergunta e, na verdade, houve algumas pesquisas abordando os problemas de capacidade / profundidade que você mencionou.

Existem muitas evidências de que a profundidade das redes neurais convolucionais levou a aprender hierarquias de recursos mais ricas e diversas. Empiricamente, vemos que as redes com melhor desempenho tendem a ser "profundas": a Oxford VGG-Net tinha 19 camadas, a arquitetura do Google Inception é profunda, a Microsoft Deep Residual Network relatou 152 camadas e todas elas estão obtendo um benchmark ImageNet muito impressionante resultados.

Na superfície, é fato que os modelos de maior capacidade tendem a se superestimar, a menos que você use algum tipo de regularizador. Uma maneira pela qual o ajuste excessivo de redes muito profundas pode prejudicar o desempenho é que elas abordarão rapidamente erros de treinamento muito baixos em um pequeno número de épocas de treinamento, ou seja, não podemos treinar a rede para um grande número de passagens pelo conjunto de dados. Uma técnica como o Dropout, uma técnica de regularização estocástica, permite treinar redes muito profundas por períodos mais longos. Com efeito, isso nos permite aprender melhores recursos e melhorar a precisão de nossa classificação, porque obtemos mais passes nos dados de treinamento.

Com relação à sua primeira pergunta:

Por que você não pode apenas reduzir o número de camadas / nós por camada em uma rede neural profunda e fazê-lo funcionar com uma quantidade menor de dados?

Se reduzirmos o tamanho do conjunto de treinamento, como isso afeta o desempenho da generalização? Se usarmos um tamanho menor do conjunto de treinamento, isso poderá resultar em uma representação menor do recurso distribuído, e isso poderá prejudicar nossa capacidade de generalização. Em última análise, queremos ser capazes de generalizar bem. Ter um conjunto de treinamento maior nos permite aprender uma hierarquia de recursos distribuídos mais diversificada.

Com relação à sua segunda pergunta:

Existe um "número mínimo de parâmetros" fundamental que uma rede neural exige até que "entre em ação"? Abaixo de um certo número de camadas, as redes neurais parecem não ter um desempenho tão bom quanto os recursos codificados manualmente.

Agora, vamos adicionar algumas nuances à discussão acima sobre a questão da profundidade. Parece que, dado onde estamos agora com o estado da arte atual, para treinar uma rede de convés de alto desempenho a partir do zero, algum tipo de arquitetura profunda é usada.

Mas houve uma série de resultados focados na compactação de modelo . Portanto, essa não é uma resposta direta à sua pergunta, mas está relacionada. A compactação de modelo está interessada na seguinte pergunta: Dado um modelo de alto desempenho (no nosso caso, digamos, uma rede de convecção profunda), podemos compactar o modelo, reduzindo sua profundidade ou até mesmo a contagem de parâmetros, e mantendo o mesmo desempenho?

Podemos ver o conv, de alta performance e alta capacidade, como professor . Podemos usar o professor para treinar um modelo de aluno mais compacto ?

Surpreendentemente, a resposta é: sim . Houve uma série de resultados, um bom artigo para a perspectiva da convnet é um artigo de Rich Caruana e Jimmy Ba As redes profundas realmente precisam ser profundas? . Eles são capazes de treinar um modelo superficial para imitar o modelo mais profundo, com muito pouca perda de desempenho. Também houve mais trabalho sobre esse tópico, por exemplo:

entre outras obras. Tenho certeza de que estou perdendo outros bons artigos.

Para mim, esses tipos de resultados questionam quanta capacidade esses modelos superficiais realmente têm. No artigo Caruana, Ba, eles afirmam a seguinte possibilidade:

"Os resultados sugerem que a força do aprendizado profundo pode surgir em parte de uma boa correspondência entre arquiteturas profundas e procedimentos de treinamento atuais, e que pode ser possível criar algoritmos de aprendizado melhores para treinar redes feed-forward rasas mais precisas. número de parâmetros, a profundidade pode facilitar o aprendizado, mas nem sempre é essencial "

É importante deixar claro: no artigo de Caruana, Ba, eles não estão treinando um modelo superficial do zero, ou seja, treinando apenas com os rótulos da classe, para obter um desempenho de ponta. Em vez disso, eles treinam um modelo profundo de alto desempenho e, a partir desse modelo, extraem probabilidades de log para cada ponto de dados. Em seguida, treinamos um modelo superficial para prever essas probabilidades de log. Portanto, não treinamos o modelo superficial nos rótulos das classes, mas usamos essas probabilidades de log.

No entanto, ainda é um resultado bastante interessante. Embora isso não forneça uma resposta direta à sua pergunta, há algumas idéias interessantes aqui que são muito relevantes.

Fundamentalmente: é sempre importante lembrar que existe uma diferença entre a "capacidade" teórica de um modelo e encontrar uma boa configuração do seu modelo. O último depende dos seus métodos de otimização.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.