Лингвистические игры

 

 

 

Игра

 

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

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

 

 

 

Игрофикация

 

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

 

 

 

 

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

 

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

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

Обучение нейронной сети характеризуется четырьмя ограничениями (выделяющими 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 увеличивается переобученность— разность вероятности ошибки и частоты ошибок на обучении.

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

 

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

 

 

 

 

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

 

  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 лет бустинг остаётся одним из наиболее популярных методов машинного обучения.

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

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

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

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

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

 

 

 

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/

 

 

 

PPAML

 

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

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

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

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

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

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

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

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

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

 

 

 

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, пользуясь доступом к практически неограниченным вычислительным возможностям, не утруждают себя тем, чтобы описание их действительно очень интересных и нетривиальных исследований допускало воспроизводимость независимыми научными группами.