Нейронные сети для проектирования нейронных сетей

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

  1. Подготовка данных
  2. Функциональная инженерия
  3. Архитектурный поиск
  4. Настройка гиперпараметров
  5. Выбор модели

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

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

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

Существует ряд фреймворков автоматизированного машинного обучения с открытым исходным кодом, включая auto-sklearn, autokeras, h2o.ai, MLBox, TPOT и TransmogrifAI.

Давайте реализуем классификатор изображений для классификации изображений слонов и кабанов с помощью AutoKeras. AutoKeras - это библиотека AutoML, в которой используется поиск нейронной архитектуры (NAS) с байесовской оптимизацией.

Реализация

Установите следующие библиотеки

pip install tensorflow
pip install keras
pip install autokeras

Нам нужно будет собрать изображения обоих животных и затем изменить их размер до размера (128 * 128 * 3). Затем мы можем разделить изображения с измененным размером на обучающие и тестовые наборы данных.

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

from autokeras.image.image_supervised import ImageClassifier, load_image_dataset
train_data_path = "path/to/train/images"
train_csv_path = "path/to/train.csv"
test_data_path = "path/to/test/images"
test_csv_path = "path/to/test.csv"
x_train, y_train = load_image_dataset(csv_file_path=train_csv_path,
                                      images_path=train_data_path)
x_test, y_test = load_image_dataset(csv_file_path=test_csv_path,
                                    images_path=test_data_path)

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

model = ImageClassifier(path='path/to/save/models/', verbose=True)
model.fit(x_train, y_train, time_limit=60 * 60)

AutoKeras начинает с простой модели, а затем продолжает строить модели до указанного time_limit. Здесь лимит установлен в 1 час.

По прошествии часа создаются различные модели, и выбирается лучшая модель на основе оценки потерь и точности. Затем мы можем переоборудовать лучшую модель с параметром переобучения, установленным на логическое значение. Если для параметра retrain установлено значение true, выполняется переобучение лучшей модели со всем набором данных, что может привести к небольшому повышению производительности, поскольку во время процесса подгонки / обучения часть набора данных могла быть зарезервирована.

model.final_fit(x_train, y_train, x_test, y_test, retrain=True)

Затем окончательная модель может быть оценена для измерения точности. Его нельзя экспортировать в модель Keras в версии 0.4.0, но можно экспортировать как модель AutoKeras, которую можно использовать в AutoKeras. Точность модели зависит от набора данных, а также от time_limit для обучения различных моделей.

print(model.evaluate(x_test, y_test))
model.export_autokeras_model('path/to/save/classifier.h5')

Визуализация

Мы можем визуализировать сгенерированные модели и сохранить их в формате pdf, для чего необходимо установить graphviz.

brew install graphviz
pip install graphviz

Как только это будет сделано, мы можем использовать его для создания PDF-документа сгенерированной модели.

import os
from graphviz import Digraph

from autokeras.utils import pickle_from_file


def to_pdf(graph, path):
    dot = Digraph()

    for index, node in enumerate(graph.node_list):
        dot.node(str(index), str(node.shape))

    for u in range(graph.n_nodes):
        for v, layer_id in graph.adj_list[u]:
            dot.edge(str(u), str(v), str(graph.layer_list[layer_id]))

    dot.render(path)


def visualize(path):
    module = pickle_from_file(os.path.join(path, 'module'))
    module.searcher.path = path
    for item in module.searcher.history:
        model_id = item['model_id']
        graph = module.searcher.load_model_by_id(model_id)
        to_pdf(graph, os.path.join(path, str(model_id)))

# path where the automated models are built from autokeras
visualize('models/')

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

Для дальнейшего чтения недавних исследований в AutoML

Francium Tech - это технологическая компания, специализирующаяся на поставке программного обеспечения высочайшего качества и масштабируемости на экстремальных скоростях. Цифры и размер данных нас не пугают. Если у вас есть какие-либо требования или вы хотите бесплатно проверить работоспособность вашей системы или архитектуры, напишите письмо на адрес [email protected], мы свяжемся с вами!