Estou construindo modelos de regressão. Como uma etapa de pré-processamento, dimensiono meus valores de recurso para ter média 0 e desvio padrão 1. É necessário normalizar também os valores-alvo?
Estou construindo modelos de regressão. Como uma etapa de pré-processamento, dimensiono meus valores de recurso para ter média 0 e desvio padrão 1. É necessário normalizar também os valores-alvo?
Respostas:
Vamos primeiro analisar por que o dimensionamento de recursos é realizado. O dimensionamento de recursos melhora a convergência dos algoritmos de descida mais íngreme, que não possuem a propriedade de invariância de escala.
Nos exemplos de treinamento em descida de gradiente estocástico, informe as atualizações de peso de maneira iterativa,
Onde são os pesos, é um tamanho escalonado, é o peso gradiente, é uma função de perda, é a função parametrizada por , é um exemplo de treinamento e é a resposta / rótulo.
Compare as seguintes funções convexas, representando escala adequada e escala inadequada.
Uma atualização passo a passo de tamanho produzirá uma redução muito melhor no erro no caso adequadamente dimensionado do que no caso incorretamente dimensionado. Abaixo, é mostrada a direção de de comprimento .
A normalização da saída não afetará a forma de , portanto, geralmente não é necessário.
A única situação que eu posso imaginar dimensionar as saídas tem um impacto, é se sua variável de resposta for muito grande e / ou você estiver usando variáveis f32 (o que é comum na álgebra linear da GPU). Nesse caso, é possível obter um estouro de ponto flutuante de um elemento dos pesos. O sintoma é um valor Inf ou será envolvido na outra representação extrema.
Geralmente, não é necessário. A entrada de escala ajuda a evitar a situação, quando um ou vários recursos dominam outros em magnitude, como resultado, o modelo dificilmente capta a contribuição das variáveis de menor escala, mesmo que sejam fortes. Mas se você dimensionar o alvo, seu erro quadrado médio será automaticamente dimensionado. MSE> 1 significa automaticamente que você está fazendo pior do que uma previsão constante (ingênua).
Não, nunca são necessárias transformações lineares da resposta. No entanto, eles podem ser úteis para ajudar na interpretação do seu modelo. Por exemplo, se sua resposta é dada em metros, mas geralmente é muito pequena, pode ser útil fazer uma nova escala para milímetros. Observe também que centralizar e / ou dimensionar as entradas pode ser útil pelo mesmo motivo. Por exemplo, você pode interpretar aproximadamente um coeficiente como o efeito na resposta por unidade de mudança no preditor quando todos os outros preditores estiverem definidos como 0 . Mas 0 geralmente não será um valor válido ou interessante para essas variáveis. Centralizar as entradas permite que você interprete o coeficiente como o efeito por unidade de mudança quando os outros preditores assumem seus valores médios.
Outras transformações (isto é, log ou raiz quadrada) podem ser úteis se a resposta não for linear nos preditores na escala original. Se for esse o caso, você pode ler sobre modelos lineares generalizados para ver se eles são adequados para você.
Ele não afeta gradiente descendente em um mau caminho. verifique a fórmula para a descida do gradiente:
digamos que é um recurso 1000 vezes maior que
para , temos . A maneira ideal de atingir (0,0), que é o ideal global, é mover-se pela diagonal, mas se um dos recursos dominar o outro em termos de escala que não acontecerá.
Para ilustrar: Se você realizar a transformação , assuma uma taxa de aprendizado uniforme para ambas as coordenadas e calcule o gradiente eA forma funcional é a mesma, mas a taxa de aprendizado para a segunda coordenada deve ser ajustada para 1/1000 daquela para a primeira coordenada corresponder a ela. Caso contrário, a coordenada dois dominará e o vetor apontará mais para essa direção.
Como resultado, inclina o delta para apontar apenas nessa direção e torna a convergência mais lenta.
Sim , você precisa dimensionar a variável de destino. Vou citar esta referência :
Uma variável de destino com uma grande variedade de valores, por sua vez, pode resultar em grandes valores de gradiente de erro, fazendo com que os valores de peso mudem drasticamente, tornando o processo de aprendizado instável.
Na referência, há também uma demonstração do código em que os pesos do modelo explodiram durante o treinamento, devido aos erros muito grandes e, por sua vez, os gradientes de erro calculados para atualizações de peso também explodiram. Em resumo, se você não dimensionar os dados e tiver valores muito grandes, use valores de taxa de aprendizado muito pequenos. Isso foi mencionado pelo @drSpacy também.