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 ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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