Нейронные сети для проектирования нейронных сетей
Расширяется применение глубокого обучения в реальных сценариях, однако для построения модели и настройки ее для повышения точности требуется эксперт. Различные этапы машинного обучения включают
- Подготовка данных
- Функциональная инженерия
- Архитектурный поиск
- Настройка гиперпараметров
- Выбор модели
Основная задача специалиста по глубокому обучению - построить эффективную нейронную архитектуру с подходящими гиперпараметрами. Прежде чем прийти к эффективной модели, необходимо протестировать несколько комбинаций, что требует больших затрат времени и средств.
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], мы свяжемся с вами!