Изучение машинного обучения (и искусственного интеллекта): часть 2 из n
Предыстория: я определенно не эксперт и не имею формального образования в области машинного обучения (ML) или искусственного интеллекта (AI), но я очарован и заинтригован этими технологиями. Последние несколько лет я изучаю их и самостоятельно создаю приложения.
В этой серии публикаций я расскажу, что я знаю, как я достиг того, что я есть, как я использовал их в своих проектах, и намечу курс на будущее с ними. Надеюсь, этот процесс подтолкнет меня к тому, чтобы узнать больше и может помочь тем, кто позже пойдет по этому пути. Этот пост представляет собой очень быстрое введение в науку и краткий обзор моего текущего проекта машинного обучения.
Первый пост из этой серии кратко обрисовал, как я начал идти по этому пути.
В этом посте я опишу общий подход и архитектуру моего (текущего) подхода к использованию машинного обучения для политической категоризации пользователей Twitter.
ML можно использовать для решения нескольких различных типов проблем. Из Введение в постановку задач машинного обучения от Google:
В общих чертах, машинное обучение - это процесс обучения программного обеспечения, называемого моделью, чтобы делать полезные прогнозы с использованием набора данных. Эта прогностическая модель может затем подавать прогнозы относительно ранее невидимых данных. Мы используем эти прогнозы, чтобы действовать в продукте; например, система предсказывает, что пользователю понравится определенное видео, поэтому система рекомендует это видео пользователю.
Часто люди говорят о машинном обучении как о двух парадигмах: контролируемом и неконтролируемом обучении. Однако более точно описывать проблемы машинного обучения как относящиеся к спектру супервизии между контролируемым и неконтролируемым обучением.
Обучение с учителем и без учителя описывает метод, используемый для обучения модели машинного обучения. Обучение с учителем - это обучение модели путем передачи ей примеров того, как набор входных данных (или «параметров») в систему отображается на набор выходных данных. При обучении без учителя модель машинного обучения обучается сама по себе, обнаруживая закономерности в данных.
В своем проекте я использую контролируемое обучение. В частности, я обучаю модель машинного обучения, загружая в нее данные пользователя Twitter (входные данные) и то, что я считаю политической категорией пользователя: «левый», «правый» »Или« нейтраль »(выход).
Определение входных данных для модели может быть своего рода искусством. Для простых задач ввод (ы) может быть очевиден. Например, если кто-то обучает модель машинного обучения предсказывать дневное время, входные данные будут включать дату, время дня и местоположение, а выходными данными будет простое логическое значение, такое как «дневное время».
Для моего проекта входные данные ограничены данными, доступными из Twitter API, которые включают данные профиля пользователя Twitter (биография / описание, @ имя, имя, местоположение, изображения профиля и баннеров, подписчики и друзья) и данные твитов ( слова, эмодзи, URL-адреса, упоминание других пользователей Twitter, # хэштеги, отправленные изображения и видео, ретвиты и т. д.). Это потенциально большое количество входов для каждого пользователя.
Если бы у меня был доступ к неограниченным вычислительным ресурсам и времени, я мог бы использовать каждый доступный бит информации для каждого пользователя для обучения модели машинного обучения, но поскольку я делаю это на свои деньги, и не вся информация о пользователе была бы полезна, мне нужно какой-то способ выбрать наименьший набор входных данных, которые имеют отношение к задаче, но все же дают приемлемую производительность с точки зрения использования обучения и прогнозирования.
Я использовал то, что я называю подходом гистограммы к выбору входных данных. Как правило, я подсчитываю, как часто ввод (например, конкретный #hashtag) появляется во всех моих помеченных данных (пользователи, которых я классифицировал), и относительную частоту этого ввода по категориям. Если эта входная частота превышает определенный порог и присутствует преимущественно в одной категории, то она включается как входная.
Например, хэштег #resist появляется часто, гораздо чаще у пользователя, которого я классифицировал как левый, чем правый или нейтральный. Точно так же #maga чаще появляется у правильных пользователей. Путем анализа всех пользователей, категоризированных вручную, можно получить набор входных данных, которые, как я считаю, будут наиболее полезными для прогнозирования политической категории пользователя Twitter. Затем я ограничиваю количество вводов до разумного для моих доступных ресурсов, обычно между 1000–2000 вводов на пользователя. Я автоматизировал процесс создания набора входных данных, и каждый день создается новый набор входных данных с использованием пользовательских данных, которые также постоянно обновляются.
Вот пример объекта JSON, который описывает набор входных данных с 1556 входами, с типами входных данных:
- смайлики [186 вводов]
- хэштеги [159]
- местоположения [181]
- n-граммы [174] (последовательности из 2 и 3 слов)
- места [169] (геообъекты Twitter)
- тональность языка [3] (Анализ тональности естественного языка Google)
- URL [124]
- пользователь упоминает [142]
- слова [152]
- друзья [158]
- медиа [108] (видео и фото)
Следующим шагом является построение и развитие / обучение нейронной сети с использованием помеченных данных (пользователей Twitter, классифицированных вручную). Я расскажу об этом процессе в следующей части этой серии.