Основы будущего: размышления о прорывах на конференц��и по искусственному интеллекту ICML 2008
Июль месяц, прохладный Хельсинки, на 25-й Международной конференции по машинному обучению (ICML 2008) было жарко. Ощущение — как будто новое будущее на пороге и осталось совсем немного.
Докладов вместе с письменными работами было более 500, но расскажу только о двух из них. Если и, правда, это сбудется, то всё, о чём пишут авторы, перевернёт наше понимание того, что такое интеллект, ра, и как машины смогут учиться, видеть и думать “самостоятельно” — а это, поверьте, совсем не за горами.
Итак, A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning (Ronan Collobert, Jason Weston) и Learning for Control from Multiple Demonstrations (Adam Coates, Pieter Abbeel, Andrew Ng)
«Унифицированная архитектура для обработки естественного языка: глубокие нейронные сети с многозадачным обучением» про NLP, но не шулерское “нейро-лингвистическое программирование”, о котором вы подумали, а про обработку естественного языка (Natural Language Processing).
Это технология, которая позволяет понимать и работать с человеческой речью или текстом. Проще говоря, NLP помогает машинам «читать», «слушать» и «понимать» то, что говорит или пишет человек, чтобы затем выполнить какие-то действия: перевести текст, ответить на вопрос, найти нужную информацию или даже вести разговор.
И здесь основные этапы, знакомые разработчикам:
— Разбиение текста на части (слова, предложения) — токенизация.
— Определение роли каждого слова (например, глагол, существительное) — тегирование частей речи.
— Очистка текста от лишних элементов (стоп-слов, пунктуации).
— Преобразование слов в числа, точнее в вектора.
В своей работе авторы говорят о “глубокой сверточной нейронной сети” (наверное, придется пояснять каждое слово — но когда-нибудь позже), которая одновременно решает сразу несколько задач обработки естественного языка (NLP): определение частей речи (POS), выделение синтаксических групп (chunking), распознавание именованных сущностей (NER), семантическая разметка ролей (SRL), нахождение семантически похожих слов и языковая модель для оценки корректности предложений.
Вместо множества отдельных систем они разработали глубинную нейронную сеть, которая способна учиться выделять важные признаки из текста для всех этих задач одновременно. Такая модель, используя совместное обучение, позволяет переносить знания между задачами — например, понимание частей речи помогает точнее выявлять семантические роли.
Коллобера и Уэстона также применили нестандартный подход — включили в обучение не только разметку, но и неразмеченный текст, используя его для создания языковой модели. Это позволило существенно улучшить качество основных задач без необходимости размечать новые данные вручную. Архитектура сети строится поэтапно: сначала каждое слово преобразуется в числовой вектор, затем благодаря сверточным слоям сеть захватывает локальные и глобальные контексты, и, наконец, классические нейронные сети делают итоговые предсказания.
Одним из ключевых достижений стало то, что их модель показала лучшие результаты по задаче семантической разметки ролей (SRL) без использования трудоемких признаков и парсинга. Обучение велось последовательно по задачам, что помогает постепенно обогащать представления и делать модель устойчивой и эффективной.
Похоже, что авторы Коллобер и Уэстон не просто создали нейросеть для обучения — они разработали целостный подход, благодаря которому совместное и “полунепосредственное” (точнее не переведешь) обучение позволило заметно продвинуться в понимании языка машинами.
Первая работа была про то, как нейросеть учится понимать язык. Вторая — про то, как машина учится летать не просто “как человек”, а лучше человека.
Статья называется “Learning for Control from Multiple Demonstrations” (Adam Coates, Pieter Abbeel, Andrew Ng). Формально это про автономный вертолёт, но по сути — про универсальный способ научить сложную систему управлению, имея только несколько человеческих демонстраций, причём неидеальных.
Авторы задаются довольно приземлённым вопросом: как сделать так, чтобы робот следовал нужной траектории (trajectory), если: эту траекторию трудно заранее прописать руками;
модель динамики системы (в данном случае вертолёта) у нас только примерная; а эксперт-человек ошибается и летает неидеально.
Почему “просто повторить” не работает
На первый взгляд задача звучит просто: пусть человек-пилот несколько раз показывает нужный манёвр, а алгоритм затем как-нибудь усреднит эти траектории и будет повторять “среднюю”.
Но в реальности всё ломается на деталях:
Разные демонстрации выполняются с разной скоростью: один раз пилот сделал резче, другой — мягче и растянул по времени.
Если просто брать среднее положение вертолёта в каждый момент времени, получится траектория, которая вообще не соответствует физике — условный “призрак вертолёта”, пролетающий там, где реальный аппарат так лететь не может.
Модель динамики у нас тоже неточная: есть лишь “грубая” аппроксимация того, как вертолёт реагирует на упр��вление в среднем.
Именно поэтому задача не сводится к арифметическому усреднению. Нужно научиться:
понять, какую идеальную траекторию пытался показать человек; выкинуть его случайные ошибки и дрейф; при этом не нарушить физику полёта.
Скрытая “идеальная траектория” и время, которое плывёт
Главная идея работы — представить себе, что где-то “в тени” всех демонстраций существует скрытая идеальная траектория, которую пилот пытался выполнить каждый раз.
Алгоритм делает сильное допущение:
— есть невидимая последовательность состояний и управляющих воздействий — это и есть идеальный полёт;
— каждая человеческая демонстрация — это заумно испорченная копия этой идеальной траектории: с шумом, ошибками, небольшими смещениями по времени (манёвр начался чуть раньше, чуть позже, где-то замедлился, где-то ускорился).
В математическом языке это описывается как генеративная модель:
— скрытая траектория подчиняется некоторой (грубой) модели динамики;
— каждая демонстрация — это шумное наблюдение этой траектории, плюс: временная деформация (time warping), шум измерений, ошибки пилота.
Важно, что время тоже становится случайной величиной: алгоритм не знает заранее, какой момент демонстрации соответствует какому моменту идеального полёта. Это нужно восстановить.
Для этого авторы используют смесь методов: EM‑алгоритм (Expectation–Maximization) — чтобы по очереди оценивать “что случилось на самом деле” и параметры модели;
сглаживание Калмана и динамическое программирование — чтобы “протянуть” выровненное по времени соответствие между демонстрациями и скрытой траекторией (по сути, вариант динамического выравнивания по времени, как в распознавании речи).
Результат этого шага: из нескольких криво выполненных демонстраций алгоритм достаёт одну согласованную траекторию плюс выравнивание “где в какой демонстрации был тот же момент полёта”.
Локальные модели: одна траектория — много маленьких физик
Глобальная модель вертолёта у авторов есть, но она грубая. Она более-менее описывает поведение в среднем, но далеко не идеально, особенно в экстремальных режимах (аэробатика — это не режим “слегка покачались возле точки”).
После того, как траектория восстановлена и все демонстрации выровнены по времени, появляется очень мощный ресурс: в каждой точке траектории есть пачка реальных примеров того, как вёл себя вертолёт в её окрестности. Авторы делают практичную вещь: вместо одной модели на всё, они: строят локальные модели динамики вдоль траектории; каждая такая модель лучше подогнана под конкретный участок (например, момент начала петли, момент выхода из неё и т.п.); при этом используется форма той же “грубой” модели, но с добавлением поправок (bias), которые алгоритм обучает на данных.
Интуитивно понятно: есть черновой учебник по аэродинамике, а локальные модели — это рукописные пометки на полях: “здесь в реальности вертолёт тянет сильнее вниз”, “здесь по тангажу есть систематическая ошибка”, и т.д.
Как убрать дрейф и добавить здравый смысл
Реальный пилот, даже очень опытный, редко делает идеально “висящий на месте” манёвр. Вертолёт чуть уходит по горизонтали, высота плавает — возникает дрейф траектории, который для нас лишь шум.
Авторы добавляют в модель специальные “дрейфовые” переменные, которые:
медленно меняются во времени; отвечают именно за нежелательные смещения, например по позиции; позволяют алгоритму отфакторизовать: вот это — структура самого манёвра, а это — просто то, что пилот слегка уполз в сторону.
Плюс к этому они вводят явные приоритеты и знания эксперта:
например, для переворотов, роллов и tic-toc вертолёт “в идеале” должен оставаться примерно в одной точке; для петель, разворотов и “урагана” (hurricane) траектория должна лежать примерно в вертикальной или горизонтальной плоскости.
Это оформляется как дополнительные мягкие ограничения: алгоритм “верит” в советы эксперта, но допускает небольшие отклонения, понимая, что физически идеал недостижим.
Эксперимент: когда вертолёт обгоняет пилота. Всё это не осталось на уровне теории. Группа использовала реальный радиоуправляемый вертолёт соревновательного уровня, обвешанный датчиками. Эксперт-пилот многократно выполнял разные фигуры.
Алгоритм, используя все эти демонстрации, сделал две вещи: восстановил идеальные траектории для каждого манёвра; построил вдоль них локальные модели динамики.
В результате выяснилось, что машина, обученная на неидеальных демонстрациях, смогла переплюнуть пилота, у которого сама же училась. Рецепт простой: не требовать от эксперта идеала, собрать несколько “человеческих” демонстраций, считать, что где‑то за ними спрятана более аккуратная, математически строгая траектория, и совместить: статистическое выравнивание по времени, учёт динамики физической системы, мягкое внедрение экспертного знания, и локальное обучение моделей вдоль реальной траектории.
На выходе получается не просто копия действий человека, а улучшенная версия — то самое “робот, который научился у тебя и стал летать лучше тебя”.
Июль месяц, прохладный Хельсинки, на 25-й Международной конференции по машинному обучению (ICML 2008) было жарко. Ощущение — как будто новое будущее на пороге и осталось совсем немного.
Докладов вместе с письменными работами было более 500, но расскажу только о двух из них. Если и, правда, это сбудется, то всё, о чём пишут авторы, перевернёт наше понимание того, что такое интеллект, ра, и как машины смогут учиться, видеть и думать “самостоятельно” — а это, поверьте, совсем не за горами.
Итак, A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning (Ronan Collobert, Jason Weston) и Learning for Control from Multiple Demonstrations (Adam Coates, Pieter Abbeel, Andrew Ng)
«Унифицированная архитектура для обработки естественного языка: глубокие нейронные сети с многозадачным обучением» про NLP, но не шулерское “нейро-лингвистическое программирование”, о котором вы подумали, а про обработку естественного языка (Natural Language Processing).
Это технология, которая позволяет понимать и работать с человеческой речью или текстом. Проще говоря, NLP помогает машинам «читать», «слушать» и «понимать» то, что говорит или пишет человек, чтобы затем выполнить какие-то действия: перевести текст, ответить на вопрос, найти нужную информацию или даже вести разговор.
И здесь основные этапы, знакомые разработчикам:
— Разбиение текста на части (слова, предложения) — токенизация.
— Определение роли каждого слова (например, глагол, существительное) — тегирование частей речи.
— Очистка текста от лишних элементов (стоп-слов, пунктуации).
— Преобразование слов в числа, точнее в вектора.
В своей работе авторы говорят о “глубокой сверточной нейронной сети” (наверное, придется пояснять каждое слово — но когда-нибудь позже), которая одновременно решает сразу несколько задач обработки естественного языка (NLP): определение частей речи (POS), выделение синтаксических групп (chunking), распознавание именованных сущностей (NER), семантическая разметка ролей (SRL), нахождение семантически похожих слов и языковая модель для оценки корректности предложений.
Вместо множества отдельных систем они разработали глубинную нейронную сеть, которая способна учиться выделять важные признаки из текста для всех этих задач одновременно. Такая модель, используя совместное обучение, позволяет переносить знания между задачами — например, понимание частей речи помогает точнее выявлять семантические роли.
Коллобера и Уэстона также применили нестандартный подход — включили в обучение не только разметку, но и неразмеченный текст, используя его для создания языковой модели. Это позволило существенно улучшить качество основных задач без необходимости размечать новые данные вручную. Архитектура сети строится поэтапно: сначала каждое слово преобразуется в числовой вектор, затем благодаря сверточным слоям сеть захватывает локальные и глобальные контексты, и, наконец, классические нейронные сети делают итоговые предсказания.
Одним из ключевых достижений стало то, что их модель показала лучшие результаты по задаче семантической разметки ролей (SRL) без использования трудоемких признаков и парсинга. Обучение велось последовательно по задачам, что помогает постепенно обогащать представления и делать модель устойчивой и эффективной.
Похоже, что авторы Коллобер и Уэстон не просто создали нейросеть для обучения — они разработали целостный подход, благодаря которому совместное и “полунепосредственное” (точнее не переведешь) обучение позволило заметно продвинуться в понимании языка машинами.
Технологии, представленные на ICML 2008, закладывают основу будущего ИИ, когда нейросети не только научатся летать и понимать язык, но проникнут в гуманитарные области — в юриспруденцию, медицину, финансы. Как кажется, близки времена, когда искусственный интеллект сможет проанализировать исковое заявление и ответить, можно ли выиграть суд, используя те самые принципы глубокого обучения, о которых доложили Коллобер и Уэстон.
Первая работа была про то, как нейросеть учится понимать язык. Вторая — про то, как машина учится летать не просто “как человек”, а лучше человека.
Статья называется “Learning for Control from Multiple Demonstrations” (Adam Coates, Pieter Abbeel, Andrew Ng). Формально это про автономный вертолёт, но по сути — про универсальный способ научить сложную систему управлению, имея только несколько человеческих демонстраций, причём неидеальных.
Авторы задаются довольно приземлённым вопросом: как сделать так, чтобы робот следовал нужной траектории (trajectory), если: эту траекторию трудно заранее прописать руками;
модель динамики системы (в данном случае вертолёта) у нас только примерная; а эксперт-человек ошибается и летает неидеально.
Почему “просто повторить” не работает
На первый взгляд задача звучит просто: пусть человек-пилот несколько раз показывает нужный манёвр, а алгоритм затем как-нибудь усреднит эти траектории и будет повторять “среднюю”.
Но в реальности всё ломается на деталях:
Разные демонстрации выполняются с разной скоростью: один раз пилот сделал резче, другой — мягче и растянул по времени.
Если просто брать среднее положение вертолёта в каждый момент времени, получится траектория, которая вообще не соответствует физике — условный “призрак вертолёта”, пролетающий там, где реальный аппарат так лететь не может.
Модель динамики у нас тоже неточная: есть лишь “грубая” аппроксимация того, как вертолёт реагирует на упр��вление в среднем.
Именно поэтому задача не сводится к арифметическому усреднению. Нужно научиться:
понять, какую идеальную траекторию пытался показать человек; выкинуть его случайные ошибки и дрейф; при этом не нарушить физику полёта.
Скрытая “идеальная траектория” и время, которое плывёт
Главная идея работы — представить себе, что где-то “в тени” всех демонстраций существует скрытая идеальная траектория, которую пилот пытался выполнить каждый раз.
Алгоритм делает сильное допущение:
— есть невидимая последовательность состояний и управляющих воздействий — это и есть идеальный полёт;
— каждая человеческая демонстрация — это заумно испорченная копия этой идеальной траектории: с шумом, ошибками, небольшими смещениями по времени (манёвр начался чуть раньше, чуть позже, где-то замедлился, где-то ускорился).
В математическом языке это описывается как генеративная модель:
— скрытая траектория подчиняется некоторой (грубой) модели динамики;
— каждая демонстрация — это шумное наблюдение этой траектории, плюс: временная деформация (time warping), шум измерений, ошибки пилота.
Важно, что время тоже становится случайной величиной: алгоритм не знает заранее, какой момент демонстрации соответствует какому моменту идеального полёта. Это нужно восстановить.
Для этого авторы используют смесь методов: EM‑алгоритм (Expectation–Maximization) — чтобы по очереди оценивать “что случилось на самом деле” и параметры модели;
сглаживание Калмана и динамическое программирование — чтобы “протянуть” выровненное по времени соответствие между демонстрациями и скрытой траекторией (по сути, вариант динамического выравнивания по времени, как в распознавании речи).
Результат этого шага: из нескольких криво выполненных демонстраций алгоритм достаёт одну согласованную траекторию плюс выравнивание “где в какой демонстрации был тот же момент полёта”.
Локальные модели: одна траектория — много маленьких физик
Глобальная модель вертолёта у авторов есть, но она грубая. Она более-менее описывает поведение в среднем, но далеко не идеально, особенно в экстремальных режимах (аэробатика — это не режим “слегка покачались возле точки”).
После того, как траектория восстановлена и все демонстрации выровнены по времени, появляется очень мощный ресурс: в каждой точке траектории есть пачка реальных примеров того, как вёл себя вертолёт в её окрестности. Авторы делают практичную вещь: вместо одной модели на всё, они: строят локальные модели динамики вдоль траектории; каждая такая модель лучше подогнана под конкретный участок (например, момент начала петли, момент выхода из неё и т.п.); при этом используется форма той же “грубой” модели, но с добавлением поправок (bias), которые алгоритм обучает на данных.
Интуитивно понятно: есть черновой учебник по аэродинамике, а локальные модели — это рукописные пометки на полях: “здесь в реальности вертолёт тянет сильнее вниз”, “здесь по тангажу есть систематическая ошибка”, и т.д.
Как убрать дрейф и добавить здравый смысл
Реальный пилот, даже очень опытный, редко делает идеально “висящий на месте” манёвр. Вертолёт чуть уходит по горизонтали, высота плавает — возникает дрейф траектории, который для нас лишь шум.
Авторы добавляют в модель специальные “дрейфовые” переменные, которые:
медленно меняются во времени; отвечают именно за нежелательные смещения, например по позиции; позволяют алгоритму отфакторизовать: вот это — структура самого манёвра, а это — просто то, что пилот слегка уполз в сторону.
Плюс к этому они вводят явные приоритеты и знания эксперта:
например, для переворотов, роллов и tic-toc вертолёт “в идеале” должен оставаться примерно в одной точке; для петель, разворотов и “урагана” (hurricane) траектория должна лежать примерно в вертикальной или горизонтальной плоскости.
Это оформляется как дополнительные мягкие ограничения: алгоритм “верит” в советы эксперта, но допускает небольшие отклонения, понимая, что физически идеал недостижим.
Эксперимент: когда вертолёт обгоняет пилота. Всё это не осталось на уровне теории. Группа использовала реальный радиоуправляемый вертолёт соревновательного уровня, обвешанный датчиками. Эксперт-пилот многократно выполнял разные фигуры.
Алгоритм, используя все эти демонстрации, сделал две вещи: восстановил идеальные траектории для каждого манёвра; построил вдоль них локальные модели динамики.
В результате выяснилось, что машина, обученная на неидеальных демонстрациях, смогла переплюнуть пилота, у которого сама же училась. Рецепт простой: не требовать от эксперта идеала, собрать несколько “человеческих” демонстраций, считать, что где‑то за ними спрятана более аккуратная, математически строгая траектория, и совместить: статистическое выравнивание по времени, учёт динамики физической системы, мягкое внедрение экспертного знания, и локальное обучение моделей вдоль реальной траектории.
На выходе получается не просто копия действий человека, а улучшенная версия — то самое “робот, который научился у тебя и стал летать лучше тебя”.
