Por que os dados devem ser embaralhados para tarefas de aprendizado de máquina

30

Nas tarefas de aprendizado de máquina, é comum embaralhar e normalizar dados. O objetivo da normalização é claro (por ter o mesmo intervalo de valores de recursos). Mas, depois de muito esforço, não encontrei nenhuma razão valiosa para embaralhar dados.

Eu li este post aqui discutindo quando precisamos embaralhar dados, mas não é óbvio por que devemos embaralhar os dados. Além disso, tenho visto frequentemente em algoritmos como Adam ou SGD, nos quais precisamos de descida em gradiente de lote (os dados devem ser separados em mini lotes e o tamanho do lote precisa ser especificado). É essencial, de acordo com esta publicação, embaralhar os dados de cada época para ter dados diferentes para cada lote. Portanto, talvez os dados sejam embaralhados e, mais importante, alterados.

porque nós fazemos isso?

meios de comunicação
fonte
1
Pode ser útil indicar exatamente por que a resposta no primeiro link não o ajudou. Caso contrário, estamos correndo o risco de repetir o conteúdo já dito com poucas melhorias.
E_net4 diz Reintegrar
Como afirmei, quero saber por que não quando, você sabe por quê? isso é realmente explicado lá? Eu não vi nenhum artigo para isso de todos os
meios
1
Para obter mais informações sobre o impacto do pedido de exemplo, leia Aprendizagem curricular [pdf].
Emre
1
Publiquei isso no CrossValidated e acho relevante. stats.stackexchange.com/a/311318/89653
Josh
@Emre, na verdade, este artigo é contra o embaralhamento, obrigado, eu não ouvi sobre esse tipo de aprendizado.
Meios

Respostas:

19

Baseado em O que devemos fazer quando uma pergunta postada no DataScience é uma duplicata de uma pergunta postada no CrossValidated? , Estou reposicionando minha resposta para a mesma pergunta feita no CrossValidated ( https://stats.stackexchange.com/a/311318/89653 ).

Nota: ao longo desta resposta, refiro-me à minimização da perda de treinamento e não discuto critérios de parada, como perda de validação. A escolha dos critérios de parada não afeta o processo / conceitos descritos abaixo.

O processo de treinamento de uma rede neural é encontrar o valor mínimo de uma função de perda , onde W representa uma matriz (ou várias matrizes) de pesos entre os neurônios e X representa o conjunto de dados de treinamento. Eu uso um índice subscrito para X para indicar que nossa minimização de ocorre apenas sobre os pesos W (ou seja, estamos procurando por W de modo que seja minimizado) enquanto X é corrigido.X(W)WXXWWX

Agora, se assumirmos que temos elementos em W (ou seja, existem pesos P na rede), é uma superfície em um espaço dimensional P + 1 . Para dar um analógico visual, imagine que temos apenas dois pesos de neurônios ( P = 2 ). Então tem uma interpretação geométrica fácil: é uma superfície em um espaço tridimensional. Isso decorre do fato de que, para qualquer matriz de pesos W , a função de perda pode ser avaliada em X e esse valor se torna a elevação da superfície.PWPP+1P=2WX

Mas há o problema da não-convexidade; a superfície que descrevi terá numerosos mínimos locais e, portanto, algoritmos de descida gradiente são suscetíveis de ficar "presos" nesses mínimos, enquanto uma solução mais profunda / baixa / melhor pode estar próxima. É provável que isso ocorra se for inalterado em todas as iterações de treinamento, porque a superfície é fixa para um determinado X ; todas as suas características são estáticas, incluindo seus vários mínimos.XX

Uma solução para isso é o treinamento em mini-lote combinado com o embaralhamento. Ao embaralhar as linhas e treinar apenas um subconjunto delas durante uma determinada iteração, muda a cada iteração, e é realmente possível que duas iterações em toda a sequência de iterações e épocas de treinamento sejam executadas exatamente no mesmo X . O efeito é que o solucionador pode "saltar" facilmente de um mínimo local. Imagine que o solucionador esteja preso no mínimo local na iteração i com o treinamento do minilote X i . Este mínimo local corresponde a avaliado em um valor particular de pesos; vamos chamá-lo X i ( WXXiXi . Na próxima iteração a forma do nosso superfície perda efectivamente muda porque estamos a utilizar X i + 1 , isto é,X i + 1 ( W i ) pode assumir um valor muito diferente doX i ( W i ) e isso é bem possível que não corresponda a um mínimo local! Agora podemos calcular uma atualização gradiente e continuar com o treinamento. Para ser claro: a forma deX i + 1 será - em geral - diferente da deX iXi(Wi)Xi+1Xi+1(Wi)Xi(Wi)Xi+1Xi. Observe que aqui estou me referindo à função de perda avaliada em um conjunto de treinamento X ; é uma superfície definida completo sobre todos os valores possíveis de W , em vez do que a avaliação de que a perda (que é apenas um escalar) para um valor específico de W . Observe também que, se mini-lotes forem usados ​​sem embaralhar, ainda haverá um grau de "diversificação" das superfícies de perda, mas haverá um número finito (e relativamente pequeno) de superfícies de erro exclusivas vistas pelo solucionador (especificamente, ele verá o mesmo conjunto exato de mini-lotes - e, portanto, superfícies de perda - durante cada época).XWW

Uma coisa que evitei deliberadamente foi uma discussão sobre tamanhos de mini lotes, porque há um milhão de opiniões a respeito e isso tem implicações práticas significativas (maior paralelismo pode ser alcançado com lotes maiores). No entanto, acredito que vale a pena mencionar o seguinte. Como é avaliado calculando um valor para cada linha de X (e somando ou calculando a média; isto é, um operador comutativo) para um determinado conjunto de matrizes de peso W , o arranjo das linhas de X não tem efeito ao usar full- descida do gradiente do lote (ou seja, quando cada lote é o X completo e iterações e épocas são a mesma coisa).XWX X

Josh
fonte
+1. Esta resposta é tecnicamente melhor explicada do que a outra resposta com maior número de votos.
Gokul NC
29

A reprodução aleatória de dados serve para reduzir as variações e garantir que os modelos permaneçam gerais e se ajustem menos.

O caso óbvio em que você embaralha seus dados é se eles forem classificados por classe / destino. Aqui, você deseja embaralhar para garantir que seus conjuntos de treinamento / teste / validação sejam representativos da distribuição geral dos dados.

Para descida de gradiente em lote, a mesma lógica se aplica. A idéia por trás da descida do gradiente de lote é que, calculando o gradiente em um único lote, você normalmente obterá uma estimativa bastante boa do gradiente "verdadeiro". Dessa forma, você economiza tempo de computação ao não precisar calcular o gradiente "true" em todo o conjunto de dados todas as vezes.

Você deseja embaralhar seus dados após cada época, porque sempre terá o risco de criar lotes que não são representativos do conjunto de dados geral e, portanto, sua estimativa do gradiente será desativada. A reprodução aleatória dos dados após cada época garante que você não fique "preso" com muitos lotes ruins.

Na descida estocástica regular do gradiente, quando cada lote tem o tamanho 1, você ainda deseja embaralhar seus dados após cada época para manter seu aprendizado geral. De fato, se o ponto de dados 17 for sempre usado após o ponto de dados 16, seu próprio gradiente será influenciado por quaisquer atualizações que o ponto de dados 16 esteja fazendo no modelo. Ao embaralhar seus dados, você garante que cada ponto de dados crie uma alteração "independente" no modelo, sem ser influenciado pelos mesmos pontos antes deles.

Valentin Calomme
fonte
1
Como expliquei, você embaralha seus dados para garantir que seus conjuntos de treinamento / teste sejam representativos. Na regressão, você usa o embaralhamento porque deseja ter certeza de que não está treinando apenas nos pequenos valores, por exemplo. A reprodução aleatória é principalmente uma salvaguarda, na pior das hipóteses, não é útil, mas você não perde nada fazendo isso. Para a parte descendente do gradiente estocástico, você deseja novamente certificar-se de que o modelo não é o que é devido à ordem em que você alimentou os dados; portanto, para evitar isso, embaralhe
Valentin Calomme
2
Eu acho que o embaralhamento diminui a variação e é provável que aumente o viés (isto é, reduz a tendência de super ajuste dos dados). Imagine que estivéssemos descendo gradientes de lote inteiro, de modo que épocas e iterações sejam a mesma coisa. Existe um mínimo global (não necessariamente o podemos encontrar) que nosso solucionador está tentando localizar. Se estivermos usando perda de MSE, minimizaremos o viés se pudermos alcançar essa solução todas as vezes. Mas, como é provável que esse mínimo global seja encontrado em um local diferente para diferentes conjuntos de treinamento, essa solução tenderá a ter alta variação.
21419 Josh
2
Ao embaralhar, estamos menos propensos a convergir para uma solução no nível global mínimo para todo o conjunto de treinamento (maior viés), mas mais propensos a encontrar uma solução que generalize melhor (menor variação).
21419 Josh
7

Suponha que os dados sejam classificados em uma ordem especificada. Por exemplo, um conjunto de dados que é classificado com base em sua classe. Portanto, se você selecionar dados para treinamento, validação e teste sem considerar esse assunto, você selecionará cada classe para tarefas diferentes e isso falhará no processo.

Portanto, para impedir esse tipo de problema, uma solução simples é embaralhar os dados para obter diferentes conjuntos de dados de treinamento, validação e teste.

Sobre o minilote, as respostas a esta postagem podem ser uma solução para sua pergunta.

AMD
fonte
1
@Media A resposta mais relacionada no link fornecido é: "A mistura aleatória de mini-lotes torna os gradientes mais variáveis, o que pode ajudar na convergência porque aumenta a probabilidade de atingir uma boa direção"
OmG
Na verdade, eu já vi isso no artigo da SGD, mas, como alegaram os autores do artigo, é a razão da convergência, não a confusão. Vi o link e duvido um pouco. para mais clareza, veja este papel incrível. Os autores têm mencionado o ponto lá, mas como você vai ver, não há razão exata para baralhar
Meios
1

Precisamos embaralhar apenas para minibatch / SGD, sem necessidade de descida em gradiente de lote.

Se não estiver misturando dados, os dados podem ser classificados ou pontos de dados semelhantes ficarão próximos um do outro, o que leva a uma convergência lenta:

  • Amostras semelhantes produzirão superfícies semelhantes (1 superfície para a função de perda para 1 amostra) -> gradiente aponta para direções semelhantes, mas essa direção raramente aponta para o mínimo-> pode conduzir o gradiente muito longe do mínimo
  • "Melhor direção": a média de todo o gradiente de todas as superfícies (descida do gradiente do lote) que aponta diretamente para o mínimo
  • "Minibatch direction": a média de uma variedade de direções apontará mais perto do mínimo, embora nenhuma delas aponte para o mínimo
  • “Direção de 1 amostra”: aponte mais para o mínimo em comparação com o minibatch

Eu desenhei o gráfico da função de perda L-2 para regressão linear por y=2x aqui

Duque
fonte
1

XWX

Complementando a resposta de @ Josh, eu gostaria de acrescentar que, pelo mesmo motivo, é necessário fazer o embaralhamento antes do lote. Caso contrário, você está obtendo o mesmo número finito de superfícies.

Gerardo Consuelos
fonte
Obrigado e bem-vindo à nossa comunidade.
Media
1

Para uma melhor precisão do modelo, é sempre recomendável que os dados de treinamento tenham todos os tipos de dados.

O embaralhamento dos dados de treinamento nos ajuda a atingir esse objetivo.

vipin bansal
fonte
1

Ao embaralhar as linhas e treinar apenas um subconjunto delas durante uma determinada iteração, 𝑋 muda a cada iteração, e é realmente possível que duas iterações em toda a sequência de iterações e épocas de treinamento sejam executadas exatamente da mesma maneira 𝑋

Ankit DEsai
fonte