Машинное обучение

 

 

 

Machine Learning

 

Машинное обучение (Machine Learning) — раздел искусственного интеллекта, изучающий методы построения алгоритмов, способных обучаться на выявлении закономерностей в эмпирических данных.

Машинное обучение  образовалось в результате разделения науки о нейросетях на методы обучения сетей и виды топологий архитектуры сетей, вобрав в себя методы математической статистики и вычислительной математики.

Обучение искусственных нейронных сетей - процесс настройкиля эффективного решения поставленной задачи):

  • архитектуры сети (структуры связей между нейронами)

  • весов синаптических связей (влияющих на сигналы коэффициентов).

Хорошая простая сетевая книга (на английском): Neural Networks and Deep Learning.

Хорошая сложная книга: В.В.Вьюгин МАТЕМАТИЧЕСКИЕ ОСНОВЫ ТЕОРИИ МАШИННОГО ОБУЧЕНИЯ И ПРОГНОЗИРОВАНИЯ

 

 

 

Новости ML

 

Наиболее успешные современные промышленные методы компьютерного зрения и распознавания речи построены на использовании глубинных сетей, а гиганты IT-индустрии, такие как Apple, Google, Microsoft, Facebook скупают коллективы исследователей, занимающихся глубинным обучением целыми лабораториями.

 

02.04.2016

В Калифорнийском университете в Беркли создали нейросеть, которая преобразует исходные чёрно-белые фотографии в полноцветные, добавляя данные о цвете объектов по результатам анализа свыше миллиона подобных изображений. За секунды она достигает лучшего результата, чем профессионалы за несколько часов работы в Photoshop.

Работа с иллюстрациями здесь

 

24.01.2016

Microsoft выложила в открытый доступ на  Github исходный код Computational Network Toolkit - инструментов, которые используются в компании для глубинного обучения в области искусственного интеллекта

 

29.05.2014

Руководителем Microsoft Сатьей Наделлой представлен устный переводчик для Skype с необычной способностью: чем больше языков система осваивает, тем лучше начинает переводить с тех, которые изучила до этого.

Skype Translate —  это мощная нейросеть, которая, к примеру, для распознавания речи строит определенную модель. Технологии Skype Translate также используются в  Microsoft Cortana (из WIndows Phone 8.1), которая понимает вопросы на естественном языке и дает осмысленные ответы.

15.11.2014

Стив Балмерывший руководитель Microsoft) пожертвовал "значительные средства" Гарвардскому университету (в котором учился), что позволит ему расширить факультет компьютерных наук на 50% сфокусировав его на машинном обучении. Сумма не оглашалась. Кроме того, Балмер пожертвовал $50 млн Университету Орегона.

29.11.2014

Стефан Вейтц (глава подразделения Bing, поисковой системы Microsoft):

  • Bing удерживает около 30% рынка в США. Лидирующий в этом сегменте Google Microsoft уже не сможет побороть, но обычный поиск по ключевым словам теряет своё первостепенное значение.

  • Microsoft собирается улучшать свой поисковый движок в ещё несформировавшихся областях, таких как машинное обучение и поиск на основе естественного языка.

  • Bing является основой, на которой базируется интеллектуальный помощник Cortana в Windows Phone, а также построен индексатор Apple Spotlight в операционных системах iOS 8 и Mac OS X 10.10 Yosemite. Таким образом, в Microsoft ставят перед собой цель создания технологий для интерактивного взаимодействия с пользователем как на стационарных компьютерах, так и на смартфонах.

Согласно comScore для США в сентябре 2014 Bing пользовались 29.4% пользователей (+0.1% за год), Google использовали 67.3% (+0.4% за год).

10.11.2014

Поисковая система Google, с помощью искусственных нейронных сетей и машинного обучения, приобрела возможность понимать, что изображено на фото и описывать изображение на естественном языке.

 

 

 

 

Математическая интерпретация обучения нейронной сети

 

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

Таким образом, в процессе обучения циклически решаются однокритериальные задачи оптимизации.

Обучение нейронной сети характеризуется четырьмя ограничениями (выделяющими ML из общих задач оптимизации):

  • огромное число параметров,

  • необходимость высокого параллелизма при обучении,

  • многокритериальность решаемых задач,

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

В остальном проблема обучения, как правило, формулируется как задача минимизации оценки.

На самом деле нам неизвестны (и никогда не будут известны) все возможные задачи для нейронных сетей.

 

 

Обучение по прецедентам

 

Обычно обучение нейронной сети осуществляется на некоторой выборке (обучающей выборке, совокупности прецедентов).

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

Общая постановка задачи обучения по прецедентам:

  • Имеется множество объектов (ситуаций) и множество возможных ответов (откликов, реакций).

  • Существует некоторая зависимость между ответами и объектами, но она неизвестна.

  • Известна конечная совокупность прецедентов — пар «объект, ответ», называемая обучающей выборкой.

  • На основе этих данных требуется восстановить зависимость и построить алгоритм, способный для любого объекта выдать приемлемо точный ответ.

Данная постановка является обобщением классических задач аппроксимации функций, где объектами являются действительные числа или векторы.

В реальных прикладных задачах входные данные об объектах могут быть неполными, неточными, нечисловыми, разнородными.

Эти особенности приводят к большому разнообразию методов машинного обучения.

 

 

Алгоритмы обучения нейронных сетей

 

Базовые виды нейросетей (перцептрон и многослойный перцептрон) могут обучаться:

  • с учителем (известны правильные ответы к каждому входному примеру, а веса подстраиваются так, чтобы минимизировать ошибку),

  • без учителя (позволяет распределить образцы по категориям за счет раскрытия внутренней структуры и природы данных),

  • с подкреплением (комбинируются два вышеизложенных подхода).

 

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

Обучение с учителем — для каждого прецедента задаётся пара «ситуация, требуемое решение»:

  • Метод коррекции ошибки

  • Метод обратного распространения ошибки

Обучение без учителя — для каждого прецедента задаётся только «ситуация», требуется сгруппировать объекты в кластеры, используя данные о попарном сходстве объектов, и/или понизить размерность данных:

  • Альфа-система подкрепления

  • Гамма-система подкрепления

  • Метод ближайших соседей

Обучение с подкреплением — для каждого прецедента имеется пара «ситуация, принятое решение»:

  • Генетический алгоритм.

Активное обучение — отличается тем, что обучаемый алгоритм имеет возможность самостоятельно назначать следующую исследуемую ситуацию, на которой станет известен верный ответ:

  • Обучение с частичным привлечением учителя (semi-supervised learning) — для части прецедентов задается пара «ситуация, требуемое решение», а для части — только «ситуация»

  • Трансдуктивное обучение (transduction) — обучение с частичным привлечением учителя, когда прогноз предполагается делать только для прецедентов из тестовой выборки

  • Многозадачное обучение (multi-task learning) — одновременное обучение группе взаимосвязанных задач, для каждой из которых задаются свои пары «ситуация, требуемое решение»

  • Многовариантное обучение (multiple-instance learning) — обучение, когда прецеденты могут быть объединены в группы, в каждой из которых для всех прецедентов имеется «ситуация», но только для одного из них (причем, неизвестно какого) имеется пара «ситуация, требуемое решение»

 

 

 

 

Метод обратного распространения ошибки

 

Существует большое число алгоритмов обучения, ориентированных на решение разных задач.

Самый успешный:

  • Метод обратного распространения ошибки (backpropagation) — метод обучения, который используется с целью минимизации ошибки работы и получения желаемого выхода.

Основная идея метода:

  • Разница между реальными и правильными ответами нейронной сети, определяемыми на выходном слое, распространяется в обратном направлении — навстречу потоку сигналов.

В итоге каждый нейрон способен определить вклад каждого своего веса в суммарную ошибку сети.

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

См. подробнее: http://ru.wikipedia.org/wiki/Метод_обратного_распространения_ошибки

 

 

Deep learning

 

 

Глубокое обучение (Deep learning) - это раздел ИИ, основанный на двух идеях:

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

  • обучение на немаркированных данных ("без учителя") или на комбинации немаркированных и маркированных данных ("с частичным привлечением учителя").

При обучении множеству уровней представления информации высокоуровневые признаки и концепты определяются с помощью низкоуровневых.

Такая иерархия признаков называется Deep Architecture (глубокой архитектурой).

Глубокие архитектуры произвели революцию в области Machine Learning, значительно превзойдя другие модели в задачах распознавания изображений, аудио, видео и др.

 

Попытки обучения глубоких архитектур (в основном, нейронных сетей) до 2006 года проваливались (за исключением особого случая свёрточных нейронных сетей).

Успешный подход Хинтона использует Restricted Boltzmann Machine (Ограниченную Машину Больцмана, RBM) для моделирования каждого нового слоя высокоуровневых признаков:

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

  • когда достаточное количество слоёв обучено, глубокая архитектура может быть использована как в качестве дискриминативной модели для распознавания подаваемых на вход данных (с помощью прохода "снизу вверх"), так и в качестве генеративной модели для производства новых образцов данных (с помощью прохода "сверху вниз").

 

 

 

 

Задачи для машинного обучения

 

Цель ML -  автоматизация решения сложных задач в самых разных областях человеческой деятельности:

  • классификации (как правило, выполняется с помощью обучения с учителем на этапе собственно обучения).

  • Кластеризации (как правило, выполняется с помощью обучения без учителя)

  • Регрессии (как правило, выполняется с помощью обучения с учителем на этапе тестирования, является частным случаем задач прогнозирования).

  • Понижения размерности данных и их визуализация (выполняется с помощью обучения без учителя)

  • Восстановления плотности распределения вероятности по набору данных

  • Выявления новизны

  • Построениея ранговых зависимостей

Типы входных данных при обучении

  • Признаковое описание объектов — наиболее распространённый случай.

  • Описание взаимоотношений между объектами, чаще всего отношения попарного сходства, выражаемые при помощи матрицы расстояний, ядер либо графа данных

  • Временной ряд или сигнал.

  • Изображение или видеоряд.

  • Типы функционалов качества

 

 

 

Данные для машинного обучения

 

Типы входных данных при обучении:

  • Признаковое описание объектов — наиболее распространённый случай.

  • Описание взаимоотношений между объектами, чаще всего отношения попарного сходства, выражаемые при помощи матрицы расстояний, ядер либо графа данных

  • Временной ряд или сигнал.

  • Изображение или видеоряд.

  • Типы функционалов качества

 

 

 

Приложения машинного обучения

 

Целью является частичная или полная автоматизация решения сложных задач в самых разных областях человеческой деятельности.

Машинное обучение имеет широкий спектр приложений:

  • Распознавание речи

  • Распознавание жестов

  • Распознавание рукописного ввода

  • Категоризация документов

  • Ранжирование в информационном поиске

  • Распознавание образов

  • Диагностика (техническая, медицинская...)

  • Биоинформатика

  • Обнаружение спама

  • Биржевой технический анализ и др...

Сфера применений машинного обучения постоянно расширяется по мере накопления огромных объёмов данных в науке, производстве, финансах, транспорте, здравоохранении.

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

Раньше, когда таких данных не было, эти задачи либо вообще не ставились, либо эффективно решались другими методами.

 

 

 

Обобщающая способность и переобучение

 

 

Обобщающая способность (generalization ability, generalization performance) - характеристика алгоритма обучения, обеспечивающая вероятность ошибки на тестовой выборке на уровне ошибки на обучающей выборке

Обобщающая способность тесно связана с понятиями переобучения и недообучения.

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

Недообучение возникает при использовании недостаточно сложных моделей.

Переобучение (overtraining, overfitting) — нежелательное явление, возникающее при решении задач обучения по прецедентам, когда вероятность ошибки обученного алгоритма на объектах тестовой выборки оказывается существенно выше, чем средняя ошибка на обучающей выборке.

Переобучение возникает при использовании избыточно сложных моделей.

Эмпирический риск - средняя ошибка алгоритма на обучающей выборке.

Метод минимизации эмпирического риска (empirical risk minimization, ERM) состоит в том, чтобы в рамках заданной модели выбрать алгоритм, имеющий минимальное значение средней ошибки на заданной обучающей выборке.

Переобучение появляется именно вследствие минимизации эмпирического риска:

  • пусть задано конечное множество из D алгоритмов, которые допускают ошибки независимо и с одинаковой вероятностью.

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

  • минимум эмпирического риска — это случайная величина, равная минимуму из D независимых одинаково распределённых биномиальных случайных величин. Её ожидаемое значение уменьшается с ростом D.

  • соотвественно, с ростом D увеличивается переобученность— разность вероятности ошибки и частоты ошибок на обучении.

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

Всегда существует оптимальное значение сложности модели, при котором переобучение минимально.

 

 

 

 

AutoML

 

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

Сундар Пичаи ен. директор Google) показал пример работы AutoML на конференции Google I/O 2017.

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

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

См. в официальном блоге.

С помощью технологии AutoML ИИ-платформы станут быстрее обучаться и будут гораздо умнее.

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

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

 

 

 

Сетевые ресурсы

 

  1. MachineLearning.ru
    Профессиональный информационно-аналитический ресурс, посвященный
    машинному обучению, распознаванию образов и интеллектуальному анализу данных.
    Более 800 
    статей на русском языке.

  2. Машинное обучение и анализ данных
    Научный журнал

  3. Как обучаются машины? (научно-популярная лекция Н.Ю. Золотых)

  4. Машинное обучение (курс лекций, К.В.Воронцов)

  5. Векторная модель семантики (vector space model, VSM)

Оглавление:
1 Сходство документов: матрица термин-документ
2 Сходство слов: матрица слово-контекст
3 Сходство отношений: матрица пара-модель
4 Сходство
5 Другие векторные модели
6 Лингвистическая обработка для векторной модели
6.1 Разметка текста
6.2 Нормализация текста
6.3 Комментирование
7 Математическая обработка для векторной модели
7.1 Построение частотной матрицы
7.2 Взвешивание элементов
7.3 Сглаживание матрицы
7.4 Сравнивание векторов
7.5 Машинное обучение
8 Литература

Курсы на платформе Coursera:

Бесплатный курс виртуальной академии Microsoft MVA: Введение в сервис машинного обучения Azure Machine Learning  

 

 

 

От автоматической обработки текста к машинному пониманию

 

Из лекции Владимира Селегея - директора по лингвистическим исследованиям компании ABBYY, заведующего кафедрами компьютерной лингвистики РГГУ и МФТИ, председателя оргкомитета ведущей российской конференции по компьютерной лингвистике «Диалог»  (прочитана 9 октября 2012 г. в Лектории Политехнического музея).

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

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

  • Гораздо более эффективен метод машинного обучения. В чем он состоит? Вы берете большое количество натуральных и ненатуральных текстов и пытаетесь с помощью математических методов определить, какие параметры, доступные вам для анализа в этих текстах, делают их натуральными или ненатуральными. К сожалению, сегодня методы машинного обучения чаще всего ориентируются на простые модели сочетаемости слов. Тем не менее, даже это дает очень эффективные результаты. То есть спам-фильтры работают хорошо.

  • Неплохо работают методы определения пола автора.

  • Но есть и более лингвистические задачи – например, задача референциального выбора. Пример текста про футбольную команду "Манчестер Юнайтед" – одним и тем же цветом показаны одинаковые референты, и видно, как по-разному они упоминаются в тексте. Понятно, что в языке есть некая стратегия использования референциальных выражений – в одних случаях будет использовано местоимение, в других – полная именная группа и т.д. Изучать такие вещи помогает метод машинного обучения.

  • На эту тему есть отечественные работы, например, представленная в прошлом году на "Диалоге" совместная работа групп А.А. Кибрика и Н.В. Лукашевич по применению таких методов для изучения механизмов референции. Для этого нужен специально подготовленный корпус, в котором произведена уже достаточно сложная разметка, и мы пытаемся изучить, какие параметры этой разметки существенны для референциального выбора. Что здесь важно? То, что если вы изучаете референцию, вы не можете работать только с сочетаемостью – так у вас ничего не получится. Для того чтобы ваши выводы из применения машинного обучения были эффективны, у вас должны быть адекватные параметры.

  • Не верьте тому, кто говорит, что с помощью машинного обучения можно получить знание из чего угодно, – это не так. Все зависит от того, какие параметры разметки представлены в обучающем корпусе. Если у вас там только последовательность символов и ничего больше – вы не сможете научиться ничему серьезному. Выбор пишущего зависит от большого количества факторов и имеет вероятностную природу.

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

  • Здесь мне хотелось бы провести аналогию с компьютерной медициной. Представьте себе, что в мире существует огромное количество медицинских учреждений и очень много больных. Их лечили, есть история болезни. Представьте себе, что мы пишем обучающую программу для средств медицинской диагностики. Вполне понятная задача. Теперь представьте себе, что вы решаете ее примерно так, как это чаще всего делается в компьютерной лингвистике: берете в истории болезни только данные о температуре, давлении и цвете кожных покровов. Какой-то результат вы получите. Но вряд ли без доступа к УЗИ или сканированию сосудов вы получили бы какую-то реальную диагностику. Сейчас в компьютерной лингвистике методы машинного обучения работают «с температурой и давлением», а мы хотели бы, чтобы они работали и со всем остальным. То есть, на наш взгляд, возникает новая парадигма компьютерной лингвистики.

 

 

Деревья принятия решений

 

Дерево принятия решений (Decision tree ) — метод анализа данных для прогнозных моделей.

Цель: создать модель, которая предсказывает значение целевой переменной на основе нескольких переменных на входе.

Структура дерева представляет собой: «листья» и «ветки».

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

Чтобы классифицировать новый случай, надо спуститься по дереву до листа и выдать соответствующее значение.

Деревья решений широко используются в интеллектуальном анализе данных.

 


 

Пример (для поискового ранжирования задачи - разбиения текста на предложения и построения сниппетов).

 

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

В некотором тексте есть потенциальный делитель - точка.

В реальном Интернете (далеком от литературного языка), очень много текстов, когда точка не является знаком пунктуации "точка".

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

Пишется анализатор, который начинает проверять простые правила:

  • есть ли пробел справа, что говорит о том, что это, скорее всего конец предложения.

  • есть ли большая буква справа...

  • ...................

  • таких правил на текущий момент около 40.

Необходимо скомбинировать эти правила между собой и произвести финальную оценку.

Здесь также применяется машинное обучение на деревьях принятия решений.

 

Дерево принятия решений–  бинарное дерево с условием, которое проверяет, сработал или не сработал признак.

Признаки кодируются при помощи нуля и единицы.

Если признак не сработал – нужно идти налево, если сработал – направо. После перехода может быть проверка нового условия.

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

Проблема переобучения (с ростом дерева рост качества замедляется и останавливается на недостаточном для решения задачи уровне) преодолевается с помощью бустинга.

Бустинг (boosting — улучшение) — процедура последовательного построения композиции алгоритмов машинного обучения, когда каждый следующий алгоритм стремится компенсировать недостатки композиции всех предыдущих алгоритмов. В течение последних 10 лет бустинг остаётся одним из наиболее популярных методов машинного обучения.

Применение бустинга:

  • строится первое дерево, и для всех элементов обучающего множества вычисляется ошибка.

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

  • по цепочке, строится несколько десятков, а иногда и сотен деревьев.

  • получается достаточно гладкое решение.

 

 

 

 

Модель простейшей сети с одним слоем

Простейшая сеть с одним скрытым слоем может быть представлена следующим образом:

На шаге 2 входной вектор значений X (набор чисел) умножается на вектор весов W1, затем складывается с вектором смещений B1, полученные значения весов передаются сигма функции возбуждения. Далее вычисленный вектор S1 умножается на веса скрытого слоя W2 складывается с смещением B2, и вычисляется функция softmax которая является ответом сети.

Этот же алгоритм в графическом виде можно (вычисление идет снизу-вверх):

 

 

 

 

Sharky Neural Network

Sharky Neural Network - приложение для демонстрации возможность обучаемости нейросети.

SNN позволяет выбрать общей вид и модель работы нейронной сети, другие параметры, после чего задать образ распознания и понаблюдать за работой программы нейросети.

SNN использует контролируемое машинное обучение с помощью алгоритма обратного распространения ошибки.

Это бесплатное программное обеспечение доступно на странице: http://www.SharkTime.com

Нейронная сеть SNN относит 2D-точки (вектора описывается двумя реальными значениями: x и y) в два разных класса, проводя визуализацию данных пунктов  (желтый и синий) классификации.

Нейроны SNN используют биполярный сигмоид функции активации (f(x)=2/(1+e-βx)-1).

 

Пользователь может добавлять, удалять, загружать или сохранять точки обоих цветов (желтого и синего), очищать поле от точек.

Чтобы создать  логотип "X"- нужно:

  • нарисовать его желтыми точками в режиме "спрей" используя сочетания клавиш:

  • Ctrl + Левая Кнопка Мыши - ввод множества точек (режим спрея, распылителя)

  • [ - уменьшение диапазона спрея

  • ] - увеличение диапазона спрея

  • заполнить синими точками фон в режиме "спрей".

  • выбрать подходящую структуру сети (закладка Network и раскрывающийся список  Network Structure),

  • настроить параметры обучения (закладка Learn)

  • нажать кнопку "Learn button".

Другие полезные сочетания клавиш:

  • F5 - Сброс сети. 

  • F6 - Начать учить. 

  • Esc - Перестать учиться.

 

 

 

 

PPAML

 

PPAML (Probabilistic Programming for Advanced Machine Learning) -  новая (с 2013 г.) исследовательская программа DARPA по вероятностному программированию для машинного обучения.

DARPA (Defense Advanced Research Projects Agency) — агентство передовых оборонных исследовательских проектов Минобороны США.

Кэтлин Фишер (руководитель PPAML):

  • PPAML призвана сделать для машинного обучения то, что появление языков высокого уровня 50 лет назад сделало для программирования в целом.

  • Не существует общепринятых универсальных инструментов для создания интеллектуальных систем. Из-за этого приходится постоянно изобретать велосипеды (раз за разом реализовывать похожие  алгоритмы, строить с нуля архитектуру).

  • Совокупность общих подходов и парадигм, используемых в машинном обучении, получила название "вероятностное программирование".

  • Инструменты, библиотеки и языки  пока не покидают стен университетов DARPA намерено изменить эту ситуацию.

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

 

Здесь PDF с кратким описанием программы.

Вероятностное программирование – ключ к искусственному интеллекту?
http://habrahabr.ru/post/242993/

 

Классы вероятностных языков программирования:

  • языки, допускающие задание генеративных моделей только в форме Байесовских сетей (или других графических вероятностных моделей). Не открывая возможности решения принципиально новых решений задач,  является высокоэффективным инструментом использования графических моделей.
     Пример: язык
    Infer.NET (от Microsoft).
    Большинство задач машинного обучения могут быть сформулированы в Байесовской постановке
    см. байесовское программирование

  • Тьюринг-полные языки (позволяют выйти за рамки того класса задач, которые существующие методы машинного обучения уже умеют решать). Проблема эффективности вывода в таких языках, приводит к плохой масштабируемости на задачи реального мира. Перспективны в исследованиях, связанных с когнитивным моделированием и общим искусственным интеллектом.
    Пример: язык
    Church (Чёрч, расширение диалекта Scheme для языка Лисп) с web-реализацией (web-church) позволяющей экспериментировать без установки дополнительного программного обеспечения.

 

 

 

 

Вероятностное программирование

 

 

Вероятностное программирование - способ представления порождающих вероятностных моделей и проведения статистического вывода в них с учетом данных с помощью обобщенных алгоритмов.

В «обычном» программировании основой является алгоритм, обычно детерминированный, который позволяет нам из входных данных получить выхоные по четко установленным правилам.

Однако часто мы зная только результат, заинтересованы в том, чтобы узнать приведшие к нему неизвестные (скрытые) значения. Для этого (с помощью теории математического моделирования) создается вероятностная модель, часть параметров которой не определены точно.

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

 

"обычное" программирование вероятностное программирование

 

Классы вероятностных языков программирования:

  • языки, допускающие задание генеративных моделей только в форме Байесовских сетей (или других графических вероятностных моделей). Не открывая возможности решения принципиально новых решений задач,  является высокоэффективным инструментом использования графических моделей.
     Пример: язык
    Infer.NET (от Microsoft).
    Большинство задач машинного обучения могут быть сформулированы в Байесовской постановке
    см. байесовское программирование

  • Тьюринг-полные языки (позволяют выйти за рамки того класса задач, которые существующие методы машинного обучения уже умеют решать). Проблема эффективности вывода в таких языках, приводит к плохой масштабируемости на задачи реального мира. Перспективны в исследованиях, связанных с когнитивным моделированием и общим искусственным интеллектом.
    Пример: язык
    Church (Чёрч, расширение диалекта Scheme для языка Лисп) с web-реализацией (web-church) позволяющей экспериментировать без установки дополнительного программного обеспечения.

Языки вероятностного программирования (перечень с кратким описанием каждого) здесь.

См. Вероятностное программирование – ключ к искусственному интеллекту?
http://habrahabr.ru/post/242993/

 

 

 

ML на векторных моделях

Для обучения нейронных сетей без учителя могут использоваться представления слов в виде векторов в многомерном пространстве.

Оценка подобия (степени их совместного появления) слов на основе данного векторного представления используются в области машинного перевода.

На рисунке: линейные отображения векторных представлений слов английского и испанского языков спроецированы на двухмерное пространство с помощью метода PCA (principal component analysis, главных компонентов), а потом повернуты, чтобы подчеркнуть сходство структур в двух языках.

 

 

 

 

 

Machine Learning для формальных задач

17.10.2014

На сайте электронных препринтов arXiv.org опубликована статья ( Learning to Execute, Илья Сутскевер и др. из Google) с описанием результатов обучения нейронной сети пониманию текстов программ.

Дмитрий Ветров (специалист по ML, к. ф.-м. н., рук. исследовательской группы байесовских методов, нач. департамента больших данных и информационного поиска факультета компьютерных наук НИУ ВШЭ.):

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

  • Google, сманивший к себе значительную часть ведущих мировых специалистов по глубинному обучению нейросетей, явно пытается нащупать границы области применимости методов глубинного обучения по большим объемам данных.

  • Решено было проверить, насколько нейронные сети способы решать задачи из противоположного спектра и понимать четкие формальные инструкции программного кода? Такая задача кажется даже более сложной для нейронной сети:

  • текст программы, как и положено формальному описанию алгоритма на синтетическом языке программирования, содержит минимальную избыточность, поэтому небольшие изменения в нем, например изменение знака «плюс» на знак «минус», будут приводить к сильным изменениям выхода программы, а в традиционных задачах машинного обучения предполагается, что небольшие изменения входных данных должны приводить к небольшим изменениям прогноза (гипотеза компактности). Именно это предположение лежит в основе современных моделей обучения и их способности обобщить результаты обучения с известной обучающей выборки объектов на произвольные данные, которые в каком-то смысле близки к объектам обучающей выборки.

  • с точки зрения нейронной сети текст программы — это просто набор символов, не имеющих априори никакого смысла.

  • Авторы статьи использовали один из видов рекуррентных нейросетей с Long-Short Term Memory. Эта архитектура хорошо зарекомендовала себя при анализе и генерации текстов на естественных языках. Она представляет собой двуслойную динамическую нейросеть с блоком памяти (внутренним набором переменных, значения которых влияют на поведение сети в конкретный момент времени). Такая нейронная сеть просматривает текст программы символ за символом, анализируя не только текущий наблюдаемый символ, но и принимая во внимание выходы нейронов с разных слоев в предыдущий момент времени (короткая память), а также значения переменных в блоке памяти (длинная память). Целью обучения является минимизация ошибки между результатом исполнения кода программы и выходом нейронной сети, просмотревшей текст программы.

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

  • Авторами был разработан специальный генератор текстов программ, позволивший им создавать сколь угодно большие обучающие выборки текстов программ варьируемой сложности.

  • Результаты экспериментов:

  • в ряде случаев нейронные сети действительно научились выдавать тот же ответ, что и настоящие простые программы программа. Качество быстро падает при незначительном усложнении/удлинении текста программы.

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

  • продемонстрировано, что при неограниченном объеме обучающей информации нейронные сети способны улавливать фантастически сложные скрытые закономерности в данных.

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

  • Данная статья представляет собой очередной типичный пример научных статей от Google. Ряд деталей реализации и планирования эксперимента в статье, как и во многих других статьях сотрудников этой корпорации, опущен. Описание нетривиальной математической модели занимает 12 строчек и одну формулу.

  • Приходится с сожалением констатировать, что исследователи Google, пользуясь доступом к практически неограниченным вычислительным возможностям, не утруждают себя тем, чтобы описание их действительно очень интересных и нетривиальных исследований допускало воспроизводимость независимыми научными группами.

 

 

 

 

RNN и LSTM в распознавании речи и текста

 

С возникновением идеи рекуррентных сетей появилась надежда на то что будет качественно решена задача распознавание речи и текста на естественных языках.

Рекуррентные сети (RNN) позволяют помнить предыдущее состояние, тем самым снижая количество данных подаваемых на вход сети.

Необходимость «зацикливания» и «обладания памятью» нейронных сетей обусловлена тем, что данные голоса или текста невозможно подать на вход сети в полном объёме, они возникают некоторыми порциями, разделенными во времени.

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

LSTM сети в том числе помогают решить задачу преобразования последовательности в последовательность возникающую при переводе одного языка на другой.

Возможности RNN и LSTM сетей в некоторых случаях уже превосходят человека в распознавании коротких фраз и рукописного ввода.

 

 

 

 

Azure ML Studio

 18.01.2016 

Теоретическая часть машинного обучения требует глубокой математической подготовки, что делает снижает популярность его инструментария среди разработчиков.

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

Azure Machine Learning – это облачная инструментальная среда разработки:

  • предоставляющая десятки готовых алгоритмов машинного обучения – от простейшего алгоритма линейной регрессии, до сложных и специализированных

  • позволяющая в простой и наглядной форме

  • с помощью готовых компонентов  машинного обучения

  • собрать необходимый процесс обработки данных

  • провести экспериментальную проверку их эффективности

  • и в случае успеха опубликовать все в виде сервиса

  • распространяя и монетизируя полученные модели

  • посредством использования из в мобильных приложениях

Построение модели машинного обучения в Azure ML Studio:

  1. Определение задачи (требуемого результата)

  2. Загрузка данных (или использование готовых данных репозитариев)

  3. Создание нового эксперимента

  4. Формирование выборки данных для дальнейшего обучения модели

  5. Подготовка данных (формирования характеристик, удаления выбросов и разделения выборки на обучающую и тестовую.

  6. Выбор моделей данных и соответствующих алгоритмов обучения, которые могут дать требуемый результат.

  7. Обучение модели (поиск скрытых закономерностей в выборке данных с целью отыскания способа предсказания алгоритмом обучения на основе выбранной модели).

  8. Оценка модели (исследование ее прогностическиз характеристик на тестовой выборке и замеры уровеней ошибок.

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

  10. Публикация веб-сервиса

  11. Тестирование сервиса

  12. Разработка приложения

  13. Мониторинг и монетизации модели

 

 

 

CNTK на Github

В 2015 году многие крупные компании опубликовали на Github свои разработки:

  • Google - TensorFlow,

  • Baidu - warp-ctc.

  • Microsoft выложила в открытый доступ на  Github исходный код Computational Network Toolkit - набора инструментов, для проектирования и тренировки сетей различного типа, которые можно использовать для распознавания образов, понимания речи, анализа текстов и многого другого. 

Computational Network Toolkit победила в конкурсе ImageNet LSVR 2015 и является самой быстрой среди существующих конкурентов.

Computational Network Toolkit является попыткой систематизировать и обобщить основные подходы по построению различных нейронных сетей, снабдить ученых и инженеров большим набором функций и упростить многие рутинные операции. CNTK позволяет создавать сети глубокого обучения (DNN), сверточные сети (CNN), рекуррентные сети и сети с памятью (RNN, LSTM).

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

Ядро CNTK создано на языке C++, но предполагается создать интерфейсы на Python bindings и C# .

Подробно о возможностях и функциях CNTK: An Introduction to Computational Networks and the Computational Network Toolkit.

Об использовании CNTK узнать из CNTK Wiki.

Краткое введение в CNTK в материалах NIPS 2015 опубликовано здесь 

Примеры наиболее распространенных подходов в решении задач применимых к нейронным сетям в папке

В CNTK входит несколько примеров анализа речи, на основе AN4 Dataset, Kaldi Project, TIMIT, и проект по трансляции на основе  работы.

Анализ текста представлен проектами по анализу комментариев, новостей, и произнесенных фраз (spoken language understanding, SLU).

 

 24.01.2016 

Microsoft выложила в открытый доступ на  Github исходный код Computational Network Toolkit - инструментов, которые используются в компании для глубинного обучения в области искусственного интеллекта (проектирования и тренировки сетей различного типа, которые можно использовать для распознавания образов, понимания речи, анализа текстов и многого другого).

Сюэдун Хуан (Xuedong Huang, ведущий специалист Microsoft по системам распознавания речи):

  • Разработчики в моей группе были озабочены проблемой, как ускорить процесс распознавания речи компьютерами, а имеющиеся инструменты работали слишком медленно. Поэтому группа добровольцев вызвалась решить проблему самостоятельно, используя собственное решение, которое ставило производительность на первое место.

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

В компании Microsoft инструментарий CNTK используется на кластере компьютеров  для обработки алгоритмов синтеза и распознавания речи, распознавания изображений и движения на видео.

 

 

"Войны" нейронных сетей
 

 

Generative adversarial networks (GAN) - соперничающие нейронные сети

  • Есть две нейронных сети. Первая сеть, порождающая, обозначим ее как функцию yG=G(z), на вход она принимает некое значение z, а на выходе выдает значение yG. Вторая сеть, различающая, и мы ее обозначим как функцию yD=D(х), то есть на входе — x, на выходе — yD.

  • Порождающая сеть должна научиться генерировать такие образцы yG, что различающая сеть D не сможет их отличить от неких настоящих, эталонных образцов. А различающая сеть, наоборот, должна научиться отличать эти сгенерированные образцы от настоящих.

  • Изначально сети не знают ничего, поэтому их надо обучить на основе набора обучающих данных — (Xi, Yi). На вход сети последовательно подаются Xi и рассчитываются yi=N(Xi). Затем по разнице между Yi (реальное значение) и yi (результат работы сети) перерассчитываются коэффициенты сети и так по кругу.
    На каждом шаге обучения вычисляется значение функции потерь (loss function), по градиенту которой потом пересчитываются коэффициенты сети. А вот функция потерь уже учитывает отличие 
    Yi от yi.

  • Вместо минимизации функции потерь в ходе обучения сети можно решать другую оптимизационную задачу - максимизации функции успеха. И это используется в GAN.

  • Обучение первой, порождающей, сети заключается в максимизации функционала D(G(z)). То есть эта сеть стремится максимизировать не свой результат, а результат работы второй, различающей, сети.

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

  • Порождающая сеть будет учиться по градиенту результата работы различающей сети.

  • Обучение различающей сети заключается в максимизации функционала D(x)(1 — D(G(z))). Она должна выдавать 1 для эталонных образцов и 0 для образцов, сгенерированных порождающей сетью. Причем сеть ничего не знает о том, что ей подано на вход: эталон или подделка.  На каждом шаге обучения различающей сети один раз рассчитывается результат работы порождающей сети и два раза — результат работы различающей сети: в первый раз ей на вход подается эталонный образец, а во второй — результат порождающей сети.

  • Обе сети связаны в неразрывный круг взаимного обучения. И чтобы вся эта конструкция работала нам нужны эталонные образцы — набор обучающих данных(Xi). Заметьте, что Yi здесь не нужны. Хотя, понятно, что на самом деле по умолчанию подразумевается, что каждому Xi соответствует Yi=1.

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

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

 

 

 

 

 

A Visual and Interactive Guide to the Basics of Neural Networks

 

 

Визуальное и интерактивное руководство по основам нейронных сетей

 

 

 

TensorFlow

 

 

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

 

 

Для знакомства с работой нейронных сетей и экспериментов в области машинного обучения TensorFlow предоставляет Учебную нейросеть, которая может быть использована непосредственно в браузере (в том числе для реальных приложений за счет связей с ресурсами библиотеки TensorFlow).

Доступны любые, предусмотренные Apache License, применения Учебной нейросети.

Учебная нейросеть:

  • имеет входы и выходы,

  • реализует между нейронами,

  • содержит скрытые слои, в которых отображены весовые коэффициенты межнейронных связей.

  • задается наборами входных данных

  • позволяет задавать уровень шума (аналога дискурсивного наречия "почти")

  • содержит простейшие средства управления процессом обучения.

«Удачные» связи отмечаются на обучаемых слоях синим, неудачные – оранжевым.

 

При всей кажущейся простоте варьирования параметров Учебной нейросети,
ее обучение не столько ремесло и наука, сколько искусство.
выращивания ИИ на простейшей когнитивной модели

 

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

 

 

Хм...

 

03.06.2016

  • Warner Bros. отправили уведомление видеохостингу Vimeo о нарушении авторских прав согласно Закону об авторском праве в цифровую эпоху (Digital Millennium Copyright Act, DMCA) и список нелегально закачанных видеоматериалов, правами на которые владеет Warner.  В Warner сделали удивительную ошибку - часть видео (заявление от Warner уже отозвано) была не взята из фильма, а в рамках проекта Теренса Броуда [Terence Broad] по кодированию данных с помощью машинного обучения восстановлена из горсти цифр. Компания Warner отправила DMCA-запрос на искусственно восстановленное видео из фильма, в котором рассказывают об искусственных существах, неотличимых от людей, поскольку не смогла отличить симуляцию и настоящую вещь.

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

 

kmp