2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Градиентный спуск для функции с параллельными результатами
Сообщение15.09.2020, 00:48 


02/07/19
52
Добрый день.
Пытаюсь написать метод предсказания концентрации смеси веществ по их спектрам. В основе метода лежит алгоритм PLS2 (стр. 10-11).
PLS2 позволяет по матрице спектров предсказать концентрации сразу для нескольких веществ. В моём методе используются дополнительные параметры (регрессионные коэффициенты), значения которых требуется искать методом градиентного спуска. Возникла сложность с составлением якобиана.
Для функций с одним результатом я выполняю численное дифференцирование исходя из определения частного дифференциала. Ищу вектор результата при некоторых исходных значениях коэффициентов. Для каждого коэффициента нахожу приращение, нахожу новые вектора результатов с учетом приращения. В соответствующий столбец якобиана подставляю разность векторов, деленный на приращение. Как-то так.
В моём случае результатом для матрицы спектров является не вектор расчетных концентраций, а матрица концентраций. По аналогии с численным дифференцированием для вектора концентраций точно так же можно найти разность матриц и каждый элемент полученной матрицы поделить на приращение соответствующего параметра. Но в якобиан мне нужно подставить столбец, а не матрицу, т.е. её нужно свести к столбцу. Дальше у меня начинается каша в голове. В голове крутится преобразовать каждую строку разностной матрицы в сумму квадратов. Но тогда теряется знак, который важен для направления сходимости. Требования к ошибке определения концентрации для всех веществ примерно одинаковые. Может быть вычислять стандартное отклонение по элементам строки? У стандартного отклонения тоже нет знака.

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

 Профиль  
                  
 
 Re: Градиентный спуск для функции с параллельными результатами
Сообщение19.09.2020, 12:26 


09/05/16
138
С одной стороны, Вашу проблему можно считать задачей оптимизации с несколькими целевыми функциями (multi-objective optimisation). Согласно Marler, R. T. & Arora, J. S. Survey of multi-objective optimization methods for engineering. Structural and Multidisciplinary Optimization 26, 369–395 (2004) (есть на Sci-Hub и libgen.rs), такие задачи можно свести к оптимизации одной функции, переходя к взвешенным суммам, максимуму, сортируя функции в порядке важности или используя другие приёмы.

С другой стороны,
McConst в сообщении #1483235 писал(а):
Но в якобиан мне нужно подставить столбец, а не матрицу, т.е. её нужно свести к столбцу.

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

 Профиль  
                  
 
 Re: Градиентный спуск для функции с параллельными результатами
Сообщение30.09.2020, 15:07 


02/07/19
52
Спасибо.
Было отключено уведомление на почту, поздно заметил, что на форуме ответ появился.
Я для себя так и сделал, пошел по пути оптимизации взвешенной суммы дисперсий. В целом алгоритм стал работать, но коэффициенты взвешивания я подбирал из логики экспериментальных данных и субъективных соображений. Спасибо за ссылку.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group