Распараллеливание разложения Холецкого для использования в обучении алгоритма машинного обучения

Я пытаюсь выяснить, могу ли я распараллелить учебный аспект алгоритма машинного обучения. Вычислительно затратная часть обучения включает разложение Холецкого положительно определенной матрицы (матрицы ковариаций). Я попытаюсь сформулировать вопрос исключительно с точки зрения матричной алгебры. Дайте мне знать, если вам нужна дополнительная информация.

Допустим, у нас есть блочная матрица (ковариационная матрица, но это не имеет отношения к проблеме)

 
M = A  B  
    B* C

где A и C относятся к обучающим данным из двух разных наборов. И А, и В положительно определенные. Предположим также для простоты, что A и C имеют размер nxn.

Существует формула проведения блочной разложения Холецкого. См. http://en.wikipedia.org/wiki/Block_LU_decomposition. Обобщая, имеем следующий результат.

M = LU

где (* указывает на транспонирование)

L = A^{1/2}      0 
    B*A^{-*/2}  Q^{1/2}

где

Q = C - B*A^{-1}B

Теперь предположим, что обучение, связанное с матрицами A и C, уже выполнено, поэтому мы выполнили разложение Холецкого для A и C, дающее A^{1/2} и C^{1/2} (поэтому легко вычислить обратные значения A^{-1/2} и C^{-1/2} с использованием прямой замены).

Переписав Q в терминах этих величин, которые мы теперь имеем.

Q = Q^{1/2} Q^{*/2} = C^{1/2} C^{*/2} - B* A^{-*/2}A^{-1/2} B

Мой вопрос заключается в следующем: при такой настройке возможно ли алгебраически вычислить Q^{1/2} без применения разложения Холецкого к Q. Или, другими словами, могу ли я использовать C^{1/2}, чтобы помочь мне в расчет Q^{1/2}. Если бы это было возможно, то можно было бы легко распараллелить обучение.

Заранее спасибо за любые ответы. Извините за матричную верстку. Есть ли какой-нибудь разумный способ набирать математику или матрицы, в частности?

Мэтт.


person Matthew Gretton    schedule 01.07.2010    source источник


Ответы (2)


Вы можете сделать это с помощью последовательности понижений холески:

(Ниже я использую ' для транспонирования, чтобы избежать путаницы с умножением)

Если фактор холецкого для A равен a, а для C равен c, то уравнение для Q можно записать

Q = c*c' - beta'*beta, где beta = inverse(a)B (т. е. решить abeta = B для бета)

Если мы напишем b[i] для i-го столбца бета, тогда

Q = c*c' - Сумма b[i]*b[i]'

Нахождение холецкого разложения

cc' - xx' (где x — вектор, а c — нижний треугольник)

известен как хронический холецистит 1 ранга. Для этого существует стабильный алгоритм в Голуб и ван Лоан.

person dmuir    schedule 14.07.2010
comment
Привет. Спасибо за ответ. Я очень ценю это :-). У меня есть пара вопросов. Хотя это, безусловно, дает метод вычисления коэффициента холецкого Q без прямого разложения на множители, улучшает ли это процесс в отношении вычислений? В вашей настройке дорогостоящая операция решает найти бета-версию. Предполагая, что фактор Холецкого a и матрица B являются матрицами размера nxn. Правильно ли я говорю, что вычисление бета будет операцией O (n ^ 3)? Если это так, что он предлагает по сравнению с факторизацией Q напрямую? Еще раз спасибо за ответ. Мэтт. - person Matthew Gretton; 15.07.2010
comment
Да, решение для бета - это O (n ^ 3); также пониженная дата холецкого O (n ^ 2), и вы будете делать n из них. Я подозреваю, что в этом нет ничего особенного, если фактор Q - это все, что вам нужно. С другой стороны, если вы хотите учесть все М-факторы, вы все равно будете вычислять бета-версию, - person dmuir; 15.07.2010

Я думаю, что пришел к ответу, хотя это не совсем так, как я надеялся.

Удалив контекст машинного обучения, мой вопрос сводился к тому, поможет ли знание C^{1/2} в вычислении Q^{-1/2}. Ниже я расскажу подробнее, но, чтобы прекратить погоню, ответ - да, но только в отношении стабильности, а не вычислений (не могу доказать, что это так в настоящее время, но довольно точно).

Для того, почему ответ положительный относительно стабильности, мы смотрим на определение Q из исходного вопроса, которое было изменено следующим образом.

Q = C - B* A^{-1} B = (C^{1/2} + B*A^{-*/2})(C^{1/2} - B*A^{-*/2})*

Зная C^{1/2} заранее, мы можем вычислить Q без необходимости инвертировать A напрямую. Прямая инверсия не является численно устойчивой.

К сожалению, хотя я провел достаточное количество исследований по этому вопросу, похоже, что $C^{1/2}$ не помогает в точном вычислении Q^{-1/2}. Наилучший подход, по-видимому, состоит в том, чтобы вычислить Q, используя C ^ {1/2}, как указано выше, а затем использовать Cholesky для разложения Q на Q ^ {1/2}, а затем прямую замену для вычисления Q ^ {-1/2}.

Дальнейшие исследования

Одна область, которую я не рассматривал подробно, заключалась в том, можно ли использовать C^{1/2} для аппроксимации Q^{-1/2}. Что-то вроде итеративного метода, использующего C^{1/2} в качестве отправной точки. Я не знаю ни одного такого итеративного процесса аппроксимации, но я продолжу поиски. Я могу даже начать новый вопрос с этого в качестве основного.

Я сообщу вам всем, если у меня будут какие-то серьезные прорывы.

person Matthew Gretton    schedule 07.07.2010
comment
Мне было указано, что нестабильность, связанная с инвертированием A напрямую, избегается в обеих формулировках Q. Сказав это, может быть некоторый выигрыш в стабильности, если Q имеет низкий ранг. Так что нет никакого реального вреда в переформулировке Q. - person Matthew Gretton; 08.07.2010