Или зная минимальную сумму, чтобы что-то построить…

Просто услышать «Машинное обучение», «Нейронные сети» и т. Д. Может быть утомительным и, честно говоря, невероятно запутанным для понимания, но должно ли это быть?

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

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 в качестве примера Людвига.