тот же человек. Или сравнивает знаменитый холст, известное здание со списком картин или памятников. То же самое и с текстами, например, содержит ли данная статья в Википедии ответ на конкретный вопрос? Рассказывают ли две статьи об одном и том же?
Для таких сравнений мы используем технологии, называемые «эмбеддингом» и «метрическим обучением». Эмбеддинг состоит в описании изображения, видео или текста вектором, который рассчитывается нейронной сетью. Сеть должна быть обучена таким образом, чтобы два вектора, описывающие одинаковый контент, находились близко друг к другу, а два вектора, представляющие разный контент, находились далеко друг от друга. Я использовал данный метод, получивший название «сиамская сеть», еще в 1990-х гг. для проверки подлинности подписи[74], а в 2000-х гг. – для аутентификации пользователя по лицу[75]. Система состоит из двух копий одной и той же нейронной сети. Сеть принимает изображение на входе и производит 1000-мерный вектор на выходе. Это 1000-мерное пространство выходных векторов и есть пространство эмбеддинга. Затем мы показываем два разных портрета одного и того же человека двум экземплярам сети. Если мы хотим, чтобы выходные векторы были близкими, мы будем использовать выход первой сети как желаемый выход второй сети, и наоборот, а функция стоимости будет расстоянием между выходами двух сетей. Обучение методом обратного распространения меняет веса так, что два вектора становятся ближе друг к другу. И наоборот, когда мы предъявляем сети портреты двух разных людей, мы хотим, чтобы выходные векторы находились далеко друг от друга. Мы определяем функцию стоимости, которая уменьшается по мере увеличения расстояния между векторами, оптимизируем ее градиентным спуском и – вуаля.
Теперь у нас есть сеть, которая производит 1000-мерные векторы для фотографии лица. Две фотографии одного и того же человека обеспечат близкие векторы, а две фотографии разных людей обеспечат удаленные векторы. Таким образом, мы можем проверить личность человека, сравнив вектор его портрета с набором ранее сохраненных векторов портретов того же человека. Системы распознавания лиц Facebook используют те же методы[76].
Я состою соучредителем и научным консультантом в компании Element, стартапа из Нью-Йорка. Она предлагает систему аутентификации на основе простой фотографии ладони, сделанной с помощью смартфона. Линии руки уникальны для каждого человека, как и подошва стопы. С ними, в отличие от распознавания лиц, вы не можете идентифицировать человека без его ведома. Такое приложение очень полезно в развивающихся странах для доступа к услугам здравоохранения или использования банковского счета. Компания участвует в программе одного благотворительного фонда, который организует вакцинацию и медицинское наблюдение за новорожденными в Бангладеш и других странах. С помощью этой технологии мы фотографируем подошвы ног новорожденных (у них зачастую сжаты кулачки), что позволяет их идентифицировать, избежать повторной вакцинации и сохранить историю их лечения.
Эмбеддинг относится также к поиску информации. Сеть обучена создавать вектор эмбеддинга для запроса и вектор эмбеддинга для контента и определять, расположены ли рядом вектор запроса и вектор искомого контента.
Еще пример. Организация Wildbook (ее название пародирует Facebook), состоящая из ученых и волонтеров, предоставляет услуги по идентификации морских млекопитающих и других живых существ. Просто по фотографии кита или косатки, китовой акулы или зебры, леопарда, система, основанная на сверточной сети и метрическом обучении, распознает животное, опираясь на текстуру и окраску его шерсти, линию плавника или хвоста. Система обучается с помощью образцов, помеченных вручную. Таким образом, Wildbook учитывает животных, которым угрожает опасность, может определить их местонахождение и проследить за их перемещениями[77].
Распознавание речи
Прежде всего, звуковой сигнал, как и любой другой входящий сигнал, должен быть превращен в последовательность чисел, называемых образцами, каждый из которых показывает давление воздуха на микрофон в данный момент времени. Обычно для речевого сигнала требуется 10 000 таких образцов в секунду. Большинство систем распознавания речи сначала обрабатывают эту последовательность, как это делает внутреннее ухо человека. Преобразование создает представление сигнала (подобное представлению изображения), которое передается в нейронной сети.
Рассмотрим в этом звуковом сигнале окно из 256 образцов, которое представляет 25,6 миллисекунды сигнала, то есть малую долю секунды. В этом окне программа предварительной обработки вычисляет интенсивность звука примерно в 40 полосах частот по всему диапазону человеческого восприятия. Затем окно перемещается на 10 миллисекунд во времени (возникает наложение между двумя последовательными окнами), и программа повторяет тот же расчет, преобразовывая новое окно в 40 чисел.
Итак, речевой сигнал представлен спектрограммой, то есть последовательностью векторов размерностью 40 через каждые 10 миллисекунд, или 100 векторов в секунду. Сверточная сеть берет окно из 40 векторов (поэтому ее входное «изображение» имеет размер 40 × 40 «пикселей»), представляющее 0,4 секунды речи, и классифицирует элементарный звук, присутствующий в середине окна.
Каждый человеческий язык можно рассматривать как последовательность фонем. Во французском языке есть звуки «а», «оу», «ой», «он», «та», «ти» и т. д. Каждая фонема состоит из нескольких элементарных звуков, называемых фонами. Фонема «ой» на самом деле состоит из трех фонов: «о» в начале, «а» в конце и промежуточного краткого звука между ними. Из-за большого числа комбинаций язык может содержать до 3000 таких элементарных звуков. Например, звук «п» в середине слова «apparaître» не совсем такой же, как в середине слова «opposé»: каждый звук зависит от своего фонетического окружения.
Сверточная сеть, называемая в данном случае «акустической моделью», классифицирует звук, присутствующий на записи, в одну из этих 3000 категорий. Она выводит список из 3000 оценок, указывающих на вероятность того, что наблюдаемый звук относится к одной из 3000 категорий фонов. Следовательно, выход сети представляет собой вектор с 3000 компонентов каждые 10 миллисекунд.
Исходя из этого, каждую фразу можно представить, как изображение, размер которого зависит от длины фразы, а частотная характеристика каждого момента звучания в таком случае может быть представлена, как аналог яркости. На выходе сети получается последовательность векторов переменной длины с 3000 компонентов.
Рис. 7.1. Несколько примеров «изображений» речи
Каждый квадрат представляет собой изображение размером 40 × 40 пикселей, представляющее 0,4 секунды речи. Каждый пиксель представляет интенсивность речевого сигнала продолжительностью 10 миллисекунд в одной из 40 полос частот (источник: NYU/IBM)[78].
Мы еще не закончили! Необходимо извлечь из этой последовательности ряд слов. Для этого мы используем словесные и языковые модели. Для каждого слова языка модель указывает все образующие его элементарные звуковые последовательности. Ее обучают на разговорных фразах. Языковая модель указывает, какие последовательности слов возможны (или более вероятны) в рассматриваемом языке. Чтобы преобразовать последовательность элементарных оценок звука в последовательность слов, используется декодер, который будет искать среди последовательностей слов с наивысшей оценкой ту, которая соответствует последовательности