HMMs Doroteo Torre Toledano y Joaquí Joaquín Gonzá González Rodrí Rodríguez Área de Tratamiento de Voz y Señales, http://atvs.ii.uam.es/ Escuela Politécnica Superior Universidad Autónoma de Madrid 1 Índice 1. Introducción 2. Modelos de Markov (Markov Chains) 3. Modelos Ocultos de Markov (HMMs) 4. Adaptación al Locutor (MAP, MLLR) 5. Entrenamiento y Evaluación con HTK 6. Conclusiones 2 1 1. Introducción Introducción Los Modelos Ocultos de Markov (Hidden Markov Models, HMMs) Son los modelos más utilizados en reconocimiento de voz Modelan estadísticamente la acústica de la voz (i.e. modelar cómo suenan los distintos fonemas y palabras) Sustituyeron hacia la década de los 80 a las técnicas de comparación de patrones (Dynamic Time Warping, DTW) que modelaban la voz de forma determinista Desde entonces siguen siendo la base tecnológica de los reconocedores de voz comerciales 2 2. Modelos de Markov – Cadenas de Markov Modelo de Markov (de primer orden, discreto y observable) Consideremos un sistema Que produzca una salida en cada instante de tiempo discreto, t = 1, 2, 3, … Cuya salida en cada instante t (denotada por qt) esté limitadas a un conjunto finito de salidas {S1, …, SN} Y tal que la probabilidad de obtener la salida Sj en el instante t (qt = Sj) dependa de todas las salidas anteriores Este sistema todavía es mucho más complejo y genérico que un modelo o cadena de Markov 3 Modelo de Markov (de primero orden, discreto y observable): Simplificaciones (i) Para llegar al modelo de Markov debemos hacer algunas simplificaciones: En lugar de depender de todas las salidas anteriores limitamos el sistema a que dependa de únicamente las n salidas anteriores (Modelo de Markov de orden n) En la práctica en reconocimiento de voz se usan únicamente modelos de Markov de primer orden Modelo de Markov (de primer orden, discreto y observable): Simplificaciones (ii) Simplificación adicional para llegar a los modelos de Markov de primer orden: Se asume que el sistema es invariante en el tiempo (el proceso estacionario), con lo cual las probabilidades de transición de una salida Si a una salida Sj no dependen del tiempo. De este modo el sistema queda definido por un conjunto de probabilidades de transición: Que cumplen 4 Modelo de Markov: Representación gráfica En un modelo de Markov observable cada posible salida se asocia a un estado del sistema Se dice que es observable porque a la salida se “observa” la secuencia de estados Los estados se representan con círculos y las probabilidades de transición con arcos Modelo de Markov: Todavía nos falta algo… Con lo visto hasta el momento podemos calcular la probabilidad de estar en cualquier estado dado el estado anterior del sistema PERO nos falta conocer el estado inicial del sistema Este estado viene definido por las probabilidades iniciales de cada estado Muchas veces se asume que el estado inicial es uno de forma determinista, pero también pueden definirse probabilidades iniciales distintas de 1 y 0. 5 En Resumen… Un modelo de Markov de primer orden, discreto y observable viene determinado por: El número de estados (posibles salidas) del sistema, N. Una matriz de transición entre estados (posibles salidas): Un vector de probabilidades iniciales de cada estado. Ejemplo 1 Consideremos un modelo de Markov simple para prever el tiempo en una ciudad: Clasificamos el tiempo que hace a las 12 del mediodía 3 estados: lluvia/nieve (S1), nublado (S2), soleado (S3) Tras varios días de observación estimamos la matriz de transiciones entre estados 6 Ejemplo 1 (ii) Asumiendo este modelo, podemos ahora responder a algunas preguntas interesantes sobre el tiempo Sabiendo que ha llovido durante los últimos 2 días, ¿cuál es la probabilidad de que llueva mañana? ¿Y sabiendo que ha llovido todos los días durante el último mes? Sabiendo que el día 1 hizo sol, ¿cuál es la probabilidad de que los siguientes 7 días haga sol, sol, lluvia, lluvia, sol, nubes, sol? Sabiendo que hoy hace sol, ¿Cuál es la probabilidad de que haga sol durante exactamente 7 días y ni uno más? Si hoy ha hecho sol, ¿cúantos días más hará sol en promedio? Ejemplo 1 (iii) 7 Ej. 1 (iv) Ejemplo 1 (v) 8 3. Modelos Ocultos de Markov Ejemplos de modelos ocultos de Markov Un modelo oculto de Markov es un modelo de Markov (de primer orden y discreto) en el que las salidas observables no se corresponden de forma determinista, sino probabilística, con los estados del sistema Ejemplo: Lanzamiento de monedas trucadas Alguien se dedica a tirar una moneda detrás de una cortina y decir si sale cara o cruz Este caso podemos modelarlo con un modelo observable de Markov en el que cada estado se corresponde con cara o cruz 9 10 Ejemplos de modelos ocultos de Markov (ii) Ejemplo: Lanzamiento de monedas trucadas (ii) Pero ¿qué ocurriría si la persona que está lanzando la moneda tiene dos monedas trucadas que tienen distintas probabilidades de sacar cara y cruz y cambia de moneda de forma aleatoria? En ese caso sería más apropiado un modelo oculto de Markov con dos estados correspondientes a las dos monedas (no sabemos la moneda que está utilizando) Ejemplos de modelos ocultos de Markov (iii) Ejemplo: Lanzamiento de monedas trucadas (iii) En el caso de que usase tres monedas “trucadas”, deberíamos emplear 3 estados 11 Ejemplos de modelos ocultos de Markov (iv) Ejemplo: Extracción de bolas de colores de urnas Detrás de una cortina se extraen bolas de colores de tres urnas distintas en las que hay distintas proporciones de colores en cada bola, retornando la bola a la urna tras decir el color al observador que está detrás de la cortina Ejemplos de modelos ocultos de Markov (v) Ejemplo: Voz Observamos el espectro de voz, pero no sabemos el fonema dicho 12 Definición formal de un HMM Un HMM queda caracterizado por los siguientes elementos: 1. El número de estados en el modelo, N. 2. El número de símbolos observables, M Denotamos cada estado como Si Denotamos el estado en el instante t como qt Si el sistema está en el estado Si en el instante t escribimos qt=Si Denotamos a cada símbolo observable como vj Denotamos la observación en el instante t como Ot Si la observación en el instante t es vj escribimos Ot=vj 3. La matriz de probabilidades de transición Definición formal de un HMM (ii) Un HMM queda caracterizado por los siguientes elementos (ii): 4. La distribución de probabilidad de observación en cada estado j 5. La probabilidad inicial de ocupación de cada estado Por conveniencia denotamos todos los parámetros del HMM (incluyendo N y M) como: 13 HMMs como modelos generativos Muchas veces se dice que los HMMs son modelos generativos Esto es porque un HMM nos define un procedimiento muy sencillo de generar observaciones compatibles con el modelo Para generar una secuencia de T observaciones compatibles con un HMM se puede emplear el siguiente procedimiento: 1. Elegir un estado inicial q1=Si de acuerdo con la distribución de probabilidad inicial de estados, π. 2. Hacer t=1. 3. Elegir Ot=vk de acuerdo con la distribución de probabilidad de observación en el estado Si, bi(k). 4. Pasar a un nuevo estado qt+1=Sj de acuerdo con las probabilidades de transición desde el estado Si, aij. 5. Hacer t = t+1 y volver al punto 3 si t<T, en caso contrario terminar. 14 15 Los tres problemas básicos de los HMMs Hay tres problemas básicos que se deben resolver (y que afortunadamente están resueltos) para que los HMMs sean útiles en aplicaciones prácticas Problema 1: Problema de puntuación: Dada una secuencia de observaciones y un modelo, ¿cómo calcular la probabilidad de observar la secuencia vista dado el modelo? Problema 2: Problema de reconocimiento de estados: Dada una secuencia de observaciones y un modelo, ¿cuál es la secuencia de estados que mejor “explica” las observaciones? Problema 3: Problema de entrenamiento: Dado un conjunto de observaciones de entrenamiento ¿Cómo ajustamos los parámetros del modelo para maximizar la probabilidad de observar el conjunto de entrenamiento dado el modelo? Los tres problemas básicos de los HMMs Hay tres problemas básicos que se deben resolver (y que afortunadamente están resueltos) para que los HMMs sean útiles en aplicaciones prácticas Problema 1: Problema de puntuación: Dada una secuencia de observaciones y un modelo, ¿cómo calcular la probabilidad de observar la secuencia vista dado el modelo? Problema 2: Problema de reconocimiento de estados: Dada una secuencia de observaciones y un modelo, ¿cuál es la secuencia de estados que mejor “explica” las observaciones? Problema 3: Problema de entrenamiento: Dado un conjunto de observaciones de entrenamiento ¿Cómo ajustamos los parámetros del modelo para maximizar la probabilidad de observar el conjunto de entrenamiento dado el modelo? 16 Solución al Problema 1: Solución directa Tenemos un HMM: Queremos calcular: Si suponemos que la secuencia de estados es: Entonces, asumiendo que las observaciones son independientes estadísticamente tenemos: Por otro lado, la probabilidad conjunta de O y Q es: Donde Solución al Problema 1: Solución directa (ii) La probabilidad de O dado el modelo se obtiene sumando las anteriores probabilidades para todos los posibles caminos (secuencias de estados ocultos): Problema del cálculo directo: Requiere O(2TNT) operaciones Para N=5 estados, T=100 observaciones 1072 operaciones 17 Solución al Problema 1: Algoritmo Forward / Backward (i) Consiste en definir la variable forward: Representa la probabilidad de observar la secuencia parcial O1, …, Ot hasta el instante t y estar en el estado Si en dicho instante t. La variable forward se puede calcular con el siguiente algoritmo: Solución al Problema 1: Algoritmo Forward / Backward (ii) El punto clave es el paso de inducción, que permite calcular las variables forward en el instante t+1 a partir de las variables forward en el t, de las probabilidades de transición y las de observación: Para cada estado en el instante t+1 tenemos que hacer las siguientes operaciones: En total N+1 multiplicaciones y N-1 sumas 18 Solución al Problema 1: Algoritmo Forward / Backward (iii) Para T instantes de tiempo y N estados debemos repetir esa operación básica NxT veces El coste computacional total es del orden de TN2 en lugar de 2TNT Para N=5, T=100 3000 operaciones en lugar de 1072 Solución al Problema 1: Algoritmo Forward / Backward (iv) Lo visto hasta ahora es el algoritmo forward, que permite por sí solo calcular la probabilidad de la observación dado el modelo Alternativamente, se puede usar la variable backward: Representa la probabilidad de observar la secuencia parcial Ot+1, …, OT desde el instante t+1 y estar en el estado Si en el instante t. En realidad para calcular la probabilidad de la observación dado el modelo se puede emplear o el algoritmo forward o el algoritmo backward Sólo es necesario uno para resolver este problema Pero utilizando los dos podremos resolver más fácilmente otros problemas 19 Solución al Problema 1: Algoritmo Forward / Backward (v) El algoritmo backward El coste computacional es idéntico al forward Los tres problemas básicos de los HMMs Hay tres problemas básicos que se deben resolver (y que afortunadamente están resueltos) para que los HMMs sean útiles en aplicaciones prácticas Problema 1: Problema de puntuación: Dada una secuencia de observaciones y un modelo, ¿cómo calcular la probabilidad de observar la secuencia vista dado el modelo? Problema 2: Problema de reconocimiento de estados: Dada una secuencia de observaciones y un modelo, ¿cuál es la secuencia de estados que mejor “explica” las observaciones? Problema 3: Problema de entrenamiento: Dado un conjunto de observaciones de entrenamiento ¿Cómo ajustamos los parámetros del modelo para maximizar la probabilidad de observar el conjunto de entrenamiento dado el modelo? 20 Solución al Problema 2: Criterios para elegir la secuencia de modelos “optima” Posibles criterios: Elegir en cada instante de tiempo el estado más probable Consiste en maximizar en cada instante de tiempo la variable: Problema: Puede ocurrir que la secuencia de estados (por ejemplo una secuencia de fonemas) no tenga sentido Elegir el camino completo de estados con mayor probabilidad total Consiste en encontrar la secuencia de estados que maximiza globalmente Este es un problema que tiene más sentido que el anterior En la analogía con los fonemas reconocidos consistiría en encontrar la secuencia de estados (fonemas) válida más probable Es el problema a resolver en reconocimiento de voz Se resuelve con el algoritmo de Viterbi Solución al Problema 2: Estado más probable en cada instante de tiempo Para calcular el estado más probable en cada instante de tiempo debemos encontrar una forma eficiente de calcular la probabilidad de ocupación de cada estado en el instante t Una forma posible es calculando las variables forward y backward y combinarlas para calcular la variable anterior Ahora ya sólo queda tomar el estado más probable: 21 Solución al Problema 2: Viterbi (i) Para encontrar la secuencia de estados (Q) más probable para una secuencia de observaciones (O) dada definimos la siguiente variable auxiliar: Esta variable representa la mejor puntuación obtenida a través de una única secuencia de estados (q1,q2, …qt-1)hasta llegar, en el instante t, al estado i La clave del algoritmo Viterbi es que si conocemos estas variables auxiliares en el instante t para todos los estados, podemos calcularlas para el siguiente instante (t+1) y para todos los estados con: Si queremos obtener la secuencia de estados no nos basta con estas variables, tenemos que saber también el estado i que maximiza Solución al Problema 2: Viterbi (ii) El algoritmo completo de Viterbi queda de la siguiente forma El backtracking consiste en volver desde el instante final al inicial viendo qué estados maximizaban cada paso de la recursión El algoritmo es casi idéntico al forward sustituyendo la suma de la recursión por una maximización 22 Solución al Problema 2: Viterbi (iii) La forma de operar con el algoritmo es también similar: Y el número de operaciones es también O(TN2) Ejemplo Viterbi 23 Los tres problemas básicos de los HMMs Hay tres problemas básicos que se deben resolver (y que afortunadamente están resueltos) para que los HMMs sean útiles en aplicaciones prácticas Problema 1: Problema de puntuación: Dada una secuencia de observaciones y un modelo, ¿cómo calcular la probabilidad de observar la secuencia vista dado el modelo? Problema 2: Problema de reconocimiento de estados: Dada una secuencia de observaciones y un modelo, ¿cuál es la secuencia de estados que mejor “explica” las observaciones? Problema 3: Problema de entrenamiento: Dado un conjunto de observaciones de entrenamiento ¿Cómo ajustamos los parámetros del modelo para maximizar la probabilidad de observar el conjunto de entrenamiento dado el modelo? 24 Solución al Problema 3: Algoritmo de Baum-Welch (i) El algoritmo más utilizado para estimar los parámetros del modelo que maximizan la probabilidad de la observación dado el modelo es el conocido como algoritmo Baum-Welch por sus inventores En realidad no es más que un caso particular del algoritmo Expectation-Maximization (EM) aplicado a los HMMs Esta NO es la única forma de estimar los modelos: Se pueden utilizar simplificaciones como el entrenamiento con Viterbi Se pueden utilizar otros criterios de optimización El criterio de optimización que utiliza Baum-Welch es el de máxima verosimilitud (Maximum Likelihood) porque maximiza la probabilidad de la observación dado el modelo Pero se pueden emplear otros criterios, como criterios discriminativos (Maximum Mutual Information, MMI, Maximum Discriminant Information) Solución al Problema 3: Algoritmo de Baum-Welch (ii) Formalmente el algoritmo Baum-Welch (y el EM) comienza con la definición de una función auxiliar: Esta función dependen de los parámetros anteriores del modelo (λ) y de la nueva estimación de los parámetros: La teoría del algoritmo E-M nos dice que maximizar esta función auxiliar respecto a los nuevos parámetros nos lleva a una verosimilitud mayor: Si utilizamos los nuevos parámetros en la función auxiliar como parámetros anteriores del modelo y repetimos el proceso varias veces seguiremos aumentando la verosimilitud hasta que el algoritmo converja o la variación de verosimilitud sea muy pequeña 25 Solución al Problema 3: Algoritmo de Baum-Welch: Expectation (iv) El primer paso (Expectation step) del algoritmo consiste en calcular las partes de la siguiente ecuación que dependen del modelo anterior En particular hay que calcular Es decir, las probabilidades de todas las secuencias de estados dados el modelo anterior y las observaciones En realidad basta con estimar (dados el modelo anterior y las observaciones): La probabilidad de estar en el estado Si en el instante t El número esperado de transiciones desde el estado Si El número esperado de transiciones desde el estado Si al estado Sj Solución al Problema 3: Algoritmo de Baum-Welch: Expectation (v) Dados el modelo anterior y las observaciones: La probabilidad de estar en el estado Si en el instante t viene dada por la probabilidad de ocupación del estado que definíamos anteriormente y se podía calcular en función de las variables forward y backward El número esperado de transiciones desde el estado Si se puede calcular en función de éstas como 26 Solución al Problema 3: Algoritmo de Baum-Welch: Expectation (vi) Dados el modelo anterior y las observaciones: Para calcular el número esperado de transiciones desde el estado Si al estado Sj definimos primero la probabilidad de la transición desde el estado Si al estado Sj Con esto el número esperado de transiciones desde el estado Si al estado Sj es: Solución al Problema 3: Algoritmo de Baum-Welch: Maximization (vii) Una vez tenemos estimados el número medio de todas las transiciones y el número medio de veces en cada estado maximizamos la función Respecto a los datos del nuevo modelo, obteniendo nuevas estimaciones del modelo dadas por las fórmulas 27 Solución al Problema 3: Algoritmo de Baum-Welch: Consideraciones Finales El algoritmo Baum-Welch como caso particular del EM garantiza que la siguiente estimación del modelo tiene mayor o igual verosimilitud Eso únicamente garantiza alcanzar un máximo local en una superficie de optimización extraordinariamente compleja En lugar del Baum-Welch se pueden emplear optimizaciones basadas en el gradiente con resultados similares También se puede tratar de optimizar los parámetros para aumentar el poder dicriminativo del modelo en lugar de su versomilitud Finalmente, la etapa de estimación se puede simplificar empleando el algoritmo Viterbi (aunque ofrece peores resultados) Topología de los HMMs Viene determinada por el número de estados y la interconexión entre ellos mediante probabilidades de transición no nulas En definitiva, por el número de estados y la matriz de transición Nota: Una probabilidad de transición nula inicialmente se mantiene siempre nula en el proceso de reestimación Baum-Welch HMMs ergódicos Son modelos en los que la probabilidad de transición de un estado a cualquier otro es no nula 28 Topología de los HMMs (ii) Modelos de Bakis o de izquierda a derecha Son tales que aseguran que una vez hemos salido de un estado nunca podemos volver a él Son apropiados para modelar señales que varían en el tiempo como la voz (una vez hemos terminado de pronunciar un fonema pasamos a otro pero no volvemos al mismo, en todo caso podemos pasar a otra realización del mismo fonema) HMMs con funciones densidad de probabilidad de observación continuas Hasta ahora hemos asumido que las observaciones eran discretas En la práctica en reconocimiento de voz las observaciones son vectores de parámetros (MFCCs) que se consideran continuos Inicialmente estos vectores de parámetros se discretizaban mediante el proceso de cuantificación vectorial (VQ) Pero el la actualidad suelen funcionar modelando la probabilidad de las observaciones con una función densidad de probabilidad continua Habitualmente esta función densidad de probabilidad de la observación para cada estado se define como una mezcla de M Gaussianas multidimensionales: 29 HMMs con funciones densidad de probabilidad de observación continuas (ii) La utilización de fdps continuas complica especialmente el proceso de estimación del modelo (Baum-Welch), pues ahora hay que estimar los vectores de medias y las matrices de covarianzas para cada estado, así como el peso de cada Gaussiana. Para el paso de Estimación conviene definir la función auxiliar Esta variable representa la probabilidad de estar en el estado j en el instante de tiempo t, con la Gaussiana k explicando la observación Ot. HMMs con funciones densidad de probabilidad de observación continuas (iii) En función de esta variable auxiliar, en el paso de Maximización debemos reestimar los siguientes parámetros adicionales: 30 HMMs con funciones densidad de probabilidad de observación continuas (iv) En reconocimiento de voz se emplean principalmente HMMs: Con topología Bakis Con probabilidades de observación por estados definidas con fdps continuas Con fdps continuas modeladas con mezclas de Gaussianas multidimensionales Habitualmente se emplean como parámetros para el reconocimiento de voz MFCCs Se ha demostrado que las componentes de los MFCC obtenidos a partir de la voz están aproximadamente incorreladas entre ellas Esto justifica la utilización de matrices de covarianza diagonales en las fdps. Esto nos reduce mucho el número de parámetros a estimar y facilita el entrenamiento con un número de datos reducido. 4. Adaptación al Locutor (MLLR, MAP) 31 Necesidad de adaptación al locutor Cada locutor tiene una voz característica A veces nos interesa esa información discriminante del locutor Otras veces nos resulta extremadamente incómoda En biometría vocal tratamos de reconocer la identidad de la persona por su voz En reconocimiento de voz tratamos de reconocer lo que ha dicho la persona, independientemente de las características particulares de su voz Las características de la voz del locutor es uno mas de los factores que introducen variabilidad en el habla. Otros son: entorno acústico, canal de transmisión, ruido, estado emocional, etc. Variabilidad del locutor Cada locutor es distinto en: Factores físicos: Factores conductuales: Longitud y forma del tracto vocal, configuración de la boca y órganos articuladores, edad, sexo, etc. Nivel de educación, idioma, dialecto, estilo personal, etc. Para solucionar este problema existen reconocedores de voz: Dependientes del locutor Independientes del locutor Adaptables a un locutor 32 Formas de afrontar la dependencia del locutor en reconocimiento de voz Reconocedores dependientes del locutor: Reconocedores independientes del locutor: Se entrenan con voz de al menos 500 locutores distintos Se entrenan con voz de un único locutor V: ↓ Error I: Requiere un entrenamiento largo (30’ de voz) V: No requiere entrenamiento del locutor I: ↑ Error, muy dependiente del locutor Reconocedores adaptables al locutor: Parten de uno independiente de locutor y se adaptan a la voz de un locutor con una cantidad de habla reducida V: No requiere entrenamiento explícito del locutor I: Error más reducido que independiente (mejora con uso) Técnicas clásicas de adaptación al locutor Existen dos técnicas clásicas de adaptación al locutor: MAP = Maximum A Posteriori MLLR = Maximum Likelihood Linear Regression Ambas parten de HMMs independientes del locutor y generan HMMs dependientes del locutor a partir de una cierta cantidad de voz de un único locutor. Cada una tiene sus ventajas y sus inconvenientes Además, ambas se pueden combinar 33 Adaptación MAP A veces denominada también Adaptación Bayesiana Opera parámetro a parámetro de los HMMs Considera que el parámetro del modelo independiente del locutor es la información a priori sobre dicho parámetro Con la voz de adaptación (con la información nueva observada) del locutor estima dicho parámetro Y finalmente combina ambos de acuerdo con Un factor de adaptación que es necesario fijar para ponderar más o menos la información nueva La cantidad total de información nueva empleada para estimar el parámetro Adaptación MAP (ii) Si en el modelo independiente de locutor la media de la Gaussiana m en el estado j es Y con los datos de adaptación hemos calculado (en el paso de Estimación) que la probabilidad de ocupación del estado j y la Gaussiana m en la grabación de adaptación r para el instante de tiempo t es Podemos calcular el número esperado de veces que nos encontramos en el estado j y la Gaussiana m en todos los datos de adaptación 34 Adaptación MAP (iii) Con todo ello (en el paso de Maximización) podemos estimar el valor de la media de la Gaussiana m en el estado j según los nuevos datos de adaptación: Y finalmente combinar ambas estimaciones de la media para llegar a la estimación MAP τ es un factor que pondera los nuevos datos de adaptación Adaptación MAP (iv) La adaptación MAP opera parámetro a parámetro Esto hace que requiera muchos datos de adaptación Es apropiada cuando hay muchos datos de adaptación Pero falla cuando hay pocos datos Del mismo modo que se adaptan las medias se adaptan el resto de parámetros de los HMMs 35 Adaptación MLLR Maximum Likelihood Linear Regression Es una técnica que consigue reducir la cantidad de datos de adaptación necesarios para adaptar los modelos El “truco” consiste en entrenar una transformación lineal para transformar un conjunto muy grande de parámetros (de distintos estados y modelos) con una única transformación, consiguiendo que en la transformación se reduzcan la diferencias entre los modelos y los datos de adaptación Los parámetros que se adaptan de este modo son: Las medias de las Gaussianas (casi siempre) Las varianzas de las Gauassianas (a veces) Adaptación MLLR Global (i) Comenzamos con el caso más sencillo: MLLR Global En este caso se van a transformar todas las medias de todas las Gaussianas de todos los estados de todos los modelos mediante una única transformación lineal de la forma: Donde ξ es un vector de medias expandido de esta forma: Donde w representa un offset habitualmente fijado a 1 De esta forma la matriz W se puede expresar como Donde b es un vector que representa el offset y A es una matriz cuadrada n x n que representa la transformación 36 Adaptación MLLR Global (ii) La adaptación MLLR Global se puede emplear cuando tenemos muy pocos datos de adaptación (<5 frases cortas) Pero normalmente conviene utilizar MLLR con un mayor número de transformaciones, cada una de las cuales se aplica a un conjunto determinado de vectores de medias o varianzas Problema: ¿cómo definir el número de clases y las clases mismas? También se suele aplicar un primer paso de MLLR Global antes de realizar un MLLR con un mayor número de clases Queda por resolver el tema de cómo se estima la matriz W Se estima (¿cómo no?) con el algoritmo E-M Pero no lo veremos por el momento. Adaptación MLLR con Clases de Regresión MLLR se aplica habitualmente con más de una clase Para adaptar él número de clases a la cantidad de datos disponibles y agrupar las Gaussians de un modo consistente se emplea un árbol de regresión binario que agrupa las Gaussianas de todos los modelos en clases El árbol de regresión se construye con los modelos independientes del locutor (de modo que se usa el mismo árbol para adaptación a cualquier locutor) del siguiente modo: 1. Se agrupan todas las Gaussianas en una única clase 2. Se divide esa clase en dos perturbando la media en la dirección de la máxima varianza 3. Se reclasifican las Gaussianas de la clase dividida en las nuevas clases y se reestiman medias y varianzas de las nuevas clases (repitiendo el proceso hasta el máximo número de iteraciones o hasta que no hay cambios) 4. Se elige la nueva clase a dividir y se vuelve al punto 2. 37 Adaptación MLLR con Clases de Regresión (ii) De este modo, a partir de los modelos independientes de locutor se construye un árbol binario que incluye a todas las Gaussianas del HMM A la hora de aplicar MLLR se determina el número de datos de adaptación para cada clase del árbol de regresión, determinando para cada nodo si hay o no hay suficientes datos Sólo se entrenan transformaciones para clases con suficientes datos y que tienen hijos sin suficientes datos Adaptación MLLR con Clases de Regresión (iii) La adaptación MLLR con clases de regresión es muy flexible porque permite adaptarse a la cantidad de datos de adaptación y consigue siempre buenos resultados, incluso con pocos datos de adaptación Tiene una ventaja importante: sólo se necesario almacenar las matrices de transformación en lugar de almacenar todo un nuevo conjunto de parámetros Ahorra espacio para adaptar a varios locutores Estas matrices de adaptación se emplean también en reconocimiento de locutor, ya que resumen la información característica del locutor Muchas veces se aplica MLLR Global seguido de MLLR con clases de regresión (y a veces seguido también de MAP) 38 Adaptación con MLLR y MAP: Consideraciones finales MLLR V: permite adaptar con menos datos V: robusto frente a escasez de datos I: pobre adaptación con muchos datos V: permite almacenar sólo la matriz de transformación MAP I: requiere muchos datos de adaptación I: si tiene pocos datos de adaptación los modelos se degradan mucho V: si dispone de muchos datos de adaptación es la mejor opción I: requiere almacenar un nuevo conjunto de modelos completo (más costoso). Adaptación con MLLR y MAP: Ejemplo Number of adapt. files → 5 10 20 50 100 200 800 1718 glob + MLLR 66.08 66.90 66.96 67.14 67.31 67.91 68.27 68.30 MAP 46.67 50.34 52.30 54.73 57.84 59.93 61.81 62.16 glob + MLLR + MAP 66.02 66.77 66.50 66.45 66.66 67.58 68.38 68.61 Mode ↓ Table 8.18 Comparison of ASR accuracy for feature compensation and model adaptation methods for robustness with scarce adaptation data for TIMIT LP4kHz and different number of classes and available training files. 39 5. Entrenamiento y Evaluación de HMMs (HTK) La teoría de HMMs es complicada… Por eso existen paquetes de software que nos facilitan la vida Uno de los más empleados en reconocimiento de voz es HTK (Hidden markov model ToolKit) Lo que veremos en este apartado es cómo construir de forma práctica un reconocedor de voz con HTK 40 El ejemplo El reconocedor que vamos a construir es: Un reconocedor para aplicaciones de marcación vocal sencillas Reconocerá dígitos conectados y un conjunto limitado de nombres Será de unidades acústicas fonéticas Añadir un nuevo nombre sólo implicará cambiar vocabulario y gramática Los modelos acústicos serán modelos bastante avanzados: HMMs con fdps continuas (mezcla de Gaussianas) Modelos dependientes del contexto (trifonemas) Estados atados mediante clustering con un árbol de decisión binario Se incluye también la forma de realizar la adaptación de modelos El ejemplo incluye todo desde el entrenamiento con los audios hasta la evaluación final y la adaptación. Paso 1: Gramática a procesar El primer paso incluye determinar el tipo de frases que queremos reconocer Ejemplo: A partir de las frases a manejar definimos la gramática 41 Paso 1: Gramática a procesar (ii) Internamente la gramática anterior se representa como un grafo dirigido que se obtiene a partir de la definición anterior mediante el programa HParse Paso 2: Creación del diccionario El diccionario define la representación fonética de cada palabra a reconocer En primer lugar es necesario definir el conjunto de fonemas que va a emplear nuestro reconocedor Una vez definido es necesario obtener un diccionario con el siguiente formato (se puede utilizar un transcriptor fonético automático para este propósito) 42 Paso 3: Adquirir el audio Aquí existen dos opciones Emplear una base de datos comercial (ej. TIMIT) Grabar una base de datos ad-hoc (opción no deseable) En caso de emplear una base de datos comercial no hay nada más que hacer y se puede pasar al punto 4. En caso de grabar una base de datos se pueden emplear herramientas de HTK que ayudan en el proceso HSGen para generar prompts de acuerdo a la gramática HSLab para grabar y etiquetar los datos Paso 4: Generar transcripciones fonéticas A veces tenemos las transcripciones fonéticas en la base de datos (ej. TIMIT) pero más normalmente tenemos sólo la transcripción ortográfica, como la siguiente Podemos emplear la herramienta HLEd (Label Editor) para expandir la transcripción ortográfica en fonética (comando EX) 43 Paso 5: Parametrización de la voz HTK dispone de un módulo configurable para generar los parámetros de voz más habituales así como para transformar fichero de audio (HCopy) Por supuesto puede calcular MFCCs Paso 6: Creación de modelos fonéticos (i) 6.1 Creación de un prototipo de modelo (establece topología y tipo de parámetros acústicos a emplear por todos los modelos) 44 Paso 6: Creación de modelos fonéticos (ii) 6.2 Entrenamiento global de media y varianza del modelo (y establecimiento de un suelo de varianza) 6.3 Copiar el prototipo a cada uno de los modelos a entrenar para crear un fichero con las macros (suelo de varianza y tipo de parámetros) y otro con las definiciones de los modelos Paso 6: Creación de modelos fonéticos (iii) 6.4 Reestimar los modelos de cada fonema varias veces empleando Baum-Welch Todas la complejidad matemática del Baum-Welch se esconde detrás de una línea de comandos: El proceso global es entonces: 45 Paso 7: Mejora de los modelos de silencio Se añade a los modelos de silencio (sil) transiciones desde los estados 2 al 4 Y se crea un nuevo modelo de silencio para pausas cortas que incluye una transición desde el estado inicial al final Se puede pasar por el modelo sin asignarle ninguna observación Esto es lo que se denomina un “tee model” Ambos modelos comparten el estado central Paso 7: Mejora de los modelos de silencio Todo esto se puede hacer con el HMM Editor (HHEd) Después se hacen otras dos pasadas de reestimación (BaumWelch) 46 Paso 8: Mejora del etiquetado fonético Se hace un primer reconocimiento con los modelos fonéticos ya entrenados para que el reconocedor decida la transcripción más probable en aquellas palabras que tenían más de una posible pronunciación Para ello se usa el módulo que hace el reconocimiento (Viterbi) Paso 9: Creación de modelos trifonéticos 9.1 Se crean etiquetas trifonéticas con el editor de etiquetas (HLEd) 9.2 Se transforman los HMMs en HMMs trifonéticos con el editor de HMMs (HHEd) Y se “atan” entre sí las matrices de transición de modelos con el mismo modelo central 9.3 Se reestiman los modelos 47 Paso 9: Creación de modelos trifonéticos Resumen: Paso 10: Atado de estados en modelos trifonéticos Es necesario hacer un atado de estados en los modelos trifonéticos pues de otro modo el número de estados (y Gaussianas) siempre suele ser demasiado grande. El atado de estados se hace con una llamada al editor de modelos (HHEd), pero es necesario definir una serie de preguntas para el algoritmo de clustering de estados (clustering basado en árbol de decisión) El comando es tan sencillo como éste: Pero el fichero de configuración es complicado, requiere conocimientos fonéticos y fácilmente da lugar a modelos mal entrenados (es el punto más delicado del entrenamiento) 48 Paso 10: Atado de estados en modelos trifonéticos (ii) Ejemplo de fichero de configuración para atado de estados Después de atarlos, se reestiman Paso 11: Evaluación del reconocedor Consiste en dos pasos Reconocer los datos de evaluación con el modelo (HVite) Evaluar el reconocimiento obtenido comparando con la transcripción de referencia (HResults) También existe la opción de ejecutar el reconocedor (HVite) en tiempo real sobre frases dichas en el micrófono del PC 49 Paso 12: Adaptación al locutor 12.1 En primer lugar es necesario generar los datos de adaptación 12.1.1 Se pueden generar los prompts de adaptación y de test con los comandos 12.1.2 Se graban los ficheros de adaptación y se parametrizan como antes 12.2.3 Se generan las transcripciones forzadas con el comando HVite (opción -a) Paso 12: Adaptación al locutor (ii) 12.2 Para hacer adaptación MLLR es necesario antes crear el árbol de regresión para clasificar Gaussianas. Se hace con el editor de HMMs (HHEd) 12.3 Por último se hace la adaptación (MLLR o MAP) con HEAdapt En el ejemplo se hace una MLLR global seguida de una MLLR con 32 clases Ahora podríamos volver a evaluar y debería haber mejorado 50 Conclusiones sobre HTK Facilita mucho el manejo de HMMs Garantiza una implementación fiable de la compleja teoría de los HMMs, modelos gramaticales, parametrización, etc. Da mucha flexibilidad como herramienta de prototipado, evaluación e investigación 51