Я тренирую модель классификации текста.
Задание : по описанию укажите квантификатор
Для ex 1) Это поле содержит общую сумму выручки в долларах США -> сумма
2) Здесь указан код города -> код
3) общая сумма депозита составляет 34 -> сумма
4) содержит информацию о имени -> имя
5) содержит last nme -> name
Для данной задачи имеет смысл смоделировать это как задачу классификации текста.
Я использовал два подхода
Подход 1:
a) Использовать вложение перчаток, чтобы получить векторное представление
b) Использовать NN обратной связи для классификации данных в 1 из 11 возможных классов вывода
model = Sequential()
model.add(layers.Embedding(vocab_size, embedding_dim,
weights=[embedding_matrix],
input_length=maxlen,
trainable=False))
model.add(layers.GlobalMaxPool1D())
model.add(layers.Dense(200, activation='relu'))
model.add(layers.Dense(100, activation='relu'))
model.add(layers.Dense(50, activation='relu'))
model.add(layers.Dense(11, activation='softmax'))
model.compile(optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'])
model.summary()
Этот подход дает мне 80% точности теста
Подход 2: Я планирую использовать LSTM, потому что они также могут изучать контекст и из предыдущих слов
model = Sequential()
model.add(layers.Embedding(vocab_size, embedding_dim,
weights=[embedding_matrix],
input_length=maxlen,
model.add(layers.LSTM(100,dropout=0.2, recurrent_dropout=0.2, activation='tanh'))
model.add(layers.Dense(11, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['categorical_accuracy'])
epochs = 100
batch_size = 32
model.summary()
Проблема не зависит от того, что я делаю, LSTM никогда не достигает отметки точности выше 40%. Это застревает на этом от начала до конца.
Morevoer, прямая связь net (подход 1) может обнаруживать простые случаи, такие как «общая сумма составляет 6 долларов США», но LSTM не может получить даже это правильное значение и прогнозирует его как Другое
My Вопрос в том, почему LSTM (с добавленной силой контекста) не может улучшить обратную связь. Что я должен сделать, чтобы улучшить это.