Вы находитесь на странице: 1из 4

2.

1 Векторные пространства, матрицы и тензорные


вычисления
Векторная алгебра
Операции с векторами и матрицами, используемые в нейросетях
Матрицы и матричное умножение: расчет нейросети
Трехмерные и четырехмерные тензоры
Представление и обработка картинок в виде тензоров

Операции с векторами и матрицами, используемые в нейросетях


Как используются вектора, матрицы и тензора в нейросетевых вычислениях?

Основные операции с векторами и матрицами: сложение, умножение, матричное умножение,


транспонирование, конкатенация

Вы уже знакомы с векторами и матрицами и их реализацией в numpy. Поэтому в этом разделе курса
мы будем использовать примеры реализаций полезных операций с помощью numpy. Многие
современные библиотеки реализуют нейросетевые вычисления, копируя интерфейс библиотеки numpy
или беря ее за основу (pyTorch, trax). Также все современные нейросетевые библиотеки обеспечивают
интеграцию с библиотекой numpy на основе преобразования представления тензоров numpy в
собственные тензора и обратно.

In [2]:
# импорт библиотеки numpy
import numpy as np

Рис.2.2.1. Пример структуры полносвязной нейросети

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


обработку совокупности/выборки векторов, их нормализацию и деление выборки на обучающую,
валидационную и тестовую;

Расчет любого полносвязного слоя нейросети включает:

матричное умножение входного вектора x на матрицу весов W: z = W ∗ x;


расчет функции активации для вектора - результата матричного умножения: a = f a(z).

Объединение выхода разных слоев подразумевает сложение или конкатенацию векторов:

z sum = z1 + z2; z cnc = (z1, z2)

Обучение нейросети включает:

расчет функции потерь (loss function) для выходного вектора/тензора нейросети y;


в качестве такой функции может выступать средний квадрат ошибки вектора отклонения:

ε = y goal − y,

ε2
loss =
len(ε)

в сверточных и в реккурентных сетях есть слои, использующие скалярное умножение и


усреднение.

(С учетом использования для обучения и расчета пакетов образцов - пакетов векторов, все еще
сложнее)

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

Начнем с иллюстрации операций над векторами и матрицами.

Скалярное умножение векторов

Скалярное умножение векторов лежит в основе нейросетевых вычислений. Рассмотрим простой


пример.

Пусть у нас имеется входной вектор размерности 3:

x = (x 1, x 2, x 3)

Например, вектор x описывает результаты выполнения каким-либо студентом трех заданий


контрольной работы, т.е. баллы за задания или степень их выполнения.

Также мы задали вектор весов вклада этих заданий в общую оценку уровня знаний:

w = (w 1, w 2, w 3)

ТОгда оценить уровень знаний по результатам выполнения студентом контрольной работы мы можем
с помощью скалярного произведения этих двух векторов:

z abs = w ∗ x = w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3
Если нас интересует не абсолютное значение числа z abs, некоторой оценки уровня знаний, которая не
имеет большого смысла, кроме как ранжировать обучающихся, а мы хотим понять, кого из студентов
можно считать успешно сдавшим контрольную (и раздел курса), то можно задать некоторый порог z lim
(установленный экспертом), или вес смещения w 0 = − z lim.

Если z = w ∗ x ≥ z lim, то считаем, что студент успешно сдал контрольную. Если ввести переменную
z = z abs − z lim, то:

z = w ∗ x − zlim = w 0 ∗ 1 + w 1 ∗ x 1 + w 2 ∗ x 2 + w 3 ∗ x 3

По знаку этой переменной мы и можем судить о том, успешно (z ≥ 0) или неуспешно (z < 0) сдал студент
контрольную.

Если в вектор x добавить впереди 1, а в вектор w добавить вес смещения w 0, то критериальная оценка
успешности может быть найдена просто как скалярное произведение этих векторов

z = w ∗ x, w = (w 0, w 1, w 2, w 3), x = (1, x 1, x 2, x 3)

именно по такому принципу и работает простешая модель нейрона - персептрон (рис.2.2.2)

Рис.2.2.2. Математическая модель нейрона

Здесь

y = f a(z), z = w ∗ x

где

x = (1, x 1, x 2, . . , x n) - вектор входного сигнала размерности n+1, x 0 = 1;

W = (W 0, W 1, W 2, . . , W n) - вектор весов размерности n+1;

f a(z) - функция активации, определяет возбуждение нейрона (выходной сигнал) в зависимости от


суммарного входа z.
В самом простом случае функция активации нейрона равна sign(z) - единичная ступенька, т.е.

y = sign(W ⋅ x) = { −1
1
если W ⋅ x < 0
если W ⋅ x ≥ 0

т.е. выход нейрона равен 1, если студент успешно сдал контрольную работу и равен -1, если не сдал.

ЗАДАЧА

Пусть к.р., состоит из трех заданий, значения весов которых равны:

W = (1, 2, 3)

За каждое задание студент может получить от 0 до 10 баллов.

Значение порога успешности равно 40 баллам.

Определите сдал студент или нет контрольную работу, если его баллы за соответствующие задания
равны:

x = (10, 8, 5)

Резюме
перечислили основные операции, которые приходится выполнять при работе с нейросетями;
вспомнили что такое скалярное произведение векторов;
рассмотрели, как с помощью скалярного произведения векторов моделируется работа простого
нейрона;

Вам также может понравиться