Допрос, чтобы утолить поиски
2017 год был захватывающим годом для AI / ML, предлагается множество достижений ML (технические документы, проекты), которые определенно помогают эволюционировать (делать маленькие шаги) от нашего текущего AI в более общий AI (общий искусственный интеллект).
Начиная с сети Капсула Хинтона как альтернативы сверточной нейронной сети, Эволюционных стратегий OpenAI как масштабируемой альтернативы обучению с подкреплением, статей Uber NeuroEvolution, Alpha Zero победила игрока в го и даже победила вяленую рыбу ( компьютерная симуляция шахматного мастера) с нуля без вмешательства человека, Распределенный Automl, такой как Auto Tuning Machines от MIT и т. д., является одним из самых современных тестов в 2017 году. Помимо этого, многие захватывающие рамки AI / ML имеют открытый исходный код технологическими гигантами в 2017 году
несколько интересных проектов от Microsoft также открывают глаза на будущее пространство AI.
Машинное обучение в другом измерении:
Давайте посмотрим на машинное обучение с другой точки зрения,
(i) Наши Предки использовали для предсказания будущего, изобретая свой собственный способ анализа временных рядов, тенденций и сезонности с использованием гороскопа (карта рождения). Они использовали шаблоны прошлых данных, чтобы предсказать будущее, используя своего рода вычисления (математику).
Астрологи - современные ученые в области данных ?!
(ii) Путешествие во времени всегда было загадкой, и вокруг этой темы вращалось множество теорий. Станут ли путешествия во времени реальностью с достижениями квантовой механики и вычислений?
Я считаю, что в какой-то момент времени мы можем путешествовать во времени (не просто путешествовать во времени, но и видеть будущее). Вам действительно не нужно путешествовать со скоростью света, просто путешествуйте глубоко в мир данных. наука и машинное обучение. Например, прогнозирование будущих кадров видео с помощью Генеративно-состязательной сети, если вы способны дать историю жизни человека, это может предсказать будущие события в ближайшем реальном времени. Захватывающе !!!!
Путешествовать во времени с помощью нейронных сетей !?
Итак, что вы имеете в виду, говоря о создании машин, которым любопытно научиться? Введите Активное обучение.
Прежде всего, как машины учатся? И даже как учатся люди?
«ЛЮДИ учатся на опыте. Машина учится на примере»
Итак, то, как мы даем эти примеры машине, прямо пропорционально точности прогноза.
Активное обучение - это стратегия обучения с полу-контролируемым обучением, которая улучшается, задавая вопросы, ключевая гипотеза заключается в том, что если учащемуся разрешено выбирать Данные, на основе которых он учится, - быть активным, любопытным или исследовательским, если хотите, - он может лучше работать с меньше обучения (т. е. активное обучение выбирает набор примеров для изучения вместо того, чтобы получать аннотированные ярлыки для обучения). Ключевой интуицией, лежащей в основе активного обучения, является
«Лучшие \ Лучшие примеры облегчают обучение людей, а также машин»
Стратегия контролируемого обучения: в методах контролируемого обучения (пассивное обучение) все примеры (помеченные данные обучения) выдаются одновременно, машине и машине определяются основные закономерности в данных и предсказываются будущие события. как показано на рис: с помощью этих трех шагов
Шаг 1. Из немаркированных - сырых данных несколько примеров выбираются аннотатором Human (случайным образом) и аннотируют необработанные данные для получения обучающих экземпляров (примеры)
Шаг 2: Этот набор примеров, выбранных человеком, передается машине (контролируемые алгоритмы обучения).
Шаг 3. Машина изучает базовый шаблон из данных аннотированных данных (пассивно)
Недостатком метода обучения с учителем является стоимость маркировки необработанных данных, что, например, будет занимать много времени и дорого: в Распознавании речи аннотирование аудио занимает в 10 раз больше времени, чем фактическое аннотирование слова, другие дорогостоящие Аннотации включают классификацию документов, распознавание объектов и т. Д.
Активное обучение, с другой стороны, получает необработанные данные (немаркированные данные), пытается найти закономерность в данных (с минимальным количеством доступных примеров), и если более компактный специалист не знает, как действовать (поиск закономерности), тогда он получит помощь от Human annotator для самых сложных шаблонов и обучит модель с меньшим количеством обучающих данных
Как сделать машины любопытными для обучения?
Есть несколько различных ситуаций, в которых учащийся может задать вопросы. Были рассмотрены три основных параметра:
(i) синтез запроса членства,
(ii) выборочный отбор проб на основе потоков, и
(iii) выборка на основе пула
Синтез запроса членства: как следует из названия, он будет синтезировать запрос, учащийся может запросить метки для любого немаркированного экземпляра во входном пространстве, включая запросы, которые учащийся генерирует de novo (генерируются новые образцы), а точнее чем те, которые взяты из некоторого основного естественного распределения
Одним из последних нововведений в этом типе синтеза запросов является использование GAN (генеративных состязательных сетей). Генератор был обучен синтезу запросов, и они называют его Генеративным состязательным активным обучением (GAAL).
Выборочная выборка на основе потока: он не генерирует никаких выборок запросов, а только выборки из фактического распределения, а затем учащийся может решить, запрашивать ли его метку у аннотатора, т.е. каждый немаркированный экземпляр обычно взяты по одному из источника данных, и учащийся должен решить, запрашивать или отбрасывать его
Выборка на основе пула. В этом методе выборки большая часть немаркированных данных была собрана из источника данных, и учащийся оценивает их и выбирает лучший запрос для аннотации из этого массива данных.
Стратегии запросов (техника, лежащая в основе любопытства): Сделать машины любопытными было нетривиальной задачей, есть некоторые стратегии, которые делают машину любопытной (по крайней мере, действия или имитацию любопытными), например
Выборка неопределенности: наиболее часто использовался этот метод, который запрашивает экземпляры из источника данных, для которого наименее известно, как пометить метку.
Запрос за комитетом (QBC): Подход QBC предполагает поддержание комитета учащихся C = {θ (1),. . . , θ ©}, которые все обучаются на текущем помеченном множестве. Затем каждого учащегося или модель просят предсказать метку для немаркированных данных. Наиболее информативным запросом считается экземпляр (выборка немаркированных данных), с которым они больше всего не согласны.
Ожидаемое изменение модели. В этой стратегии учащийся выбирает образцы, которые вызывают наибольшие изменения в базовой модели.
Ожидаемое сокращение ошибок: в отличие от ожидаемого изменения модели, эта стратегия запрашивает экземпляры, что значительно снижает ошибку обобщения.
Активное обучение имеет огромный потенциал для использования в реальном времени и дает возможность полностью трансформировать Feature Engineering, которая является одной из наиболее важных и трудоемких частей конвейера Data Science. Я твердо верю, что активное обучение должно быть одним из необходимых шагов в каждый конвейер Data Science Pipeline для точного прогнозирования данных в реальном времени (подробнее об активном обучении см. в этой обзорной литературе)
Давайте посмотрим на активное обучение в реальном времени:
Скажем, вы хотите спрогнозировать количество отсутствующих в вашем офисе (вашими особенностями могут быть состояние здоровья, семейное прошлое, трафик и т. Д.). Вы придумали один из классификаторов (скажем, логистическая регрессия), затем вы спрогнозировали отсутствие / присутствие ваших сотрудников . В конце дня у вас есть Основополагающая истина в отношении ваших Отсутствующих, вы подтверждаете свой результат этой базовой истиной и добавляете эти дополнительные примеры (Основополагающая истина) в свою Модель Что это означает? Это Активное обучение ???? Конечно, это активное обучение, так как мы начинаем с небольшого набора примеров (обучающие экземпляры для дня 1) и добавляем больше примеров ежедневно, это улучшает нашу точность модели, как показано ниже.
Итак, активное обучение было потрясающим, как реализовать активное обучение? Есть ли какие-нибудь библиотеки с открытым исходным кодом?
Да, у нас есть несколько библиотек с открытым исходным кодом, которые дают эту огромную силу, они
Для Python:
Libact - Активное обучение методом метаобучения
Sckit-learn- полууправляемые алгоритмы
Для R:
R - библиотека активного обучения
Другой инструмент текстовых аннотаций на основе Java под названием Dualist.
Давайте кратко рассмотрим библиотеку Active Learning libact в этой статье, для более подробной информации следуйте их статье, доступной здесь. Библиотека libact предоставляет интерфейсы для разработки стратегии активного обучения, эти интерфейсы
Набор данных: этот объект хранит помеченный набор и немаркированный набор (нет для немаркированного набора). Каждому немаркированному или помеченному примеру в объекте набора данных присваивается уникальный идентификатор, после получения меток (наземной истины) от аннотатора метки помещаются в соответствующие места с использованием этого идентификатора.
Модель: этот объект представляет контролируемый алгоритм классификации, этот объект также может принимать алгоритмы классификации sklearn.
Querystrategy: этот объект реализует алгоритм активного обучения. Метод make_query объекта QueryStrategy возвращает идентификатор немаркированного примера, который объект (алгоритм активного обучения) хочет запросить.
Этикетировщик: этот объект играет роль оракула в данной задаче активного обучения. Его метод метки принимает пример без метки и возвращает полученную метку.
Итак, давайте посмотрим на пример программы использования кода libact -python, приведенный в их документации.
#X-features of training #y-ground truth -unlabeled data instances are stored as none dataset=Dataset(X, y) #step1 #declare a QueryStrategy instance query_strategy = QueryStrategy(dataset) labler = Labeler() # declare Labeler instance model = Model() # declare model instance for _ in range(quota): # loop through the number of queries query_id = query_strategy.make_query() lbl = labeler.label(dataset.data[query_id][0]) # query the label of the example at query_id dataset.update(query_id, lbl) # update the dataset with newly-labeled example model.train(dataset) # train model with newly-updated Dataset
Библиотека Libact обеспечивает активное обучение с помощью интерфейсов метаобучения, которые на лету выбирают лучшую стратегию запросов, например (UncertaintySampling, hintsvm и т. Д.), Которая, как они называют, имеет ALBL (Active Learning By Learning).
вот пример кода для ALBL
from libact.query_strategies import ActiveLearningByLearning from libact.query_strategies import HintSVM from libact.query_strategies import UncertaintySampling from libact.models import LogisticRegression qs = ActiveLearningByLearning( dataset, # Dataset object T=100, # qs.make_query() can be called for at most 100 times query_strategies=[ UncertaintySampling(dataset, model=LogisticRegression(C=1.)), UncertaintySampling(dataset, model=LogisticRegression(C=.01)), HintSVM(dataset) ], model=LogisticRegression() )
Таким образом, многие текущие исследовательские публикации сосредоточены на сочетании современных методов, таких как обучение с подкреплением, GAN, глубокое обучение с активным обучением. В 2018 году ожидается еще много таких интересных комбинаций этих методов с активным обучением.
Распространяйте интеллект с любовью!
Люблю все;