LOBPCG - LOBPCG

Локально оптимальный блочный предварительно обусловленный сопряженный градиент (LOBPCG) это безматричный метод для поиска самого большого (или самого маленького) собственные значения и соответствующие собственные векторы симметричной положительно определенной обобщенная задача на собственные значения

для данной пары сложных Эрмитский или реальный симметричный матрицы, где матрица также предполагается положительно определенный.

Фон

Канторович в 1948 г. предложил рассчитывать наименьшие собственное значение симметричной матрицы к крутой спуск используя направление масштабного градиент из Фактор Рэлея в скалярное произведение , с размером шага, вычисленным путем минимизации частного Рэлея в линейный пролет векторов и , т.е. локально оптимальным образом. Самокиш[1] предложил применить предварительный кондиционер к остаточному вектору для генерации предварительно обусловленного направления и получили асимптотику, как приближается к собственный вектор, границы скорости сходимости. Дьяконов предложенный[2] спектрально эквивалентный предварительная подготовка и получены неасимптотические границы скорости сходимости. Блочный локально оптимальный многошаговый наискорейший спуск для задач на собственные значения описан в.[3] Локальная минимизация отношения Рэлея на подпространстве, охватываемом текущим приближением, текущим остатком и предыдущим приближением, а также его блочной версией, появилась в.[4] Предварительно подготовленная версия была проанализирована в [5] и.[6]

Основные особенности[7]

  • Без матриц, т.е. не требует явного сохранения матрицы коэффициентов, но может получить доступ к матрице, оценивая произведения матрица-вектор.
  • Факторизация -бесплатно, т.е. не требует матричное разложение даже для обобщенная задача на собственные значения.
  • Затраты на итерацию и использование памяти конкурентоспособны с затратами на Метод Ланцоша, вычисляя единственную крайнюю собственную пару симметричной матрицы.
  • Линейная сходимость теоретически гарантирована и наблюдается практически.
  • Ускоренная конвергенция за счет прямого предварительная подготовка, в отличие от Метод Ланцоша, включая переменные и несимметричные, а также фиксированные и положительно определенные предварительная подготовка.
  • Позволяет банально включать эффективные декомпозиция домена и многосеточный техники посредством предварительного кондиционирования.
  • Теплый запуск и вычисление приближения к собственному вектору на каждой итерации.
  • Более стабильно численно по сравнению с Метод Ланцоша, и может работать с компьютерной арифметикой низкой точности.
  • Легко реализовать, уже появилось много версий.
  • Блокировка позволяет использовать высокоэффективные матрично-матричные операции, например, BLAS 3.
  • Размер блока можно настроить, чтобы сбалансировать скорость сходимости и затраты компьютера на ортогонализацию и Метод Рэлея-Ритца на каждой итерации.

Алгоритм

Одновекторная версия

Предварительные мероприятия: Градиентный спуск для задач на собственные значения

Метод выполняет итеративный максимизация (или минимизация) обобщенного Фактор Рэлея

что приводит к нахождению наибольших (или наименьших) собственных пар

Направление наиболее крутого подъема, которое является градиент, обобщенных Фактор Рэлея положительно пропорционален вектору

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

называется предобусловленным остатком. Без предварительной обработки положим и так . Итерационный метод

или, короче,

известен как предварительно обусловленный крутой подъем (или спуск), где скаляр называется размером шага. Оптимальный размер шага можно определить, максимизируя коэффициент Рэлея, т. Е.

(или же в случае минимизации), в этом случае метод называется локально оптимальным.

Трехместное повторение

Чтобы значительно ускорить сходимость локально оптимального предварительно обусловленного наискорейшего подъема (или спуска), можно добавить один дополнительный вектор к двухчленной отношение повторения сделать его трехчленным:

(использовать в случае минимизации). Максимизация / минимизация фактора Рэлея в трехмерном подпространстве может быть выполнена численно с помощью Метод Рэлея – Ритца. Добавление дополнительных векторов, см., Например, Экстраполяция Ричардсона, не приводит к значительному ускорению[8] но увеличивает затраты на вычисления, поэтому обычно не рекомендуется.

Улучшения численной стабильности

По мере схождения итераций векторы и стать почти линейно зависимый, что приводит к потере точности и Метод Рэлея – Ритца численно нестабилен при наличии ошибок округления. Потери точности можно избежать, подставив вектор с вектором , это может быть дальше от , в базисе трехмерного подпространства , сохраняя подпространство неизменным и избегая ортогонализация или любые другие дополнительные операции.[8] Кроме того, ортогонализация базиса трехмерного подпространства может потребоваться для плохо воспитанный задачи на собственные значения для повышения стабильности и достижимой точности.

Аналоги подпространств Крылова

Это одновекторная версия метода LOBPCG - одно из возможных обобщений предварительно подготовленный сопряженный градиент линейные решатели на случай симметричных собственное значение проблемы.[8] Даже в тривиальном случае и полученное приближение с будет отличаться от полученного Алгоритм Ланцоша, хотя оба приближения будут принадлежать одному и тому же Крыловское подпространство.

Практические сценарии использования

Чрезвычайная простота и высокая эффективность одновекторной версии LOBPCG делают ее привлекательной для приложений, связанных с собственными значениями, в условиях жестких аппаратных ограничений, начиная от спектральная кластеризация на основе реального времени обнаружение аномалии через разбиение графа на встроенном ASIC или же FPGA к моделированию физических явлений рекордной вычислительной сложности на Exascale TOP500 суперкомпьютеры.

Версия блока

Резюме

Последующие собственные пары могут быть вычислены по одной с помощью одновекторного LOBPCG, дополненного ортогональным дефляцией, или одновременно как блок. В первом подходе неточности в уже вычисленных приближенных собственных векторах аддитивно влияют на точность вычисляемых впоследствии собственных векторов, тем самым увеличивая ошибку с каждым новым вычислением. Перебор нескольких приблизительных собственные векторы вместе в блоке локально оптимальным образом в блочной версии LOBPCG.[8] позволяет быстрое, точное и надежное вычисление собственных векторов, включая те, которые соответствуют почти множественным собственным значениям, в которых одновекторный LOBPCG страдает от медленной сходимости. Размер блока можно настроить, чтобы сбалансировать численную стабильность, скорость сходимости и компьютерные затраты на ортогонализацию и метод Рэлея-Ритца на каждой итерации.

Основной дизайн

Блочный подход в LOBPCG заменяет одиночные векторы и с блочными векторами, т.е. матрицами и , где, например, каждый столбец аппроксимирует один из собственных векторов. Все столбцы повторяются одновременно, и следующая матрица приближенных собственных векторов определяется Метод Рэлея – Ритца на подпространстве, натянутом на все столбцы матриц и . Каждый столбец вычисляется просто как предобусловленный остаток для каждого столбца Матрица определяется таким образом, что подпространства, натянутые на столбцы и из одинаковые.

Численная стабильность против эффективности

Итог Метод Рэлея – Ритца определяется подпространством, натянутым на все столбцы матриц и , где базис подпространства теоретически может быть произвольным. Однако в неточной компьютерной арифметике Метод Рэлея – Ритца становится численно нестабильным, если некоторые из базисных векторов зависят приблизительно линейно. Числовые нестабильности обычно возникают, например, если некоторые из собственных векторов в итерационном блоке уже достигают достижимой точности для данной компьютерной точности и особенно заметны при низкой точности, например, одинарная точность.

Искусство многократной реализации LOBPCG заключается в обеспечении числовой стабильности Метод Рэлея – Ритца при минимальных вычислительных затратах за счет выбора хорошего базиса подпространства. Возможно, наиболее стабильный подход к ортогональности базисных векторов, например, с помощью Процесс Грама – Шмидта, также является наиболее затратным с точки зрения вычислений. Например, реализации LOBPCG[9], [10] использовать нестабильный, но эффективный Разложение Холецкого из нормальная матрица, который выполняется только на отдельных матрицах и , а не на всем подпространстве. Постоянно увеличивающийся объем компьютерной памяти позволяет в настоящее время использовать стандартные размеры блоков в диапазон, в котором процент вычислительного времени, затрачиваемого на ортогонализацию, и метод Рэлея-Ритца начинает доминировать.

Блокировка ранее сходившихся собственных векторов

Блочные методы для задач на собственные значения, которые повторяют подпространства, обычно имеют некоторые итерационные собственные векторы, сходящиеся быстрее, чем другие, что мотивирует блокировку уже сходившихся собственных векторов, то есть удаление их из итерационного цикла, чтобы исключить ненужные вычисления и улучшить численную стабильность. Простое удаление собственного вектора может, вероятно, привести к формированию его дубликата в все еще повторяющихся векторах. Тот факт, что собственные векторы симметричных задач на собственные значения являются попарно ортогональными, предполагает сохранение всех итерационных векторов ортогональными по отношению к заблокированным векторам.

Блокировка может быть реализована по-разному, поддерживая численную точность и стабильность при минимизации вычислительных затрат. Например, реализации LOBPCG[9], [10] следить[8], [11] разделение жесткой блокировки, то есть дефляция ограничением, когда заблокированные собственные векторы служат входом кода и не изменяются, от мягкой блокировки, когда заблокированные векторы не участвуют в обычно наиболее дорогостоящем итеративном этапе вычисления остатков, однако полностью участвуют в методе Рэлея-Ритца и, таким образом, могут быть изменены методом Рэлея-Ритца.

Теория и практика конвергенции

LOBPCG по конструкции гарантирован[8] свести к минимуму Фактор Рэлея не медленнее самого крутого блока градиентный спуск, который имеет всеобъемлющую теорию сходимости. Каждый собственный вектор стационарная точка Фактор Рэлея, где градиент исчезает. Таким образом градиентный спуск может замедлиться в окрестностях любого собственный вектор однако гарантируется либо сходимость к собственному вектору с линейной скоростью сходимости, либо, если этот собственный вектор является точка перевала, итеративная Фактор Рэлея с большей вероятностью опустится ниже соответствующего собственного значения и начнет линейно сходиться к следующему собственному значению ниже. Определено наихудшее значение линейной линейной скорости сходимости.[8] и зависит от относительного зазора между собственным значением и остальной частью матрицы спектр и качество предварительный кондиционер, если имеется.

Для общей матрицы, очевидно, нет способа предсказать собственные векторы и, таким образом, сгенерировать начальные приближения, которые всегда работают хорошо. Итерационное решение LOBPCG может быть чувствительным к аппроксимациям начальных собственных векторов, например, время схождения замедляется при прохождении промежуточных собственных пар. Более того, теоретически нельзя гарантировать сходимость обязательно к наименьшей собственной паре, хотя вероятность промаха равна нулю. Хорошее качество случайный Гауссовский функция с нулем иметь в виду обычно используется по умолчанию в LOBPCG для генерации начальных приближений. Чтобы зафиксировать начальные приближения, можно выбрать фиксированное начальное число для генератор случайных чисел.

В отличие от Метод Ланцоша, LOBPCG редко демонстрирует асимптотические сверхлинейная сходимость на практике.

Частичное Анализ главных компонентов (PCA) и Разложение по сингулярным значениям (СВД)

LOBPCG можно тривиально применить для вычисления нескольких крупнейших сингулярные значения и соответствующие сингулярные векторы (частичные SVD), например, для итерационное вычисление PCA, для матрицы данных D с нулевым средним, без явного вычисления ковариация матрица DТD, т.е. в безматричная мода. Основной расчет - это оценка функции продукта. DТ(D X) ковариационной матрицы DТD и блок-вектор Икс который итеративно аппроксимирует желаемые особые векторы. PCA требует наибольших собственных значений ковариационной матрицы, тогда как LOBPCG обычно применяется для вычисления наименьших. Простой обходной путь - отменить функцию, заменив -DТ(D X) за DТ(D X) и, таким образом, меняют порядок собственных значений на противоположный, поскольку LOBPCG не заботится о том, положительно определена матрица проблемы собственных значений или нет.[9]

LOBPCG для PCA и SVD реализован в SciPy, начиная с версии 1.4.0.[12]

Общие программные реализации

Изобретатель LOBPCG, Андрей Князев, опубликовал эталонную реализацию под названием Block Locally Optimal Preconditioned Eigenvalue Xolvers (BLOPEX)[13][14] с интерфейсами к PETSc, гипре, и параллельный иерархический адаптивный многоуровневый метод (PHAML).[15] Другие реализации доступны, например, в GNU Octave,[16] MATLAB (в том числе для распределенных или мозаичных массивов),[9] Ява,[17] Анасази (Трилинос ),[18] SLEPc,[19][20] SciPy,[10] Юля,[21] МАГМА,[22] Pytorch,[23] Ржавчина,[24] OpenMP и OpenACC,[25] RAPIDS cuGraph[26] и NVIDIA AMGX.[27] LOBPCG реализован,[28] но не входит в TensorFlow.

Приложения

Материаловедение

LOBPCG реализован в ABINIT[29] (включая CUDA версия) и Осьминог.[30] Он был использован для многомиллиардных матриц размером Приз Гордона Белла финалистов, на Симулятор Земли суперкомпьютер в Японии.[31][32] Модель Хаббарда для сильно коррелированных электронных систем, чтобы понять механизм, лежащий в основе сверхпроводимость использует LOBPCG для расчета основное состояние из Гамильтониан на K компьютер.[33] Есть MATLAB [34] и Юля[35][36][37]версии LOBPCG для Кон-Шам уравнения и теория функционала плотности (DFT) с использованием простой волны. Недавние реализации включают TTPY,[38] Утконос ‐ QM,[39] МФДн,[40] АПФ-молекула,[41] LACONIC.[42]

Механика и жидкости

LOBPCG от BLOPEX используется для предварительный кондиционер настройка в многоуровневом Балансировка декомпозиции домена по ограничениям (BDDC) библиотека решателя BDDCML, встроенная в OpenFTL (Open Заключительный элемент Библиотека шаблонов) и симулятор Flow123d подземных вод, растворенных веществ и перенос тепла в сломанном пористая среда. LOBPCG реализован[43] в LS-DYNA.

Уравнения Максвелла

LOBPCG - один из основных решателей собственных значений в PYFEMax и высокопроизводительной мультифизике. заключительный элемент программное обеспечение Netgen / NGSolve. LOBPCG из гипре включен в Открытый исходный код легкий масштабируемый C ++ библиотека для заключительный элемент методы MFEM, который используется во многих проектах, в том числе ВЗРЫВ, XBraid, Посещение, xSDK, институт FASTMath в SciDAC, и Центр совместного проектирования по эффективной экзадачной дискретизации (CEED) в Exascale вычисления Проект.

Шумоподавление

Итеративная аппроксимация на основе LOBPCG фильтр нижних частот может использоваться для шумоподавление; видеть,[44] например, чтобы ускорить полное изменение шумоподавления.

Сегментация изображения

Сегментация изображения через спектральная кластеризация выполняет низкоразмерный встраивание используя близость матрица между пикселями с последующей кластеризацией компонентов собственных векторов в низкоразмерном пространстве. LOBPCG с многосеточный предварительная подготовка был впервые применен к сегментация изображения в [45] через спектральный разбиение графа с использованием граф лапласиан для двусторонний фильтр. Scikit-Learn использует LOBPCG из SciPy с алгебраическое многосеточное предварительное кондиционирование для решения задачи на собственные значения.[46]

Сбор данных

Программные пакеты scikit-learn и Мегамен[47] используйте LOBPCG для масштабирования спектральная кластеризация[48] и многообразное обучение[49] через Собственные карты лапласиана для больших наборов данных. NVIDIA реализовал[50] LOBPCG в своей библиотеке nvGRAPH, представленной в CUDA 8.

Рекомендации

  1. ^ Самокиш, Б.А. (1958). «Метод наискорейшего спуска для задачи на собственные значения с полуограниченными операторами». Известия вузов, Матем. (5): 105–114.
  2. ^ Дьяконов, Э. Г. (1996). Оптимизация при решении эллиптических задач. CRC-Press. п. 592. ISBN  978-0-8493-2872-5.
  3. ^ Каллум, Джейн К.; Уиллоуби, Ральф А. (2002). Алгоритмы Ланцоша для вычисления больших симметричных собственных значений. Vol. 1 (Перепечатка оригинала 1985 г.). Общество промышленной и прикладной математики.
  4. ^ Князев, Андрей В. (1987). «Оценки скорости сходимости итерационных методов для сеточной симметричной задачи на собственные значения». Советский Ж. Численный анализ и математика. Моделирование. 2 (5): 371–396.
  5. ^ Князев, Андрей В. (1991). «Предварительно обусловленный метод сопряженного градиента для задач на собственные значения и его реализация в подпространстве». International Ser. Вычислительная математика, т. 96, Eigenwertaufgaben in Natur- und Ingenieurwissenschaften und Ihre Numerische Behandlung, Oberwolfach 1990, Birkhauser: 143–154.
  6. ^ Князев, Андрей В. (1998). «Прекондиционированные собственные средства - оксюморон?». Электронные транзакции по численному анализу. 7: 104–123.
  7. ^ Князев, Андрей (2017). «Недавние реализации, приложения и расширения локально оптимального блочного метода предварительно обусловленного сопряженного градиента (LOBPCG)». arXiv:1708.08354 [cs.NA ].
  8. ^ а б c d е ж грамм Князев, Андрей В. (2001). "На пути к оптимальному предварительно обусловленному собственному вычислителю: локально оптимальный блочный предобусловленный метод сопряженных градиентов". Журнал SIAM по научным вычислениям. 23 (2): 517–541. Дои:10.1137 / S1064827500366124.
  9. ^ а б c d MATLAB Функция обмена файлами LOBPCG
  10. ^ а б c SciPy функция разреженной линейной алгебры lobpcg
  11. ^ Князев, А. (2004). Жесткая и мягкая блокировка в итерационных методах решения симметричных задач на собственные значения. Восьмая конференция по итерационным методам в Коппер-Маунтин, 28 марта - 2 апреля 2004 г. Дои:10.13140 / RG.2.2.11794.48327.
  12. ^ LOBPCG для SVDS в SciPy
  13. ^ GitHub BLOPEX
  14. ^ Князев, А. В .; Аргентати, М. Э .; Лашук, И .; Овчинников, Э. Э. (2007). «Блокировать локально оптимальные Xolvers с предопределенными собственными значениями (BLOPEX) в Hypre и PETSc». Журнал SIAM по научным вычислениям. 29 (5): 2224. arXiv:0705.2626. Bibcode:2007arXiv0705.2626K. Дои:10.1137/060661624.
  15. ^ ФАМЛ Интерфейс BLOPEX для LOBPCG
  16. ^ Октавная функция линейной алгебры lobpcg
  17. ^ Java LOBPCG в Код Google
  18. ^ Анасази Трилинос LOBPCG в GitHub
  19. ^ Родной SLEPc LOBPCG
  20. ^ SLEPc BLOPEX интерфейс к LOBPCG
  21. ^ Юля LOBPCG в GitHub
  22. ^ Анцт, Хартвиг; Томов, Станимир; Донгарра, Джек (2015). «Ускорение метода LOBPCG на графических процессорах с использованием заблокированного разреженного матричного векторного произведения». Материалы симпозиума по высокопроизводительным вычислениям (HPC '15). Международное общество компьютерного моделирования, Сан-Диего, Калифорния, США: 75–82.
  23. ^ Pytorch LOBPCG в GitHub
  24. ^ Ржавчина LOBPCG в GitHub
  25. ^ Раввин Фазлай; Дейли, Кристофер С .; Актулга, Хасан М .; Райт, Николас Дж. (2019). Оценка моделей программирования GPU на основе директив на блочном собственном решателе с учетом больших разреженных матриц (PDF). Седьмой семинар по программированию ускорителей с использованием директив, SC19: Международная конференция по высокопроизводительным вычислениям, сетям, хранению данных и анализу.
  26. ^ РАПИДЫ cuGraph NVgraph LOBPCG в GitHub
  27. ^ NVIDIA AMGX LOBPCG в GitHub
  28. ^ Рахуба, Максим; Новиков, Александр; Оседелец, Иван (2019). "Риманов собственный вычислитель низкого ранга для гамильтонианов большой размерности". Журнал вычислительной физики. 396: 718–737. arXiv:1811.11049. Bibcode:2019JCoPh.396..718R. Дои:10.1016 / j.jcp.2019.07.003.
  29. ^ ABINIT Docs: оптимизация волновых функций ALGorithm
  30. ^ Руководство разработчика Octopus: LOBPCG
  31. ^ Yamada, S .; Имамура, Т .; Мачида М. (2005). 16,447 терафлопс и 159-миллиардная точная диагонализация для модели Фермиона-Хаббарда в ловушке на симуляторе Земли. Proc. Конференция ACM / IEEE по суперкомпьютерам (SC'05). п. 44. Дои:10.1109 / SC.2005.1. ISBN  1-59593-061-2.
  32. ^ Yamada, S .; Имамура, Т .; Кано, Т .; Мачида, М. (2006). Финалисты Гордона Белла I - Высокопроизводительные вычисления для точных численных подходов к квантовым задачам многих тел на симуляторе Земли. Proc. Конференция ACM / IEEE по суперкомпьютерам (SC '06). п. 47. Дои:10.1145/1188455.1188504. ISBN  0769527000.
  33. ^ Yamada, S .; Имамура, Т .; Мачида, М. (2018). Высокоэффективный метод LOBPCG для решения множественных собственных значений модели Хаббарда: эффективность связи, избегая предварительной обработки расширения Неймана. Азиатская конференция по суперкомпьютерам. Йокота Р., Ву В. (редакторы) Supercomputing Frontiers. SCFA 2018. Lecture Notes in Computer Science, vol 10776. Springer, Cham. С. 243–256. Дои:10.1007/978-3-319-69953-0_14.
  34. ^ Ян, С .; Meza, J.C .; Ли, Б .; Ван, Л.-В. (2009). «KSSOLV - набор инструментов MATLAB для решения уравнений Кон-Шэма». ACM Trans. Математика. Softw. 36: 1–35. Дои:10.1145/1499096.1499099.
  35. ^ Фатуррахман, Фаджар; Агуста, Мохаммад Кемаль; Сапутро, Адхитья Гандарюс; Дипохоно, Хермаван Кресно (2020). «PWDFT.jl: пакет Julia для расчета электронной структуры с использованием теории функционала плотности и базиса плоских волн». Дои:10.1016 / j.cpc.2020.107372. Цитировать журнал требует | журнал = (помощь)
  36. ^ Теория функционала плотности плоских волн (PWDFT) в Юля
  37. ^ Плотно-функциональный инструментарий (ДФТК). Плоская волна теория функционала плотности в Юля
  38. ^ Рахуба, Максим; Оселедец, Иван (2016). «Расчет колебательных спектров молекул с использованием разложения на тензорную последовательность». J. Chem. Phys. 145 (12): 124101. arXiv:1605.08422. Bibcode:2016ЖЧФ.145л4101Р. Дои:10.1063/1.4962420. PMID  27782616.
  39. ^ Такано, Ю. Наката, Кадзуто; Ёнэдзава, Ясусигэ; Накамура, Харуки (2016). «Разработка программы массового многоуровневого моделирования молекулярной динамики, platypus (PLATform для унифицированного моделирования динамических белков), для выяснения функций белков». J. Comput. Chem. 37 (12): 1125–1132. Дои:10.1002 / jcc.24318. ЧВК  4825406. PMID  26940542.
  40. ^ Шао, Мэйюэ; и другие. (2018). «Ускорение расчетов взаимодействия ядерных конфигураций с помощью предварительно подготовленного блока итеративного собственного вычислителя». Компьютерная физика Коммуникации. 222 (1): 1–13. arXiv:1609.01689. Bibcode:2018CoPhC.222 .... 1S. Дои:10.1016 / j.cpc.2017.09.004.
  41. ^ Кан, Сону; и другие. (2020). «ACE-Molecule: пакет с открытым исходным кодом для квантовой химии в реальном пространстве». Журнал химической физики. 152 (12): 124110. Дои:10.1063/5.0002959.
  42. ^ Бачевский, Эндрю Дэвид; Бриксон, Митчелл Ян; Кэмпбелл, Куинн; Якобсон, Ной Тобиас; Маурер, Леон (01.09.2020). Квантово-аналоговый сопроцессор для моделирования систем коррелированных электронов (Отчет). США: Национальная лаборатория Сандии. (СНЛ-НМ. Дои:10.2172/1671166. OSTI  1671166).
  43. ^ Обзор собственных методов решения в LS-DYNA®. 15-я Международная конференция LS-DYNA, Детройт. 2018.
  44. ^ Князев, А .; Малышев А. (2015). Ускоренные спектральные полиномиальные фильтры на основе графов. 2015 25-й международный семинар IEEE по машинному обучению для обработки сигналов (MLSP), Бостон, Массачусетс. С. 1–6. arXiv:1509.02468. Дои:10.1109 / MLSP.2015.7324315.
  45. ^ Князев, Андрей В. (2003). Болей; Диллон; Гош; Коган (ред.). Современные предварительно подготовленные собственные преобразователи для спектральной сегментации изображения и деления графа пополам. Кластеризация больших наборов данных; Третья международная конференция IEEE по интеллектуальному анализу данных (ICDM 2003) Мельбурн, Флорида: Компьютерное общество IEEE. С. 59–62.
  46. ^ https://scikit-learn.org/stable/modules/clustering.html#spectral-clustering
  47. ^ Маккуин, Джеймс; и другие. (2016). «Megaman: обучение масштабируемому многообразию на Python». Журнал исследований в области машинного обучения. 17 (148): 1–5. Bibcode:2016JMLR ... 17..148M.
  48. ^ "Sklearn.cluster.SpectralClustering - документация scikit-learn 0.22.1".
  49. ^ "Sklearn.manifold.spectral_embedding - документация scikit-learn 0.22.1".
  50. ^ Наумов, Максим (2016). «Быстрое разбиение спектрального графа на графических процессорах». Блог разработчиков NVIDIA.

внешняя ссылка