Участник:MelLain/ЕМ-алгоритм (Тематическое моделирование): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 162: Строка 162:
* Матрица результатов кластеризации обучающей коллекции по полученным темам <math>\Theta</math>, столбцы которой являются вероятностными распределениями, а значит сумма элементов столбцов должна быть равна единице.
* Матрица результатов кластеризации обучающей коллекции по полученным темам <math>\Theta</math>, столбцы которой являются вероятностными распределениями, а значит сумма элементов столбцов должна быть равна единице.


'''Объём входных данных''':
'''Объём выходных данных''':
* <math>|W|\times|D|</math>.
* <math>|W|\times|T|</math> + <math>|T|\times|D|</math>.


=== Свойства алгоритма ===
=== Свойства алгоритма ===

Версия от 14:54, 12 октября 2016

Свойства и структура алгоритма

Общее описание алгоритма

Тематическое моделирование - одно из направлений статистического анализа текстовых коллекций в машинном обучении. В литературе описываются многочисленные разновидности моделей, а также методов их обучения. В данной статье будет рассмотрена тематическая модель вероятностного латентного семантического анализа (PLSA), и процесс её обучения с помощью параллельного ЕМ-алгоритма.

Существует множество разновидностей ЕМ-алгоритмов, ориентированных на учёт тех или иные аспектов решаемой задачи. Наиболее простым вариантом является т.н. оффлайновый алгоритм, непригодный для работы с большими текстовыми данными в силу значительных требований к потребляемой оперативной памяти. Существует ряд модернизаций этого алгоритма, позволяющих избавить его от ряда недостатков. Наилучшей из них является онлайновый вариант алгоритма. Тем не менее, в силу относительно высокой сложности его эффективной параллельной реализации, в данной статье будет рассматриваться гибридный вариант алгоритма, избавленный от большинства недостатков оффлайнового, но имеющий меньшую скорость сходимости, чем онлайновый.

Математическое описание

Математическое описание модели

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

Вероятностная модель PLSA имеет следующий вид:

[math]\displaystyle{ \begin{align} F \approx \Phi \times \Theta \end{align} }[/math]

Здесь [math]\displaystyle{ F }[/math] - это матрица исходных данных размера [math]\displaystyle{ |W| \times |D| }[/math], где [math]\displaystyle{ D }[/math] - это множество документов, а [math]\displaystyle{ W }[/math] - словарь коллекции, т.е. множество всех уникальных слов, встретившихся в документах.

[math]\displaystyle{ \Phi }[/math] - это матрица параметров модели размера [math]\displaystyle{ |W| \times |T| }[/math], где [math]\displaystyle{ T }[/math] - это множество тем, которые мы хотим извлечь из коллекции. Под темой в бытовом смысле смысле понимается набор слов, характеризующих её. Формально говоря, тема - это вероятностное распределение на множестве слов [math]\displaystyle{ W }[/math], поэтому матрица [math]\displaystyle{ \Phi }[/math] является стохастической, т.е. столбцы её неотрицательны и суммируются в единицу.

[math]\displaystyle{ \Theta }[/math] - матрица результатов кластеризации обучающей коллекции по полученным темам размера [math]\displaystyle{ |T| \times |D| }[/math], в ней столбцы также являются вероятностными распределениями, на этот раз документов на множестве тем.

Фактически, PLSA есть ни что иное, как задача приближённого стохастического матричного разложения, в ходе которой производится мягкая бикластеризация данных (мягкая - потому что объекты распределяются по классам не строго, а с некоторой вероятностью, би - потому что производится одновременная кластрезация слов по темам, и тем - по документам). Поставленную задачу можно решать методом максимального правдоподобия, с помощью ЕМ-алгоритма.

В данной статье будут расматриваться только плотные матрицы (хотя при определённых условиях можно эффективно использовать разреженные).

Математическое описание ЕМ-алгоритма

Задача максимизации логарифма правдоподобия для описанной модели имеет следующий вид:

[math]\displaystyle{ \begin{align} \mathcal{L}(\Phi, \Theta) = \sum_{d \in D}\sum_{w \in d} n_{dw} \,\mathrm{ln}(\sum_{t \in T} \phi_{wt} \theta_{td}) \rightarrow \underset{\Phi, \Theta}{\mathrm{max}} \end{align} }[/math]
[math]\displaystyle{ \begin{align} \sum_{w \in W} \phi_{wt} = 1, \, \forall t \in T, \quad \phi_{wt} \ge 0; \end{align} }[/math]
[math]\displaystyle{ \begin{align} \sum_{t \in T} \theta_{td} = 1, \, \forall d \in D, \quad \theta_{td} \ge 0. \end{align} }[/math]

Прямая оптимизация логарифма правдоподобия - очень сложная задача, поэтому её решают приближённо с помощью метода простых итераций, в котором чередуются два шага: E (expectation) и M (maximization). Перед первой итерацией выбираются начальные приближения параметров [math]\displaystyle{ \Phi }[/math] и [math]\displaystyle{ \Theta }[/math].

На Е-шаге по текущим значениям параметров с помощью формулы Байеса вычисляются вспомогательные переменные - условные вероятности [math]\displaystyle{ p(t\, | \,d, \,w) }[/math] для всех тем [math]\displaystyle{ t \in T }[/math], для каждого термина [math]\displaystyle{ w \in d }[/math] для каждого документа [math]\displaystyle{ d \in D }[/math]:

[math]\displaystyle{ \begin{align} p(t\, | \,d, \,w ) = \cfrac{\phi_{wt}\theta_{td}}{\sum_{s \in T}\phi_{ws}\theta_{sd}} \end{align} }[/math]

На М-шаге, наоброт, по условным вероятностям [math]\displaystyle{ p(t\, | \,d, \,w) }[/math] вычисляется новое приближение параметров [math]\displaystyle{ \phi_{wt} }[/math], [math]\displaystyle{ \theta_{td} }[/math]:

[math]\displaystyle{ \begin{align} \phi_{wt} = \cfrac{\hat n_{wt}}{\hat n_t}, \quad \hat n_t = \sum_{w \in W} \hat n_{wt}, \quad \hat n_{wt} = \sum_{d \in D} n_{dw} p(t\, | \,d, \,w ) \end{align} }[/math]
[math]\displaystyle{ \begin{align} \theta_{td} = \cfrac{\hat n_{dt}}{\hat n_d}, \quad \hat n_d = \sum_{t \in T} \hat n_{dt}, \quad \hat n_{dt} = \sum_{w \in d} n_{dw} p(t\, | \,d, \,w ) \end{align} }[/math]

Строгое обоснование данных формул можно получить с помощью теоремы Куна-Таккера.

Общие слова о модернизациях

Как уже было сказано, и как видно из описания выше, данный алгоритм сложно применять на практике в чистом виде из-за необходимости хранения трёхмерной матрицы [math]\displaystyle{ p(t\, | \,d, \,w) }[/math] и двумерной матрицы [math]\displaystyle{ \Theta }[/math], размеры которых зависят от количества обрабатываемых и данных, которых может быть очень много.

Для борьбы с описанной проблемой можно производить вычисления более рационально, отказавшись от хранения обеих матриц и вычисляя необходимы значения на лету. При наличии обученной модели [math]\displaystyle{ \Phi }[/math] получить векторы распределений [math]\displaystyle{ \theta_d }[/math] (если в этом есть необходимость) можно, произведя одну итерацию алгоритма, в ходе которой сама модель обновляться не будет.

В этом варианте алгоритма вычисление [math]\displaystyle{ \theta_d }[/math] будет перенесено с М-шага на Е-шаг, и для каждого нового документа этот вектор будет инициализирован равномерным распределением. Для ускорения скорости сходимости можно производить итерации "пересчёт [math]\displaystyle{ p(t\, | \,d, \,w) }[/math]" - "обновление [math]\displaystyle{ \theta_d }[/math]" многократно в течении обработки одного документа.

В дальнейшем подобные итерации будем называть внутренними, полный же однократный проход по всей коллекции будем называть итерацией внешней'.'

Вычислительное ядро алгоритма

Наиболее вычислительно затратной операцией в данном алгоритме является Е-шаг, в ходе которого рассчитываются вспомогательные переменные и векторы [math]\displaystyle{ \theta_d }[/math]. С введением внутренних итераций нагрузка на Е-шаг только увеличивается.

Макроуструктура алгоритма

В целом, высокоуровневое описание ЕМ-алгоритма состоит из самих Е-шага и М-шага. Е-шаг представляет собой набор операций, производимых в цикле по документам, что явно предоставляет возможность его распараллеливания. М-шаг занимает во много раз меньше времени и достаточно эффективно может выполняться в однопоточном режиме.

Впрочем, при наличии действительно больших данных можно задуматься и о параллелизме на М-шаге, но в данной статье этот вопрос не рассматривается.

Схема реализации последовательного алгоритма

Приведём здесь листинг описываемого алгоритма:

1. Инициализировать [math]\displaystyle{ \phi_{wt}^0 }[/math] для всех [math]\displaystyle{ w \in W }[/math], [math]\displaystyle{ t \in T }[/math];

2. Внешний итерация по коллекции [math]\displaystyle{ i = 1 ... num\_outer\_iter }[/math]:

3. ____ [math]\displaystyle{ n_{wt}^i := 0, n_t^i := 0 }[/math] для всех [math]\displaystyle{ w \in W }[/math] и [math]\displaystyle{ t \in T }[/math];

4. ____ Цикл по документам [math]\displaystyle{ d \in D }[/math]:

5. ________ Инициализировать вектор [math]\displaystyle{ \theta_d^{0} }[/math] для всех [math]\displaystyle{ t \in T }[/math] и [math]\displaystyle{ Z_w^{0} }[/math] для всех [math]\displaystyle{ w \in d }[/math];

6. ________ Внутренняя итерация по документу [math]\displaystyle{ j = 1 ... num\_inner\_iter }[/math]:

7. ____________ [math]\displaystyle{ Z_w^{j} }[/math] := [math]\displaystyle{ \sum_{t \in T} \phi_{wt}^{i-1}\theta_{td}^{j-1} }[/math] для всех [math]\displaystyle{ w \in d }[/math];

8. ____________ [math]\displaystyle{ \theta_{td}^{j} }[/math] := [math]\displaystyle{ \cfrac{1}{n_d}\sum_{w \in d} n_{dw} \phi_{wt}^{i-1}\theta_{td}^{j-1} / Z_w^{j} }[/math] для всех [math]\displaystyle{ t \in T }[/math];

9. ________ Увеличить [math]\displaystyle{ n_{wt}^i }[/math] и [math]\displaystyle{ n_t^i }[/math] на [math]\displaystyle{ n_{dw}\phi^{i-1}_{wt}\theta_{td}/Z_w }[/math] для всех [math]\displaystyle{ w \in W }[/math] и [math]\displaystyle{ t \in T }[/math];

10. ____ [math]\displaystyle{ \phi_{wt}^i }[/math] := [math]\displaystyle{ \cfrac{n_{wt}^i}{n_t^i} }[/math] для всех [math]\displaystyle{ w \in W }[/math] и [math]\displaystyle{ t \in T }[/math]

Здесь [math]\displaystyle{ Z_w }[/math] - это сумма всех [math]\displaystyle{ p(t \, | \, d, \, w) }[/math] для данного документа, нормировочная константа.

Последовательная сложность алгоритма

Рассмотрим ЕМ-алгоритм с [math]\displaystyle{ num\_outer\_iter }[/math] внешними итерациями и [math]\displaystyle{ num\_inner\_iter }[/math] внутренними применительно к набору документов [math]\displaystyle{ D }[/math] и слов [math]\displaystyle{ W }[/math], классифицирующий коллекцию по темам [math]\displaystyle{ T }[/math].

Так на каждой внутренней итерации производится

  • умножений: [math]\displaystyle{ |W|\cdot|T| + 2|T|\cdot|D| }[/math] ,
  • делений : [math]\displaystyle{ |T|\cdot(|D| + 1) }[/math],
  • сложений: [math]\displaystyle{ |W|\cdot(|T|-1) + |T|\cdot(|D| - 1) }[/math].

А значит на одной внешней итерации производится

  • умножений: [math]\displaystyle{ (|W|\cdot|T| + 2|T|\cdot|D|)\cdot num\_inner\_iter \cdot |D| }[/math] ,
  • делений : [math]\displaystyle{ |T|\cdot(|D| + 1)\cdot num\_inner\_iter \cdot |D| + |W|\cdot|T| }[/math] ,
  • сложений: [math]\displaystyle{ \Big(\big[|W|\cdot(|T|-1) + |T|\cdot(|D| - 1)\big]\cdot num\_inner\_iter + |W|\cdot|T|\Big)\cdot |D| }[/math] .

Соответственно для всего алгоритма каждая из этих операций повторяется [math]\displaystyle{ num\_outer\_iter }[/math] раз. Наиболее часто выполняется операция умножения, однако порядок величин одинаковый. Разница будет заметна лишь в том случае, когда [math]\displaystyle{ |D| }[/math] имеет меньший порядок, чем [math]\displaystyle{ |W| }[/math]. В этом случае делений будет значительно меньше, чем сложений и умножений.

По классификации по последовательной сложности ЕМ-алгоритм можно отнести к линейным по [math]\displaystyle{ num\_inner\_iter, num\_outer\_iter , |T|, |W| }[/math], а попеременной [math]\displaystyle{ |D| }[/math] - с квадратичной сложностью.

Информационный граф

Входные и выходные данные алгоритма

Если рассматривать EM-алгоритм на прикладном уровне, но в качестве входных параметров выступает коллекция документов [math]\displaystyle{ D }[/math], которая предварительно анализируется и порождает множество слов [math]\displaystyle{ W }[/math]. Также к входным данным относится набор тем [math]\displaystyle{ T }[/math]. Поскольку анализ документов и выделение слов являются отдельной задачей, то мы будем полагать, что на вход подаются оцифрованные данные в следующем виде:

Входные данные:

  • матрица частот [math]\displaystyle{ n_{dw} }[/math], отвечающая количеству слов [math]\displaystyle{ w }[/math], встречающихся в документе [math]\displaystyle{ d }[/math]. По определению элементы этой матрицы могут принимать лишь неотрицательные целые значения.
  • пара параметров [math]\displaystyle{ num\_outer\_iter, num\_inner\_iter }[/math] и количество тем [math]\displaystyle{ |T| }[/math]. Эти величины могут быть только положительными целыми числами.

Объём входных данных:

  • Матрица частот размером [math]\displaystyle{ |W|\times |D| }[/math], а также три скалярные константы.

Выходные данные:

  • Матрица результатов кластеризации обучающей коллекции по полученным темам [math]\displaystyle{ \Theta }[/math], столбцы которой являются вероятностными распределениями, а значит сумма элементов столбцов должна быть равна единице.

Объём выходных данных:

  • [math]\displaystyle{ |W|\times|T| }[/math] + [math]\displaystyle{ |T|\times|D| }[/math].

Свойства алгоритма

Программная реализация алгоритма

Литература