Створення максимальної ентропійської моделі Маркова з існуючого багатовхідного класифікатора максимальної ентропії


9

Мене заінтригує концепція моделі максимальної ентропії Маркова (MEMM), і я думаю про те, щоб використати її для тегера частини мови (POS). На даний момент я використовую звичайний класифікатор максимальної ентропії (ME) для позначення кожного окремого слова. Для цього використовується ряд функцій, включаючи попередні два теги.

МЕМ використовують алгоритм Вітербі для пошуку оптимального шляху через ланцюг Маркова (тобто для пошуку повного оптимального набору тегів для речення, а не окремих оптимумів для кожного слова). Читаючи про це, схоже, це чудова витонченість та простота. Однак кожен етап покладається лише на "результати" попереднього етапу (тобто відповідно до ланцюга Маркова).

Однак моя модель ME використовує попередні два етапи (тобто теги для попередніх двох слів). Здається, у мене є два можливі підходи:

  • Як і у звичайній реалізації Viterbi, використовуйте набір шляхів, що зберігаються відповідно до одного (попереднього) етапу. Мій класифікатор ME використовував би цей і "заморожений" етап перед цим (заморожений у розглянутий шлях) для створення функції передачі.

  • Або я пишу алгоритм для відстеження двох етапів. Це складніше і більше не буде справжньою Марковою моделлю, оскільки кожна функція передачі (тобто від моделі ME) залежатиме від попередніх двох етапів, а не від одного етапу.

Мене вражає, що другий буде більш точним, хоча буде складнішим.

Я ще не знайшов прикладів цього під час пошуку літератури. Чи було випробувано? Чи двоступеневий підхід покращив загальну точність?

Відповіді:


4

(Це справді справжнє питання, з яким я стикаюсь, і ML ML StackExchange в реальному часі був майже ідеальним терміном: я кілька днів читав книги та онлайн-дослідження і збирався розпочати впровадження. Ось мої результати. Хоча вони не суворі, я думаю, що вони відповідають на моє власне запитання. Я зараз залишаю це питання відкритим, якщо хтось має корисний внесок, спробував щось подібне або має корисні посилання.)

Гаразд за останні кілька днів я це зашифрував. Код не дуже ефективний - багато створення колекцій та копіювання, але мета вправи полягала в тому, щоб перевірити, чи буде він працювати, і наскільки добре він працює.

Я поділяю свої дані випадковим чином на два списки: дані про навчання та дані тесту. Я запускаю дані тесту через звичайний POS-тегер максимальної ентропії; і мій новий тегер MEMM. Отже, вони бачать ті ж самі дані тесту, що дозволяють проводити прямі порівняння - через випадковість обраних даних я бачу деяку різницю між тестами (як правило, приблизно 0,2-0,4%).

Перший тест використовує тег MEMM з однією стадією (тобто справжній ланцюг Маркова). Це стабільно краще, ніж простий ME-теггер приблизно на 0,1-0,25%.

Далі я спробував двоступеневий підхід, який здається, що він повинен бути більш правильним. Однак результати були ще більш незначними. Часто результати були б ідентичними, іноді вони були б трохи поступалися, але, мабуть, у більшості разів вони були дещо кращими (так +/- 0,05%).

Тег MEMM повільний. Гаразд, я не застосував жодних оптимізацій, але 1 етап (справжня ланцюг Маркова) у N рази повільніше (де N = Кількість міток), оскільки це кількість шляхів, які передаються між кожним кроком. Реалізація на 2 етапі відбувається повільніше на N * N (через більшу кількість переданих шляхів). Хоча оптимізація може покращити ситуацію, я, мабуть, занадто повільна для більшості практичних застосувань.

Я намагаюся застосувати нижню межу ймовірності до шляхів. Тобто Шляхи Вітербі обрізаються під час кожної ітерації з усіма стежками нижче певної ймовірності (в даний час Журнал (загальний шлях Р) <- 20,0) обрізається. Це дійсно працює трохи швидше, але залишається питання, чи варто воно того. Я думаю, це, мабуть, не так.

Чому ми не бачимо жодного покращення? Я думаю, що це пов’язано насамперед з тим, як поводяться теги POS та модель "Максимальна ентропія". Хоча модель має функції, засновані на двох попередніх тегах, безпосередній попередній тег набагато важливіший порівняно з тими, що передували йому. Інтуїтивно це має сенс для англійської мови (наприклад, прикметник зазвичай супроводжується іменником чи іншим прикметником, але це насправді не залежить від того, що було до цього прикметника).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.