ОглавлениеВВЕДЕНИЕЧАСТЬ ПЕРВАЯ. ВЕКТОРНАЯ АЛГЕБРА Глава I. ЛИНЕЙНЫЕ ОПЕРАЦИИ НАД ВЕКТОРАМИ 2. Скаляры и векторы. 3. Равенство векторов. 4. Скользящие и приложенные векторные величины. 6. Орт вектора. 7. Угол между двумя векторами. § 2. Сложение векторов 1. Сложение двух векторов. 2. Сложение более чем двух векторов. 3. Модуль суммы. 4. Законы сложения. § 3. Вычитание векторов § 4. Умножение и деление вектора на скаляр 2. Законы умножения вектора на скаляр. 3. Деление вектора на скаляр. 4. Выражение вектора через его модуль и орт. § 5. Линейные зависимости между векторами 2. Коллинеарные векторы. 3. Компланарные векторы. 4. Разложение вектора по трем некомпланарным векторам. 5. Метод координат. Глава II. ТЕОРИЯ ПРОЕКЦИЙ. ПРЯМОУГОЛЬНЫЕ КООРДИНАТЫ § 1. Проекции векторов на ось § 3. Прямоугольная система координат в пространстве 1. Правая и левая прямоугольные системы координат. 2. Разложение вектора по ортам осей 3. Линейные операции над векторами в координатной форме. 4. Радиус-вектор и координаты точки. 5. Определение вектора по его началу и концу. 6. Деление отрезка в данном отношении. Глава III. ПРОИЗВЕДЕНИЯ ДВУХ ВЕКТОРОВ § 1. Скалярное произведение двух векторов 2. Работа силы. 3. Определение. 4. Равенство скалярного произведения нулю. 5. Законы скалярного умножения. 8. Скалярное произведение в координатной форме. 9. Неопределенность действия, обратного скалярному умножению. § 2. Векторное произведение двух векторов 3. Условия равенства нулю векторного произведения. 4. Законы векторного умножения. 5. Векторные произведения координатных ортов. 6. Определители. 7. Векторное произведение в координатной форме. 8. Неопределенность действия, обратного векторному умножению. Глава IV. ПРОИЗВЕДЕНИЯ ТРЕХ ВЕКТОРОВ § 1. Простейшее произведение трех векторов § 2. Векторно-векторное произведение трех векторов 3. Правило разложения векторно-векторного произведения. § 3. Векторно-скалярное произведение трех векторов 2. Законы векторно-скалярного умножения 3. Обращение в нуль векторно-скалярного произведения трех векторов. 4. Векторно-скалярное произведение в координатной форме. § 4. Выражение векторно-скалярного произведения через скалярные произведения Глава V. ФУНКЦИИ ВЕКТОРОВ § 1. Произведения четырех векторов 2. Выражение скалярного произведения двух векторных произведений (а x b), (р x q) через скалярные произведения. 3. Разложение вектора (а, b, с) R по трем векторам a, b, c. § 2. Произведения пяти и шести векторов 2. Разложение вектора (a, b, c) (m x n) по векторам a, b, c. 3. Выражение произведения двух смешанных произведений (a, b, c) (l, m, n) через скалярные произведения. § 3. Основные теоремы о функциях векторов 1. Рациональные функции векторов. 2. Элементарные функции векторов. 3. Произвольные скалярные функции от векторов. 4. Произвольные векторные функции векторов. Глава VI. ОСНОВНЫЕ ЗАДАЧИ § 2. Основные задачи, связанные со скалярным умножением векторов § 3. Основные задачи, связанные с векторным умножением векторов § 5. Простейшие векторные уравнения § 6. Геометрические инварианты фигур 2. Треугольник. 3. Полные системы инвариантов треугольника. 4. Тетраэдр. 5. Полные системы инвариантов тетраэдра. 6. Гексаэдр с треугольными гранями. ЧАСТЬ ВТОРАЯ. ДИФФЕРЕНЦИАЛЬНАЯ ГЕОМЕТРИЯ § 1. Векторы, зависящие от скаляра 2. Вектор-функция в координатной форме. 3. Годограф вектора. 4. Предел вектора. § 2. Дифференцирование вектора по скаляру 2. Геометрический смысл производной вектора по скаляру. 3. Механический смысл производной. 5. Дифференциал вектора. 6. Инвариантность дифференциала. § 3. Формула Тейлора Глава VIII. ДИФФЕРЕНЦИАЛЬНАЯ ГЕОМЕТРИЯ ЛИНИИ В ПРОСТРАНСТВЕ § 1. Основные дифференциально-геометрические понятия, связанные с линией 2. Касательная. 3. Соприкасающаяся плоскость. 4. Главная нормаль и бинормаль. 5. Кривизна. 6. Кручение. 7. Длина дуги. § 2. Основные формулы дифференциальной геометрии линий в пространстве 1. Дуга как параметр. Дифференциал дуги. 2. Орт касательной. Первая основная формула. 3. Инвариантность геометрических понятий. 5. Бинормаль и кручение. Третья основная формула. 6. Винтовая линия. § 3. Сопровождающий трехгранник 2. Система дифференциальных уравнений движения сопровождающего трехгранника. 3. Расположение линии относительно сопровождающего трехгранника. 4. Линии без кривизны. 5. Линии без кручения. § 4. Инвариантные формулы Глава IX. ПЛОСКИЕ ЛИНИИ § 1. Дифференциальные уравнения плоской линии § 2. Кривизна плоской линии § 3. Круг кривизны § 4. Эволюта § 5. Эвольвента Глава X. ПРИЛОЖЕНИЯ К МЕХАНИКЕ § 2. Движение твердого тела вокруг неподвижной точки 2. Формула Эйлера. 3. Угловая скорость. 4. Доказательстве существования угловой скорости твердого тела. § 3. Относительная производная вектора 2. Абсолютная и относительная производные вектора. 3. Общий случай движения твердого тела. Глава XI. ДИФФЕРЕНЦИАЛЬНАЯ ГЕОМЕТРИЯ ПОВЕРХНОСТИ § 1. Векторные функции нескольких скалярных аргументов § 2. Параметризованная поверхность 2. Поверхность в декартовых координатах. 3. Параметрическая сеть. 4. Линия на параметризованной поверхности. § 3. Касательная плоскость и нормаль 3. Нормальный вектор. 4. Преобразование параметров. 2. Площадь области на поверхности. 3. Формула для вычисления площади поверхности, заданной уравнением z=z(x,y). 4. Элемент площади поверхности. 5. Векторный элемент площади поверхности. § 5. Первая квадратичная форма поверхности 2. Внутренняя геометрия поверхности. 3. Длина дуги линии на поверхности. 4. Угол между линиями на поверхности. 5. Площадь области на поверхности. § 6. Вторая квадратичная форма поверхности 2. Нормальная кривизна линии на поверхности. 3. Теорема Менье. § 7. Главные направления и главные кривизны поверхности 3. Перпендикулярность главных направлений. 4. Формула Эйлера. 5. Полная и средняя кривизны поверхности. ЧАСТЬ ТРЕТЬЯ. ТЕОРИЯ ПОЛЯ § 1. Функция поля. Поверхности уровня § 2. Градиент поля 2. Первая теорема о градиенте. § 3. Производная по направлению 2. Выражение производной по направлению через градиент. 3. Вторая теорема о градиенте. § 4. Направляющие косинусы нормали поверхности Глава XIII. КРИВОЛИНЕЙНЫЙ И ПОВЕРХНОСТНЫЙ ИНТЕГРАЛЫ § 1. Криволинейный интеграл как определенный интеграл от сложной функции 2. 3. Основные свойства криволинейного интеграла. 4. Обобщенный криволинейный интеграл. 5. Примеры. § 2. Криволинейный интеграл как предел криволипейной интегральной суммы § 3. Поверхностный интеграл как двойной интеграл от сложной функции 2. Определение простейшего поверхностного интеграла. 3. Поверхностный интеграл от билинейной формы по произвольной поверхности. § 4. Поверхностный интеграл как предел поверхностной интегральной суммы § 5. Поверхностный интеграл в параметрической форме 2. Параметрический поверхностный интеграл. 3. Поверхностный интеграл как предел суммы. § 6. Кратный интеграл как предел обобщенной интегральной суммы Глава XIV. ВЕКТОРНОЕ ПОЛЕ И ЕГО ИНТЕГРАЛЬНЫЕ ИНВАРИАНТЫ § 1. Векторное поле § 2. Векторные линии § 3. Циркуляция поля вдоль линии § 4. Поток поля через поверхность Глава XV. ТЕОРЕМА ОСТРОГРАДСКОГО. ДИВЕРГЕНЦИЯ ПОЛЯ § 1. Формула Остроградского § 2. Дивергенция поля 2. Дивергенция как предел отношения. 3. Гидромеханический смысл дивергенции. 4. Теорема Остроградского. Глава XVI. ТЕОРЕМА СТОКСА. РОТАЦИЯ ПОЛЯ § 1. Формула Стокса § 2. Ротация поля § 3. Оператор Гамильтона Глава XVII. СПЕЦИАЛЬНЫЕ ВЕКТОРНЫЕ ПОЛЯ § 1. Потенциальное поле 3. Циркуляция потенциального поля по замкнутому контуру. 4. Циркуляция потенциального поля между двумя точками. 5. Потенциал. 6. Элемент циркуляции. 7. Характеристические признаки потенциального поля. 8. Вычисление потенциала. 9. Центральное поле. 10. Вихревые шнуры. § 2. Соленоидальное поле 3. Поток соленоидального поля через замкнутую поверхность. 4. Трубчатое строение соленоидального поля. 5. Векторный потенциал. 6. Характеристические признаки соленоидального поля. 7. Источники и стоки. § 3. Потенциальное несжимаемое поле Глава XVIII. ПРОСТЕЙШИЕ ЭЛЕКТРОМАГНИТНЫЕ ПОЛЯ § 1. Электростатическое поле точечного заряда 2. Дивергенция поля точечного заряда. 3. Поток поля точечного заряда через замкнутую поверхность. 4. Ротация поля точечного заряда. 5. Потенциал поля точечного заряда. § 2. Электростатическое поле системы точечных зарядов 2. Дивергенция и ротация поля системы точечных зарядов. 3. Поток поля системы точечных зарядов через замкнутую поверхность. 4. Потенциал поля системы точечных зарядов. 5. Непрерывно распределенный заряд. § 3. Магнитное поле тока 2. Напряженность магнитного поля тока, текущего по бесконечному прямолинейному проводу. 3. Векторные линии поля H. 4. Потенциал поля Н. 5. Провод как вихревой шнур. Глава XIX. ВЕКТОРНОЕ ПОЛЕ В КРИВОЛИНЕЙНЫХ КООРДИНАТАХ § 1. Криволинейные координаты 3. Координатные поверхности и линии. 4. Линейный элемент. 5. Элемент объема. 6. Подвижной репер. 7. Векторное поле в криволиненных координатах. § 2. Дифференциальные операции в криволинейных координатах 2. Дивергенция в криволинейных координатах. 3. Ротация в криволинейных координатах. § 3. Ортогональные координаты § 4. Цилиндрические координаты 2. Линейный элемент и элемент объема в цилиндрических координатах. 3. Дифференциальные операции в цилиндрических координатах. § 5. Сферические координаты |
Векторы и матрицы | Вводный курс ML
Все курсы > Вводный курс > Занятие 12
Содержание занятия
Ещё на первом занятии мы упомянули, что в уравнении может быть несколько независимых переменных.
$$y = w_1 \times x_1 + w_2 \times x_2 + w_0 $$
Такое уравнение нельзя изобразить на координатной плоскости (имеющей два измерения, x и y), потому что в нем три переменных, а значит три измерения. Нужен график, имеющий три плоскости.
С помощью этого графика мы можем представить зависимость обхвата шеи не только от роста, но и, например, от веса.
На самом деле измерений может быть и больше, просто так как мы живём в трёхмерном пространстве, представить четыре и более измерений мы не можем. Математически же это вполне возможно.
Данные как векторы и матрицы
Помимо того, что мы можем представить данные на графике (по крайней мере вплоть до третьего измерения), мы также можем представить их в форме вектора. Вектор, по сути, это набор чисел, описывающих координаты наших данных.
Если взять несколько точек и соответственно несколько векторов,
то получится набор чисел, называемых матрицей.
Из сказанного выше очевидно, что любой вектор — не что иное как матрица, в которой один столбец или одна строка.
Область математики, изучающая векторы и матрицы, называется линейной алгеброй.
На этом занятии мы рассмотрим два аспекта векторных и матричных вычислений. Во-первых, посмотрим на удобный способ умножения одного вектора на другой. Во-вторых, посмотрим как мы можем рассчитать угол между двумя векторами.
Умножение векторов
Вспомним, как мы делали прогноз с помощью нашей модели. Мы умножали вес (наклон) на значение независимой переменной и прибавляли ошибку (сдвиг). Когда у нас несколько независимых переменных и несколько весов, нам нужно их попарно перемножить и сложить произведения.
Если представить и веса, и значения независимых переменных с помощью векторов, то можно воспользоваться инструментом, который называется скалярным произведением векторов (dot product), чтобы получить прогнозное значение (ŷ).
Работа над ошибками. На видео представлена иная схема расположения векторов (см. скриншот ниже), а именно вектор-столбец весов мы умножаем на вектор-строку данных.
Результат вычислений от этого не меняется, однако исправленное положение векторов математически более точное.
Как мы узнаем на следующем курсе, перемножать можно не только векторы, но и матрицы. При этом при нахождении произведения двух матриц мы умножаем строки первой матрицы на столбцы второй. И здесь положение множителей будет иметь значение для вычисления конечного результата.
Поэтому и векторы, которые являются частным случаем матрицы с одной строкой или одним столбцом, правильнее расположить именно таким образом.
Добавлю, что если вы не вполне поняли, что это значит, ничего страшного, на следующем курсе мы во всем разберемся.
Скалярное произведение векторов на Питоне
На Питоне это реализовано с помощью библиотеки Numpy. До сих пор мы создавали массивы Numpy в, скажем так, служебных целях, чтобы использовать их, например, в моделях Scikit-learn.
Сегодня рассмотрим эти массивы сами по себе. По сути, массив Numpy (Numpy array), это и есть вектор или матрица. Давайте посмотрим, как создать такой массив, и как перемножить два вектора.
Вначале откроем ноутбук к этому занятию⧉
Вначале разберемся с основами работы с массивами.
1 2 3 4 5 6 7 8 | import numpy as np
# предположим мы записали наши данные # роста, веса и обхвата шеи одного человека в список data = [1.72, 54, 36.2]
# убедимся, что это список с помощью функции type() type(data) |
# преобразуем список в массив Numpy data_Numpy = np.array(data) data_Numpy |
array([ 1.72, 54. , 36.2 ]) |
# если у нас несколько наблюдений, то нужна матрица, т.е. # по сути, несколько векторов data_matrix = np.array([[1. 72, 54, 36.2], [1.74, 58, 36.3], [1.68, 52, 32.9]]) data_matrix |
array([[ 1.72, 54. , 36.2 ], [ 1.74, 58. , 36.3 ], [ 1.68, 52. , 32.9 ]]) |
# мы можем посмотреть размерность матрицы (количество строк и столбцов) data_matrix.shape |
(3, 3) |
Теперь мы готовы умножить один вектор на другой.
1 2 3 4 5 6 7 | # даны два вектора в виде массивов Numpy
a = np.array([1.72, 54]) # вектор данных w = np.array([19.86, 0.05]) # вектор весов
# перемножим их вручную 1.72 * 19.86 + 54 * 0.05 |
36. 8592 |
# используем скалярное произведение векторов np.dot(a, w) |
36.8592 |
Именно благодаря скалярному произведению векторов компьютер так эффективно перемножает веса и данные и минимизирует функцию потерь.
Теперь посмотрим на угол между векторами.
Угол между векторами
Представление данных в форме вектора имеет ещё одно полезное свойство. Мы можем измерить близость двух векторов или угол между ними. Чем угол меньше, тем они ближе.
Посмотрим на формулу.
$$ \cos(\theta )={\mathbf {b} \cdot \mathbf {c} \over \|\mathbf {b} \|\|\mathbf {c} \|} $$
В этой формуле мы умножаем один вектор на другой и делим на произведение их длин. Результатом будет косинус угла θ между ними. Зная косинус, мы можем найти сам угол в градусах.
Косинусное сходство с помощью Питона
В первую очередь найдем косинус угла по формуле, приведенной выше.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # даны два вектора (данные двух человек) # нам нужно понять, насколько они схожи b = np.array([1.72, 54, 36.2]) c = np.array([1.56, 47, 30.0])
# вначале выполним операции в числителе формулы numerator = np.dot(b, c)
# теперь займемся знаменателем и # (1) рассчитаем длины (по большому счету, это теорема Пифагора) bLen = np.linalg.norm(b) cLen = np.linalg.norm(c)
# (2) перемножим их denominator = bLen * cLen
# посмотрим, чему равен косинус угла между векторами cosine = numerator/denominator cosine |
0.9997468709497721 |
Теперь рассчитаем угол в градусах
1 2 3 4 5 6 | # для этого вначале вычислим угол в радианах angle_radians = np. arccos(cosine)
# затем в градусах angle_degrees = angle_radians * 360/2/np.pi angle_degrees |
1.2891925481394304 |
Как мы видим угол чрезвычайно мал, а значит векторы очень близки друг к другу.
Мы будем на практике применять косинусное сходство или близость векторов, например, при построении рекомендательных систем для сопутствующих товаров в интернет-магазине. Когда вы покупаете, например, холодильник, то микроволновую печь вам рекомендуют именно потому, что вектор ваших покупок очень близок к вектору покупок тех, кто купил микроволновку.
Подведем итог
На этом занятии мы узнали, что данные можно представить в виде вектора и матрицы. Это создает новые возможности для вычислений и преобразования данных.
В частности, мы посмотрели на то, как умножить один вектор на другой через скалярное произведение векторов, а также научились вычислять косинусное сходство между двумя векторами.
Вопросы для закрепления
Какие два вектора мы перемножаем для того, чтобы сделать прогноз?
Посмотреть правильный ответ
Ответ: вектор весов и вектор данных (ну и еще прибавляем ошибку).
Какое расстояние (сходство) помогает определить близость векторов?
Посмотреть правильный ответ
Ответ: косинусное расстояние
Дополнительные упражнения⧉ вы найдете в конце ноутбука.
Последний штрих
Прежде чем перейти к построению моделей остается последний штрих: научиться разделять данные, на которых мы будем обучать модель.
Можете ли вы умножить два вектора $v$ и $u$, используя умножение вместо скалярных или перекрестных произведений
Резюме: Мало того, что первых произведений векторов были определены именно таким образом, но точечные и перекрестные произведения являются всего лишь частями этого первого произведения — произведения кватернионов, также известного как произведение Гамильтона.
Возможно, вам будет интересно узнать, что $i$, $j$ и $k$ были введены Уильямом Гамильтоном как мнимые части кватернионов. И он разработал правила умножения своих чисел именно с учетом этого распределительного свойства (и некоторых других замечательных свойств, таких как ассоциативность). 92=-1$.
Что ж, комплексные числа чрезвычайно полезны в физике, но Гамильтон хотел сделать еще один шаг — он хотел обобщить комплексные числа до $3$ измерений. Затем мы могли бы использовать эти обобщенные комплексные числа для представления точек в трехмерном пространстве.
Он так и не нашел $3$-D обобщение комплексных чисел, но нашел $4$-D обобщение — кватернионы.
Кватернионы — это числа вида $a+bi+cj+dk$, где $a, b, c, d$ — действительные числа, а $i, j, k$ — 92)=-k \\ ij(-1) = -k \\ ij = k$$
Гамильтон также является парнем, который ввел слова «вектор» и «скаляр». Для Гамильтона скаляры были действительными частями его кватернионов, а векторы были мнимыми частями. Например, если у вас было $z= 4 + 5i + 6j-7k$, то скалярная часть $z$ равна $4$, а векторная часть равна $5i+6j-7k$.
Кватернионы являются прародителями не только современных векторов, но и точечных и кросс-произведений. Давайте посмотрим на произведение Гамильтона двух кватернионов с 0 скалярными частями:
$$(a_1i + a_2j + a_3k)(b_1i+b_2j + b_3k) \\ = a_1b_1(ii) + a_1b_2(ij) + a_1b_3(ik) + a_2b_1(ji) + a_2b_2(jj) + a_2b_3(jk) + a_3b_1(ki) + a_3b_2(kj) + a_3b_3(kk) \\ = -a_1b_1 + a_1b_2(k) + a_1b_3(-j) + a_2b_1(-k) — a_2b_2 + a_2b_3(i) + a_3b_1(j) + a_3b_2(-i) — a_3b_3 \\ = -(a_1b_1 + a_2b_2 + a_3b_3) + \left[(a_2b_3-a_3b_2)i + (a_3b_1-a_1b_3)j + (a_1b_2 — a_2b_1)k\right]$$
Но вы должны узнать эту часть: это просто $-\mathbf a \cdot \mathbf b + \mathbf a \times \mathbf b$. После некоторого исследования было обнаружено, что эти два субпродукта продукта Гамильтона очень и очень полезны.
Вы можете удивиться, почему сегодня мы не используем кватернионы почти так же часто, как векторы — в основном это связано с работой некоторых очень влиятельных математиков и физиков, таких как Оливер Хевисайд и Джосайя Гиббс.
В частности, Джозии Гиббсу очень не нравился подход Гамильтона к кватернионам. Поэтому он потратил несколько лет на разработку исчисления всего лишь векторных частей кватернионов, которое он считал гораздо более полезным, чем полный анализ кватернионов.
Гиббс написал краткий трактат о своих методах, но не смог (или не захотел) написать полный учебник по этому предмету. Новый аспирант Гарварда Эдвин Уилсон был убежден своим научным руководителем, что он должен написать учебник, основанный на трактате Гиббса. Он назывался « Векторный анализ » и был одним из самых важных учебников в истории математики. Не потому, что это было так дальновидно само по себе, а потому, что методы, обозначения и идеи этой книги стали настолько фундаментальными для современной математики, что мы преподаем их старшеклассникам (и, конечно, каждый студент университета должен был изучать векторное исчисление, линейная алгебра или классическая механика — почти все из них).
Как выполнить поэлементное умножение двух векторов?
Вайженат_Бирадар (Вайдженат Бирадар)
#1
У меня есть два вектора длины n каждый, я хочу поэлементное умножение двух векторов. результатом будет вектор длины n.
2 лайка
2 февраля 2018, 9:49 утра
#2
Вы можете просто использовать a * b
или torch.mul(a, b)
.
20 лайков
Vaijenath_Biradar (Вайдженат Бирадар)
#3
дают скалярное произведение двух векторов. Я хочу поэлементное умножение.
1 Нравится
Вайженат_Бирадар (Вайдженат Бирадар)
#4
пр. a = (a1, a2, … an) и b = (b1, b2, … bn)
Я хочу c = (a1*b1, a2*b2, …, an*bn)
ptrblck
#5
В моем случае это работает. У вас есть скаляр, работающий с этим?
а = факел.randn(10) b = факел.randn(10) с = а * б печать (c. shape)
7 лайков
Vaijenath_Biradar (Вайдженат Бирадар)
#6
Это дает тензор размера 10. Должно быть, я сделал какую-то другую ошибку. Спасибо.
3 лайка
111105 (开顺 张)
#7
Всем привет. У меня вопрос. Выполняется ли оператор * в графическом процессоре?
код
#8
Если оба тензора хранятся на GPU, то да.
Операции написаны для тензоров ЦП и ГП, поэтому, пока данные передаются на устройство, будет использоваться ГП.
6 лайков
ВерховныйПРОК (Высший процесс)
#9
Пользователям pytorch повезло, что вы всегда здесь
6 лайков
111105 (开顺 张)
#10
Большое спасибо!
cvogt
#11
Привет,
Существует ли практическое правило в отношении смешивания переменных на основе процессора и графического процессора? Например, если у меня есть тензор, проходящий через функцию с сочетанием переменных, хранимых в ЦП (не тензорных) и в ГП, стоит ли объявлять каждую переменную как тензор факела на ГП в начале вызов функции?
код
#12
Вы имеете в виду простые переменные Python под «переменными, хранящимися в ЦП (не тензорными)», например.