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

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

Это важно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Замечание

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

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

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

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

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

Выбор признаков

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

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

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

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

Байезиан с K2 До

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

Default.
Логистическая регрессия Оценка интересности

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

Байезиан с K2 До

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

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

Методы оценки

Оценка — это своего рода нормализация, которая в контексте обучения модели нейронной сети означает процесс преобразования значения, например дискретной текстовой метки, в значение, которое можно сравнить с другими типами входных данных и взвешенных в сети. Например, если один входной атрибут является полом и возможными значениями являются Male и Female, а другой входной атрибут — "Доход", с переменным диапазоном значений, значения для каждого атрибута не являются напрямую сопоставимыми и поэтому должны быть закодированы в общий масштаб, чтобы вычислить весовые значения. Оценка — это процесс нормализации таких входных данных числовыми значениями: в частности, для диапазона вероятностей. Функции, используемые для нормализации, также помогают равномерно распределять входные значения в равномерном масштабе, чтобы крайние значения не искажали результаты анализа.

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

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

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

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

StdDev = sqrt(p(1-p))

Непрерывные значения

Текущее значение= 1 - μ/σ

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

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

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

Настройка алгоритма нейронной сети

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

Настройка параметров алгоритма

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

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

HIDDEN_NODE_RATIO * SQRT(Всего входных нейронов * Всего выходных нейронов)

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

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

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

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

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

МАКСИМАЛЬНЫЕ_ВХОДНЫЕ_АТРИБУТЫ
Определяет максимальное количество входных атрибутов, которые можно предоставить алгоритму перед использованием выбора признаков. Установка этого значения на 0 отключает выбор признаков для входных атрибутов.

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

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

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

МАКСИМАЛЬНЫЕ_СОСТОЯНИЯ
Указывает максимальное количество дискретных состояний для каждого атрибута, поддерживаемого алгоритмом. Если число состояний для определенного атрибута больше числа, указанного для этого параметра, алгоритм использует наиболее популярные состояния для этого атрибута и обрабатывает оставшиеся состояния как отсутствующие.

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

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

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

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

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

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

НЕ ПУСТОЕ ЗНАЧЕНИЕ
Указывает, что столбец не может содержать значение NULL. Произойдет ошибка, если Analysis Services обнаруживает NULL во время обучения модели.

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

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

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

Флаги распространения

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

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

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

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

Требования

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

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

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

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

Замечание

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

См. также

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