Обучение представлениям (representation learning)

Dec 05, 2012 00:36

Плохо, что в русском языке представления (representation, кодирование) и представления (presentation, внешнее проявление на носителе) -- это одно и то же слово. То, что мне нравится в глубоком обучении (deep learning, http://ailev.livejournal.com/1044735.html) -- это прорыв в подходе коннекционизма (http://en.wikipedia.org/wiki/Connectionism), который считает, что в основе всего поведения лежит связь между стимулом и ответом -- и поэтому сложное поведение может возникнуть из иерархий в каком-то смысле однородных кирпичиков. Я сам считаю, что это способ борьбы со сложностью, всяческие иерархии -- разбиения типа атомы-молекулы-клетки-организмы, классификации с возможностью говорить об общих свойствах (или прототипы для того же), порождения (генерация) объектов одного уровня алфавитом и грамматикой другого уровня. Если есть какой-то регулярный способ из абстрактных кирпичиков-алфавита более высокого уровня абстракции (паттернов) представлять множество конкретных объектов более низкого уровня, то многое становится возможным благодаря этой регулярности. Прорыв -- это 2006 год, с которого появляется многослойность в таком абстрагировании.

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

Главное слово в глубоком обучении -- это представление. Настолько главное, что оно само являтся надмножеством для глубокого обучения. Глубокое обучение -- это такое обучение представлениям, при котором находятся (учатся) несколько слоёв этих представлений (пруфлинки: http://compscicenter.ru/sites/default/files/materials/2012_02_16_MachineLearning_lecture_01.pptx -- это про то, какие вообще обучения бывают, так там deep learning даже нет, есть только надкласс representation learning, http://en.wikipedia.org/wiki/Machine_learning#Representation_learning -- deep learning в подразделе representation learning, наряду с manifold learning и sparse coding. Это всё один таксон с методом главных компонент и кластерным анализом, которые представляют неглубокое (shallow) обучение.

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

Хорошее представление решает всё, и есть два метода:
-- представление подбирает человек (representation engineering), все эти бесконечные подгонки, правила и т.д.. Прямое сочинение представления и проверка его качества человеком, а затем прямая передача опыта человека компьютеру.
-- компьютер сам приобретает свой собственный опыт, учится на своих же ошибках. Что не запрещает человеку добавлять компьютеру имеющийся у человека опыт, но в большинстве случаев этого нет, и приобретение опыта компьютером становится решающим фактором. Как обычно, компьютер часто находит представления не хуже человека, а лучше. На задачах распознавания зрительных образов компьютерные алгоритмы работают уже лучше, чем человек -- во многих и многих случаях (взломать любую капчу, как я понимаю, уже не является каким-то особым подвигом. Распознаются также лица в любых ракурсах, распознаются дорожные знаки на фотографиях и т.д. -- всё это быстрее и точнее, чем могут люди).

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

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

Собственно, переформулирование задачи для облегчения потом работы с этими задачами хорошо известно и в других случаях. Так, Пирс предложил экзистенциальные графы -- диаграммы для представления логики (http://www.jfsowa.com/peirce/ms514.htm), теоркатегорщики предлагают логику изображать в струнных или фенмановских диаграммах ("2D разрезом моих диаграмм являются ... экзистенциальные диаграммы Пирса" -- http://algebraic-brain.livejournal.com/94290.html?thread=883026&, http://algebraic-brain.livejournal.com/94015.html).

Мне кажется, что такой поиск представлений -- это феноменологический ход на моделирование. Слова начинают моделировать векторами, а не литералами. И меняется класс возможных к решению задач. Вместо грамматик появляется совсем другой способ порождения для какого-то языка. Компьютер вполне может найти для этого способа порождения такие представления ("глубокие статистические грамматики", несколькоуровневый набор представлений), которые не придут в голову человеку.

Приближения и эвристики рулят, на них и выстроена цивилизация. Ежели какие приближение/эвристика особо хороши, то для него кто-нибудь построит непротиворечивую теорию, где всё будет ОК с формальностью. Большинство языков программирования появлялись как удачный набор фич/средств представления значений, а формальная семантика для них появлялась только через много лет (хотя есть исключения, но они именно исключения, а не правило). Даже архитектурные языки (например, UML) и языки моделирования (BPMN) сначала появлялись, но только ко второй версии хоть как-то опирались на формальные семантики. Сначала эвристики представления и кривой вывод с "грязными хаками" для особых случаев, потом формализация -- точное представление и формальные преобразования. Метафора тут -- рациональные числа, для которых вместо точной работы с дробями используют десятичные приближения, и этой точности обычно хватает. А особые случаи для особых применений обрабатываются особо.

Ну, и disclaimer: я считаю, что методы дискретной математики и логики, а также другие вычислительные методы (а хоть и решение систем уравнений в моделях физических систем) тоже важно и нужно. Я ведь сторонник гибридной модели, в которой одновременно используется много разных представлений объекта и много разных обработок для этих представлений. Я продолжаю утверждать, что в мозгу есть (а в компьютере это будет повторено так или иначе) два разных когнитивных механизма: статистический (контент-анализ, ассоциации и аналогии, обучение представлениям, марковские цепи и т.д.) и формально-логический (с HOL). Оба важны.

Многоуровневое статистическое обучение представлениям сейчас используется для нахождения:
-- высокоуровневых паттернов в речи (аудио)
-- высокоуровневых паттернов в изображениях и видео
-- высокоуровневых паттернов в 3D объектах
-- высокоуровневых паттернах в текстах на естественных языках
-- высокоуровневых гармонических и ритмических паттернов полифонической музыки (http://icml.cc/2012/papers/590.pdf).

Пока я не видел, как многоуровневость используется для нахождения паттернов в семантических решётках, о которых так любит рассуждать John Sowa. Как я понимаю, VAE от VivoMind -- это shallow learning.

Вот я бы и хотел использовать не столько именно и конкретно deep learning, сколько representation learning в связи с ISO 15926 -- для того, чтобы хоть как-то автоматизировать мэппинг. Ибо пока мы строим только средства редактирования того, что придумывают люди. Строим средства записи паттернов, которые придумывают люди. А придумывать, вообще-то, может и компьютер. Сначала плохо (впрочем, люди паттерны тоже придумывают не слишком хорошо -- вон сколько уже возятся в IIP группе iRING -- и где результаты?), а потом всё лучше и лучше, и выйдут на уровень придумывания этих паттернов не хуже, чем у людей. Главное начать: придумать, как представлять семантическую сетку, что является входными наборами данных, чему учим.

Вот тьюториал по representation learning (часть материала, конечно, пересекается с тьюториалами по deep learning, но это ничего): http://www.iro.umontreal.ca/~bengioy/talks/icml2012-YB-tutorial.pdf

Наличие конференции указывает обычно на существование дисциплины и профессиональной тусовки: https://sites.google.com/site/representationlearning2013/

Про культуру и язык: как deep architecture человечьих мозгов порождает культуру, и как работает при этом язык -- http://arxiv.org/pdf/1203.2990v2.pdf

Дальше вы и сами всё найдёте.
Previous post Next post
Up