Использование машинного обучения для выявления акцентов в спектрограммах речи

Сверточная модель TF Keras в соревновании по машинному обучению. Часть 1.

Описание

Программное обеспечение для распознавания голоса позволяет нашим устройствам реагировать на нашу речь. Мы видим это в наших телефонах, автомобилях и бытовой технике. Но для людей с акцентом — даже с региональными акцентами, диалектами и протяжным произношением, характерными для разных частей одной и той же страны — говорящие с искусственным интеллектом могут показаться совсем другими: невнимательными, невосприимчивыми, даже изолирующими. Исследователи обнаружили, что умные ораторы делают примерно на 30 процентов больше ошибок при разборе речи не носителей языка по сравнению с носителями языка. Другое исследование показало, что программное обеспечение для распознавания голоса часто работает лучше для мужчин, чем для женщин.

Алгоритмические предубеждения часто возникают из-за наборов данных, на которых они обучаются. Один из способов улучшить опыт не носителей языка с помощью программного обеспечения для распознавания голоса — обучить алгоритмы на разнообразном наборе образцов речи. Обнаружение акцента в существующих образцах речи может помочь в создании этих обучающих наборов данных, что является важным шагом на пути к сокращению «акцентного разрыва» и устранению предвзятости в программном обеспечении для распознавания голоса.

О данных

Спектрограмма — это визуальное представление различных частот звука по мере их изменения во времени. Ось x представляет время (в секундах), а ось y представляет частоту (измеряется в Гц). Цвета обозначают амплитуду определенной частоты в определенное время (т. е. насколько она громкая).

Эти спектрограммы были сгенерированы из аудиосэмплов в наборе данных Mozilla Common Voice. Каждый речевой клип был сэмплирован с частотой 22 050 Гц и содержит акцент одной из следующих трех стран: Канады, Индии и Англии. Подробнее о спектрограммах см. на домашней странице.

Сверточные нейронные сети для классификации изображений

Сверточные нейронные сети (ConvNets или CNN) — это категория нейронных сетей, модель глубокого обучения, которая доказала отличные результаты во многих компетенциях классификации изображений и таких областях, как распознавание изображений. , обнаружение объектов, сегментация изображения. И они обеспечивают зрение роботов и беспилотных автомобилей.

CNN очень похожи на обычные NN (многослойные перцептроны), но они «делают явное предположение, что входные данные являются изображениями, что позволяет нам кодировать определенные свойства в архитектуре. Это делает прямую функцию более эффективной для реализации и значительно уменьшает количество параметров в сети».[2]

Обычные нейронные сети плохо масштабируются с изображениями, нейрон, получающий изображение размером 32x32x3, будет иметь вес 3072. Многослойная сеть с изображениями более респектабельного размера могла бы производить миллионы или миллиарды параметров, поэтому это было бы очень дорого в вычислительном отношении и приводило бы к переоснащению. «В ConvNet нейроны в слое будут подключены только к небольшой области слоя перед ним, а не ко всем нейронам полностью подключенным образом. К концу архитектуры ConvNet мы сократим полное изображение до единого вектора оценок класса». [2] Сверточные нейронные сети для визуального распознавания CS231 Standford.

Простая ConvNet представляет собой последовательность слоев, и каждый слой ConvNet преобразует один объем активаций в другой с помощью дифференцируемой функции. Мы используем три основных типа слоев для построения архитектур ConvNet: Сверточный уровень, Объединяющий уровень и Полносвязный уровень (точно так же, как в обычном Нейронные сети). Мы объединим эти слои, чтобы сформировать полную архитектуру ConvNet. Подробное объяснение см. в ссылке [2].

На следующем рисунке мы можем наблюдать три основных слоя CNN, извлеченные из хорошо объясненного сообщения в блоге:

Слои в ConvNet

В стандартной ConvNet есть четыре основных операции:

  1. свертка
  2. Нелинейность (ReLU)
  3. Объединение или субвыборка
  4. Классификация (полностью связанный слой)

Эта архитектура основана на одной из самых первых сверточных нейронных сетей, LeNet, которая помогла продвинуть область глубокого обучения. «Эта новаторская работа Яна Лекуна была названа LeNet5 после многих предыдущих успешных итераций с 1988 года». [5] Интуитивное объяснение сверточных нейронных сетей

Сверточный слой. Входное изображение представляет собой матрицу пикселей, ВxШxС, H – высота, W – ширина и C – канал. Изображения в градациях серого имеют только 1 канал, тогда как RGB или цветные изображения имеют 3 канала: красный, зеленый и синий. В слое Conv рассматривается только небольшая область входного изображения, вычисляется скалярное произведение с весами и создается одно значение. Эта операция, называемая сверткой, сохраняет пространственные отношения между пикселями изображения, изучая особенности изображения на этом маленьком квадрате входных данных.

Веса или параметры слоя CONV состоят из набора обучаемых фильтров или ядер или детектора признаков. Ядро перемещается по всему изображению от левого верхнего угла к правому нижнему, вычисляя скалярные произведения между весами фильтра и пикселями изображения, покрываемыми ядром (называемые приемное поле). Следующим шагом будет перемещение фильтра вправо на 1 единицу, затем снова вправо на 1, когда шаг равен 1, и так далее. Для изображения 32 x 32 x 3 и 12 ядер 5 x 5 x 3 и шага 1 выходными данными будет вектор 28 x 28 x 12, который называется картой функций или картой активации. Для изображения HxWxC, K ядер HkxWkxC и шага s вывод будет H-Hk+s x W-Wk+s x K, мы рассматриваем заполнение нулями.

Фильтр (с красным контуром) скользит по входному изображению (операция свертки) для создания карты объектов. Свертка другого фильтра (с зеленым контуром) над тем же изображением дает другую карту объектов, как показано. Важно отметить, что операция свертки фиксирует локальные зависимости в исходном образе. Также обратите внимание, как эти два разных фильтра создают разные карты объектов из одного и того же исходного изображения.

Но каковы значения фильтров? Это параметры или веса, и они изучаются сами по себе на этапе обучения.

  • Уровень RELU o Уровень активации. После каждой операции свертки используется дополнительная операция, называемая активацией. ReLU расшифровывается как Rectified Linear Unit и представляет собой нелинейную операцию. Его выход определяется:

Он будет применять поэлементную функцию активации, такую ​​как пороговое значение max(0,x) на нуле, поэтому все отрицательные значения пикселей на карте объектов заменяются нулем. Это обеспечивает нелинейность нашей модели, что является обязательным, потому что обычно данные реального мира, которые мы хотим, чтобы наша ConvNet изучала, были бы нелинейными. Эта операция не изменяет размер вывода.

Объединяющий слой: Этот слой периодически включается между слоями Conv, чтобы уменьшить количество параметров, пространственный размер модели и вычислительные затраты. Вот почему это называется субдискретизацией или субдискретизацией. И самое главное, это поможет предотвратить или контролировать переоснащение. Слой пула работает независимо с каждым срезом глубины входных данных и изменяет его размер в пространстве, обычно используя операции MAX или AVG. он берет наибольший элемент (MAX) или среднее значение (AVG) из исправленной карты объектов в пределах определенного окна. Наиболее распространенной формой окна является слой объединения 2x2 с шагом 2. В нашем примере ввод 28x28x12 дает вывод 14x14x12. Полное объяснение по этой ссылке [2] Сверточные нейронные сети для визуального распознавания: http://cs231n.github.io/convolutional-networks/

На следующем изображении мы можем наблюдать применение объединяющего слоя 2x2 к карте объектов.

«Помимо уменьшения размеров объекта и количества параметров, объединение слоев делает сеть инвариантной к небольшим преобразованиям, поворотам, масштабированию, искажениям и перемещениям во входном изображении. Это помогает обнаруживать объекты на изображении независимо от того, где они находятся». Источник [5] Интуитивное объяснение сверточных нейронных сетей от ujjwalkarn.

Каждый фильтр составляет локальный патч функций более низкого уровня в представлении более высокого уровня. Вот почему CNN так сильны в Computer Vision.

Полностью подключенный слой: В задаче классификационного изображения этот слой в основном принимает входные данные, какими бы ни были выходные данные слоя conv, ReLU или пула, предшествующего ему, и выводит N-мерный вектор, где N — количество классы, из которых программа должна выбирать. Выходные данные сверточных слоев и слоев объединения представляют высокоуровневые функции входного изображения. Цель слоя Fully Connected — использовать эти функции для классификации входного изображения по различным классам на основе набора обучающих данных. См. расширенное объяснение в [3] A Beginner's Guide To Understanding Convolutional Neural Networks https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

Полностью подключенный слой улучшает прогнозирующую способность слоев Conv, изучая нелинейные комбинации карт объектов из предыдущих слоев.

Интуиция за CNN

В общем, способ понять, как работает CNN, заключается в том, что каждый сверточный слой обнаруживает более сложные функции, чем предыдущий слой. На первом уровне ConvNet может научиться обнаруживать края в разных положениях от необработанных пикселей, затем использовать края для обнаружения простых форм, таких как углы, во втором слое, а затем использовать эти формы для сдерживания функций более высокого уровня, таких как лица. формы в более высоких слоях [4].

Например, мы можем обнаружить края, приняв значения −1 и 1 для двух соседних пикселей и нулевое значение для всех остальных. То есть мы вычитаем два соседних пикселя. Когда соседние пиксели похожи, это дает нам приблизительно ноль. Однако на краях соседние пиксели сильно различаются в направлении, перпендикулярном краю. Затем каждый слой применяет разные фильтры, обычно сотни или тысячи, как показано выше, и объединяет их результаты.

Важным аргументом в пользу CNN является то, что они быстрые. Очень быстро. Свертки являются центральной частью компьютерной графики и реализованы на аппаратном уровне на графических процессорах.

О вызове

Наша цель — предсказать акцент говорящего по спектрограммам образцов речи. Есть 3 акцента на идентичность, люди из Канады, Индии и Англии. Мы будем использовать модель CNN, чтобы предсказать акцент данной спектрограммы.

Мы продолжим в части 2. Описывать и разрабатывать CNN, созданную с помощью платформы Keras, а затем мы будем обучать ее работе с Azure ML Services.

Использованная литература:

[1] Описание задачи и конкурса: https://datasciencecapstone.org/competitions/16/identifying-accents-speech/page/49/

[2] Сверточные нейронные сети для визуального распознавания: http://cs231n.github.io/convolutional-networks/

[3] Руководство для начинающих по пониманию сверточных нейронных сетей https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

[4] Понимание сверточных нейронных сетей для НЛП http://www.wildml.com/2015/11/understanding-convolutional-neural-networks-for-nlp/

[5] Интуитивное объяснение сверточных нейронных сетей от ujjwalkarn, https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/

[6] Обучение на основе градиента, применяемое к распознаванию документов. Янн Лекун, Леон Ботту, Йошуа Бенжио и Патрик Хаффнер. http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf

[7] Методы глубокого обучения для Vision CVPR 2012 Tutorial https://cs.nyu.edu/~fergus/tutorials/deep_learning_cvpr12/

[8] http://mlss.tuebingen.mpg.de/2015/slides/fergus/Fergus_1.pdf

[9] Сверточные сети глубокого убеждения для масштабируемого обучения иерархических представлений без учителя http://web.eecs.umich.edu/~honglak/icml09-ConvolutionalDeepBeliefNetworks.pdf

[10] Понимание сверток http://colah.github.io/posts/2014-07-Understanding-Convolutions/

[6] https://www.pyimagesearch.com/2018/11/26/instance-segmentation-with-opencv/