Depois de analisar esta pergunta: tentando imitar a regressão linear usando Keras , tentei dar meu próprio exemplo, apenas para fins de estudo e para desenvolver minha intuição.
Baixei um conjunto de dados simples e usei uma coluna para prever outra. Os dados são assim:
Agora, criei um modelo keras simples com uma camada linear de um nó e comecei a executar descida de gradiente nela:
from keras.layers import Input, Dense
from keras.models import Model
inputs = Input(shape=(1,))
preds = Dense(1,activation='linear')(inputs)
model = Model(inputs=inputs,outputs=preds)
sgd=keras.optimizers.SGD()
model.compile(optimizer=sgd ,loss='mse',metrics=['mse'])
model.fit(x,y, batch_size=1, epochs=30, shuffle=False)
A execução do modelo assim me dá nan
perdas em todas as épocas.
Então, decidi começar a experimentar coisas e só consigo um modelo decente se usar uma taxa de aprendizado ridiculamente pequena sgd=keras.optimizers.SGD(lr=0.0000001)
:
Agora, por que isso está acontecendo? Terei que ajustar manualmente a taxa de aprendizado dessa maneira para cada problema que enfrentar? Estou fazendo algo errado aqui? Este deveria ser o problema mais simples possível, certo?
Obrigado!
fonte
A normalização é mais importante quando você tem mais de uma variável dependente. Se você observar o gráfico de dispersão, poderá ver valores discrepantes. Uma rede neural sem camadas ocultas é igual a um modelo de regressão linear. Assim, está ajustando a melhor linha para minimizar a distância dos resíduos. Remova os outliers e parecerá mais apropriado.
fonte