Глубокое обучение (deep learning)

Dec 01, 2012 18:06



Оригинал взят у ailev в Глубокое обучение (deep learning)
Глубокое обучение (deep learning) -- это про попытку собрать из каких-то маленьких абстрактностей всё более глубокие абстрактности, и так в несколько слоёв. Ну, или собрать описание чего-то в языке малой абстрактности, а сам этот язык на языке большей абстрактности. Человек постоянно выделяет признаки (злое лицо), выраженные в терминах других признаков (выражение глаз, выражение губ), которые выражены в терминах третьих признаков (градиенты пикселей). Фишка в том, чтобы эти признаки выделила тупая машина.

Именно такая постановка задачи была для многоуровневых нейронных сетей, где каждый слой должен был бы отвечать за очередной уровень признаков, но до 2006 года много уровней обучать не удавалось по совокупности интеллектуальных затыков исследователей и маломощности тогдашних компьютеров. В 2006 году получился прорыв -- и программы глубокого обучения начали работать практически сразу на уровне SOTA (state-of-the-art программ, которые научились что-то делать на данный момент времении), но в сто тридцать раз быстрее и в тридцать раз меньше по памяти. Народ ахнул, и пошли эксперименты. Неделю назад Майкрософт продемонстрировала свой переводчик с голоса на голос, и тут же появилась статья в NY Times (http://www.nytimes.com/2012/11/24/science/scientists-see-advances-in-deep-learning-a-part-of-artificial-intelligence.html), New Yorker (http://www.newyorker.com/online/blogs/newsdesk/2012/11/is-deep-learning-a-revolution-in-artificial-intelligence.html) -- и далее внимание мира оказалось приковано к этой технологии, пузырь начал надуваться.

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

По-русски о deep learning (чтобы понять, как об этом говорить по-русски): http://habrahabr.ru/post/134950/

Меня меньше волнует обработка изображений и распознавание речи, меня больше волнуют лингвистические штудии на предмет построения моделей по неформальным описаниям (см. мою схему интеллектуального акта в http://dot15926.livejournal.com/37807.html). Меня волнует мэппинг, который можно сделать между текстами разных школ управления (проект PraxOS), и я не хочу делать его полностью вручную. Так, организация как "чего-то-провод" описывается самыми разными авторами в самых разных словах:
-- у Голдрата по организации текут результаты ее работы, измеряется этот поток показателем throughput (единица приближения к цели за период).
-- у Андреева организация -- это Жила, по которой течет сила. Бухгалтерия нужна не для счета денег, а чтобы эти абстрактные-потусторонние жилу и силу представить в "съедобном" виде, дать возможность "пощупать" в нашем мире.
-- процессный подход: к потребителям текут результаты операций цепочки бизнес-процессов. Это все "цепочка приращения стоимости".
-- сетевая организация: проводящая сеть, по которой течет информация, продукты, операции.
-- кооперативные схемы СМД-методологов: цепочки из актов деятельности, выходы одних направляются на любые входы других.
Это все про одно и то же видение организации, как абстрактной "проводящей сущности", абстрактной трубы, по которой течет какая-то другая абстракция. Такая организация -- идеальный (т.е. из области идей, нематериальный) объект, никак не наблюдаемый в мире иначе, чем через схемы, картинки, таблицы показателей.

И вот мне важно, чтобы не я сам делал такой мэппинг (отождествление) объектов разных теорий, т.е. мэппил объекты разных эпистемологических описаний (которые есть у конкретных людей и софтинок -- http://dot15926.livejournal.com/38046.html) к экстрагируемой мной напряжением мозговой мышцы общей онтологии (разделяемая, общая формально заданная концептуализация мира -- конечно, тут речь идет не о собственно онтологии, а об онтологическом описании). Нет, я хочу, чтобы эта общая онтология экстрагировалась бы из множества формально заданных метамоделями и неформально заданных текстами эпистемологий компьютером -- первый пункт из моей схемы интеллектуального акта (http://dot15926.livejournal.com/38046.html).

В этом автоматизированном поначалу, а затем и автоматическом мэппинге/определении аналогий будут участвовать и "химические алгоритмы" (т.е. нахождение аналогий по структуре концептуального графа, как это делают люди из VivoMind -- http://www.jfsowa.com/pubs/analog.htm, примеры где-то со 105 слайда в http://www.inf.ufrgs.br/ontobras-most2011/arquivos/curso1/OntobrasMostSlidesMinicurso1Sowa.pdf), и свеженькие алгоритмы глубокого обучения, которые смогут в каких-нибудь проектных данных проанализировать не только структуры появляющихся там паттернов, но и увеличить вероятность правильности автоматического мэппинга (или валидации вручную сделанного мэппинга) путём изучения компьютером использованных программистами идентификаторов модели даных, анализа этим же компьютером доступной документации по программе, и даже анализа исходного кода программы, если он есть.

Тем самым меня пока мало интересует глубокое обучение для задач распознавания изображений (хотя это может быть очень и очень неплохо для создания документации as built после выполнения операций "доработать по месту напильником"). Сейчас меня больше волнует использование глубокого обучения при работе с текстами.

Вот относительно свеженькие ссылки на эту тему:

Тьюториал по алгоритмам глубокого обучения для обработки текстов на естественном языке, о 186 слайдах -- http://nlp.stanford.edu/~socherr/SocherBengioManning-DeepLearning-ACL2012-20120707-NoMargin.pdf
Приложения технологии глубокого обучения к естественным языкам (продолжение тьюториала, со 196 слайда): http://www.iro.umontreal.ca/~bengioy/talks/gss2012-YB5-NLP.pdf

Разные полезные для глубокого обучения софтины на специализированном для данной теме вебсайте (правда, этот вебсайт уже год не обновляется, мои другие ссылки много свежее): http://deeplearning.net/software_links/ (обращаем внимание, сколько там софта на Питоне). Кому не хватит, есть и для Lua: http://www.torch.ch/

Выделение семантической сетки по тексту (это ну очень похоже на то, чем мы занимаемся с ABBYY): http://jmlr.csail.mit.edu/proceedings/papers/v22/bordes12/bordes12.pdf (2012), и http://www-etud.iro.umontreal.ca/~bordesa/mywiki/lib/exe/fetch.php?media=snowbird11-talk.pdf (2011).

Архитектура SENNA, которая не использует ручной настройки традиционных систем парсинга текстов, а самонастраивается "почти с нуля": http://ronan.collobert.com/pub/matos/2011_nlp_jmlr.pdf (код: http://ronan.collobert.com/senna/, там порядка 3500 строк на ANSI C).

Первая коммерческая софтина, которая использует deep learning: http://research.microsoft.com/en-us/projects/mavis/ (доступна через облако -- http://www.greenbutton.com/Applications/Incus). Она делает субтитры, находит ключевые слова, что позволяет реализовать полнотекстовый поиск по аудио и видеоматериалам с доступом по клику на найденный фрагмент текста сразу к месту в ролике.

Работа с омонимами и полисемией, используя не только локальные окрестности слов, но и глобальный контекст -- http://www.socher.org/uploads/Main/HuangSocherManning_ACL2012.pdf

Мне это направление очень близко, ибо я три года в университете занимался распознаванием образов (немножко об этом я писал в http://ailev.livejournal.com/710976.html). Почему это я пишу? Я хочу прикрутить какую-нибудь интеллектуальную распознавалку к .15926 Editor, чтобы автоматизировать мэппинги. Ибо нужно бежать со всех ног, чтобы только-только остаться на месте.

Опять же, пузырь начал надуваться, и грех оставаться в стороне :-)

Ещё меня интересуют Hybrid Reasoning Architectures (http://ontolog.cim3.net/forum/ontolog-forum/2012-11/msg00176.html), но о них будет чуть попозже.

--------------

Оригинал взят у ailev в  Обучение представлениям (representation learning)
Плохо, что в русском языке представления (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

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

----------------

Оригинал взят у ailev в  Интеллектуальный анализ
Встретил хорошую шутку, объясняющую разницу между статистикой, машинным обучением (включая всякие распознавания образов), искусственным интеллектом и разными "майнингами" (данных, процессов и т.д.). Серьёзных ответов хватает (вот, например, тщетные попытки: http://stats.stackexchange.com/questions/5026/what-is-the-difference-between-data-mining-statistics-machine-learning-and-ai), но они мне кажутся глубоко неправильными по своей сути. Правильный ответ вот (http://www.quora.com/Machine-Learning/What-are-some-good-jokes-in-the-machine-learning-community/answer/Dan-Levin-2?srid=u3Dd&st=ns):If there are up to 3 variables, it is statistics.
If the problem is NP-complete, it is machine learning.
If the problem is PSPACE- complete, it is AI.
If you don't know what is PSPACE-complete, it is data mining.
Теперь понятно, почему искусственного интеллекта не будет, но будет расцвет "майнингов" или "открытий знаний" (knowledge discovery), всё чаще у нас переводимых как "интеллектуальный анализ"?

Ибо производственные люди таки сильно напрягаются сейчас, когда с ними пытаешься поговорить о классическом искусственном интеллекте, им в этой терминологии мерещится GAI и кинофильмы. Следовательно, нужны эвфемизмы. Нужно бы и себе присмотреть какой-то. А хоть тот же "интеллектуальный анализ" для любых технологий распознавания. Хотя я слова "анализ" очень не люблю: это совершенно бессмысленное занятие, когда он не связан хоть с каким-то определяющим полезность этого анализа синтезом -- но как только слово "анализ" произносится, про задаваемую синтезом целенаправленность почему-то забывают, а до синтеза руки уже ни у кого не доходят, analysis paralysis. В искусственном же интеллекте неизбежно есть и синтез, там "цель" важное понятие. Может, этим искусственный интеллект всех и пугает. Анализа боятся меньше, он сам по себе беззуб.

Previous post Next post
Up