损失开始增加时,正则化不会改变拐点

时间:2018-10-09 16:09:52

标签: python tensorflow keras classification lstm

我正在使用LSTM网络来解决多类(3类)分类问题。如果不进行正则化,则模型会在5个时期内过拟合(val损失开始增加,而训练损失则继续减少)。对于不规范的网络,开始增加之前的最低val损失约为0.4。

当我开始进行正则化时,无论我使用哪种正则化技术(批量归一化,高斯噪声,辍学,l1和l2正则化)都没有关系,唯一改变的是网络到达val的速度损失0.4(相比5减少了20到30个纪元),而不是实际超过0.4。

这是正则化的预期行为,仅仅是为了减慢网络的学习速度,从而在以后的某个时期发生过度拟合吗?

这是我的未规范模型:

text = Input(shape=(news_text.shape[1],), name='text')
symbol = Input(shape=(symbol_name.shape[1],), name='symbol')
price = Input(shape=(8, 1), name='price')

text_layer = Embedding(
    embedding_matrix.shape[0],
    embedding_matrix.shape[1],
    weights=[embedding_matrix],
    mask_zero=True
)(text)
text_layer = Lambda(lambda x: x, output_shape=lambda s: s)(text_layer)
text_layer = LSTM(units=64)(text_layer)

symbol_layer = Embedding(
    embedding_matrix.shape[0],
    embedding_matrix.shape[1],
    weights=[embedding_matrix],
    mask_zero=True
)(symbol)
symbol_layer = Lambda(lambda x: x, output_shape=lambda s: s)(symbol_layer)
symbol_layer = LSTM(units=32)(symbol_layer)

text_layer = RepeatVector(8)(text_layer)
symbol_layer = RepeatVector(8)(symbol_layer)

price_layer = Dense(units=64)(price)

inputs = concatenate([
    text_layer,
    symbol_layer,
    price_layer
])

output = LSTM(units=64)(inputs)
output = Dense(units=3, activation='softmax', name='output')(output)

model = Model(
    inputs=[text, symbol, price],
    outputs=[output]
)
model = multi_gpu_model(model, gpus=2)

optimizer = Adam()
model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy'])

注意:文本和符号输入都是经过适当预处理的文本,并且使用StandardScaler对价格输入进行了标准化。

0 个答案:

没有答案