10 votos

Creación de un modelo de Markov de máxima entropía de un clasificador de múltiples canales de entrada máxima entropía existente

Estoy intrigado por el concepto de un Máximo de Entropía Modelo de Markov (MEMM), y estoy pensando en de su uso para una Parte de la oración (POS) tagger. Por el momento, estoy usando una convencional La máxima Entropía (ME) clasificador a la etiqueta de cada palabra individual. Este utiliza un número de características, incluyendo los últimos dos etiquetas.

MEMMs utilizar el algoritmo de Viterbi para encontrar la trayectoria óptima a través de la Cadena de Markov (es decir. para encontrar un completo conjunto óptimo de etiquetas para la frase en lugar de individuales optimums para cada palabra). Leer acerca de ella, esto parece ser una maravillosa elegancia y simplicidad. Sin embargo, cada etapa sólo se basa en los "resultados" de la etapa anterior (es decir, como por una Cadena de Markov).

Sin embargo, a mi ME modelo utiliza las dos anteriores etapas (por ejemplo, las etiquetas para el período de dos palabras). Parece que tiene dos enfoques posibles:

  • Como con un convencionales de Viterbi aplicación, el uso de un conjunto de rutas almacenados de acuerdo a uno (el anterior) de la etapa. A mi ME clasificador utilizar esto y un 'frozen' de la etapa antes de este (congelado en el camino bajo consideración) para producir la función de transferencia.

  • O escribo el algoritmo a seguir la pista de dos etapas. Esto es más complicado y ya no sería un verdadero Modelo de Markov, ya que cada función de transferencia (es decir, desde que ME Modelo) dependería de las dos anteriores etapas y no de una etapa.

Me llama la atención que la segunda será más precisa, aunque será más complicado.

Todavía tengo que encontrar ejemplos de esto durante mi búsqueda de la literatura. Ha sido probado? Hizo las dos fases dar una mejora a la precisión global?

4voto

mr obvious Puntos 51

(Esto realmente es una verdadera pregunta que me estoy enfrentando y el ML StackExchange sitio que va en directo fue bastante mucho tiempo perfecto: yo había hecho un par de días a partir de la lectura de libros y la investigación en línea y estaba a punto de comenzar la implementación. Aquí están mis resultados. A pesar de que no son rigurosos pienso que la respuesta a mi propia pregunta. Dejo la pregunta abierta para que ahora en caso de que alguien tiene alguna información útil, ha intentado algo similar, o tienen algunas referencias útiles.)

Bien en el último par de días, he codificado esto. El código no es muy eficiente - un montón de creación de la colección y copia, pero el objeto de que el ejercicio era para ver si iba a funcionar, y lo bien que funciona.

Yo soy la división de mis datos al azar en dos listas: los datos de entrenamiento, y los datos de prueba. Estoy ejecutando los datos de prueba a través de la convencional de Máxima Entropía POS Tagger; y mi nuevo MEMM tagger. Por lo tanto ellos ven los mismos datos de prueba, lo que permite comparaciones directas - debido a la aleatoriedad en los datos de ser elegido, veo alguna variación entre las pruebas (normalmente alrededor de 0.2-0.4%).

Primera prueba utiliza un MEMM tagger con una sola etapa (es decir. una verdadera Cadena de Markov). Sistemáticamente se desempeñaron mejor que las simples ME tagger por alrededor de 0.1-0.25%.

A continuación, he probado las dos fases que parece que debería ser más correcto. Sin embargo, los resultados fueron aún más marginal. A menudo, los resultados serían idénticos, de vez en cuando sería ligeramente inferior, pero, probablemente, la mayoría de las veces era un poco mejor (+/-0.05%).

El MEMM tagger es lento. Bueno yo no he aplicado ningún optimizaciones, pero la etapa 1 (verdadero de la Cadena de Markov) es N veces más lento (donde N = Número de etiquetas) porque este es el número de caminos que se transfieren entre cada paso. La 2 etapa de implementación es de N*N más lento (por el mayor número de rutas de acceso, la transferencia). Aunque optimizaciones podría mejorar las cosas, I esta es, probablemente, demasiado lento para la mayoría de las aplicaciones prácticas.

Una cosa que estoy tratando es aplicar una menor probabilidad de limitar a los caminos. Es decir. la Viterbi caminos son podados durante cada iteración con todas las rutas por debajo de una cierta probabilidad (actualmente Log(total de la ruta P)<-20.0), se podan. Esto hace correr un poco más rápido, pero la pregunta sigue siendo si vale la pena. Creo que probablemente no lo es.

¿Por qué no le ve ninguna mejoría? Creo que esto es debido, principalmente, a la manera en POS de las etiquetas de comportarse y el modelo de Máxima Entropía. Aunque el modelo tiene características basadas en las anteriores dos etiquetas, la inmediata anterior de la etiqueta es mucho más importante en comparación con el anterior. Intuitivamente esto tendría sentido para el idioma inglés (por ejemplo. un adjetivo es generalmente seguido por un sustantivo o un otro adjetivo, pero esto no dependen realmente de lo que estaba antes de que el adjetivo).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X