Что такое линейная комбинация
Перейти к содержимому

Что такое линейная комбинация

Регрессия и линейные комбинации векторов

Недавно я помогал вести курс по линейной алгебре, который организовали Тай-Даная Брэдли и Джек Хидари. Одним из вопросов, который периодически возникал у слушателей курса, был вопрос о том, почему программистов должна заботить тема линейной комбинации векторов.

Если кто не знает о том, что это такое — поясню. Предположим, имеются векторы . Их линейной комбинацией называется выражение вида , представляющее собой сумму произведений векторов на коэффициенты .

Должен признать, что книги по математике оказывают своим читателям медвежью услугу, представляя концепцию линейной комбинации векторов не более чем теоретической идеей. В результате создаётся впечатление того, что эта концепция нужна лишь для математических доказательств, что самое ценное для практика — это умножение матриц и векторные произведения. Но, на самом деле, это не так. Линейная комбинация векторов лежит в самом сердце многих вариантов практического применения математических идей.

В некоторых случаях главной целью применения некоего алгоритма является лишь поиск «приемлемой» линейной комбинации набора векторов. Векторы — это строительные блоки (часто являющиеся базисом векторного пространства или подпространства), а набор линейных комбинаций векторов представляет собой законный способ комбинирования этих блоков. Более простые блоки допускают применение более простых и более эффективных алгоритмов, но их линейные комбинации менее выразительны. Вследствие этого и возникает компромисс.

Конкретный пример этого — регрессия. Большинство людей, говоря о регрессии, имеют в виду линейную регрессию. Речь идёт о поиске линейной функции, вроде , которая хорошо аппроксимирует некие данные. В случае с функцией от нескольких переменных имеется, например, в роли вектора входных переменных, и в роли вектора коэффициентов или весов. А сама функция тогда выглядит как .

Для того чтобы избежать сдвига функции на (что делает функцию аффинной, а не чисто линейной; с формулами чисто линейных функций проще работать, так как сдвиг функции напоминает неприятный частный случай, который нужно постоянно принимать во внимание) авторы часто добавляют к вектору входных переменных фиктивную переменную , значение которой никогда не меняется и составляет 1, и переименовывают в для того чтобы формула приобрела бы окончательный вид
. В результате задача оптимизации, которую нужно решить, учитывая то, что — это набор данных для аппроксимации, выглядит так:

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

Более очевидной связь подобных задач с линейной комбинацией векторов становится тогда, когда пытаются моделировать нелинейные системы. Суть тут в том, чтобы определить класс функций, называемых базисными функциями , и допустить, чтобы аппроксимация представляла бы собой любую линейную комбинацию функций в , то есть — любую функцию в пределах :

Опять же, вместо того, чтобы умножать каждую координату входного вектора на коэффициент , мы «взвешиваем» вклад каждой базисной функции (когда нам дан весь входной вектор) в выходные данные. Если базисные функции должны дать нам единственную координату — (
), это значит, что мы возвращаемся к линейной регрессии.

В результате задача оптимизации будет заключаться в том, чтобы выбрать коэффициенты, минимизирующие ошибку аппроксимации:

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

Любой квадратичный полином от трёх переменных может быть представлен в виде линейной комбинации этих базисных функций. Кроме того, обратить внимание на то, что если рассматривать это как базис векторного пространства, тогда вектор будет представлен набором из 10 чисел — из десяти коэффициентов полинома. Это — то же самое, что , но с другой интерпретацией того, какой смысл имеют компоненты векторов. Учитывая это, мы теперь знаем о том, как находить скалярные произведения векторов, проекции векторов, и много чего ещё, хотя всё это может и не иметь такого же геометрического смысла.

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

Простой стохастический градиентный спуск

Хотя существуют аналитические решения многих регрессионных задач (включая задачу квадратичной регрессии, хотя и с небольшим изменением), градиентный спуск — это достаточно простое решение, позволяющее продемонстрировать то, как оптимизатор может находить «приемлемые» линейные комбинации векторов. Нижеприведённый код написан на Python 3.9, этот код можно найти на GitHub.

Начнём с объявления нескольких полезных псевдонимов типов:

Затем объявим простой класс-обёртку для базисных функций:

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

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

Здесь — это линейная комбинация базисных функций:

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

Затем мы вычисляем градиент применительно к отдельным компонентам , используя правило дифференцирования сложной функции, и учитывая, что единственный компонент линейной комбинации векторов, отличающийся ненулевым влиянием на градиент для — это компонент, содержащий . Это — один из главных плюсов использования линейной комбинации векторов, который заключается в простоте вычисления градиента:

Ещё одна сильная сторона линейности заключается в том, что этой формуле безразлично содержимое исходных базисных функций. Это будет так до тех пор, пока веса не появятся в формуле для базисных функций. Попробуйте, в качестве упражнения, изменить эту реализацию так, чтобы в каждой из точек данных применялась бы собственная радиальная базисная функция (в конце статьи есть примечание о том, почему это, в реальной жизни, может быть непросто).

И, наконец, реализуем ядро алгоритма градиентного спуска, в которое входят механизмы, упрощающие отладку кода:

Сгенерируем какой-нибудь простой набор данных и запустим оптимизацию:

Алгоритму на то, чтобы сойтись, может понадобиться несколько тысяч шагов. Сколько именно — зависит от того, как отработал генератор случайных чисел при подготовке данных. Но обычно алгоритм сходится к решению, дающему ошибку меньше 1. Вот график, на котором показана связь ошибки и шагов алгоритма градиентного спуска для задачи квадратичной регрессии.

Ошибка и шаги алгоритма

Ядра и регуляризация

Я завершу этот материал пояснениями, на которые ссылался в статье.

Настоящее полиномиальное ядро. Мы решили использовать простой набор полиномиальных функций. Это тесно связано с концепцией «ядра», но «настоящее» полиномиальное ядро использует немного другие базисные функции. Оно масштабирует некоторые из базисных функций, используя . Но зачем это делать? Ответ сводится к технике повышения эффективности вычислений, называемой «ядерным трюком». Этот «трюк», если кратко его описать, позволяет вычислять скалярное произведение двух линейных комбинаций векторов в векторном пространстве без вычисления координат данных в пространстве. Если в реализации используемого алгоритма регрессии используются только скалярные произведения векторов (что справедливо для аналитических решений регрессионных задач), то в нашем распоряжении оказываются сильные стороны нелинейного моделирования признаков и нам, при этом, не нужно тратить ресурсы на непосредственное вычисление признаков. В этой связи уместно будет обсудить гораздо больше теоретических математических вопросов (см. также: Reproducing Kernel Hilbert Space), но тут я не буду углубляться в эту тему.

Что не так с упражнением про радиальные базисные функции? В этом упражнении я предложил вам создать семейство базисных функций, по одной функции для каждой точки данных. Проблема тут заключается в том, что наличие настолько большого количества базисных функций делает пространство линейной комбинации векторов слишком выразительным. В ходе оптимизации произойдёт переобучение модели. В результате получится нечто, напоминающее справочную таблицу: каждой точке данных соответствует отдельная запись. При этом такая модель редко показывает хорошие результаты при обработке новых точек данных, которых не было в учебном наборе. Дело в том, что этих точек нет в найденной алгоритмом оптимизации «справочной таблице». На практике, для того чтобы справиться с этой проблемой, обычно, при расчёте ошибки, используют дополнительный компонент, соответствующий метрикам L1 или L2 вектора весовых коэффициентов. Это позволяет обеспечить то, что общий размер весов будет небольшим, то, что большинство весов, в случае с применением метрики L1, будут нулевыми, и то, что лишь немногие веса (самые важные) будут ненулевыми. Процесс введения «штрафов» за «размеры» линейных комбинаций векторов называют регуляризацией.

Что вы посоветовали бы почитать программистам, которые хотят с нуля освоить линейную алгебру?

Линейная комбинация векторов

Линейной комбинацией векторов \bar{a}_{1} ,\; \bar{a}_{2} ,...,\; \bar{a}_{n}с коэффициентами \lambda _{1} ,\; \lambda _{2} ,...,\; \lambda _{n}называется выражение вида:

\[\lambda _{1} \bar{a}_{1} +\lambda _{2} \bar{a}_{2} +...+\lambda _{n} \bar{a}_{n} (1)\]

Например. Линейной комбинацией векторов \bar{a}_{1} =\left(2;\; -3\right),\ \bar{a}_{2} =\left(1;\; 0\right),\ \bar{a}_{3} =\left(-1;\; 2\right)с коэффициентами \lambda _{1} =1,\ \lambda _{2} =-1и \lambda =3есть выражение

\[\left(2;\; -3\right)-\left(1;\; 0\right)+3\cdot \left(-1;\; 2\right)\]

Если все коэффициенты линейной комбинации (1) равны нулю одновременно: \lambda _{1} =\lambda _{2} =...\lambda _{n} =0, то такая линейная комбинация называется тривиальной.

0\cdot \left(2;\; -3;\; 1\right)+0\cdot \left(1;\; 0;\; -1\right)+0\cdot \left(-1;\; 2;\; 2\right)

Например.

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

0\cdot \left(2;\; -3;\; 1\right)-3\cdot \left(1;\; 0;\; -1\right)+0\cdot \left(-1;\; 2;\; 2\right)

Например.

Линейная комбинация векторов

Линейной комбинацией векторов Линейная комбинация векторовс действительными коэффициентами Линейная комбинация векторовназывают вектор Линейная комбинация векторов

Коллинеарными называют два вектора Линейная комбинация векторовлинейная комбинация которых с некоторыми действительными числами Линейная комбинация векторовпринимает вид Линейная комбинация векторов, причем Линейная комбинация векторовне равны одновременно нулю. Геометрический смысл: векторы Линейная комбинация векторовпараллельны одной прямой.

Компланарными называют три вектора Линейная комбинация векторовлинейная комбинация которых с некоторыми действительными числами Линейная комбинация векторов

принимает вид Линейная комбинация векторовпричем Линейная комбинация векторовне равны одновременно нулю. Геометрический смысл: векторы Линейная комбинация векторовпараллельны одной плоскости.

Линейно независимыми векторами на плоскости называются два вектора, если они не коллинеарные, а в трехмерном пространстве — три вектора, если они не компланарные.

Линейная комбинация векторов

Два или три ортогональных (перпендикулярных) вектора являются линейно независимыми и образуют двойку или тройку линейно независимых векторов.

По этой ссылке вы найдёте полный курс лекций по высшей математике:

Если три единичных взаимно перпендикулярных вектора Линейная комбинация векторовобразуют правую тройку векторов, то эти векторы являются базой прямоугольной декартовой системы координат (рис. 1.6). Такие векторы называются ортами координат.

Система координат называется правой потому, что векторы Линейная комбинация векторовимеют такую же ориентацию, как соответственно большой, указательный и средний пальцы правой руки. Для определения правого направления системы координат может быть использовано правило правого винта: если винт вкручивается в ось Oz со стороны нуля, то отвертка вращается от Линейная комбинация векторов

Вектор Линейная комбинация векторовв прямоугольной декартовой системе координат записывается в виде Линейная комбинация векторовгде Линейная комбинация векторов— прямоугольные декартовы координаты вектора Линейная комбинация векторовили проекции этого вектора на соответствующие оси.

Линейная комбинация векторов

Пусть дано несколько векторов. например три вектора Линейная комбинация векторовТогда всякий вектор, имеющий вид Линейная комбинация векторов— некоторые скаляры, называется линейной комбинацией векторов а, Ь. с; говорят также, что d линейно выражается через а, Ь, с, т. е. получается из них с помощью линейных действий. Например, такими линейными комбинациями являются Линейная комбинация векторови т. д. Заданные векторы называются линейно зависимыми, если какой-либо из этих векторов линейно выражается через остальные; в противном случае эти векторы называются линейно независимыми (между собой).

Возможно вам будут полезны данные страницы:

Зависимость векторов

Два вектора линейно зависимы тогда и только тогда, если они параллельны друг другу. Действительно, из определения п. 7.4 вытекает, что если Линейная комбинация векторовНаоборот, если два вектора параллельны, то один из них всегда может растянуть во столько раз, чтобы получить второй (если векторы направлены противоположно друг другу, то коэффициент растяжения отрицательный). Три вектора линейно зависимы тогда и только тогда, когда они параллельны одной плоскости (говорят также: компланарны).

Линейная комбинация векторов

Действительно, пусть Линейная комбинация векторов; отнесем все три вектора а, Ь, с к одному началу и проведем через векторы а и b плоскость (Р). Тогда векторы Линейная комбинация векторовбудут лежать в плоскости (Р), а потому и их сумма, т. е. с, лежит в той же плоскости. Значит, и в исходном положении векторы а, Ь, с были параллельны плоскости (Р). Наоборот, пусть дано, что векторы а, Ь, с параллельны одной плоскости; если тогда их отнести к одному началу, то они все будут лежать в одной плоскости (Р). Если Линейная комбинация векторовто представление с в виде линейной комбинации а и b показано на рис. 7.11; оно называется разложением вектора в плоскости по двум непараллельным векторам. Если же Линейная комбинация векторовто согласно предыдущему абзацу уже из двух векторов а, b один (например, а) линейно выражается через другой (b), т. е. а выражается через b и с.

Четыре или более векторов всегда линейно зависимы. Действительно, пусть даны четыре вектора a, b, с, d; отнесем их к одному началу. Если после этого векторы а, Ь, с окажутся лежащими в одной плоскости,

Линейная комбинация векторов

то по предыдущему абзацу один из них линейно выражается через остальные и т. д. (как в конце предыдущего абзаца). Пусть теперь а, Ь, с не лежат в одной плоскости (рис. 7.12). Тогда проводим через точку D (конец вектора d) прямую, параллельную вектору с до пересечения с плоскостью векторов а и Ь в точке С; затем через С проводим прямую, параллельную вектору Ь, до пересечения с прямой, на которой лежит вектор а, в точке В. Тогда

Линейная комбинация векторов

Это представление называется разложением вектора по трем векторам, не параллельным одной плоскости’, оно же называется разложением вектора по трем осям (на рис. 7.12 по осям Линейная комбинация векторов). Такое разложение часто применяется в теоретической механике и в других дисциплинах при разложении силы потрем направлениям и т. п. Каждое из слагаемых Линейная комбинация векторовназывается составляющей или, что то же, компонентой вектора d по (вдоль) соответствующей оси. Компонента вдоль каждой оси определяется не только направлением этой оси, но и направлениями остальных осей. Однако от ориентации осей, т. е. от указания на них положительного направления, а также от модулей векторов а, Ь и с компоненты не зависят.

Иногда применяется разложение вектора по оси и не параллельной ей плоскости. Это разложение показано на рис. 7.13.

Разложение (7.1) возможно осуществить лишь единственным образом. В самом деле, если бы наряду с (7.1) существовало другое разложение d Линейная комбинация векторовто. приравнивая правые части, мы получим Линейная комбинация векторовоткуда вытекает линейная зависимость векторов а, Ь, с (почему?). Если дано более четырех векторов, то уже из первых четырех векторов один линейно выражается через все остальные, т. е. векторы линейно зависимы.

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

Если а, Ь. с —такой базис, то в формуле разложения (7.1) набор чисел alt=»Линейная комбинация векторов» />однозначно определяется вектором d и, наоборот, однозначно определяет его; эти числа alt=»Линейная комбинация векторов» />являются координатами вектора d в базисе а, Ь, с (относительно базиса а, Ь, с).

Коротко формулу (7.1) записывают так: Линейная комбинация векторов, однако надо помнить, что координаты вектора зависят не только от него самого, но и от выбора базиса. Если все рассматриваемые векторы имеют одинаковую размерность, то координаты Линейная комбинация векторов— числа, и упорядоченная (т. е. взятая в определенном порядке) тройка Линейная комбинация векторовчисел называется числовым вектором.

Знание координат векторов в фиксированном базисе позволяет производить действия над ними по простым правилам:

Линейная комбинация векторов

Векторы на плоскости имеют две координаты, и в приведенных правилах третья координата отсутствует.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *