Введение:
Сети с долговременной кратковременной памятью (LSTM) произвели революцию в области глубокого обучения, особенно в задачах, связанных с последовательными данными. Традиционно модели LSTM использовались для задач классификации с одним выходом. Однако существуют сценарии, в которых одного прогноза недостаточно, например задачи классификации с несколькими метками и классами. В этой статье мы рассмотрим архитектуру модели LSTM с четырьмя выходами, предназначенную для решения этих сложных сценариев классификации. Мы углубимся в мотивы, архитектурный дизайн, рекомендации по обучению и возможные применения этой модели с несколькими выходами.
Понимание сетей LSTM:
Прежде чем углубляться в архитектуру с несколькими выходами, давайте кратко вспомним основы сетей LSTM. Сети LSTM — это тип рекуррентной нейронной сети (RNN), которая превосходно фиксирует долгосрочные зависимости в последовательных данных. Они используют ячейки памяти и механизмы блокировки для выборочного сохранения и обновления информации, что делает их хорошо подходящими для таких задач, как распознавание речи, обработка естественного языка и анализ временных рядов.
"источник"
Мотивация для архитектуры с несколькими выходами:
Задачи классификации с несколькими метками включают одновременное прогнозирование нескольких меток, в то время как задачи классификации с несколькими классами направлены на классификацию экземпляров по нескольким классам. Традиционные модели LSTM с одним выходом не могут напрямую обрабатывать эти сценарии. Расширив архитектуру, включив в нее несколько выходных данных, мы можем одновременно прогнозировать разные метки, где каждая метка имеет несколько классов, обеспечивая более полное понимание входных данных.
Архитектурный дизайн:
Чтобы построить модель LSTM с несколькими выходными данными для классификации с несколькими метками и несколькими классами, нам необходимо внести определенные архитектурные изменения. Один из распространенных подходов заключается в использовании общего уровня LSTM в качестве основы для захвата последовательных шаблонов и контекста входных данных. От этого общего слоя мы разветвляемся на отдельные выходные слои, каждый из которых отвечает за прогнозирование другой метки, которая снова имеет несколько классов. Эти выходные слои могут иметь различные функции активации и функции потерь, соответствующие их задачам.
Обучение и оценка:
Обучение модели LSTM с несколькими выходами для классификации с несколькими метками и несколькими классами требует тщательного рассмотрения. Определение соответствующих функций потерь для каждого выхода имеет решающее значение для направления модели к точным прогнозам. Для задач с несколькими метками обычно используется бинарная кросс-энтропийная потеря, тогда как категориальная кросс-энтропийная потеря подходит для задач с несколькими классами. Сбалансировать потери и взвесить важность каждого результата можно с помощью настройки гиперпараметров и экспериментов. Оценка производительности модели включает использование таких показателей, как точность, полнота, оценка F1 и точность для каждой метки или класса независимо. Мы использовали разреженную категориальную кросс-энтропию с активацией softmax на каждом из выходных слоев.
Выполнение:
def build_lstm_model(neurons, input_shape, lr, num_classes, activation, loss): try: logger.info("Building LSTM Model...") opt = tf.keras.optimizers.Adam(learning_rate=lr) inputs = tf.keras.layers.Input(shape=input_shape) x = tf.keras.layers.Embedding(input_dim=5000, output_dim=10)(inputs) x = tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(neurons))(x) # Define separate output layers for each target output_0 = tf.keras.layers.Dense(num_classes, activation=activation, name="output_0")(x) output_1 = tf.keras.layers.Dense(num_classes, activation=activation, name="output_1")(x) output_2 = tf.keras.layers.Dense(num_classes, activation=activation, name="output_2")(x) output_3 = tf.keras.layers.Dense(num_classes, activation=activation, name="output_3")(x) # Define the model with multiple outputs model = tf.keras.Model(inputs=inputs, outputs=[output_0, output_1, output_2, output_3]) model.compile(loss=loss, optimizer=opt, metrics=["sparse_categorical_accuracy"]) logger.debug("LSTM Model Built...") return model except Exception as e: print("Exception while building model:", e) raise X = train_df.drop(["TARGET_0", "TARGET_1", "TARGET_2", "TARGET_3"], axis=1) y = train_df[["TARGET_0", "TARGET_1", "TARGET_2", "TARGET_3"]] y = np.array(y) (x_train, x_val, y_train, y_val) = train_test_split(X, y, random_state=100, test_size=0.2, shuffle=True) #Variables neurons = 100 input_shape = 10 lr = 0.001 activation = 'softmax' loss = 'sparse_categorical_crossentropy' num_classes = #number of unique classes per label model = build_lstm_model(neurons, input_shape, lr, num_classes, activation, loss) early_stopings = tf.keras.callbacks.EarlyStopping(monitor="val_loss", min_delta=1e-4, patience=2, verbose=1, mode="auto") callbacks = [early_stopings] trainHistrory = model.fit( x=x_train, y=[y_train[:, 0], y_train[:, 1], y_train[:, 2], y_train[:, 3]], validation_data=(x_val, [y_val[:, 0], y_val[:, 1], y_val[:, 2], y_val[:, 3]]), epochs=epochs, batch_size=batch_size, verbose=1, callbacks=callbacks, ) #Evaluate on test data x_test = test_df.drop(["TARGET_0", "TARGET_1", "TARGET_2", "TARGET_3"], axis=1) y_test = test_df[["TARGET_0", "TARGET_1", "TARGET_2", "TARGET_3"]] y_test = np.array(y_test) test_accuracy = model.evaluate([x_test], [y_test[:, 0], y_test[:, 1], y_test[:, 2], y_test[:, 3]])
Варианты использования и приложения:
Гибкость модели LSTM с несколькими выходами открывает широкий спектр приложений. В задачах классификации с несколькими метками, таких как категоризация текста или маркировка изображений, каждый результат может соответствовать отдельной метке, что позволяет одновременно прогнозировать несколько меток. В задачах классификации с несколькими классами, таких как анализ настроений или категоризация тем, каждый результат представляет собой отдельный класс, что позволяет выполнять точную классификацию по нескольким категориям. Используя архитектуру с несколькими выходами, мы можем получить более полное представление о входных данных и принимать обоснованные решения.
Заключение:
В этой статье мы рассмотрели архитектуру модели LSTM с несколькими выходными данными, специально предназначенную для задач классификации с несколькими метками и несколькими классами. Расширяя традиционную настройку LSTM, мы обеспечиваем одновременное прогнозирование нескольких меток или классов, обеспечивая более глубокое понимание входных данных. Мы обсудили мотивы, архитектурный дизайн, вопросы обучения и потенциальные применения этой модели с несколькими выходами. Внедрение и тонкая настройка могут потребовать экспериментов и корректировок в конкретной области, но вознаграждение в виде расширенных возможностей прогнозирования неоценимо.
#наука о данных #машинное обучение #искусственный интеллект #lstm #multilabel #multiclass
Авторские права © A5G Networks, Inc.