команд с использованием сверточных нейронных сетей

advertisement
НАУКОЁМКИЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ.
Переславль-Залесский, 2012
А. В. Котомин
Распознавание речевых команд с использованием
сверточных нейронных сетей
Научный руководитель: к.т.н.
И. П. Тищенко
Аннотация. Данная работа посвящена решению задачи распознавания
речевых команд с помощью сверточных нейронных сетей. Описан процесс
выделения признаков. Представлена архитектура сверточной сети, решающей поставленную задачу. Приведены результаты экспериментальных исследований.
Ключевые слова и фразы: кепстр, мел-шкала, сверточная сеть, кепстральные коэффициенты.
1. Введение
Несмотря на бурное развитие вычислительной техники в последние несколько десятилетий, задача распознавания речи по-прежнему
не может считаться полностью решенной. При этом ее актуальность
со временем только увеличивается. Рост сложности устройств, окружающих человека в современном мире, нередко приводит к усложнению принципов взаимодействия с ними. В связи с этим все более
актуальной становится потребность в альтернативных, более естественных методах управления. Одним из наиболее естественных для
человека является речевой интерфейс [1].
Большинство методов распознавания речи использует в качестве
информативных признаков спектральные характеристики сигнала, а
в качестве классификатора — скрытые марковские модели или нейронные сети [2]. В данной работе рассматривается подход к решению
задачи распознавания речевых команд, использующий появившиеся
относительно недавно сверточные нейронные сети. Приведены некоторые теоретические сведения о сверточных сетях, выбранная архитектура сети, а также результаты предварительных экспериментальных исследований.
2
А. В. Котомин
2. Предварительная обработка сигнала
На этапе предобработки входной сигнал проходит несколько последовательных стадий:
(1) удаление постоянной составляющей;
(2) фильтрация полосовым фильтром с частотами среза 100–
4000 Гц;
(3) выделение границ речевой команды и удаления участков тишины.
Так как описание предварительной обработки сигнала не является целью данной работы, то шаги предобработки далее рассматриваться не будут. Более подробную информацию можно найти в
работе [3].
3. Выделение признаков
В качестве информативных признаков использовались мел-частотные кепстральные коэффициенты (МЧКК) [4]. Данные признаки
широко применяются в задачах распознавания речи. Они основаны
на двух ключевых понятиях: кепстр и мел-шкала.
Кепстр (cepstrum) [5] — это результат дискретного косинусного
преобразования от логарифма амплитудного спектра сигнала. Формально:
n
o
2
c(n) = DCT log(|F {f (t)}| ) .
Мел-шкала моделирует частотную чувствительность человеческого слуха [6]. Специалистами по психоакустике было установлено,
что изменение частоты в два раза в диапазоне низких и высоких
частот человек воспринимает по-разному [7]. В частотной полосе до
1000 Гц субъективное восприятие удвоения частоты совпадает с реальным увеличением частоты в два раза, поэтому до 1000 Гц мелшкала близка к линейной. Для частот выше 1000 Гц мел-шкала является логарифмической (Рис. 1).
Перевод из шкалы герц в шкалу мелов и обратно происходит по
следующим формулам:
fhz
fˆmel (fhz ) = 1127 ln 1 +
,
700
fˆhz (fmel ) = 700 efmel /1127 − 1 .
Распознавание речевых команд с использованием сверточных сетей
3
Рис. 1. Мел-шкала
Мел-частотные кепстральные коэффициенты — это значения кепстра, распределенные по мел-шкале с использованием банка фильтров.
Алгоритм нахождения МЧКК:
(1) Прошедший предварительную обработку сигнал s[t] разбивается на K кадров по N отсчетов, пересекающихся на 1/2
длины:
s[t] → Sn [t], n = 1, . . . , K.
(2) В каждом кадре1 производится дискретное преобразование
Фурье (ДПФ) [8]:
N
2 X
ReXn [k] =
Sn [i]cos(2πk(i − 1)/N ),
N i=1
ImXn [k] = −
N
2 X
Sn [i]sin(2πk(i − 1)/N ),
N i=1
1Дальнейшие шаги алгоритма также производятся в каждом кадре.
4
А. В. Котомин
где k = 1, . . . , M , M = N/2.
(3) Находится спектральная плотность мощности получившегося сигнала:
P [k] = An [k]2 ,
pn
An [k] = ReXn [k]2 + ImXn [k]2 .
(4) Применение банка фильтров (Рис. 2):
Рис. 2. Банк фильтров
(a) задается количество фильтров P , а также начальная
fl и конечная fh частоты (fh не должна превосходить
половины частоты дискретизации);
(b) они переводятся в мелы:
f m = fˆmel (fl ),
l
fhm = fˆmel (fh );
(c) на мел-шкале отрезок [flm , fhm ] разбивается на P + 1
m
равных непересекающихся подотрезков [fjm , fj+1
], j =
1, . . . , P + 1 длины len =
(d) находятся их центры:
fhm −flm
P +1 ;
C m [i] = flm + i · len, i = 1, . . . , P
и переводятся в шкалу Гц:
C[i] = fˆhz (C m [i]), i = 1, . . . , P
(это центральные частоты треугольных фильтров);
Распознавание речевых команд с использованием сверточных сетей
5
(e) центры треугольных фильтров переводятся из Гц в номера отсчетов массива Pn [k]:
M
C[i], i = 1, . . . , P,
Fs
где F s — частота дискретизации исходного сигнала;
(f) для каждого фильтра отсчеты спектральной плотности
мощности умножаются на соответствующий фильтр:
fsmp [i] =
Xn [i] =
M
X
Pn [k]Hi [k], i = 1, . . . , P,
k=1
Hi [k] =

0




(k−fsmp [i−1])
fsmp [i]−fsmp [i−1]
(fsmp [i+1]−k)
fsmp [i+1]−fsmp [i]
, k < fsmp [i − 1]
, fsmp [i − 1] ≤ k ≤ fsmp [i]
, fsmp [i] ≤ k ≤ fsmp [i + 1]
0
, k > fsmp [i + 1]
(5) Взятие логарифма: Xn [i] = ln(Xn [i]), i = 1, . . . , P ;
(6) Дискретное косинусное преобразование:
P
X
1 π
Cn [j] =
Xn [k]cos j k −
, i = 1, . . . , P, j = 1, . . . , J,
2 P




k=1
где Cn [j] — массив кепстральных коэффициентов, J — желаемое число коэффициентов (J < P ).
Полученную матрицу кепстральных коэффициентов можно для
наглядности представить в виде битовой карты. На Рис. 3 приведен
пример такой карты. Шкала справа показывает соответствие между
оттенками серого цвета и значениями кепстральных коэффициентов.
4. Сверточные сети
4.1. Краткое описание сверточной сети
Сверточная нейронная сеть (СНС) — тип многослойной нейронной сети, предложенной американским ученым французского происхождения Яном ЛеКуном в 1989 году [9]. Она объединяет в себе
две ключевые идеи, которые обеспечивают инвариантность сети к
небольшим сдвигам, изменениям масштаба и искажениям: локальные
рецептивные поля (local receptive fields) и общие веса (shared weights).
Сверточная сеть предназначена для распознавания двумерных
данных, поэтому нейроны в каждом слое сети образуют плоскости.
6
А. В. Котомин
Рис. 3. Битовая карта МЧКК для слова «ноль»
Это делается для сохранения топологии входной информации. Входной слой состоит из одной плоскости, его размерность совпадает с
размерностью входных данных. Последующие слои являются сверточными и состоят из нескольких плоскостей нейронов, называемых
картами признаков (feature maps). Каждый нейрон сверточного слоя
соединен с небольшой подобластью предыдущего слоя (локальное рецептивное поле). Последние два слоя сети практически представляют
собой обычную сеть прямого распространения.
4.2. Выбранная архитектура
Для проведения эксперимента была выбрана следующая архитектура сети (Рис. 4).
Входной слой H0 состоит из одной плоскости y (0) , которая содержит 29x13 нейронов. Первый скрытый слой H1 является сверточным,
(1)
он содержит 6 карт признаков yj , 0 ≤ j < 5 размера 13x5 (из-за
краевого эффекта при вычислении сверток размеры карт признаков
текущего слоя уменьшаются по сравнению предыдущим). Каждая
(1)
карта признаков имеет 25 весовых коэффициентов wj0 (u, v), образующих ядро (маску) свертки размера 5x5, а также нейронное смеще(1)
ние (bias) bj . При вычислении свертки ядро сдвигается на величину
L. Для слоя H1 сдвиг L = 2. Для уменьшения количества параметров
Распознавание речевых команд с использованием сверточных сетей
7
Рис. 4. Выбранная архитектура сверточной сети
обучения используется одна и та же маска весовых коэффициентов
для всех нейронов одной плоскости (общие веса).
Следующий слой H2 также является сверточным. Он содержит
15 карт признаков yj2 , 0 ≤ j < 15 размера 9x1. Каждая карта признаков данного слоя соединена с каждой картой признаков предыдущего слоя. Поэтому каждая карта слоя H2 имеет разные ядра свертки
(2)
wji (u, v), 0 ≤ i < 6, соответствующие картам слоя H1 , а также одно
(2)
смещение bj . Размер ядра сверки равен 5x5, сдвиг L = 1.
Следующий слой H3 является полносвязным и содержит 20 нейронов. Выходной слой содержит 10 нейронов.
(1)
Выходные значения карт признаков yj (x, y) вычисляются путем
свертки входной плоскости y (0) с соответствующим ядром свертки
(1)
wj0 (u, v) и применением активационной функции φ к результату:


X
(1)
(1)
(1)
yj (x, y) = φ 
wj0 (u, v)y (0) (2x + u, 2y + v) + bj  ,
(u,v)∈K
где K = {(u, v) ∈ N2 |0 ≤ u < 5, 0 ≤ v < 5}.
В качестве активационной функции был выбран гиперболический тангенс (Рис. 4):
φ(x) = tanh(x) =
ex − e−x
.
ex + e−x
Если предыдущий слой содержал несколько карт признаков, то
для вычисления значения нейрона текущего слоя нужно сложить ре(k−1)
зультаты сверток каждой карты yi
с соответствующим ядром
8
А. В. Котомин
Рис. 5. График функции tanh(x)
(k)
(k)
wji и прибавить смещение bj :


X
X
(k)
(k)
(k−1)
(k)
yj (x, y) = φ 
wji (u, v)yi
(Lx + u, Ly + v) + bj  ,
i∈I (u,v)∈K
где K = {(u, v) ∈ N2 |0 ≤ u < sx , 0 ≤ v < sy }, sx и sy — ширина и
высота ядра свертки, I — множество карт признаков (k − 1)-го слоя,
с которыми соединена j-я карта k-го слоя.
Число связей в сети равно:
29 × 13 × 6 × 13 × 5 + 6 × 13 × 5 × 15 × 9 + 15 × 9 × 20 + 20 × 10 = 202580.
При этом, за счет разделяемых весов, число параметров обучения
сети составляет всего:
(25 × 6 + 6) + (25 × 6 × 15 + 15) + (15 × 9 × 20 + 20) + 20 × 10 + 10 = 5351.
Для проведения эксперимента на языке C++ был написан модуль
для программной системы «ПС ИНС» [10], позволяющий создавать
сверточную сеть с произвольной конфигурацией.
Распознавание речевых команд с использованием сверточных сетей
9
5. Описание эксперимента
5.1. Входные данные
В качестве входных данных использовались речевые записи цифр
«ноль»–«девять», произнесенные одним диктором. Общая база содержала 1000 записанных образцов (по 100 образцов на каждую цифру).
Для формирования обучающей и тестовой выборок образцы, соответствующие одной цифре, случайным образом были поделены на два
равных подмножества. Таким образом, и обучающая, и тестовая выборка содержала по 500 речевых образцов.
Далее все образцы проходили этапы предобработки и выделения
признаков. При нахождении кепстральных коэффициентов каждый
образец разбивался на 29 кадров и в каждом кадре вычислялись 13
МЧКК. Полученные матрицы признаков подавались на вход сверточной сети.
5.2. Обучение сети
Для измерения качества распознавания использовалась следующая функция ошибки:
Ek =
N −1
1 X
(di − oi )2 ,
2 i=0
где N — число выходов сети (для задачи распознавания цифр N =
10), di — желаемое значение i-го выхода сети для k-го эталона, oi —
реальное значение i-го выхода сети для k-го эталона.
На каждой эпохе обучения величина Ek вычислялась для каждого элемента обучающей выборки. Далее считалась средняя ошибка
по всем эталонам:
S−1
1 X
E(n) =
Ek ,
S
k=0
где S — размер обучающей выборки, E(n) — средняя ошибка сети
для n-й эпохи.
Обучение сети происходило по методу обратного распространения ошибки [11, 12]. Целевое значение средней ошибки E(n) было выбрано равным 0.01. Обучение сети завершилось после 65 эпох. Время
обучения составило менее минуты. График зависимости величины
средней ошибки от эпохи обучения представлен на Рис. 6.
10
А. В. Котомин
Рис. 6. График зависимости величины E(n) от эпохи обучения
5.3. Точность распознавания, сравнение с двуслойным
персептроном
Точность распознавания сверточной сетью тестовой выборки составила 99% (распознано 495 из 500 образцов). В таблице 1 представлены сравнительные результаты распознавания сверточной сетью и
персептроном. Конфигурация персептрона была следующей: 377 входов, 30 нейронов в скрытом слое и 10 выходов. Всего (377 × 30 + 30) +
(30 × 10 + 10) = 11650 весовых коэффициентов, что более чем в два
раза больше, чем количество обучаемых параметров сверточной сети.
6. Выводы и дальнейшие планы
В результате проведенных экспериментов было установлено, что
сверточные нейронные сети хорошо подходят для задачи распознавания речевых команд. Такие преимущества сверточной сети, как
малое количество параметров обучения и высокая точность распознавания по сравнению с персептроном, говорят о перспективности
использования сверточных сетей и для других задач, связанных с
распознаванием речи.
В дальнейшем планируется применить сверточные сети для решения задачи идентификации диктора.
Распознавание речевых команд с использованием сверточных сетей
11
Таблица 1. Результаты распознавания
Команда
«ноль»
«один»
«два»
«три»
«четыре»
«пять»
«шесть»
«семь»
«восемь»
«девять»
Сверточная сеть
100%
98%
100%
96%
98%
100%
100%
98%
100%
100%
Персептрон
96%
92%
100%
98%
88%
100%
98%
96%
98%
98%
Список литературы
[1] Ронжин А. Л.. 2010. Методы и программные средства многоканальной дистанционной обработки речи и их применение в интерактивных многомодальных приложениях , Автореферат докторской диссертации, Учреждение
Российской академии наук Санкт-Петербургский институт информатики и
автоматизации РАН, Санкт-Петербург. ↑1
[2] Al-Alaoui M., Al-Kanj L., Azar J., Yaacoub E. Speech Recognition using
Artificial Neural Networks and Hidden Markov Models // IEEE Multidisciplinary
Engeneering Education Magazine. –– 3, № 3, 2008, c. 77–86. ↑1
[3] Котомин А. В. Предобработка звукового сигнала в системе распознавания
речевых команд // XV Молодежная научно-практическая конференция SIT2011. –– Переславль-Залесский: Изд-во «Университет города Переславля»,
2010, c. 25–38, https://edu.botik.ru/proceedings/sit2011.pdf. ↑2
[4] Ganchev T., Fakotakis N., Kokkinakis G. Comparative evaluation of various
MFCC implementations on the speaker verification task // 10th International
Conference on Speech and Computer. –– Patras, Greece, 2005, c. 191–194. ↑3
[5] Oppenheim A. V., Schafer R. W. From frequency to quefrency: a history of the
cepstrum // IEEE Signal Processing Magazine. –– 21, № 5, 2004, c. 95–106. ↑3
[6] Запрягаев С. А., Коновалов А. Ю. Распознавание речевых сигналов // Вестник ВГУ, № 2, 2009, c. 39–48. ↑3
[7] Stevens S. S., Volkmann J., Newman E. B. A Scale for the Measurement of the
Psychological Magnitude Pitch // Journal of the Acoustical Society of America. ––
8, № 3, 1937, c. 185–190. ↑3
[8] Смит С. Цифровая обработка сигналов. Практическое руководство для инженеров и научных работников: Додэка-XXI, 2008. ↑2
[9] LeCun Y., Boser B., Denker J., Henderson D., Howard R., Hubbard W., Jackel
L. Backpropagation Applied to Handwritten Zip Code Recognition // Neural
Computation. –– 1, № 4, 1989, c. 541–551. ↑4.1
12
А. В. Котомин
[10] Талалаев А. А., Тищенко И. П., Фраленко В. П., Хачумов В. М. Анализ
эффективности применения искусственных нейронных сетей для решения
задач распознавания, сжатия и прогнозирования // Искусственный интеллект и принятие решений, № 2, 2008, c. 24–33. ↑4.2
[11] LeCun Y., Bottou L., Bengio Y., Haffner P. Gradient-Based Learning Applied
to Document Recognition // Proceedings of the IEEE. –– 86, № 11, 1998, c. 2278–
2324. ↑5.2
[12] Уоссермен Ф. Нейрокомпьютерная техника: Теория и практика. –– Москва:
Мир, 1992. ↑5.2
A. V. Kotomin. Voice Commands Recognition Using Convolutional Neural Networks // Proceedings of Junior research and development conference of Ailamazyan
Pereslavl university. –– Pereslavl, 2012. –– p. . (in Russian).
Abstract. This paper is devoted to a solution to the problem of voice command recognition
by using convolutional neural networks. The stage of feature extraction is described. The
architecture of convolutional neural network that solves the problem is proposed. The
results of experiment are presented.
Key Words and Phrases: convolutional neural network, cepstrum, mel-scale, MFCC.
Download