Или зная минимальную сумму, чтобы что-то построить…
Просто услышать «Машинное обучение», «Нейронные сети» и т. Д. Может быть утомительным и, честно говоря, невероятно запутанным для понимания, но должно ли это быть?
В некоторых отношениях так и должно быть, так как при изучении любого нового предмета необходимы базовые знания, а с машинным обучением это довольно круто.
Uber недавно выпустил Ludwig, который представляет собой набор инструментов, созданный на основе TensorFlow, который позволяет обучать и тестировать модели глубокого обучения без необходимости писать код.
Фантастика! Теперь мне не нужно учиться программировать, чтобы создавать начальные модели!
YLD только что выпустила новый веб-сайт (YLD.io - зацените, если еще не сделали), на котором некоторые из наших сотрудников должны были сделать фотографии. Посмотрев в первый раз эти изображения, я заметил, что все они имеют одинаковый фон, и тогда я подумал, что было бы весело провести простую классификацию с несколькими метками на этих изображениях! 👩🔬
Что такое классификация Multi-Label?
По сути, это несколько текстовых тегов, применяемых к входу, в нашем случае мы используем изображение в качестве входа.
Поскольку мы используем контролируемое обучение, нам необходимо создавать собственные теги из изображений, таким образом контролируя алгоритм. Если нам удалось создать что-то, что могло бы создавать ассоциации слов и изображений без подсказок, то это назовем обучением без учителя.
Для меня это означает, что мне пришлось вручную выполнить задачу ввода данных, вручную добавив все теги, которые я считал правильными, из местоположений изображений, которые у меня были в CSV.
Все эти изображения выглядели довольно похоже на мою фотографию, обратите внимание, что на самом деле меня не было в тренировочной выборке.
После сортировки следующим шагом будет «построение» алгоритма машинного обучения. Теперь я знаю, что это может показаться трудным, но с Людвигом - это настройка через файл YAML.
input_features: - name: image_path type: image output_features: - name: tags type: set threshold: 0.8 # Only accept predictions if the # probilibility is higher than 80% training: epochs: 500 # Number of times to run a training step learning_rate: 0.0000001
Как видите, ключ input_features
соответствует 1–2–1 первому столбцуimage_path
нашего CSV-файла, а output_features
соответствует нашему набору tags
в нашем CSV-файле.
Клавиша training
используется для настройки обучения набора данных, здесь я только что увеличил количество эпох (время выполнения) и скорость обучения, которая является размером шага алгоритма.
Итак, теперь мы готовы тренироваться, это может занять некоторое время, так что выпейте кофе.
ludwig train -mdf model.yaml --data_csv yld.csv
После завершения обучения Людвиг создал новую папку с именем «результаты», в которой хранятся сгенерированная модель и параметры. Но как нам извлечь из этого ценности?
ludwig predict --model_path results/experiment_run_0/model --data_csv predict.csv
Затем будет сгенерирована новая папка results_0 с некоторыми новыми CSV-файлами, которые содержат предсказанные значения! Нам нужен файл tags_predictions.csv
.
Ура! После выполнения моих прогнозов мы можемcat
этот файл и увидеть прогнозируемые теги:
<PAD>,background,smile,shirt,glasses,beard glasses,beard longhair,shirt
Теперь, если мы хотим использовать входное изображение и наложить текст, мы можем написать небольшой фрагмент кода, чтобы сгенерировать что-то, объединяющее их, и вы получите что-то вроде этой моей фотографии!
Есть множество других примеров, которые можно легко использовать, и их можно найти по адресу https://uber.github.io/ludwig/examples/. Если вы пытаетесь придумать, к чему это применить, или если у вас недостаточно данных, вы можете использовать https://www.kaggle.com/c/titanic в качестве набора данных и https: // uber .github.io / ludwig / examples / # kaggles-titanic-predicting-Survivors в качестве примера Людвига.