Partilhar via


Referência técnica do algoritmo de rede neural da Microsoft

A Rede Neural da Microsoft usa uma rede perceptron de várias camadas , também chamada de rede de regra deltaBack-Propagated, composta por até três camadas de neurônios ou perceptrons. Essas camadas são uma camada de entrada, uma camada oculta opcional e uma camada de saída.

Uma discussão detalhada sobre redes neurais do Multilayer Perceptron está fora do escopo desta documentação. Este tópico explica a implementação básica do algoritmo, incluindo o método usado para normalizar valores de entrada e saída e métodos de seleção de recursos usados para reduzir a cardinalidade do atributo. Este tópico descreve os parâmetros e outras configurações que podem ser usadas para personalizar o comportamento do algoritmo e fornece links para informações adicionais sobre como consultar o modelo.

Implementação do Algoritmo de Rede Neural da Microsoft

Em uma rede neural do Perceptron multicamador, cada neurônio recebe uma ou mais entradas e produz uma ou mais saídas idênticas. Cada saída é uma função simples não linear da soma das entradas para o neurônio. As entradas passam de nós na camada de entrada para nós na camada oculta e, em seguida, passam da camada oculta para a camada de saída; não há conexões entre neurônios dentro de uma camada. Se nenhuma camada oculta estiver incluída, como em um modelo de regressão logística, as entradas passarão diretamente de nós na camada de entrada para nós na camada de saída.

Há três tipos de neurônios em uma rede neural que é criada com o algoritmo Microsoft Neural Network:

  • Input neurons

Os neurônios de entrada fornecem valores de atributo de entrada para o modelo de mineração de dados. Para atributos de entrada discretos, um neurônio de entrada normalmente representa um único estado do atributo de entrada. Isso inclui valores ausentes, se os dados de treinamento contiverem nulos para esse atributo. Um atributo de entrada discreto que tem mais de dois estados gera um neurônio de entrada para cada estado e um neurônio de entrada para um estado ausente, se houver nulos nos dados de treinamento. Um atributo de entrada contínua gera dois neurônios de entrada: um neurônio para um estado ausente e um neurônio para o valor do próprio atributo contínuo. Os neurônios de entrada fornecem entradas para um ou mais neurônios ocultos.

  • Hidden neurons

Neurônios ocultos recebem entradas de neurônios de entrada e fornecem saídas para os neurônios de saída.

  • Output neurons

Os neurônios de saída representam valores de atributo previsíveis para o modelo de mineração de dados. Para atributos de entrada discretos, um neurônio de saída normalmente representa um único estado previsto para um atributo previsível, incluindo valores ausentes. Por exemplo, um atributo previsível binário produz um nó de saída que descreve um estado ausente ou existente, para indicar se existe um valor para esse atributo. Uma coluna booliana usada como um atributo previsível gera três neurônios de saída: um neurônio para um valor verdadeiro, um neurônio para um valor falso e um neurônio para um estado ausente ou existente. Um atributo previsível discreto que tem mais de dois estados gera um neurônio de saída para cada estado e um neurônio de saída para um estado ausente ou existente. Colunas previsíveis contínuas geram dois neurônios de saída: um neurônio para um estado ausente ou existente e um neurônio para o valor da própria coluna contínua. Se mais de 500 neurônios de saída forem gerados examinando o conjunto de colunas previsíveis, o Analysis Services gerará uma nova rede no modelo de mineração para representar os neurônios de saída adicionais.

Um neurônio recebe entrada de outros neurônios, ou de outros dados, dependendo de qual camada da rede está. Um neurônio de entrada recebe entradas dos dados originais. Neurônios ocultos e neurônios de saída recebem entradas da saída de outros neurônios na rede neural. As entradas estabelecem relações entre neurônios e as relações servem como um caminho de análise para um conjunto específico de casos.

Cada entrada tem um valor atribuído a ele, chamado de peso, que descreve a relevância ou importância dessa entrada específica para o neurônio oculto ou o neurônio de saída. Quanto maior o peso atribuído a uma entrada, mais relevante ou importante o valor dessa entrada. Os pesos podem ser negativos, o que implica que a entrada pode inibir, em vez de ativar, um neurônio específico. O valor de cada entrada é multiplicado pelo peso para enfatizar a importância de uma entrada para um neurônio específico. Para pesos negativos, o efeito de multiplicar o valor pelo peso é desafoizar a importância.

Cada neurônio tem uma função não linear simples atribuída a ele, chamada função de ativação, que descreve a relevância ou importância de um neurônio específico para essa camada de uma rede neural. Os neurônios ocultos usam uma função tangente hiperbólica (tanh) para sua função de ativação, enquanto os neurônios de saída usam uma função sigmóide para ativação. Ambas as funções são funções contínuas não lineares que permitem à rede neural modelar relações não lineares entre neurônios de entrada e saída.

Redes neurais de treinamento

Várias etapas estão envolvidas no treinamento de um modelo de mineração de dados que usa o algoritmo de Rede Neural da Microsoft. Essas etapas são fortemente influenciadas pelos valores que você especifica para os parâmetros de algoritmo.

O algoritmo primeiro avalia e extrai dados de treinamento da fonte de dados. Um percentual dos dados de treinamento, chamados de dados de espera, é reservado para uso na avaliação da precisão da rede. Durante todo o processo de treinamento, a rede é avaliada imediatamente após cada iteração por meio dos dados de treinamento. Quando a precisão não aumenta mais, o processo de treinamento é interrompido.

Os valores dos parâmetros SAMPLE_SIZE e HOLDOUT_PERCENTAGE são usados para determinar o número de casos a serem amostrado dos dados de treinamento e o número de casos a serem colocados de lado para os dados de espera. O valor do parâmetro HOLDOUT_SEED é usado para determinar aleatoriamente os casos individuais a serem colocados de lado para os dados de retenção.

Observação

Esses parâmetros de algoritmo são diferentes das propriedades HOLDOUT_SIZE e HOLDOUT_SEED, que são aplicadas a uma estrutura de mineração para definir um conjunto de dados de teste.

O algoritmo em seguida determina o número e a complexidade das redes às quais o modelo de mineração dá suporte. Se o modelo de mineração contiver um ou mais atributos que são usados apenas para previsão, o algoritmo criará uma única rede que representa todos esses atributos. Se o modelo de mineração contiver um ou mais atributos usados para entrada e previsão, o provedor de algoritmo construirá uma rede para cada atributo.

Para atributos de entrada e previsíveis que têm valores discretos, cada neurônio de entrada ou saída, respectivamente, representa um único estado. Para atributos de entrada e previsíveis que têm valores contínuos, cada neurônio de entrada ou saída, respectivamente, representa o intervalo e a distribuição de valores para o atributo. O número máximo de estados com suporte em ambos os casos depende do valor do parâmetro de algoritmo MAXIMUM_STATES . Se o número de estados de um atributo específico exceder o valor do parâmetro de algoritmo MAXIMUM_STATES , os estados mais populares ou relevantes para esse atributo serão escolhidos, até o número máximo de estados permitidos e os estados restantes serão agrupados como valores ausentes para fins de análise.

Em seguida, o algoritmo usa o valor do parâmetro HIDDEN_NODE_RATIO ao determinar o número inicial de neurônios a serem criados para a camada oculta. Você pode definir HIDDEN_NODE_RATIO como 0 para impedir a criação de uma camada oculta nas redes que o algoritmo gera para o modelo de mineração, para tratar a rede neural como uma regressão logística.

O provedor de algoritmo avalia iterativamente o peso de todas as entradas em toda a rede ao mesmo tempo, usando o conjunto de dados de treinamento reservados anteriormente e comparando o valor real conhecido para cada caso nos dados de espera com a previsão da rede, em um processo conhecido como aprendizado em lote. Depois que o algoritmo tiver avaliado todo o conjunto de dados de treinamento, o algoritmo examinará o valor previsto e real para cada neurônio. O algoritmo calcula o grau de erro, se houver, e ajusta os pesos associados às entradas desse neurônio, trabalhando para trás de neurônios de saída para neurônios de entrada em um processo conhecido como backpropagation. Em seguida, o algoritmo repete o processo em todo o conjunto de dados de treinamento. Como o algoritmo pode dar suporte a muitos pesos e neurônios de saída, o algoritmo de gradiente conjugado é usado para orientar o processo de treinamento para atribuir e avaliar pesos para entradas. Uma discussão sobre o algoritmo de gradiente conjugado está fora do escopo desta documentação.

Seleção de recursos

Se o número de atributos de entrada for maior que o valor do parâmetro MAXIMUM_INPUT_ATTRIBUTES ou se o número de atributos previsíveis for maior que o valor do parâmetro MAXIMUM_OUTPUT_ATTRIBUTES , um algoritmo de seleção de recursos será usado para reduzir a complexidade das redes incluídas no modelo de mineração. A seleção de recursos reduz o número de atributos de entrada ou previsíveis para aqueles que são mais relevantes estatisticamente para o modelo.

A seleção de recursos é usada automaticamente por todos os algoritmos de mineração de dados do Analysis Services para melhorar a análise e reduzir a carga de processamento. O método usado para seleção de recursos em modelos de rede neural depende do tipo de dados do atributo. Para referência, a tabela a seguir mostra os métodos de seleção de recursos usados para modelos de rede neural e também mostra os métodos de seleção de recursos usados para o algoritmo regressão logística, que se baseia no algoritmo rede neural.

Algoritmo Método de análise Comentários
Rede Neural Pontuação de interessante

Entropia de Shannon

Bayesian com K2 Prior

Dirichlet bayesiano com prévio uniforme (padrão)
O algoritmo Redes Neurais pode usar métodos de pontuação bayesianos e baseados em entropia, desde que os dados contenham colunas contínuas.

Padrão.
Regressão logística Pontuação de interessante

Entropia de Shannon

Bayesian com K2 Prior

Dirichlet bayesiano com prévio uniforme (padrão)
Como você não pode passar um parâmetro para esse algoritmo para controlar o comportamento de eleição de recursos, os padrões são usados. Portanto, se todos os atributos forem discretos ou discretizados, o padrão será BDEU.

Os parâmetros de algoritmo que controlam a seleção de recursos para um modelo de rede neural são MAXIMUM_INPUT_ATTRIBUTES, MAXIMUM_OUTPUT_ATTRIBUTES e MAXIMUM_STATES. Você também pode controlar o número de camadas ocultas definindo o parâmetro HIDDEN_NODE_RATIO.

Métodos de pontuação

A pontuação é uma espécie de normalização, que no contexto do treinamento de um modelo de rede neural significa o processo de conversão de um valor, como um rótulo de texto discreto, em um valor que pode ser comparado com outros tipos de entradas e ponderado na rede. Por exemplo, se um atributo de entrada for Gender e os valores possíveis forem Masculino e Feminino, e outro atributo de entrada for Renda, com um intervalo variável de valores, os valores de cada atributo não serão diretamente comparáveis e, portanto, deverão ser codificados em uma escala comum para que os pesos possam ser computados. A pontuação é o processo de normalizar essas entradas para valores numéricos: especificamente, para um intervalo de probabilidades. As funções usadas para normalização também ajudam a distribuir o valor de entrada de forma mais uniforme em uma escala uniforme para que valores extremos não distorçam os resultados da análise.

As saídas da rede neural também são codificadas. Quando há um único destino para a saída (ou seja, previsão) ou vários destinos que são usados apenas para previsão e não para entrada, o modelo cria uma única rede e pode não parecer necessário normalizar os valores. No entanto, se vários atributos forem usados para entrada e previsão, o modelo deverá criar várias redes; portanto, todos os valores devem ser normalizados e as saídas também devem ser codificadas quando saem da rede.

A codificação de entradas baseia-se na soma de cada valor discreto nos casos de treinamento e na multiplicação desse valor por seu peso. Isso é chamado de soma ponderada, que é passada para a função de ativação na camada oculta. Uma pontuação z é usada para codificação, da seguinte maneira:

Valores discretos

μ = p - a probabilidade anterior de um estado

StdDev = sqrt(p(1-p))

Valores contínuos

Valor presente = 1 - μ/σ

Não há valor existente = -μ/σ

Depois que os valores tiverem sido codificados, as entradas passarão por somas ponderadas, com bordas de rede como pesos.

A codificação para saídas usa a função sigmoid, que tem propriedades que a tornam muito útil para previsão. Uma dessas propriedades é que, independentemente de como os valores originais são dimensionados e, independentemente de os valores serem negativos ou positivos, a saída dessa função é sempre um valor entre 0 e 1, que é adequado para estimar probabilidades. Outra propriedade útil é que a função sigmóide tem um efeito de suavização, de modo que, à medida que os valores se afastam mais do ponto de inflexão, a probabilidade do valor se move para 0 ou 1, mas lentamente.

Personalizando o algoritmo de rede neural

O algoritmo de Rede Neural da Microsoft dá suporte a vários parâmetros que afetam o comportamento, o desempenho e a precisão do modelo de mineração resultante. Você também pode modificar a maneira como o modelo processa dados definindo sinalizadores de modelagem em colunas ou definindo sinalizadores de distribuição para especificar como os valores dentro da coluna são tratados.

Definindo parâmetros de algoritmo

A tabela a seguir descreve os parâmetros que podem ser usados com o algoritmo de Rede Neural da Microsoft.

HIDDEN_NODE_RATIO
Especifica a proporção de neurônios ocultos para neurônios de entrada e saída. A fórmula a seguir determina o número inicial de neurônios na camada oculta:

HIDDEN_NODE_RATIO * SQRT(Total de neurônios de entrada * Neurônios de saída total)

O valor padrão é 4.0.

PERCENTUAL_DE_RESERVA
Especifica a porcentagem de casos nos dados de treinamento usados para calcular o erro de retenção, que é usado como parte dos critérios de interrupção durante o treinamento do modelo de mineração.

O valor padrão é 30.

HOLDOUT_SEED
Especifica um número que é usado para inicializar o gerador pseudo-aleatório quando o algoritmo determina aleatoriamente os dados de validação. Se esse parâmetro for definido como 0, o algoritmo gerará a semente com base no nome do modelo de mineração, para garantir que o conteúdo do modelo permaneça o mesmo durante o reprocessamento.

O valor padrão é 0.

ATRIBUTOS_MÁXIMOS_DE_ENTRADA
Determina o número máximo de atributos de entrada que podem ser fornecidos ao algoritmo antes que a seleção de recursos seja empregada. Definir esse valor como 0 desabilita a seleção de recursos para atributos de entrada.

O valor padrão é 255.

ATRIBUTOS_DE_SAÍDA_MÁXIMA
Determina o número máximo de atributos de saída que podem ser fornecidos ao algoritmo antes que a seleção de recursos seja empregada. Definir esse valor como 0 desabilita a seleção de recursos para atributos de saída.

O valor padrão é 255.

ESTADOS_MÁXIMOS
Especifica o número máximo de estados discretos por atributo compatível com o algoritmo. Se o número de estados para um atributo específico for maior do que o número especificado para esse parâmetro, o algoritmo usará os estados mais populares para esse atributo e tratará os estados restantes como ausentes.

O valor padrão é 100.

TAMANHO_DA_AMOSTRA
Especifica o número de casos a serem usados para treinar o modelo. O algoritmo usa esse número ou a porcentagem do total de casos não incluídos nos dados de validação, conforme especificado pelo parâmetro HOLDOUT_PERCENTAGE, o que for menor.

Em outras palavras, se HOLDOUT_PERCENTAGE for definido como 30, o algoritmo usará o valor desse parâmetro ou um valor igual a 70% do número total de casos, o que for menor.

O valor padrão é 10000.

Bandeiras de modelagem

Os sinalizadores de modelagem a seguir têm suporte para uso com o algoritmo rede neural da Microsoft.

NÃO NULO
Indica que a coluna não pode conter um nulo. Um erro resultará se o Analysis Services encontrar um valor nulo durante o treinamento do modelo.

Aplica-se às colunas da estrutura de mineração.

Existência_somente_modelo
Indica que o modelo deve considerar apenas se existe um valor para o atributo ou se um valor está ausente. O valor exato não importa.

Aplica-se a colunas de modelo de mineração.

Sinalizadores de distribuição

Os sinalizadores de distribuição a seguir têm suporte para uso com o algoritmo Rede Neural da Microsoft. Os sinalizadores são usados como dicas somente para o modelo; se o algoritmo detectar uma distribuição diferente, ele usará a distribuição encontrada, não a distribuição fornecida na dica.

Normal
Indica que os valores dentro da coluna devem ser tratados como se representassem a distribuição normal ou gaussiana.

Uniforme
Indica que os valores dentro da coluna devem ser tratados como se fossem distribuídos uniformemente; ou seja, a probabilidade de qualquer valor é aproximadamente igual e é uma função do número total de valores.

Lognormal
Indica que os valores dentro da coluna devem ser tratados como distribuídos de acordo com a curva normal do log , o que significa que o logaritmo dos valores é distribuído normalmente.

Requisitos

Um modelo de rede neural deve conter pelo menos uma coluna de entrada e uma coluna de saída.

Colunas de entrada e de previsão

O algoritmo Rede Neural da Microsoft dá suporte às colunas de entrada específicas e colunas previsíveis listadas na tabela a seguir.

Coluna Tipos de conteúdo
Atributo de entrada Contínuo, cíclico, discreto, discretizado, chave, tabela e ordenado
Atributo previsível Contínuo, cíclico, discreto, discreto e ordenado

Observação

Tipos de conteúdo cíclico e ordenado têm suporte, mas o algoritmo os trata como valores discretos e não executa processamento especial.

Consulte Também

Algoritmo de rede neural da Microsoft
Conteúdo do modelo de mineração para modelos de rede neural (Analysis Services – Mineração de dados)
Exemplos de consulta de modelo de rede neural