Допрос, чтобы утолить поиски

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 году ожидается еще много таких интересных комбинаций этих методов с активным обучением.

Распространяйте интеллект с любовью!

Люблю все;