Глава 5

Функция прогнозирования и Универсальная теория прогнозирования

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

46мин 8 553Слов 10Материалов

Ключевые идеи

  • Линейная Функция Прогнозирования и Аффинное Преобразование
  • Типичные структуры данных
  • Демонстрационные примеры аффинного преобразования
  • Кодирование Параметров и Основной Механизм Обучения
  • Градиент функции предсказания
  • Массив Аффинных Преобразований (ATA)

Практическое задание

Возьмите небольшой список или словарь данных, преобразуйте его в NumPy-массив и посчитайте две простые статистики. Свяжите результат с главой "Функция прогнозирования и Универсальная теория прогнозирования".

Открыть лабораторию

Функция прогнозирования и Универсальная теория прогнозирования

Открыть лабораторию

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

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

Аффинное преобразование — это сочетание линейного преобразования и сдвига, контролируемое параметрами обучения. Оно способно воспроизводить любую функцию до первого порядка в пространстве признаков, что критично для предсказательной способности моделей ML.

В этой главе мы подробно рассмотрим формулировку и предсказуемость функций прогнозирования, перейдя к анализу аффинных преобразований, их свойств и влияния на поведение моделей. А также приведем примеры на языке Python. Все коды представленные в этом учебнике и в этой главе в частности можно найти по ссылке https://sohoware.ru/SohoBook/. Основное внимание будет уделено двум аспектам:

Способности модели предсказывать функции в пространстве признаков.

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

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

Обсудим расширение концепции ATU для создания массива аффинных преобразований (АТА), и как это может привести к развитию активационной функции, обернутой вокруг АТА, для формирования многослойных перцептронов (MLP) или глубоких нейронных сетей. Это позволяет понять, как глубокие сети могут достигать предсказуемости высокопорядковых нелинейных функций.

Глава завершается введением в Универсальную теорию прогнозирования, которая предоставляет фундаментальную основу для объяснения эффективности глубоких сетей в прогнозировании. Эта теория помогает понять, почему глубокие сети могут быть так эффективно использованы для предсказательных целей в различных областях машинного обучения.

5.1 Линейная Функция Прогнозирования и Аффинное Преобразование

В искусственных нейронных сетей (ИНС) мы используем аффинное преобразование между данными и параметрами обучения в нейроне, чтобы в некотором роде имитировать процесс трансформации информации в нейротрансмиттере.

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

5.1.1 Линейная функция прогнозирования: Основная гипотеза

Text
В моделях машинного обучения, гипотеза предполагает, что функция прогнозирования z определяется уравнением:

z(w;x)=xw=[1 x] xbww=xw + b=w1x1,…,wpxp+b=i-1pwixi+b, где z(w;x)=x интерпретируется как "функция z от wдля заданного x", а векторы определяются следующим образом:

x = [x1x2,…,xp]∈Xp∈Rp

x= [1 x] =x0 1,x1,x2,…,xp∈Xp∈Rp+1

w=[w1,w2,…,wp]T∈Wp∈Rp

w= [b w]T =[w0 1,w1,w2,…,xp]T∈Wp+1∈Rp+1 Здесь:

xii = 1, 2,...,p являются переменными признаков, используемыми в линейных базовых функциях.

Веса wi(i = 1, 2,...,p) ∈ R и смещение b (также обозначаемое как w0) являются параметрами модели, формирующими векторы в соответствующих пространствах. Шляпка над w указывает на расширенный вектор, включающий смещение b, тем самым формируя новый вектор в гипотетическом пространствеWp+1

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

Мы намеренно объединили наиболее часто используемые формулы для функции прогнозирования z(w;x) в единую, унифицированную форму. Это позволяет четко проиллюстрировать взаимосвязь между всеми этими переменными. Читателям рекомендуется внимательно изучить данную формулировку, чтобы лучше понять последующие формулировки в тексте.

При использовании формулировки z=xw+b, мы называем это формулировкой xw+b. В случае z=xw, где смещение b интегрировано в w, мы называем это формулировкой xw. Обе эти формулировки используются в книге взаимозаменяемо, так как они по сути представляют одну и ту же концепцию. Формулировка xw+b позволяет явно разделить роли весов и смещения во время анализа, в то время как формулировка xw более лаконична в процессах вывода и позволяет явно выразить аффинные преобразования.

5.1.2 Предсказуемость для констант, роль смещения

При прогнозировании констант смещение b оказывается полезным инструментом, обеспечивая корректное выравнивание модели с целевыми значениями. Оно компенсирует систематические ошибки и обеспечивает устойчивость и точность прогнозов. Если мы установим b=0 и будем полагаться исключительно на веса w, наша модель потеряет способность предсказывать простые функции, такие как константа.

Представьте функцию y(x)=c, где c — это постоянная величина, не зависящая от x. Если x=0, то, очевидно, y(x=0)=c. Теперь, если мы хотим использовать уравнение xw+b для предсказания c, необходимо чтобы z(w,b;x=0)=c. Однако, если мы исключим b из уравнения, то независимо от выбора w, гипотеза всегда будет предсказывать z = 0 · w = 0

Это показывает, что без смещения b гипотеза никогда не сможет предсказать значение константы c. Таким образом, простое линейное преобразование с использованием только весов w оказывается недостаточным для адекватного прогнозирования, поскольку оно не способно предсказывать базовые константные значения.

С другой стороны, если смещение b присутствует в модели, мы можем просто установить b=c. Таким образом, гипотеза сможет успешно предсказать константу c. Это также указывает на то, что переменная z должна быть частью аффинного пространства Rp+1, которое является расширенным пространством признаков. В таком пространстве добавление смещения позволяет модели учитывать не только взаимосвязь между признаками и весами, но и абсолютное значение целевой переменной.

5.1.3 Предсказуемость для линейных функций: Роль весов

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

Text
Рассмотрим линейную функцию: y(x) = xk + c, где:

c — это константа,

k — вектор векторного пространстваWp

Хотя k может принадлежать пространству Rp, для проведения векторных операций он должен быть в рамках пространстваWp.

Ключевой момент здесь заключается в правильном выборе параметров модели. Если мы выберем w* = k и b* = c, мы можем точно воспроизвести функцию y(x) с помощью нашей модели. Это выражается следующим образом: z(w*, b*; x) = xk + c = y(x)

Такой выбор параметров w* и b*позволяет модели точно предсказать заданную линейную функцию. Это означает, что любую произвольную линейную функцию, зависящую от переменных x∈Xp, можно предсказать, используя представленную в уравнении z(w;x)=xw гипотезу.

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

5.1.4 Прогнозирование линейных функций: методика машинного обучения

Использование уравнения z(w;x)=xw для предсказания линейной функции является относительно простым процессом. Это связано с тем, что параметры модели (или параметры обучения) можно выбрать на основе наблюдений. В линейной модели, эти параметры обычно представляют собой веса (коэффициенты), которые определяют, как каждый входной признак влияет на предсказываемое значение. Однако для более сложных задач, где связи между данными и предсказываемыми значениями не столь очевидны или где данные имеют более сложную структуру, просто "выбрать" параметры на основе наблюдений уже недостаточно. В таких случаях требуется более систематический подход. Для нахождения оптимальных параметров обучения в более сложных сценариях, можно использовать процесс минимизации. Этот процесс включает в себя нахождение таких значений параметров модели, которые минимизируют ошибку между предсказанными и реальными значениями. На этот раз давайте используем формулировку xw. Мы переписываем уравнение y(x) = xk + c как y(x) =xk гдеk=[ck]T∈Wp+1∈Rp+1

Шаг 1: Определение функции потерь: функция потерь в машинном обучении измеряет, насколько хорошо модель предсказывает правильные значения. Функция потерь оценивает разницу между предсказаниями модели, представленными гипотетическим уравнением xw, и реальными значениями, представленными функцией метки y(x) =xk. Цель состоит в том, чтобы минимизировать эту разницу, делая предсказания модели как можно более точными.

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

Lzw=[z(w;x)-yx]2=(xw-xk)Txw-xk=(wT-kT)[xTx](w-k)здесь:

z(w;x) - это предсказание модели,

Text
y(x) - реальное значение.

Эта функция возводит в квадрат разность между предсказанным и реальным значением, что делает ошибку всегда положительной и увеличивает влияние больших ошибок. Расширенная форма этой функции ошибки (xw-xk)Txw-xk где xw представляет собой предсказание модели, а xk представляет собой целевое значение (метку). Здесь происходит умножение разности предсказаний и истинных значений на ее транспонированный вектор, что приводит к скалярному значению.Далее, уравнение преобразуется в квадратичную форму (wT-kT)[xTx](w-k) где:wT-kT и (w-k) являются векторами разностей между параметрами модели и целевыми значениями,xTx является матрицей, состоящей из произведений входных данных x.

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

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

Шаг 2: Минимизация Функции Потерь: целью этого шага является нахождение оптимальных значений параметров модели w, которые минимизируют функцию потерь Lzw. Эти оптимальные параметры обеспечивают наилучшее соответствие модели данным.

Стационарная точка функции - это точка, в которой все частные производные функции равны нулю. В контексте функции потерь машинного обучения, это означает, что малые изменения параметров модели (w) не приведут к увеличению или уменьшению значения функции потерь. Градиент функции потерь представляет собой вектор всех её частных производных. Он указывает направление наибольшего увеличения функции. Математически, градиент функции потерьL(w) по параметру(w)записывается как:∂L(w)∂w

Text
Стационарная точка достигается, когда градиент функции потерь равен нулю:
∂L(w)∂w=0

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

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.1.4 Прогнозирование линейных функций: методика машинного обучения

В уравнении учитывается симметрия матрицы x Tx,что упрощает вычисления. Симметрия матрицы означает, что её транспонирование не изменяет матрицу. В результате получается уравнение: 2x Tx(w-k)=0

Это уравнение говорит о том, что оптимальные параметры w должны быть равны параметрам k чтобы минимизировать функцию потерь. Однако, поскольку матрица x Tx имеет ранг 1, существует неединственность решения. Это означает, что могут быть другие значения w, которые также удовлетворяют уравнению, но отличаются от k. Эти альтернативные решения находятся в так называемом нулевом пространстве матрицы x Tx . Поскольку существует возможность нескольких решений, необходимо обращать внимание на качество и количество данных. Недостаточное количество точек данных или их низкое качество может привести к тому, что нулевое пространство матрицы не будет пустым, что означает возможность множества решений. Для уникального решения требуется достаточное количество качественных данных, чтобы исключить эти неоднозначности.

Соединим обе формулы: ∂L(w)∂w=2xTx(w-k)=0

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

5.1.5 Аффинное преобразование

С другой стороны, уравнение z(ŵ; x) = xw + b можно использовать для выполнения аффинного преобразования, где веса wi(i = 1, 2, ..., p) отвечают за линейное преобразование. Это означает, что каждый элемент входного вектора x умножается на соответствующий вес, что приводит к изменению масштаба и ориентации исходных данных. А смещение b - за перенос или сдвиг преобразованных данных. Чтобы показать, как это уравнение явно используется для выполнения аффинного преобразования, мы выполняем следующий маневр в матричных формулировках: Сначала, используя каждый wi (i = 1, 2, ..., k) и уравнение (w;x)=xw, мы получаем, zi=xwi

Это уравнение показывает, как каждый элемент входного вектора x трансформируется путем умножения на соответствующие веса wi. Результатом этого умножения является вектор zi, который представляет собой преобразованные данные.

Теперь сформируем следующий вектор,

z=[z1,z2,…,zk]=xb1w1,xb2w2,…,xbkwk=xbW=xW0Wwили просто z =xW

Уравнение начинается с формирования вектора z, который представляет собой результат аффинного преобразования входного вектора x. Вектор z составлен из элементов z1,z2,…,zk, каждый из которых получен в результате преобразования соответствующего элемента входного вектора. Каждый элемент zi вычисляется как x умноженное на сочетание веса wi и смещения bi. Далее, в уравнении объединяются веса и смещения в единую матрицу. Вектор смещений b состоит из b1b2,…,bk. А матрицаW0=w01b1w02b2,…,w0kbk ,каждый из которых соответствует смещению bi. Таким образом, Wпредставляет собой расширенную матрицу весов с включением смещений. На выходном слое нейронной сети аффинное преобразование не требуется, так как данные уже были преобразованы на предыдущих слоях. В этом случае, использованиеW(которое уже включает в себя смещение) позволяет модели прямо перейти к вычислению выходных данных, без необходимости дополнительного аффинного преобразования.

Мы можем построить следующую матричную операцию.

1zTzT=1bT0TWTwT1xTxT=1w0T0TwTwT1xTxTили:1 zz= 1 xx10 bWw=1 xx10W0Ww

или просто:z=xW

В уравнении приводится матричное уравнение, в котором вектор z (преобразованные данные) получается путем умножения расширенного вектора x (входные данные с добавленной единицей в начале) на расширенную матрицу весов W Эта расширенная матрица весов состоит из вектора смещений b и матрицы весов WT, а также единицы и вектора нулей , которые добавляются для учета аффинного сдвига.

Расширенный вектор входных данных xпредставлен в виде:1xT, где xT — это транспонированный входной вектор, а 1 — это дополнительное измерение, добавленное для включения смещения в преобразование.

Расширенная матрица весов W представлена в виде:1bT0TWT, где b — это вектор смещений, WT — транспонированная матрица весов, 0T — транспонированный вектор нулей, а 1 — это скаляр, соответствующий добавленному измерению к вектору входных данных.

Из этого следует упрощенное уравнение:z=xW. Это уравнение показывает, как входной вектор x преобразуется в выходной вектор z с помощью аффинного преобразования, которое включает в себя как линейное преобразование (с помощью матрицы весов W), так и перенос (с помощью вектора смещенийb).

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

Text
Рассмотрим некоторые частные случаи:

1: если мы установим все параметры обучения в ноль, Ŵ = 0, мы получим [1 z] = [1 0], что означает, что любая точка данных [1 x] в аффинном пространстве схлопнется в ту же точку [1 0] в другом аффинном пространстве.

2: если мы установим b = 0 и W = I, где I - это единичная матрица, мы получим [1 z] = [1 x]. Это означает, что любая исходная точка в аффинном пространстве останется неизменной (без преобразования).

3: если мы установим b = c, где c - это постоянный вектор, и W = I, мы получим [1 z] = [1 c + x]. Это означает, что любая исходная точка в аффинном пространстве переносится на c.

4: если мы установим b = [c, 0, ..., 0], W = [k, e2, ..., ep], где ei - базовый вектор Wp (со всеми нулевыми элементами, кроме 1 на i-й позиции), мы получим: zi = xi(i = 2, ..., p) иz1 = xk + c

что является уравнением рассмотренным ранее z(w*, b*; x) = xk + c = y(x). Это означает, что предсказание линейной функции в пространстве признаков можно рассматривать как аффинное преобразование в аффинном пространстве. Поскольку k в W отвечает за вращение.

5.2 Типичные структуры данных

5.2.1 Сети с p входными признаками и 1 нейроном на выходе

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.2.1 Сети с p входными признаками и 1 нейроном на выходе

Уравнение z(w;x)может быть записано в матричной форме с четко определенной размерностью следующим образом:

z(w;x)=x1×pwp×1+b1×1= x1×(p+1)w(p+1)×1

Теперь функция предсказания z∈Xpчетко определена как функция w и b соответственно любому x∈Xp. Для i-й точки данных xi, мы имеем:

z(w;xi)=xi1×pwp×1+b1×1= xi1×(p+1)w(p+1)×1

Отметим, что z(ŵ; x) является скаляром для одной точки данных это означает, что когда функция предсказания z применяется к одной конкретной точке данных x, она выдает единственное числовое значение (скаляр). Например, если сеть используется для предсказания цены на основе различных признаков дома (как площадь, количество комнат и т.д.), то для каждого набора входных данных (описывающих один дом) сеть выдаст одно числовое значение - предсказанную цену. Также отметим что нет необходимости в дальнейшем преобразовании для z в сетях с одним слоем в более сложных многослойных сетях выход одного слоя часто подается на вход следующего слоя, где он подвергается дальнейшим преобразованиям. Однако, в сетях с одним слоем, таких как рассматриваемая здесь, выход функции z не нуждается в дополнительных преобразованиях. Это упрощает архитектуру сети, так как выходной сигнал каждого нейрона напрямую является окончательным выходом сети. Это означает, что в сетях с одним слоем, как только получено скалярное значение от функции z, оно сразу же становится конечным результатом работы сети.

5.2.2 Сети с p входными признаками и k нейронами на выходе

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.2.2 Сети с p входными признаками и k нейронами на выходе

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

z1z2…zkz(w,b;xi)1×k=xi1xi2…xipxi 1×pw11w21w12w22……w1kw2k ⋮ ⋮⋱⋮wp1wp2…wp×kwpk+[b1b2…bk]b1×k
Text
Вышеупомянутая матрица может быть записана в сжатой матричной форме следующим образом, с четко указанной размерностью:
z(w;xi)1×k=xi1×pwp×k+b1×k= xi1×(p+1)w(p+1)×k

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

5.2.3 Сети с p входными признаками k нейронами на выходе и с m точками данных

Для набора данных с m точками, данные могут быть структурированы как матрица Xm×p, путем вертикального укладывания xi. В этом случае можно соответственно сделать m предсказаний, и формулировка в матричной форме становится следующей:

⎡z1(w,b; x1)z2(w,b; x2)⋮zm(w,b; xm)Zm×1 (w,B;X)=x11x12x21x22……x1px2p⋮⋮⋱⋮xm1xm2⋯Xm×1xmpw11w12w21w22……w1kw2k⋮⋮⋱⋮wp1wp2⋯Wp×kwpk+bb⋮bBm×1

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

ZW,Bm×1=Xm×pWp×1+Bm×k=xm×(p+1)w(p+1)×k

Отметим, что на практике мы на самом деле не формируем матрицу Z, потому что при построении функции потерь она представляет собой форму суммирования по m.

5.3 Демонстрационные примеры аффинного преобразования

Теперь мы представляем несколько примеров аффинных преобразований. Это выполняется следующим образом. Для заданного геометрического узора, определенного набором множественных точек данных X∈X2 (аффинное пространство), его i-я строка xi=1,xi1,xi2вычисляется с использованием уравнения z(w;x):

zx=X wI(5.19)

где wx=[bx,wx]Tв котором bx и wx- это заданный набор параметров обучения в гипотезном пространстве W3, и

zy=XwII (5.20)

где wy=[by,wy]Tв котором by и wy- это измененный набор параметров обучения в W3.

Это приводит к преобразованной точке данных Z = [1, zx, zy] ∈ X2. Вышеупомянутая процедура с использованием аффинного преобразования на исходном наборе данных X∈ X2путем изменения ŵ два раза приводит к преобразованному набору данных Z, который находится в том же аффинном пространстве X2, автоморфизм.

Теперь мы напишем код для демонстрации сходства вышеуказанного преобразования. Поскольку X2, также является 2D плоскостью, мы можем удобно изобразить как оригинальные, так и преобразованные узоры вместе в пространстве R2, используя только zx и zy для визуализации и анализа.

5.3.1 Аффинное преобразование грани и прямоугольника

Python
import numpy as np
import matplotlib.pyplot as plt
def affine_transformation(data, weights, bias):

"""

Выполняет аффинное преобразование данных.

Text
data: входные данные
weights: вектор весов
bias: смещение

Возвращает преобразованные данные.

"""

Python
return np.dot(data, weights) + bias
def rectangular_pattern(min_x, max_x, min_y, max_y, step, rotation_angle):

"""

Создает прямоугольный узор в 2D пространстве.

Text
min_x, max_x, min_y, max_y: границы прямоугольника
step: шаг между точками
rotation_angle: угол поворота узора

Возвращает массивы X1, X2 и объединенный массив точек X.

"""

Python
x=np.arange(min_x, max_x+step, step)
ymin, ymax=np.full(x.shape, min_y), np.full(x.shape, max_y)
y=np.arange(min_y, max_y+step, step)
xmin, xmax=np.full(y.shape, min_x), np.full(y.shape, max_x)
x1=np.concatenate([x, xmax, np.flip(x), xmin])
x2=np.concatenate([ymin, y, ymax, np.flip(y)])
x1=np.append(x1, (max_x+min_x) /2)
x2=np.append(x2, (max_y+min_y) /2)
X1=x1*np.cos(rotation_angle) +x2*np.sin(rotation_angle)
X2=x2*np.cos(rotation_angle) -x1*np.sin(rotation_angle)
X=np.stack((X1, X2), axis=-1)
return x, y, X
# Определение весов и смещений для различных преобразований
weights_0, weights_0_1, bias_0 = [0., 1.], [1., 0.], 0 # оригинальный рисунок
bias_1 = 1 # изменяем смещение
weights_2, weights_2_1 = [0., 0.5], [0.5, 0.] # уменьшаем веса
weights_3, weights_3_1 = [0.5, 0.3], [1.2, 0.1] # изменяем веса
# Генерация кругового узора
x, y, X = rectangular_pattern(-1.,1.,1.,3.,0.1,np.pi/4)
# Создание графика
plt.figure(figsize=(4., 4.), dpi=90)
plt.scatter(affine_transformation(X, weights_0, bias_0),
affine_transformation(X, weights_0_1, bias_0),
label="Оригинал", s=5, c='orange')
plt.scatter(affine_transformation(X, weights_0, bias_1),
affine_transformation(X, weights_0_1, bias_1),
label="Изменено смещение", s=5, c='blue')
plt.scatter(affine_transformation(X, weights_2, bias_0),
affine_transformation(X, weights_2_1, bias_0),
label="Веса уменьшены", s=5, c='red')
plt.scatter(affine_transformation(X, weights_3, bias_0),
affine_transformation(X, weights_3_1, bias_0),
label="Веса изменены", s=5, c='green')
# Отображение легенды
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.axis('scaled') # Чтобы сохранить соотношение масштабов
plt.show()

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

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

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.3.1 Аффинное преобразование грани и прямоугольника

Особое внимание стоит уделить прямоугольнику, поскольку он состоит из прямых линий. Это обстоятельство делает его идеальным объектом для демонстрации аффинности преобразования, так как изменения в его форме и ориентации легко заметны на фоне исходной структуры.

Text
Из вышеприведенного рисунка можно сделать следующие наблюдения:

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

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

Параллельные отрезки линий остаются параллельными после аффинного преобразования.

Преобразование не сохраняет расстояния между точками. Оно сохраняет только соотношения расстояний между точками, лежащими на прямой линии.

Аффинное преобразование не сохраняет углы между линиями. Эта простая демонстрация помогает представить, как аффинно преобразованный узор покрывает (тот же) пространство, изменяя w и b. Чисто линейное преобразование само по себе не меняет начало координат и, следовательно, имеет гораздо более ограниченное покрытие.

5.3.2 Круг под воздействием аффинного преобразования

Теперь давайте рассмотрим аффинное преобразование круга.

Python
import numpy as np
import matplotlib.pyplot as plt
def affine_transformation(data, weights, bias):

"""

Выполняет аффинное преобразование данных.

Text
data: входные данные
weights: вектор весов
bias: смещение

Возвращает преобразованные данные.

"""

Python
return np.dot(data, weights) + bias
def circular_pattern(radius, angle_step):

"""

Создает круговой узор в 2D пространстве.

Text
radius: радиус круга
angle_step: шаг угла (в радианах)

Возвращает координаты x, y и массив точек X.

"""

Python
angles = np.arange(0.0, 2 * np.pi, angle_step)
x = radius * np.cos(angles)
y = radius * np.sin(angles)
X = np.column_stack((x, y))
return x, y, X
# Определение весов и смещений для различных преобразований
weights_0, weights_0_1, bias_0 = [0., 1.], [1., 0.], 0 # оригинальный рисунок
bias_1 = 1 # изменяем смещение
weights_2, weights_2_1 = [0., 0.5], [0.5, 0.] # уменьшаем веса
weights_3, weights_3_1 = [0.5, 0.3], [1.2, 0.1] # изменяем веса
# Генерация кругового узора
x, y, X = circular_pattern(1, 0.1)
# Создание графика
plt.figure(figsize=(4., 4.), dpi=90)
plt.scatter(affine_transformation(X, weights_0, bias_0),
affine_transformation(X, weights_0_1, bias_0),
label="Оригинал", s=5, c='orange')
plt.scatter(affine_transformation(X, weights_0, bias_1),
affine_transformation(X, weights_0_1, bias_1),
label="Изменено смещение", s=5, c='blue')
plt.scatter(affine_transformation(X, weights_2, bias_0),
affine_transformation(X, weights_2_1, bias_0),
label="Веса уменьшены", s=5, c='red')
plt.scatter(affine_transformation(X, weights_3, bias_0),
affine_transformation(X, weights_3_1, bias_0),
label="Веса изменены", s=5, c='green')
# Отображение легенды
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.axis('scaled') # Чтобы сохранить соотношение масштабов
plt.show()
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.3.2 Круг под воздействием аффинного преобразования

Как ясно видно из рисунка, после преобразования, оригинальный (оранжевый) круг поворачивается, масштабируется, сдвигается и преврощается в эллипс. Наблюдения, которые мы проводили для прямоугольников, остаются в силе.

5.3.3 Фрактал Коха под воздействием аффинного преобразования

Приведем еще один пример аффинного преобразования сложного рисунка. Это изображение фрактал Коха.

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.3.3 Фрактал Коха под воздействием аффинного преобразования

Фрактал Коха(снежинка Коха)является аффинным преобразованием другого за счет комбинации вращения, масштабирования, отражения и перемещения. Например, красная снежинка является аффинным преобразованием темно-синий снежинки. Ниже приведен код для аффинного преобразования Фрактала Коха.

importmatplotlib.pyplotasplt

importnumpyasnp

Text
defkoch_snowflake(order, scale=10):

"""Рекурсивная функция для создания фрактала Коха."""

Python
iforder==0:
returnnp.array([[0, 0], [1, 0], [0.5, np.sqrt(3)/2], [0, 0]])
else:
points=koch_snowflake(order-1, scale)
new_points= []
foriinrange(len(points) -1):
start, end=points[i], points[i+1]
s=start+ (end-start) /3
e=start+2* (end-start) /3
angle=np.pi/3
m=np.array([[np.cos(angle), -np.sin(angle)],
[np.sin(angle), np.cos(angle)]])
t=s+np.dot(m, (e-s))
new_points.extend([start, s, t, e])
new_points.append(points[-1])
returnnp.array(new_points)
defaffine_transform(points, A, b):

"""Применение аффинного преобразования к точкам."""

Python
returnnp.dot(points, A.T) +b
# СозданиефракталаКоха
order=4
original_points=koch_snowflake(order)
# Применение аффинного преобразования
A=np.array([[0.2, 0.1], [-0.3, 0.5]]) # Матрица преобразования
b=np.array([0.1, 0.5]) # Векторсмещения
transformed_points=affine_transform(original_points, A, b)
# Рисование оригинального фрактала и его аффинного преобразования на одном графике
plt.figure(figsize=(8, 8))
# Оригинальный фрактал
plt.plot(original_points[:, 0], original_points[:, 1], 'b-', label='Оригинальная снежинка Коха')
# Аффинно преобразованная снежинка
plt.plot(transformed_points[:, 0], transformed_points[:, 1], 'r-', label='Аффинно преобразованная снежинка Коха')
plt.title("Снежинка Коха: Оригинальная и Аффинно Преобразованная")
plt.legend()
plt.show()

5.3.4 О линейной функции предсказания с аффинным преобразованием

Не следует путать линейную функцию предсказания с аффинным преобразованием. По сути, это одна и та же гипотеза, но рассматриваемая с разных точек зрения. Линейная функция предсказания относится к способности модели машинного обучения предсказывать результаты на основе линейной комбинации входных признаков. Это важно для понимания того, как модель генерирует прогнозы в пространстве признаков, или другими словами, как она интерпретирует и использует данные. С другой стороны, аффинное преобразование - это математическое преобразование, которое включает в себя масштабирование, перевод (или сдвиг) и вращение объектов в пространстве. В контексте машинного обучения, аффинное преобразование может использоваться для трансформации данных или признаков перед тем, как они будут использованы моделью.

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

5.3.5 Аффинное преобразование в сочетании с функцией активации

Когда аффинное преобразование, заданное как z(w, b; x), сочетается с нелинейной функцией активации, выходное значение φ(z) ограничивается диапазоном этой функции активации, что приводит к потере аффинных свойств. Однако такое сочетание придаёт системе способность предсказывать нелинейные зависимости, поскольку активационные функции, используемые в машинном обучении, обычно непрерывны, гладкие (по крайней мере дифференцируемы) и монотонно изменяются в зависимости от z.

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

Python
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(z):
return 1. / (1. +np.exp(-z))
def affine_transformation(data, weights, bias):
return np.dot(data, weights) + bias
def rectangular_pattern(min_x, max_x, min_y, max_y, step, rotation_angle):
x=np.arange(min_x, max_x+step, step)
ymin, ymax=np.full(x.shape, min_y), np.full(x.shape, max_y)
y=np.arange(min_y, max_y+step, step)
xmin, xmax=np.full(y.shape, min_x), np.full(y.shape, max_x)
x1=np.concatenate([x, xmax, np.flip(x), xmin])
x2=np.concatenate([ymin, y, ymax, np.flip(y)])
x1=np.append(x1, (max_x+min_x) /2)
x2=np.append(x2, (max_y+min_y) /2)
X1=x1*np.cos(rotation_angle) +x2*np.sin(rotation_angle)
X2=x2*np.cos(rotation_angle) -x1*np.sin(rotation_angle)
X=np.stack((X1, X2), axis=-1)
return x, y, X
# Определение весов и смещений для различных преобразований
weights_0, weights_0_1, bias_0 = [0., 1.], [1., 0.], 0 # оригинальный рисунок
bias_1 = 1 # изменяем смещение
weights_2, weights_2_1 = [0., 0.5], [0.5, 0.] # уменьшаем веса
weights_3, weights_3_1 = [0.5, 0.3], [1.2, 0.1] # изменяем веса
# Генерация кругового узора
x, y, X = rectangular_pattern(-1.,1.,1.,3.,0.1,np.pi/4)
# Создание графика
plt.figure(figsize=(4., 4.), dpi=90)
plt.scatter(sigmoid(affine_transformation(X, weights_0, bias_0)),
sigmoid(affine_transformation(X, weights_0_1, bias_0)),
label="Оригинал", s=5, c='orange')
plt.scatter(sigmoid(affine_transformation(X, weights_0, bias_1)),
sigmoid(affine_transformation(X, weights_0_1, bias_1)),
label="Изменено смещение", s=5, c='blue')
plt.scatter(sigmoid(affine_transformation(X, weights_2, bias_0)),
sigmoid(affine_transformation(X, weights_2_1, bias_0)),
label="Веса уменьшены", s=5, c='red')
plt.scatter(sigmoid(affine_transformation(X, weights_3, bias_0)),
sigmoid(affine_transformation(X, weights_3_1, bias_0)),
label="Веса изменены", s=5, c='green')
plt.title('Аффинное преобразование с сигмоидой')
# Отображение легенды
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.axis('scaled') # Чтобы сохранить соотношение масштабов
plt.show()
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.3.5 Аффинное преобразование в сочетании с функцией активации
Text
Проанализировав код и рисунки можно заметить:

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

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

Но благодаря нелинейной функции активации выходное значение φ(z(wˆ; x)) становится нелинейно зависимым от входных признаков x. Это позволяет использовать такое преобразование, например, в логистической регрессии для классификации меток, заданных как 0 или 1, путем обучения весов wˆ.

Так как φ(z(wˆ; x)) линейно независима от входных признаков x, это позволяет сети применять дополнительные аффинные преобразования к выходным данным этого слоя при передаче их в следующий слой.

Функция φ(z(wˆ; x)) также независима от весов wˆ, используемых в данном слое. Это важно для построения многослойных нейронных сетей (глубоких сетей), так как для каждого нового слоя можно использовать новые веса, независимые от предыдущих слоев.

Мы видим серьезные искажения, из-за нелинейности нелинейной функции активации, сигмоида. Преобразование из точки в точку все еще наблюдается, но когда z близко к 0.0 и 1.0, оригинальные точки и преобразованные точки «сжимаются» ближе из-за действия сигмоида где ее кривая становится более пологой В областях, где градиент сигмоидальной функции приближается к нулю, изменение весов (w) и смещений (b) в нейронной сети при обучении становится менее эффективным. Это связано с тем, что маленькие градиенты приводят к маленьким изменениям в весах и смещениях в процессе обучения, что затрудняет корректировку модели для точного предсказания или классификации данных, особенно в этих краевых областях.

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

5.4 Кодирование Параметров и Основной Механизм Обучения

5.4.1 Кодирование от x к wˆ, блок преобразования данных в параметры

Исходя из уравнения z(w;x)=xw+ b мы видим, как набор данных (x, z) может быть представлен или "закодирован" в виде параметров обучения ŵ в пространстве гипотез. Давайте рассмотрим это на конкретном примере. Представьте, что у нас есть прямые линии на графике, каждая из которых соответствует точке в пространстве гипотез, обозначенном как W2. Например, красная линия соответствует точке с координатами b = 1 и w1 = 1 в этом пространстве.

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.4.1 Кодирование от x к wˆ, блок преобразования данных в параметры

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

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

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

Кроме того, настройка этих параметров (wi) позволяет создавать различные функции предсказания. Меняя параметры модели, мы можем настроить ее таким образом, чтобы предсказания соответствовали заданным меткам в наборе данных. Этот процесс настройки параметров и является сущностью обучения в машинном обучении. Хотя реальные модели машинного обучения могут быть гораздо сложнее, представленный здесь механизм лежит в основе большинства методов обучения.

Таким образом, в машинном обучении мы не просто анализируем данные, а преобразуем их в параметры модели, которые затем используются для предсказания или интерпретации данных. Это преобразование данных в параметры и последующая настройка этих параметров составляют основу процесса обучения в машинном обучении.

5.4.2 Уникальность кодирования

Мы утверждаем, что кодирование линии в пространстве X-z в точку в гипотетическом пространстве уникально.

Под уникальностью мы понимаем, что каждой линии в пространстве X-z соответствует только одна точка в гипотетическом пространстве. Для демонстрации этой концепции представим себе любую линию в пространстве X-z. Предположим, что эта линия может быть представлена двумя разными точками w(1)и w(2) в гипотетическом пространстве. Используя уравнение zi=xwi, мы можем выразить эту линию двумя способами. Сначала как : z=xw(1) затем как: z=xw(2) оба уравнения справедливы для любых значений x̅.

Теперь, если мы рассмотрим оба этих выражения вместе, мы приходим к выводу, что разница между ними равна нулю, то есть: 0=x[w(2)-w1]

Это указывает на то, что: w1=w(2) что доказывает уникальность отображения линии в точку в гипотетическом пространстве.

Аналогично, мы можем рассмотреть уникальность в обратном направлении. Допустим, у нас есть точка в гипотетическом пространстве, и мы хотим определить, соответствует ли она единственной линии в пространстве X-z. Исходя из этой точки, мы можем попытаться построить две разные линии: z(1)xwиz(2)xw

Однако, используя те же принципы и уравнения: z1-z2=0 мы обнаружим, что любые две линии, построенные из одной и той же точки в гипотетическом пространстве, на самом деле являются одной и той же линией. Это подтверждается тем, что разность двух таких линий равна нулю, что означает их идентичность.

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

5.4.3 Уникальность кодирования: Не зависит от функции активации

Отметим, что применение функции активации к аффинному преобразованию не влияет на уникальность его кодирования. Это связано с особенностями функций активации.

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

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

5.5 Градиент функции предсказания

Градиент функции предсказания указывает, как изменяется функция предсказания в ответ на изменения параметров обучения, таких как веса (w) и смещение (b). Градиенты этих параметров можно выразить простыми формулами:∇wz=x и ∇bz=1

Градиент по отношению к весам показывает, что градиент функции предсказания по отношению к весам прямо пропорционален переменным признаков (x). Это означает, что чем сильнее признак влияет на предсказание, тем больше будет градиент веса этого признака.

Градиент по отношению к смещению всегда равен единице. Это связано с тем, что в уравнениях машинного обучения смещение часто представляется как дополнительный признак (x0), для которого значение всегда равно 1. Следовательно, изменение смещения влияет на предсказание в единичной мере, независимо от других факторов.

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

Text
Когда используется формулировка xw, у нас есть:
∇wz=x

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

5.6 Массив Аффинных Преобразований (ATA)

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

Text
Функции предсказания в такой сети ATA могут быть выражены через специальное уравнение:

Z (w;x)=xW+b=xw

где z представляет собой вектор функций предсказания. Каждый элемент этого вектора, ziwix, представляет собой отдельную функцию предсказания для соответствующего выходного нейрона.

В этой модели wj представляет собой вектор параметров обучения для j-го нейрона на выходном слое, включая веса (w0j,w1j,w2j…,wpj) и смещение (bj). Смещение здесь включается в вектор весов как дополнительный параметр, что упрощает математические вычисления. W=[bw]T – это матрица, объединяющая все эти векторы параметров обучения для каждого нейрона на выходном слое. Она состоит из весов W и вектора смещений b, образуя структуру размером (p + 1)×k.

Когда мы рассматриваем весь вектор параметров обучения ATA, он представлен как w=[w1T,w2T,…,wkT]T, , который включает в себя векторы параметров обучения для каждого из k нейронов. Этот вектор может быть представлен в "расплющенной" форме матрицы Ŵ. Общее количество параметров обучения в такой системе составляет P = (p + 1) × k, что указывает на быстрый рост гипотетического пространства в таких сетях ATA.

Уравнение Z(ŵ; x) = xW + b = x̅ŵ, которое мы использовали для представления функций предсказания, является матричной формой аффинных преобразований. Оно показывает, как каждая функция предсказания zi(wj,bj),вычисляется независимо, используя уникальные веса wjи смещение bj для каждого нейрона. Это обеспечивает независимость каждой функции предсказания друг от друга, что является важным аспектом при решении многомерных задач регрессии с использованием набора данных с p признаками.

5.7 Прогнозируемость функций высокого порядка глубокой сети

5.7.1 Роль функций активации

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

∅(z1w1,b1)x1(new)∅(z2w2,b2)x2(new),…,∅(zkwk,bk)xk(new)

которые затем модифицируются с помощью нелинейных функций активации. Это преобразование приводит к созданию нового набора признаков, обозначаемых как xinew, i = 1, 2,…,k.. Эти новые признаки отличаются тем, что они линейно независимы от исходных признаков xi(где i = 1, 2,...,p). Это означает, что они предоставляют уникальную информацию, отсутствующую в исходных данных. Затем эти новые признаки используются в качестве входных данных для следующего слоя нейронной сети, что позволяет ввести новый набор параметров обучения для этого слоя.

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

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

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

5.7.2 Формирование глубокой сети путем объединения ATA

Text
В данном разделе мы рассмотрим, как новые признаки, определенные в уравнении:
∅(z1w1,b1)x1(new)∅(z2w2,b2)x2(new),…,∅(zkwk,bk)xk(new)

могут использоваться в качестве входных данных для следующих слоев глубокой нейронной сети (ГНС). Для наглядности рассмотрим простую ГНС с архитектурой 4-2-3, где цифры обозначают количество нейронов в каждом слое.

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.7.2 Формирование глубокой сети путем объединения ATA
Text
Здесь используем число в скобках для обозначения номера слоя:
Первый слой (2 нейрона):

Входные данные: 4 независимых признака xi(1) (i = 1 до 4).

Процесс: Два аффинных преобразования zi(1)(i = 1 и 2), использующих матрицу весов 4 × 2 W(1)и вектор смещения bi(1) (i = 1 и 2). Каждое преобразование z1(1)и z2(1) использует свой набор весов wi1(1) и wi2(1) соответственно, а также соответствующее смещениеb1(1) иb2(1).

Функция активации: После аффинных преобразований, z1(1) и z2(1) проходят через нелинейную функцию активации φ, создавая два новых признака xi(2) (i = 1 и 2). Эти признаки нелинейно зависят от исходных данных xi(1).

Text
Второй слой (3 нейрона):

Входные данные: Полученные признаки xi(2) (i = 1 и 2) используются в трех аффинных преобразованиях zi(3) (i = 1 до 3) во втором слое. Здесь применяется матрица весов 2×3 W(2) и вектор смещений bi(2) (2) (i = 1 до 3). После этого преобразования данные могут быть обработаны нелинейной функцией активации, завершая формирование второго слоя.

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

Пространство гипотетических значений увеличивается за счет стекирования и объединения: стекирование увеличивает размерность в множественном порядке, а объединение — в аддитивном.

Функции предсказания могут находиться в чрезвычайно высокомерном пространстве Wp для (ГНС). Для этой простой глубокой сети 4 - 2 - 3 размерность гипотетического пространства становится P = (4×2+ 2)+ (2×3+ 3) = 19.

Text
В общем случае, для сети p - q - r – k:
p=p × q + qlayer 1+q × r + rlayer 2+(r × k + k) layer 3
Вектор всех обучаемых параметров в MLP становится:w=[W(1).flatten(),W(2).flatten(),...,W(NL).flatten()]T

где NL - общее количество скрытых слоев в MLP.

Запись.flatten() относится к методу в языке программирования Python, который обычно применяется к массивам или матрицам (в частности, к объектам массива NumPy). Этот метод "выпрямляет" многомерный массив, преобразуя его в одномерный. Другими словами, он берёт массив любой размерности и раскладывает все его элементы в один "плоский" (одномерный) массив.

Отметим, что на практике мы можем не выполнять указанное выше "расплющивание". Это сделанно для демонстрации роста размерности гипотетического пространства. В фактических вычислениях мы можем просто группировать их в списке Python и использовать алгоритм autograd для автоматического выполнения необходимых прямых и обратных вычислений при обучении MLP. Вычисления в таком высокомерном пространстве выполняются численно.

5.7.3 Пример: Сеть 1 → 1 → 1

Рассмотрим работу простейшей нейронной сети с конфигурацией 1 → 1 → 1. Эта сеть состоит из трех слоев, каждый из которых содержит всего один нейрон. Для этой модели мы применим линейную функцию предсказания, аналогичную представленной в уравнении ((w;x)=xw), и сигмоидную функцию активации (σ) как для скрытого, так и для последнего слоя.

Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования
Иллюстрация из учебника: Функция прогнозирования и Универсальная теория прогнозирования — 5.7.3 Пример: Сеть 1 → 1 → 1

Работа сети начинается с первого слоя, где входной сигнал

x(1)=x
Text
который может быть нормализован в диапазоне от -1 до 1, проходит через сигмоидную функцию активации. Этот процесс описывается уравнением
x(2)=σz1=σw1x1+b1=11+e-w1x+b1

Выходное значение этого слоя, x(2), затем передается в следующий слой.

Text
Во втором (скрытом) слое происходит аналогичный процесс преобразования, который можно описать уравнением
x(3)=σz2=σw2x2+b2=11+e-w2x2+b2

Выход этого слоя, x(3), представляет собой результат работы сети.

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

x(3)=c0+c1x+c2x2+c3x3+…

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

c0=-116b1b2w1b1-b2w1-148b2w1(b2)2(w1)2-12-148b1(b2)2-12
c1=-116w1w2(b1)2+2b1b2w1+b2)2(w1)2-4
c2=-116(w1)2(w2)2(b1+b2w1)
c3=-148(w1)3(w2)3

Этот анализ демонстрирует, что нейронная сеть с конфигурацией 1 → 1 → 1 способна приблизительно моделировать функции третьего порядка. В отличие от более простой сети 1 → 1, которая ограничена функциями первого порядка, добавление дополнительного слоя позволяет улучшить предсказательные возможности сети.

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

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

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

5.8 Теория Универсального Прогнозирования

Теория Универсального Прогнозирования обсуждает, как глубокие нейронные сети (deepnet) могут быть созданы и использованы для решения сложных задач предсказания. Эти сети обладают уникальными свойствами, которые делают их исключительно мощными в области машинного обучения и искусственного интеллекта:

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

Свойство независимости функций аппроксимации (аффинных преобразований) отдельных нейронов друг от друга. Это достигается благодаря независимым соединениям в АТА (Affine Transformation Assembly), что позволяет каждому нейрону обрабатывать информацию независимо, внося свой вклад в общий результат работы сети.

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

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

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

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

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

5.9 Нелинейные Аффинные Преобразования

Отметим, что в вышеизложенных формулировках признаки xi, i = 1, 2,...,p, используются в аффинных преобразованиях как линейные базисные функции. Тем не менее, важно понимать, что эти базисные функции могут быть и нелинейными. Рассмотрим, например, одномерную задачу. В случае применения линейной аппроксимации, вектор признаков формируется какx=[1, x]

что представляет собой простейшую форму включения исходного признака и свободного члена.

Однако, когда речь идет об аппроксимации второго порядка, часто упоминаемой как нелинейная регрессия, вектор признаков расширяется до видаx=[1, x,x2]

Это позволяет включить в модель квадратичные элементы, увеличивая тем самым ее способность моделировать более сложные зависимости.

Дополнительно, если известно, что определенная функция может быть полезной в качестве базисной функции, ее можно добавить в вектор признаков. Например, если предполагается, что функция sin(x) важна для моделирования данных, она может быть включена в вектор признаков как: x=1, x,sinx.

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

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

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

5.10 Функции Признаков в Моделях, Основанных на Законах Физики

В моделях, основанных на законах физики, особое внимание уделяется выбору функций

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

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

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

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

Проверь себя

Какая идея лучше всего описывает фокус главы "Функция прогнозирования и Универсальная теория прогнозирования"?

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

Какие действия помогают закрепить материал главы?

Пройти тест