Сквозное глубокое обучение
47. Знакомство со сквозным обучением
Представим, что вы хотите создать систему, анализирующую отзывы о продуктах в Интернете и автоматически оценивающую, понравился продукт автору отзыва или нет. Например, отзыв «Это отличная швабра!» должен распознаваться такой системой, как очень позитивный. А отзыв «Эта швабра низкого качества — зря я купил ее», как крайне негативный.
Задача по распознаванию положительных и отрицательных мнений называется «классификацией отношения» (sentiment classification).
Такая система может выглядеть, как «конвейер», состоящий из двух компонентов:
- Парсер (синтаксический анализатор): система, которая аннотирует текст информацией, описывающей значимые слова. Например, вы можете использовать анализатор для обозначения всех прилагательных и существительных. В результате получится аннотированный текст:
«Это отличнаяприлагательное швабрасуществительное!» - Классификатор отношения: обученный алгоритм, который принимает на вход аннотированный текст и прогнозирует его эмоциональную окраску. Аннотация синтаксического анализатора существенно способствует обучению алгоритма: например, придавая больший вес прилагательным, алгоритм быстрее настраивается на значимые слова, такие как «великий», и игнорирует слова не несущие смысла, например, слово «это».
Замечание автора: Синтаксический анализатор позволяет получить намного более богатую аннотацию текста, но этого упрощенного описания будет достаточно для объяснения сквозного глубокого обучения.
Можно изобразить получившийся двухкомпонентный «конвейер» следующим образом:
В последнее время нарастает тенденция к замене «конвейерных» систем одним обучающимся алгоритмом. Сквозной обучающийся алгоритм (end-to-end learning algorithm) для описанной задачи в качестве входных данных принимает необработанный, оригинальный текст «Это отличная швабра!» И пытается сразу распознать отношение, им выражаемое:
В сквозных обучающихся системах (end-to-end learning systems) обычно используются нейронные сети. Термин «сквозной» подразумевает, что алгоритм, получив входной сигнал, должен выдать конечный результат работы системы. То есть обучившийся алгоритм напрямую соединяет «вход» системы с ее «выходом».
В задачах с большим количеством данных, сквозные системы показывают высокую эффективность. Но не всегда их применение оправдано. В следующих нескольких главах мы рассмотрим больше примеров использования сквозных систем, а также дадим рекомендации, когда следует их использовать, а когда лучше поискать другое решение.
48. Больше примеров сквозного обучения
Вернемся к разработке системы распознавания речи. Такая система может состоять из трех компонент:
Компоненты работают следующим образом:
- Вычислитель признаков: извлекает смоделированные признаки, такие как MFCC (Мел-кепстральные коэффициенты), которые сокращают количество анализируемых переменных, улавливая наиболее важные и игнорируя не значимые для данной задачи, например, высоту голоса.
Замечание переводчика: с тем, что такое Мел-кепстральные коэффициенты более подробно можно ознакомиться, например, здесь - Распознаватель фонем. Некоторые лингвисты выделяют базовые единицы устной речи, называемые «фонемами». Например, начальный звук «k» в «keep» — это та же фонема, что и звук «c» в «cake». Этот компонент пытается распознать фонемы в речи.
- Финальный распознаватель: связывает последовательность распознанных фонем и пытается соединить их в транскрипцию.
Сквозная система в отличие от компонентной получает на вход аудиоклип и возвращает транскрипцию речи:
Мы рассмотрели линейные «конвейеры» машинного обучения, в которых выходные данные последовательно передаются от одного компонента к другому. Но «конвейерные» схемы могут быть более сложными.
Например, так выглядит простая архитектура для автономного автомобиля:
«Конвейер» состоит из трех компонентов: один обнаруживает автомобили, анализируя изображения с камер; другой пешеходов; последний компонент планирует траекторию нашего автомобиля, которая должна избегать автомобили и пешеходов.
Не каждый компонент в «конвейере» содержит обучающиеся алгоритмы. Например, литература по «проектированию движения роботов» содержит многочисленные алгоритмы для компонента выбора траектории. Многие из этих алгоритмов не являются обучаемыми.
Сквозная система, в отличие от «конвейерной», принимает на вход значения датчиков и выдает сигнал для рулевого управления:
Несмотря на то, что сквозное обучение (end-to-end learning) демонстрирует многочисленные успехи, оно не всегда является лучшим решением. Например, сквозное распознавание речи работает хорошо, но я скептически отношусь к его применению в разработке систем автономного вождения. В следующих главах объясню с чем это связано.