Машинное обучение для чайников
Стоит иметь представление о машинном обучении. Хотя бы потому, что оно в списке приоритетных направлений работы компаний, которые двигают компьютерную индустрию вперед - таких, как Google, Facebook и Amazon. Сама природа этой технологии гарантирует, что она ощутимо изменит технологии уже на первых же этапах своего развития. И чтобы не остаться за бортом этого паровоза, стоит знать, зачем оно нужно и как в принципе работает.
Цель машинного обучения - сделать все программируемым
По сути, это обучение компьютера "человеческому" распознаванию объектов. Для этого создается огромное количество данных, организованных и прокомментированных человеком - таких, как фото с тэгами. Затем программа анализирует эти данные, сопоставляя их элементы с комментариями человека, а потом ищет распознанные элементы на просторах сети. Так Facebook предлагает тэги для фотографий, а Google photos ищет на изображениях людей.
Пока что большинство таких алгоритмов используется в практически игрушечных целях - умные фотоальбомы, распознание речи. Эти применения нетребовательны. Если такой алгоритм перепутает вашу собаку с другом Петей или разобьет сложное слово "самосовершенствующиеся" на непредсказуемый набор предлогов, пользователь просто посмеется и исправит ошибку вручную. Но алгоритмы становятся надежнее, и скоро будут использоваться в куда более интересных задачах.
Машинное обучение позволяет компаниям создавать приложения, которые лучше работают с создаваемыми людьми картинками, текстами, речью и остальными плохо оцифровываемыми штуками. Короче говоря, создавать приложения, которые смогут понимать людей - сломать стену, которая отделяет человека от компьютера со времен дифференциальной машины Тьюринга.
Графический интерфейс и мышка дали компьютеру пропуск в каждый дом. Сенсорный интерфейс сделал его бытовым инструментом. Интерфейсы, основанные на машинном обучении, сделают их всепроникающими.
Есть только одна проблема.
Кому-то придется все это систематизировать.
Машинное обучение настолько хорошо, насколько хороши исходные данные
Чтобы создать самообучающуюся программу, понадобятся три вещи
- Данные для тренировки: файлы, которые каталогизированы или как-то еще систематизированы людьми
- Сама программа: софт, который построит модели, основываясь на тренировочных данных
- Железо: те вычислительные мощности, на которых работает программа и хранятся вышеупомянутые данные.
Железо добыть легко. Взять старый компьютер, арендовать кусок облака.
Программу, на самом деле, добыть еще проще. Большая часть лицензий доступна бесплатно.
Все, что нужно - это данные для тренировки. И вот их нужно очень много. Тут-то и скрывается главная проблема.
Дело в том, что качество создаваемых алгоритмов ощутимо зависит от объема исходной базы данных. Пока что нет софта, который способен создать хорошую модель на основании, например, тысячи источников.
К тому же эти алгоритмы невозможно напрямую чистить от ошибок - хотя бы потому, что мы сами не очень понимаем, как они работают. Это самая странное в машинном обучении: в его алгоритмах невозможно разобраться напрямую или логически, только путем проб и ошибок.
И пока ситуация остается такой, пока мы не знаем, как работает машинное обучение, нам приходится компенсировать локальные завихрения компьютерной логики путем скармливания ей безумных объемов данных.
Откуда же эти данные взять?
Используйте каждую часть буффало, то есть пользователя
Если мы хотим, чтобы компьютеры научились понимать таких нецифровых людей, придется уговорить этих самых людей их обучать. Но где найти эти тысячи людей, которые согласятся тратить свободное время на создание удобной для скармливания компьютеру информации? Не нанимать же их, на самом деле - это сделает бюджет разработки абсурдным.
Все просто. Если человек не платит за продукт деньгами - он платит за него чем-то еще, не так ли? Просмотром рекламы, как в Google. Или расстановкой тех самых тегов в Instagram. Именно пользователи бесплатных сервисов создают тот самый массив данных, необходимый для машинного обучения.
Онлайн-сервисы учатся использовать все части своих пользователей - так, как индейцы когда-то использовали все части быков буффало. Наше внимание обеспечивает их доходами от рекламы. Наши знания - топливо для их машинного обучения, даже если это знания о том, что вот этот круглый объект на фото с обеда - пицца.
Это как Том Сойер и покраска забора, только масштабированное в миллионы раз.
Возьмем, к примеру, Facebook Photoes. Эта программа предлагает вам отметить друзей на загруженных фотографиях. Это удобно вам, чтобы потом найти нужные фотографии. Это удобно им - чтобы найти себя или вспомнить, что вчера вечером было-то. Это удобно Facebook, потому что создает огромный массив данных, который может быть использован для тренировки искусственного интеллекта. И это позволяет Facebook улучшать сервис Photoes. Короче, сплошные плюсы.
Чем лучше становится программа, тем больше людей ее использует, тем лучше становится программа. Это циклический процесс.
В каких же условиях могут существовать такие приложения?
- Оно должно быть онлайновым. Иначе получаемые им данные невозможно будет достать.
- Вычисления должны происходить не на устройстве пользовтеля, а на серверах. Серьезно, никто не хочет загружать чужой смартфон настолько.
- Первое условие создания хорошей программы - большая аудитория. Чем больше народу, тем больше данных они создают.
- Второе условие - регулярное использование. Чем чаще люди пользуются приложением, тем больше данных они создают.
- Хорошие приложения поощряют создание точных данных. Серьезно, вы не хотите провоцировать пользователя помечать пиццу тегом "пикачу".
Для стартапов здесь, разумеется, кроется маленькая проблема. У вас никогда не будет того же количества пользователей, что у Facebook, значит, у вас всегда будет меньше данных, и если вы попытаетесь переиграть мега-корпорацию на ее собственном поле, вы обречены на провал. Поэтому единственный выход - собирать уникальные данные и создавать собственные алгоритмы в той области знаний, где еще нет победителя.