Изучение машинного обучения (и искусственного интеллекта): часть 2 из n

Предыстория: я определенно не эксперт и не имею формального образования в области машинного обучения (ML) или искусственного интеллекта (AI), но я очарован и заинтригован этими технологиями. Последние несколько лет я изучаю их и самостоятельно создаю приложения.

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

Первый пост из этой серии кратко обрисовал, как я начал идти по этому пути.

В этом посте я опишу общий подход и архитектуру моего (текущего) подхода к использованию машинного обучения для политической категоризации пользователей Twitter.

ML можно использовать для решения нескольких различных типов проблем. Из Введение в постановку задач машинного обучения от Google:

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

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

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

В своем проекте я использую контролируемое обучение. В частности, я обучаю модель машинного обучения, загружая в нее данные пользователя Twitter (входные данные) и то, что я считаю политической категорией пользователя: «левый», «правый» »Или« нейтраль »(выход).

Определение входных данных для модели может быть своего рода искусством. Для простых задач ввод (ы) может быть очевиден. Например, если кто-то обучает модель машинного обучения предсказывать дневное время, входные данные будут включать дату, время дня и местоположение, а выходными данными будет простое логическое значение, такое как «дневное время».

Для моего проекта входные данные ограничены данными, доступными из Twitter API, которые включают данные профиля пользователя Twitter (биография / описание, @ имя, имя, местоположение, изображения профиля и баннеров, подписчики и друзья) и данные твитов ( слова, эмодзи, URL-адреса, упоминание других пользователей Twitter, # хэштеги, отправленные изображения и видео, ретвиты и т. д.). Это потенциально большое количество входов для каждого пользователя.

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

Я использовал то, что я называю подходом гистограммы к выбору входных данных. Как правило, я подсчитываю, как часто ввод (например, конкретный #hashtag) появляется во всех моих помеченных данных (пользователи, которых я классифицировал), и относительную частоту этого ввода по категориям. Если эта входная частота превышает определенный порог и присутствует преимущественно в одной категории, то она включается как входная.

Например, хэштег #resist появляется часто, гораздо чаще у пользователя, которого я классифицировал как левый, чем правый или нейтральный. Точно так же #maga чаще появляется у правильных пользователей. Путем анализа всех пользователей, категоризированных вручную, можно получить набор входных данных, которые, как я считаю, будут наиболее полезными для прогнозирования политической категории пользователя Twitter. Затем я ограничиваю количество вводов до разумного для моих доступных ресурсов, обычно между 1000–2000 вводов на пользователя. Я автоматизировал процесс создания набора входных данных, и каждый день создается новый набор входных данных с использованием пользовательских данных, которые также постоянно обновляются.

Вот пример объекта JSON, который описывает набор входных данных с 1556 входами, с типами входных данных:

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