Um modelo deve ser re-treinado se novas observações estiverem disponíveis?

28

Portanto, não consegui encontrar nenhuma literatura sobre esse assunto, mas parece que vale a pena pensar em algo:

  • Quais são as melhores práticas no treinamento e otimização de modelos se novas observações estiverem disponíveis?

  • Existe alguma maneira de determinar o período / frequência de re-treinamento de um modelo antes que as previsões comecem a se degradar?

  • É excessivo se os parâmetros forem otimizados novamente para os dados agregados?

Observe que o aprendizado pode não estar necessariamente online. Pode-se desejar atualizar um modelo existente depois de observar uma variação significativa nas previsões mais recentes.

user140323
fonte
A resposta é altamente dependente do domínio comercial e do aplicativo de modelo específico.
Pete

Respostas:

16
  1. Depois que um modelo é treinado e você obtém novos dados que podem ser usados ​​para treinamento, você pode carregar o modelo anterior e treiná-lo. Por exemplo, você pode salvar seu modelo como um .picklearquivo, carregá-lo e treiná-lo ainda mais quando novos dados estiverem disponíveis. Observe que, para o modelo prever corretamente the new training data should have a similar distribution as the past data,.
  2. As previsões tendem a se degradar com base no conjunto de dados que você está usando. Por exemplo, se você está tentando treinar usando dados do twitter e coletou dados sobre um produto que é amplamente twittado naquele dia. Mas se você usar tweets depois de alguns dias em que esse produto nem seja discutido, poderá ser tendencioso. The frequency will be dependent on datasete não há tempo específico para declarar como tal. If you observe that your new incoming data is deviating vastly, then it is a good practise to retrain the model.
  3. A otimização de parâmetros nos dados agregados não é adequada. Dados grandes não significam super ajuste. Use a validação cruzada para verificar se há excesso de ajuste.
Hima Varsha
fonte
Portanto, se a natureza da entrada do conjunto de dados permanecer consistente o tempo todo, não há nada novo que o modelo possa aprender?
user140323
Se os dados não mudarem e se você estiver satisfeito com a precisão do modelo atual, não vejo sentido em treiná-lo novamente.
Hima Varsha
@Aayush, talvez você possa usar os dados recebidos como conjunto de validação e verificar seu modelo atual.
Hima Varsha
Ainda é cedo para aceitar, mas eu aceito. Obrigado!
user140323
Olá @ tktktk0711, não tenho um código atualmente para lhe mostrar. Mas basta passar por isso, que aponta para outro link com o código. github.com/tflearn/tflearn/issues/39
Hima Varsha
20

Quando novas observações estão disponíveis, há três maneiras de treinar novamente o seu modelo:

  1. On-line: sempre que uma nova observação está disponível, você usa esse único ponto de dados para treinar ainda mais seu modelo (por exemplo, carrega seu modelo atual e treina-o fazendo uma retropropagação com essa única observação). Com esse método, seu modelo aprende de maneira seqüencial e meio que se adapta localmente aos seus dados, pois será mais influenciado pelas observações recentes do que pelas observações mais antigas. Isso pode ser útil em situações em que seu modelo precisa se adaptar dinamicamente a novos padrões de dados. Também é útil quando você está lidando com conjuntos de dados extremamente grandes para os quais o treinamento em todos eles ao mesmo tempo é impossível.
  2. Off-line: você adiciona as novas observações ao seu conjunto de dados já existente e treina completamente seu modelo nesse novo conjunto de dados maior. Isso geralmente leva a uma melhor aproximação global da função de destino e é muito popular se você tiver um conjunto de dados fixo ou se não tiver novas observações com frequência. No entanto, não é prático para grandes conjuntos de dados.
  3. nn

Atualmente, a maioria dos modelos usa lote / mini lote e a escolha do tamanho do lote depende do seu aplicativo e modelo. Escolher o lote do tamanho certo é equivalente a escolher a frequência certa com a qual treinar novamente o seu modelo. Se sua nova observação tiver uma baixa variação com os dados existentes, sugiro lotes maiores (256-512, talvez) e, se pelo contrário novas observações tenderem a variar bastante com os dados existentes, use lotes pequenos (8-256). No final do dia, o tamanho do lote é como outro hiperparâmetro que você precisa ajustar e que é específico para seus dados

tombarti
fonte
Olá, quero perguntar on-line: como on-line para novos dados. Esse método limita algum modelo de ML, ou seja, não todo o aprendizado de máquina.
precisa saber é o seguinte
Você conhece algum exemplo de fluxo tensor que usa lote ?
Max171 #
1

Seu problema está sob a égide dos métodos de aprendizado on-line. Supondo que um fluxo de dados chegue, você pode usar o método Stochastic Gradient Descent para atualizar os parâmetros do modelo usando esse exemplo único.

Se a sua função de custo for:

minθJ(x,y,θ)

onde é vetor de parâmetro, assumindo um fluxo de dados do formulário ( ), você pode atualizar seu vetor de parâmetro usando SGD com a seguinte equação de atualização:x i , y iθxi,yi

θt=θt1θJ(xi,yi) .

Isso é essencialmente SGD com tamanho de lote 1.

Há outro truque: você pode adotar um método baseado em janela / buffer, no qual você armazena alguns exemplos do fluxo e o trata como lote e usa o lote SGD. Nesse caso, a equação de atualização se tornará:

θt=θt1iθJ(xi,yi) .

Este é essencialmente o SGD de mini-lote.

SHASHANK GUPTA
fonte
0

A pergunta: você deve treinar novamente?

A resposta depende do que seu modelo tenta fazer e em que ambiente é aplicado.

Deixe-me explicar por alguns exemplos:

Suponha que seu modelo tente prever o comportamento dos clientes, por exemplo, qual a probabilidade de um cliente comprar seu produto, em função de uma oferta personalizada para ele. Claramente, o mercado muda com o tempo, as preferências dos clientes mudam e os concorrentes se ajustam. Você também deve se ajustar, para treinar periodicamente. Nesse caso, eu recomendaria adicionar novos dados, mas também omitir dados antigos que não são mais relevantes. Se o mercado está mudando rapidamente, você deve considerar a reciclagem periodicamente com base apenas em novos dados.

Por outro lado, se o seu modelo classificar algumas imagens (por exemplo, raio-x ou ressonância magnética) para condições médicas e o modelo tiver um bom desempenho, você não precisará treinar novamente se não houver alterações na tecnologia ou no conhecimento médico . Adicionar mais dados não melhorará muito.

Yossi Levy
fonte