Технический справочник по алгоритму нейронной сети (Майкрософт)

Применимо к: SQL Server 2019 и более ранних версий Analysis Services Azure Analysis Services Fabric/Power BI Premium

Важно!

Интеллектуальный анализ данных не рекомендуется использовать в службах SQL Server 2017 Analysis Services, а в SQL Server 2022 Analysis Services его поддержка прекращена. Документация не обновляется для устаревших и неподдерживаемых функций. Дополнительные сведения см. в статье об обратной совместимости служб Analysis Services.

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

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

Реализация алгоритма нейронной сети (Майкрософт)

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

Существует три типа нейронов в нейронной сети, созданной с помощью алгоритма нейронной сети Майкрософт:

Входные нейроны

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

Скрытые нейроны

Скрытые нейроны получают входные данные от входных нейронов и передают выходные данные выходным нейронам.

Выходные нейроны

Выходные нейроны представляют значения прогнозируемых атрибутов для модели интеллектуального анализа данных. Для дискретных входных атрибутов выходной нейрон обычно указывает одно прогнозируемое состояние для прогнозируемого атрибута, включая пропущенные значения. Например, бинарный прогнозируемый атрибут создает один выходной узел, который описывает отсутствующее или существующее состояние, указывая на наличие значения для такого атрибута. Логический столбец, используемый как прогнозируемый, создает три выходных нейрона: один нейрон для истинного значения, один для ложного и один для отсутствующего или существующего состояния. Дискретный прогнозируемый атрибут, имеющий более двух состояний, создает один выходной нейрон для каждого состояния и один выходной нейрон для отсутствующего или существующего состояния. Непрерывные прогнозируемые столбцы создают два выходных нейрона: один нейрон для отсутствующего или существующего состояния и один нейрон для значения самого непрерывного столбца. Если при проверке набора прогнозируемых столбцов создается более 500 выходных нейронов, SQL Server Analysis Services создает в модели интеллектуального анализа данных новую сеть для представления дополнительных выходных нейронов.

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

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

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

Обучение нейронных сетей

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

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

Значения параметров SAMPLE_SIZE и HOLDOUT_PERCENTAGE используются для определения количества вариантов, которое необходимо выбрать из обучающих данных, а также количества вариантов, которое необходимо зарезервировать для использования в качестве контрольных данных. Значение параметра HOLDOUT_SEED используется для определения случайным образом конкретных вариантов, подлежащих резервированию в качестве контрольных данных.

Примечание

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

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

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

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

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

Выбор компонентов

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

Выбор признаков автоматически используется всеми алгоритмами интеллектуального анализа данных SQL Server Analysis Services для улучшения анализа и снижения нагрузки на обработку. Применяемый метод выбора компонентов в моделях нейронных сетей зависит от типа данных атрибута. Для справки, следующая таблица показывает методы выбора компонентов, применяемые в моделях нейронных сетей, а также методы выбора компонентов, используемые для алгоритма логистической регрессии, основанного на алгоритме нейронной сети.

Алгоритм Метод анализа Комментарии
Нейронная сеть Оценка интересности

Энтропия Шеннона

Алгоритм Байеса с априорной оценкой K2

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

По умолчанию.
Логистическая регрессия Оценка интересности

Энтропия Шеннона

Алгоритм Байеса с априорной оценкой K2

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

Выбором компонентов в модели нейронной сети управляют следующие параметры алгоритма: MAXIMUM_INPUT_ATTRIBUTES, MAXIMUM_OUTPUT_ATTRIBUTES и MAXIMUM_STATES. Число скрытых слоев можно также регулировать с помощью параметра HIDDEN_NODE_RATIO.

Методы количественной оценки

Количественная оценка представляет собой разновидность нормализации, и в контексте модели нейронной сети означает процесс преобразования величины (например дискретной текстовой метки) в значение, которое можно сравнить с другими типами входов и присвоить ему определенный вес в сети. Например, если один входной атрибут — «Пол», с возможными значениями «Мужской» и «Женский», а другой атрибут — «Доход» с переменным диапазоном значений, величины этих двух атрибутов нельзя напрямую сравнивать между собой; их нужно закодировать на некоторой общей шкале, чтобы иметь возможность сравнить их веса. Количественной оценкой называется процесс нормализации таких входов для превращения их в числовые значения, а именно в вероятностный диапазон. Функции, которые используются для нормализации, помогают также более равномерно распределять входные значения на однородной шкале, чтобы экстремальные значения не искажали результатов анализа.

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

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

Дискретные значения

μ = p — предварительная вероятность состояния;

StdDev = sqrt(p(1-p))

Непрерывные величины

Значение существует= 1 - μ/σ

Нет существующего значения= -μ/σ

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

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

Настройка алгоритма нейронной сети (Майкрософт)

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

Задание параметров алгоритма

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

HIDDEN_NODE_RATIO
Указывает соотношение скрытых нейронов к входным и выходным нейронам. Следующая формула определяет начальное количество нейронов в скрытом слое:

HIDDEN_NODE_RATIO * SQRT (количество входных нейронов * количество выходных нейронов).

Значение по умолчанию — 4,0.

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

Значение по умолчанию — 30.

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

Значение по умолчанию — 0.

MAXIMUM_INPUT_ATTRIBUTES
Определяет максимальное количество входных атрибутов, которое может быть задано для алгоритма до использования выбора компонентов. Установка этого значения равным 0 отключает выбор компонентов для входных атрибутов.

Значение по умолчанию — 255.

MAXIMUM_OUTPUT_ATTRIBUTES
Определяет максимальное количество выходных атрибутов, которое может быть задано для алгоритма до использования выбора компонентов. Установка этого значения равным 0 отключает выбор компонентов для выходных атрибутов.

Значение по умолчанию — 255.

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

По умолчанию используется значение 100.

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

Другими словами, если для параметра HOLDOUT_PERCENTAGE задано значение 30, то алгоритм будет использовать либо значение этого параметра, либо значение, равное 70 процентам от общего количества вариантов, в зависимости от того, какое из двух указанных значений меньше.

Значение по умолчанию — 10 000.

Флаги моделирования

Следующие флаги моделирования поддерживаются для использования с алгоритмом нейронной сети Майкрософт.

NOT NULL
Указывает, что столбец не может принимать значение NULL. Если во время обучения модели службы Analysis Services обнаружат значение NULL, возникнет ошибка.

Применяется к столбцам структуры интеллектуального анализа данных.

MODEL_EXISTENCE_ONLY
Указывает, что модель должна принимать во внимание только существование или отсутствие значения для данного атрибута. Конкретное значение не играет роли.

Применяется к столбцам модели интеллектуального анализа данных.

Флаги распределения

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

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

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

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

Требования

Модель нейронной сети должна содержать по крайней мере один входной столбец и один выходной столбец.

Входные и прогнозируемые столбцы

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

Столбец Типы содержимого
Входной атрибут Continuous, Cyclical, Discrete, Discretized, Key, Table и Ordered
Прогнозируемый атрибут Continuous, Cyclical, Discrete, Discretized и Ordered

Примечание

Типы содержимого Cyclical и Ordered поддерживаются, но алгоритм обрабатывает их как дискретные величины и не производит их особой обработки.

См. также:

Microsoft Neural Network Algorithm
Содержимое моделей интеллектуального анализа данных для моделей нейронных сетей (службы Analysis Services — интеллектуальный анализ данных)
Примеры запросов к модели нейронной сети