Por que os pesos do modelo se tornam menos explicáveis ​​com mais treinamento?

Aug 15 2020

Por exemplo, eu estava usando uma regressão logística no conjunto de dados Fashion-MNIST. Isso está usando o sklearn, que usa uma abordagem de treinamento iterativo, e eu estava experimentando o número de iterações. (Isto é sem regularização e usando a abordagem "multinomial" para multiclasse, embora um versus descanso produza a mesma coisa.) Aqui estão os coeficientes para cada classe, para diferentes números de iterações de treinamento:

O intervalo de coeficientes aumenta com o número de iterações:

E aqui estão as precisões de treinamento e validação em cada número de iterações:

O que me surpreende é que os coeficientes se tornam menos explicáveis ​​e intuitivos com mais iterações de treinamento. Por exemplo, para camisetas, após uma iteração de treinamento, os coeficientes assumem a forma de uma camiseta. Faz sentido intuitivo que o produto escalar disso com a imagem de uma camisa resulte em um valor alto. No entanto, com mais iterações de treinamento, essa forma desaparece até que os coeficientes pareçam um ruído incompreensível. Pode-se suspeitar que o modelo está simplesmente superajustado, mas a precisão da validação não começa a diminuir até depois da iteração 200, ponto em que o formato da camiseta é indistinguível e, mesmo assim, o superajuste é leve após esse ponto.

Qual é a explicação para esse fenômeno? O efeito foi discutido na literatura (tem um nome)?

Os coeficientes após um grande número de iterações me lembram os coeficientes que são tipicamente aprendidos por redes neurais; há uma conexão lá?

Respostas

4 Kyle Aug 15 2020 at 11:47

Há dois fenômenos acontecendo aqui:

  1. Este modelo aprende primeiro os recursos típicos antes de aprender os recursos mais específicos.
  2. O overfitting se manifesta como ruído. (Iniciando em torno de 100 iterações)

As imagens de peso tornam-se “menos explicáveis” no início porque começam a incluir características menos típicas. O peso para cada pixel é inicializado de forma que todas as classes sejam igualmente prováveis. Como resultado, na primeira iteração, você tem todas as imagens de treinamento da classe correta sobrepostas e todas as imagens das classes de treinamento incorretas subtraídas. O resultado neste caso parece um exemplo típico da classe. Veja as calças, por exemplo. Parece uma média de todas as calças porque na verdade é isso mesmo! [1] (Ignorando a contribuição de exemplos sem calças) O problema é que isso faz um trabalho ruim de identificar muitos exemplos de treinamento, por exemplo, shorts.

À medida que o modelo é treinado, os exemplos típicos logo são previstos com precisão, portanto, eles têm menos influência no gradiente da função de custo. Em vez disso, o gradiente da função de custo é ditado por exemplos que são mais difíceis de prever. Assim, as alterações nas imagens de peso serão devidas a características menos comuns. A menos que você estude o conjunto de treinamento com cuidado, seria difícil explicar os pesos de pixel porque eles estão treinando em recursos menos típicos.

A partir de 100 iterações, você tem um overfitting que é evidente pela queda na precisão da validação e pelo aumento do ruído nas imagens de peso. Sem regularização, qualquer pixel pode ter um efeito arbitrariamente grande na ativação de alguma classe. Sabemos que isso está errado, mas o modelo não sabe, a menos que imponhamos a regularização.

[1] Nota de rodapé

Para ver que a primeira iteração resulta em uma sobreposição igual de todas as imagens nos pesos, verifique como$\theta_j$, o peso do pixel j, depende do valor do pixel j$x_j$após a primeira iteração:

$$\theta_j := \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j}$$

$\alpha$é a taxa de aprendizado para descida de gradiente, e a derivada parcial$\partial J(\theta)/\partial \theta_j$dita como o peso$\theta_j$mudanças.

$J: \mathbb{R}^n \to \mathbb{R}$é o custo dos dados de treinamento dados os parâmetros no vetor da coluna$\theta$. No caso de regressão logística sem regularização utilizamos o log-verossimilhança negativo. Isso resulta na derivada parcial:

$$\frac{\partial J(\theta)}{\partial \theta_j} = \sum_{i\in\text{training data}} \left[\text{sigmoid}(\theta^T x^{(i)} - y^{(i)}) \right] x^{(i)}_j$$

Na primeira iteração,$\text{sigmoid}(\theta^T x^T{(i)}) = 0.5$, e já que todos$y^{(i)}$deve ser igual a 1 ou 0 para exemplos positivos ou negativos, respectivamente, a derivada parcial para cada pixel é$-0.5 x_j^{(i)}$ou$0.5x_j^{(i)}$, para que cada imagem se adicione ou se subtraia dos pesos igualmente na primeira iteração.

$$\theta_{\text{iteration 1}} = 0.5 \alpha \left( \sum_{i \in \text{positive examples}} x^{(i)} - \sum_{i \in \text{negative examples}} x^{(i)} \right)$$

Isso mostra que na primeira iteração, cada imagem de exemplo tem influência igual na imagem de peso na direção positiva ou negativa. Após a primeira iteração, a probabilidade de alguns exemplos estará mais próxima da verdade e esses exemplos exercerão menos influência na derivada.