Глубокое обучение для извлечения признаков, ансамблевых моделей и многого другого

Появление глубокого обучения изменило правила игры в машинном обучении, проложив путь к созданию сложных моделей, способных на подвиги, которые ранее считались невозможными. Эти модели использовались для достижения передовой производительности во многих различных областях, включая классификацию изображений, обработку естественного языка и распознавание речи. В этой статье рассматривается использование глубокого обучения для повышения эффективности классических моделей машинного обучения.

Исходная информация

Деревья решений, случайные леса и линейная регрессия — это лишь несколько примеров классических моделей машинного обучения, которые уже много лет широко используются в бизнесе. Их легко внедрить и развернуть из-за их простоты, ясности и интерпретируемости.

Глубокое обучение — это специализация машинного обучения, в которой используются вычислительные модели, вдохновленные нервной системой человека. Эти сети строятся из вложенных слоев узлов для изучения сложных связей между входами и выходами. Было показано, что модели глубокого обучения обеспечивают высочайшую производительность во многих приложениях, что делает их идеальным решением для многих проблем машинного обучения.

Использование моделей глубокого обучения в качестве средств извлечения признаков

Один из основных способов, с помощью которых глубокое обучение может повысить производительность традиционных моделей машинного обучения, — использовать их в качестве средств извлечения признаков. При таком подходе модели глубокого обучения обучаются извлекать полезные функции из входных данных, которые затем можно использовать в качестве входных данных для традиционной модели машинного обучения.

Модели глубокого обучения могут извлекать другие и часто более полезные функции по сравнению с традиционными моделями машинного обучения по нескольким причинам:

Глубина

Модели глубокого обучения, особенно сверточные нейронные сети (CNN), имеют несколько уровней, которые могут изучать иерархические представления входных данных. Эти слои могут изучать простые функции, такие как ребра, в ранних слоях и более сложные функции, такие как объекты, в более глубоких слоях. Для сравнения, традиционные модели машинного обучения обычно изучают только одно представление входных данных.

Сквозное обучение

Модели глубокого обучения можно обучать от начала до конца, что означает, что модель обучается для оптимизации функции потерь для конкретной задачи, такой как точность, при классификации изображений. Это позволяет модели изучать функции, которые имеют непосредственное отношение к поставленной задаче. С другой стороны, традиционные модели машинного обучения обычно требуют ручного проектирования признаков, когда для извлечения признаков из входных данных используются знания, относящиеся к предметной области.

Способность учиться на необработанных данных

Модели глубокого обучения могут учиться на необработанных данных, таких как изображения или речь, без необходимости ручного проектирования функций. Они также склонны изучать более сложные и абстрактные представления данных.

Эти преимущества моделей глубокого обучения делают их хорошо подходящими для задач, в которых ручная разработка признаков затруднена или невозможна, например, в компьютерном зрении или распознавании речи. Используя модели глубокого обучения в качестве средств извлечения признаков, мы можем использовать эти преимущества для повышения производительности традиционных моделей машинного обучения.

Хотите увидеть эволюцию художественных проектов, созданных искусственным интеллектом? Посетите наш публичный проект, чтобы увидеть таймлапсы, экспериментальные эволюции и многое другое!

Компьютерное зрение

Одним из примеров использования моделей глубокого обучения в качестве средств извлечения признаков является область компьютерного зрения. Сверточные нейронные сети (CNN), обученные на больших наборах данных изображений, можно использовать для извлечения соответствующих функций из изображений, таких как края, текстуры и объекты. Затем эти функции можно использовать в качестве входных данных для другой модели машинного обучения, такой как машина опорных векторов (SVM) или классификатор случайного леса, для выполнения таких задач, как классификация изображений или обнаружение объектов. Было показано, что этот подход обеспечивает самые современные результаты в различных задачах компьютерного зрения, таких как распознавание лиц, идентификация людей на изображениях или видео на основе их черт лица.

Это можно сделать, используя выходные данные модели глубокого обучения в качестве дополнительной функции в традиционной модели машинного обучения или используя модель глубокого обучения для предварительной обработки входных данных перед их передачей в традиционную модель машинного обучения.

Пример

Сначала нам нужно обучить модель глубокого обучения на входных данных. Мы можем сделать это с помощью фреймворка глубокого обучения, такого как TensorFlow или PyTorch. Ниже мы используем реализацию TensorFlow простой последовательной модели Keras для изучения функций из данных.

# Split the data into training and validation sets
x_train, x_val, y_train, y_val = train_test_split(x, y, test_size=0.2)

Здесь данные x и метки y разбиваются на обучающий набор x_train и y_train и проверочный набор x_val и y_val. Аргумент test_size имеет значение 0.2, что означает, что 20% данных будут использоваться для проверки, а оставшиеся 80% — для обучения.

# Define and train the deep learning model using the training set
model = keras.Sequential([
    keras.layers.Dense(12, activation='relu', input_shape(8,))
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)

Мы строим простую последовательную модель с API Keras с тремя слоями: плотный слой с 12 узлами, 8 входами и функцией активации ReLU.

Затем модель компилируется с оптимизатором Адама, разреженной категориальной функцией кросс-энтропийных потерь и точностью в качестве метрики. Наконец, модель обучается на тренировочном наборе x_train и y_train в течение 5 эпох.

# Extract features from the validation set using the deep learning model
deep_learning_features = model.predict(x_val)

В этом разделе функции извлекаются из проверочного набора x_val с использованием обученной модели глубокого обучения model. Метод model.predict возвращает прогнозируемые выходные данные для набора проверки, которые используются в качестве извлеченных функций.

# Combine the extracted features with the original validation set data
x_val_with_features = np.concatenate((x_val, deep_learning_features), axis=1)

Здесь извлеченные функции deep_learning_features объединяются с данными исходного набора проверки x_val с использованием метода np.concatenate. Аргумент axis имеет значение 1, что означает, что массивы объединяются по оси столбцов (признаков).

# Train the traditional machine learning model (Random Forest) using the combined data
clf = RandomForestClassifier(n_estimators=100)
clf.fit(x_val_with_features, y_val)

В этом разделе традиционная модель машинного обучения, классификатор случайного леса, обучается на комбинированном наборе данных проверки x_val_with_features и метках y_val. Аргумент n_estimators имеет значение 100, что означает, что в лесу будет использоваться 100 деревьев решений. Метод clf.fit обучает классификатор объединенным данным.

Следовательно, мы прогнозируем метки классов тестовых данных, используя классификатор Random Forest clf. Классификатор обучается с использованием комбинированных признаков исходных данных и признаков, извлеченных из модели глубокого обучения. Прогноз выполняется с использованием метода clf.predict() на тестовых данных.

Ансамбльный подход

Во-вторых, традиционные модели машинного обучения могут извлечь выгоду из ансамблевого подхода, включающего модели глубокого обучения. Здесь мы покажем, как заставить модели глубокого обучения работать в тандеме с классикой машинного обучения. С этой целью модели глубокого обучения могут очищать данные и извлекать ценные функции.

Пример того, как модели глубокого обучения можно использовать с ансамблевыми методами, выглядит следующим образом:

# Import libraries
from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from keras.wrappers.scikit_learn import KerasClassifier

# Create a deep learning model
def create_model():
    model = Sequential()
    # Add layers
    # ...
    model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
    return model

# Create a traditional machine learning model
clf1 = LogisticRegression()

# Convert the deep learning model to a scikit-learn model
clf2 = KerasClassifier(build_fn=create_model, epochs=10, batch_size=32)

# Specify weights for each model
weights = [0.7, 0.3] # You can adjust the weights as needed

# Create the ensemble model with soft voting and weights
ensemble_model = VotingClassifier(estimators=[('lr', clf1), ('dl', clf2)], voting='soft',weights=weights)

# Fit the ensemble model
ensemble_model.fit(X_train, y_train)

# Make predictions
y_pred = ensemble_model.predict(X_test)

В коде классификатор голосования из scikit-learn используется для выполнения ансамбля между моделью логистической регрессии, которая является традиционной моделью машинного обучения, и KerasClassifier, которая представляет собой модель глубокого обучения, реализованную с использованием библиотеки Keras.

KerasClassifier создается путем определения функции create_model, которая создает и возвращает модель глубокого обучения с использованием Keras Sequential API. Функция create_model создает последовательную модель, добавляет к ней несколько слоев, компилирует ее с оптимизатором, функцией потерь и метриками оценки, а затем возвращает модель.

Затем модель логистической регрессии определяется как clf1, а KerasClassifier определяется как clf2 путем передачи функции create_model в KerasClassifier и указания количества эпох и размера пакета для обучения.

Наконец, ансамблевая модель создается как ensemble_model путем передачи списка оценщиков, содержащего clf1 и clf2, и стратегии голосования voting=’soft’ в VotingClassifier. Затем модель ансамбля подгоняется к обучающим данным X_train и y_train, а прогнозы делаются на тестовых данных X_test путем вызова ensemble_model.predict(X_test).

Таким образом, модель глубокого обучения используется для прогнозирования и предоставления ансамблевой модели дополнительного источника информации для ее окончательных прогнозов. Ансамбльный подход может использовать сильные стороны как моделей глубокого обучения, так и традиционных моделей машинного обучения для достижения более высокой производительности по сравнению с использованием любой из них по отдельности.

Производительность модели ансамбля может быть значительно улучшена за счет объединения моделей глубокого обучения и традиционных моделей машинного обучения. Однако важно помнить, что этот подход может быть более затратным в вычислительном отношении и требовать больше времени для обучения и оценки.

Есть еще несколько реальных примеров того, как глубокое обучение используется для улучшения традиционных моделей машинного обучения. К ним относятся:

  • Обучение с подкреплением: в этом методе модели глубокого обучения используются для повышения эффективности обычных моделей машинного обучения за счет более точного прогнозирования значения Q.
  • Обнаружение аномалий. Обеспечивая более точное предсказание аномалий, модели глубокого обучения используются для повышения производительности обычных моделей машинного обучения при обнаружении аномалий.

Заключение

Приведенные выше примеры демонстрируют, что традиционные методы машинного обучения можно улучшить с помощью методов глубокого обучения. Однако наилучший подход всегда будет отличаться в зависимости от специфики рассматриваемой проблемы и имеющихся данных.

Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.

Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.

Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение нашего еженедельного информационного бюллетеня (Еженедельник глубокого обучения), заглянуть в блог Comet, присоединиться к нам в Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов и событий. и многое другое, что поможет вам быстрее создавать более качественные модели машинного обучения.