Rede Neural de Duas Classes
Cria um classificador binário usando um algoritmo de rede neural
Categoria: Machine Learning/Inicializar modelo/classificação
Observação
Aplica-se a: Machine Learning Studio (clássico) somente
Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.
Visão geral do módulo
Este artigo descreve como usar o módulo Rede Neural de Duas Classes no Machine Learning Studio (clássico) para criar um modelo de rede neural que pode ser usado para prever um destino que tem apenas dois valores.
A classificação usando redes neurais é um método de aprendizado supervisionado e, portanto, requer um conjunto de dados marcado que inclua uma coluna de rótulo. Por exemplo, você pode usar esse modelo de rede neural para prever resultados binários, como se um paciente tem ou não uma determinada doença ou se um computador provavelmente falhará dentro de uma janela de tempo especificada.
Depois de definir o modelo, treine-o fornecendo um conjuntos de dados marcado e o modelo como uma entrada para Treinar Modelo ou ajustar hiperparérmetros de modelo. O modelo treinado pode então ser usado para prever valores para novas entradas.
Mais sobre redes neurais
Uma rede neural é um conjunto de camadas interconectadas. As entradas são a primeira camada e são conectadas a uma camada de saída por um grafo acíclico composto por bordas e nós ponderados.
Entre as camadas de entrada e saída, você pode inserir várias camadas ocultas. Mais tarefas de previsão podem ser feitas facilmente com apenas uma ou algumas camadas ocultas. No entanto, pesquisas recentes mostraram que redes neurais profundas (DNN) com muitas camadas podem ser muito eficazes em tarefas complexas, como reconhecimento de imagem ou fala. As camadas sucessivas são usadas para modelar níveis crescentes de profundidade semântica.
A relação entre entradas e saídas é aprendida com o treinamento da rede neural com os dados de entrada. A direção do grafo vai das entradas por meio da camada oculta até a camada de saída. Todos os nós em uma camada são conectados pelas bordas ponderadas aos nós na próxima camada.
Para calcular a saída da rede para uma entrada específica, um valor é calculado em cada nó nas camadas ocultas e na camada de saída. O valor é definido calculando a soma ponderada dos valores dos nós da camada anterior. Em seguida, uma função de ativação é aplicada a essa soma ponderada.
Como configurar uma Two-Class Neural
Adicione o módulo Rede Neural de Duas Classes ao seu experimento no Studio (clássico). Encontre-o em Machine Learning, Inicializar, na categoria Classificação.
Especifique como você deseja que o modelo seja treinado definindo a opção Criar modo de aprendizagem.
Parâmetro único: escolha esta opção se você já souber como deseja configurar o modelo.
Intervalo de Parâmetros: escolha essa opção se você não tiver certeza dos melhores parâmetros. Em seguida, especifique um intervalo de valores e use o módulo Ajustar Hiperparmetros do Modelo para iterar sobre as combinações e encontrar a configuração ideal.
Para especificação de camada oculta, selecione o tipo de arquitetura de rede a ser criada.
Caso totalmente conectado: usa a arquitetura de rede neural padrão, definida para redes neurais de duas classes da seguinte forma:
Tem uma camada oculta.
A camada de saída é totalmente conectada à camada oculta e a camada oculta é totalmente conectada à camada de entrada.
O número de nós na camada de entrada é igual ao número de recursos nos dados de treinamento.
O número de nós na camada oculta é definido pelo usuário. O valor padrão é 100.
O número de nós é igual ao número de nós de classes. Para uma rede neural de duas classes, isso significa que todas as entradas devem ser mapeadas para um dos dois nós na camada de saída.
Script de definição personalizado: escolha esta opção para criar uma arquitetura de rede neural personalizada usando a linguagem Net #. Com essa opção, você pode definir o número de camadas ocultas, suas conexões e os mapeamentos entre camadas.
Depois de selecionar a opção de script personalizado, na caixa de texto Definição de rede neural , digite ou colar instruções Net# que definem a rede. Para exemplos, consulte Guia para a Linguagem de Especificação de Redes Neurais Net#.
Se você não estiver usando a opção de script, use Número de nós ocultos e digite o número de nós ocultos. O padrão é uma camada oculta com 100 nós.
Para a taxa de aprendizagem defina o tamanho da etapa executada em cada iteração, antes da correção. Um valor maior para a taxa de aprendizagem pode fazer o modelo convergir mais rapidamente, mas com o risco mínimo de errar o alvo verdadeiro.
Para número de iterações de aprendizagem, especifique o número máximo de vezes que o algoritmo deve processar os casos de treinamento.
Para o diâmetro inicial dos pesos de aprendizagem, especifique os pesos do nó no início do processo de aprendizagem.
Para oimpulso, especifique um peso a ser aplicado durante a aprendizagem aos nós das iterações anteriores
Em O tipo de normalizador, selecione um método a ser usado para normalização de recursos. Há suporte para os seguintes métodos de normalização:
Normalizador de binning: o normalizador de binning cria compartimentos de tamanho igual e, em seguida, normaliza cada valor em cada compartimento, dividindo pelo número total de compartimentos.
Normalizador gaussiano: o normalizador gaussiano redimensiona os valores de cada recurso para ter a média 0 e a variação 1. Isso é feito calculando a média e a variação de cada recurso. Para cada instância, o valor médio é subtraído e o resultado dividido pela raiz quadrada da variância (o desvio padrão).
Normalizador min-max: o normalizador mínimo máximo redimensiona linearmente cada recurso para o intervalo [0,1].
O redimensionamento do intervalo [0,1] é feito mudando os valores de cada recurso para que o valor mínimo seja 0 e, em seguida, dividindo pelo novo valor máximo (que é a diferença entre os valores máximos e mínimos originais).
Não normalizar: nenhuma normalização é executada.
Selecione a opção embaralhar exemplos para embaralhar casos entre iterações. Se você desmarcar essa opção, os casos serão processados exatamente na mesma ordem sempre que você executar o experimento.
Para semente de número aleatório, digite um valor a ser usado como a semente.
Especificar um valor de semente é útil quando você deseja garantir a capacidade de repetição em execuções do mesmo experimento. Caso contrário, um valor de relógio do sistema será usado como a semente, o que pode causar resultados ligeiramente diferentes sempre que você executar o experimento.
Selecione a opção Permitir níveis categóricos desconhecidos para criar um grupo para valores desconhecidos nos conjuntos de treinamento e validação. O modelo pode ser menos preciso em valores conhecidos, mas fornece previsões melhores para novos valores (desconhecidos).
Se você desmarcar essa opção, o modelo poderá aceitar apenas os valores contidos nos dados de treinamento.
Adicione um conjuntos de dados marcado ao experimento e conecte um dos módulos de treinamento.
Se você configurar Criar modo treinador como Parâmetro único, use o módulo Treinar modelo.
Se você configurar Criar modo treinador como Intervalo de parâmetros, use o módulo Ajustar hiperparâmetros do modelo.
Observação
Se você transmitir um intervalo de parâmetros para o módulo Treinar modelo, ele usará apenas o primeiro valor da lista de intervalo de parâmetros.
Se você transmitir um só conjunto de valores de parâmetro para o módulo Ajustar hiperparâmetros do modelo, quando ele espera um intervalo de configurações para cada parâmetro, ele vai ignorar os valores e usará os valores padrão para o aprendiz.
Se você selecionar a opção Intervalo de Parâmetros e inserir um único valor para qualquer parâmetro, esse único valor será usado durante a varredura, mesmo se outros parâmetros mudarem em um intervalo de valores.
Execute o experimento.
Resultados
Após a conclusão do treinamento:
Para ver um resumo dos parâmetros do modelo, juntamente com os pesos dos recursos aprendidos com o treinamento e outros parâmetros da rede neural, clique com o botão direito do mouse na saída de Treinar Modelo ou Ajustar Hiperparámetros do Modelo e selecione Visualizar.
Para salvar um instantâneo do modelo treinado, clique com o botão direito do mouse na saída modelo treinado e selecione Salvar como Modelo Treinado. Esse modelo não é atualizado em sequências sucessivas do mesmo experimento.
Para executar a validação cruzada em um conjunto de dados rotulado, conecte o modelo não treinado ao Modelo de Validação Cruzada.
Exemplos
Para exemplos de como esse algoritmo de aprendizado é usado, consulte o Galeria de IA do Azure. Esses experimentos estão relacionados e descritos em um único documento que progride de configurações básicas para avançadas:
Observações técnicas
Esta seção contém detalhes de implementação, dicas e respostas para perguntas frequentes.
Mais sobre o Net #
No Machine Learning Studio (clássico), você pode personalizar a arquitetura de um modelo de rede neural usando a linguagem Net#. As personalizações com suporte da linguagem Net# incluem:
- Especificando o número de camadas ocultas e o número de nós em cada camada
- Especificando mapeamentos entre camadas
- Definindo convoluções e pacotes de compartilhamento de peso
- Escolhendo a função de ativação
Um modelo de rede neural é definido pela estrutura do seu gráfico, que inclui estes atributos:
- O número de camadas ocultas
- O número de nós em cada camada oculta
- Como as camadas são conectadas
- Qual função de ativação é usada
- Pesos nas bordas do gráfico
Importante
A estrutura geral do grafo, bem como a função de ativação, pode ser especificada pelo usuário. No entanto, os pesos nas bordas não podem ser especificados e devem ser aprendidos ao treinar a rede neural nos dados de entrada.
Em geral, a rede tem esses padrões:
- A primeira camada é sempre a camada de entrada.
- A última camada é sempre a camada de saída.
- O número de nós na camada de saída deve ser igual ao número de classes.
Você pode definir qualquer número de camadas intermediárias (chamadas de camadas ocultas, porque estão contidos dentro do modelo e não são diretamente expostas como pontos de extremidade).
O guia de referência do Net# explica a sintaxe e fornece definições de rede de exemplo. Ele explica como você pode usar Net# para adicionar camadas ocultas e definir o modo como as diferentes camadas interagem entre si.
Por exemplo, o script a seguir usa a auto
palavra-chave, que define o número de recursos automaticamente para as camadas de entrada e saída e usa os valores padrão para a camada oculta.
input Data auto;
hidden Hidden auto from Data all;
output Result auto from Hidden all;
Para obter exemplos de script adicionais, consulte guia para a linguagem de especificação de redes neurais net #.
Dica
As redes neurais podem ser computadas de um custo computacional, devido a vários hiperparâmetros e à introdução de topologias de rede personalizadas. Embora, em muitos casos, as redes neurais produzam resultados melhores do que outros algoritmos, obter esses resultados pode envolver uma quantidade razoável de varredura (iterações) em hiperparâmetros.
Parâmetros do módulo
Nome | Intervalo | Type | Padrão | Descrição |
---|---|---|---|---|
Especificação da camada oculta | Lista | Topologia de rede neural | Caso totalmente conectado | Especificar a arquitetura da camada ou das camadas ocultas |
O aprendizado inicial pondera o diâmetro | >=double.Epsilon | Float | 0,1 | Especifique os pesos de nó no início do processo de aprendizado |
Taxa de aprendizado | [double.Epsilon;1.0] | Float | 0,1 | Especifique o tamanho de cada etapa no processo de aprendizado |
A dinâmica | [0,0;1,0] | Float | 0,0 | Especificar um peso a ser aplicado durante o aprendizado aos nós de iterações anteriores |
Definição de rede neural | Qualquer | StreamReader | Quando você seleciona Script de definição personalizada, digite uma expressão de script válida em cada linha para definir as camadas, os nós e o comportamento de uma rede neural personalizada | |
O tipo de normalizador | Lista | Método de normalização | Normalizador Mín-Máx | Selecione o tipo de normalização a ser aplicado aos exemplos de aprendizado |
Número de iterações de aprendizado | >=1 | Integer | 100 | Especificar o número de iterações realizadas durante o aprendizado |
Exemplos de ordem aleatória | Qualquer | Boolean | true | Selecione essa opção para alterar a ordem de instâncias entre iterações de aprendizado |
Propagação de número aleatório | Qualquer | Integer | Especifica uma propagação numérica a ser usada para a geração de números aleatórios. Deixe em branco para usar a propagação padrão. | |
Permitir níveis categóricos desconhecidos | Qualquer | Booliano | verdadeiro | Indica se um nível adicional deve ser criado para categorias desconhecidas. Se o conjunto de dados de teste contiver categorias não presentes no conjunto de dados de treinamento, eles serão mapeados para esse nível desconhecido. |
Saída
Nome | Tipo | Descrição |
---|---|---|
Modelo não treinado | Interface ILearner | Um modelo de classificação binária não treinado |
Confira também
Classificação
Regressão de Rede Neural
Rede Neural Multiclasse
Lista de Módulo A-Z