Rede Neural de Várias Classes

Cria um modelo de classificação multiclasse usando um algoritmo de rede neural

Categoria: Machine Learning / Initialize Model / Classification

Nota

Aplica-se a: Machine Learning Studio (clássico)

Este conteúdo diz respeito apenas ao Studio (clássico). Módulos semelhantes de arrasto e queda foram adicionados ao designer de Aprendizagem automática Azure. Saiba mais neste artigo comparando as duas versões.

Visão geral do módulo

Este artigo descreve como usar o módulo Multiclass Neural Network no Azure Machine Learning Studio (clássico), para criar um modelo de rede neural que pode ser usado para prever um alvo que tem múltiplos valores.

Por exemplo, redes neurais deste tipo podem ser usadas em tarefas complexas de visão computacional, tais como reconhecimento de dígitos ou letras, classificação de documentos e reconhecimento de padrões.

A classificação utilizando redes neurais é um método de aprendizagem supervisionado, e, portanto, requer um conjunto de dados marcado que inclui uma coluna de etiqueta.

Pode treinar o modelo fornecendo o modelo e o conjunto de dados marcados como uma entrada para o Modelo de Comboio ou para Sintonizar Hiperparametros modelo. O modelo treinado pode então ser usado para prever valores para os novos exemplos de entrada.

Mais sobre redes neurais

Uma rede neural é um conjunto de camadas interligadas. As entradas são a primeira camada, e estão ligadas a uma camada de saída por um gráfico acicílico composto por bordas e nós ponderados.

Entre as camadas de entrada e saída pode inserir várias camadas escondidas. A maioria das tarefas preditivas pode ser realizada facilmente com apenas uma ou algumas camadas escondidas. No entanto, pesquisas recentes mostraram que redes neuronais profundas (DNN) com muitas camadas podem ser muito eficazes em tarefas complexas como o reconhecimento de imagem ou de voz. 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 treino da rede neural nos dados de entrada. A direção do gráfico provém das entradas através da camada escondida e da camada de saída. Todos os nós numa camada são ligados pelas bordas ponderadas aos nós na camada seguinte.

Para calcular a saída da rede para uma determinada entrada, calcula-se um valor 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. Uma função de ativação é então aplicada a essa soma ponderada.

Como configurar a Rede Neural Multiclass

  1. Adicione o módulo MultiClass Neural Network à sua experiência em Studio (clássico). Pode encontrar este módulo na categoria Machine Learning, Initialize, na categoria Classificação.

  2. Criar o modo de treinador: Utilize esta opção para especificar como pretende que o modelo seja treinado:

    • Parâmetro único: Escolha esta opção se já sabe como pretende configurar o modelo.

    • Intervalo de parâmetros: Escolha esta opção se não tiver a certeza dos melhores parâmetros e quiser utilizar uma varredura de parâmetros. Em seguida, especifique uma gama de valores e utilize o módulo Tune Model Hyperparameters para iterar sobre as combinações e encontrar a configuração ideal.

  3. Especificação de camada escondida: Selecione o tipo de arquitetura de rede para criar.

    • Caso totalmente ligado: Selecione esta opção para criar um modelo utilizando a arquitetura de rede neural padrão. Para os modelos de rede neural multiclasse, os padrão são os seguintes:

      • Uma camada escondida
      • A camada de saída está totalmente ligada à camada oculta.
      • A camada escondida está totalmente ligada à camada de entrada.
      • O número de nós na camada de entrada é determinado pelo número de funcionalidades nos dados de treino.
      • O número de nós na camada oculta pode ser definido pelo utilizador. A predefinição é 100.
      • O número de nós na camada de saída depende do número de classes.
    • Script de definição personalizada. Escolha esta opção para criar uma arquitetura de rede neural personalizada, utilizando o idioma Net#. Pode definir o número de camadas ocultas, as suas ligações e opções avançadas, tais como especificar os mapeamentos entre camadas. Para uma introdução à Net#, consulte Mais Sobre Net# mais tarde neste tópico.

  4. Definição da rede neural: Se selecionar a opção de arquitetura personalizada, utilize a caixa de texto para escrever ou colar em declarações escritas no idioma Net#. Para obter exemplos de scripts adicionais, consulte o Guia para o Idioma de especificação de redes neurais Net#.

  5. Número de nós ocultos: Esta opção permite personalizar o número de nós ocultos na arquitetura padrão. Digite o número de nós escondidos. O padrão é uma camada escondida com 100 nós.

  6. Taxa de aprendizagem: Definir o tamanho do passo dado em cada iteração, antes da correção. Um valor maior para a taxa de aprendizagem pode fazer com que o modelo converjam mais rapidamente, mas pode ultrapassar o minima local.

  7. Número de iterações de aprendizagem: Especifique o número máximo de vezes que o algoritmo deve processar os casos de treino.

  8. O diâmetro dos pesos de aprendizagem inicial: Especifique os pesos dos nós no início do processo de aprendizagem.

  9. O impulso: Especifique um peso a aplicar durante a aprendizagem aos nós de iterações anteriores.

  10. O tipo de normalizador: Selecione o método a utilizar para normalização da característica. São suportados os seguintes métodos de normalização:

    • Normalizador debinário : O normalizador de binário cria caixotes de tamanho igual e, em seguida, normaliza cada valor em cada caixa, dividindo-se pelo número total de caixotes.

    • Normalizador gaussiano: O normalizador gaussiano redimensiona os valores de cada característica para ter média 0 e variação 1. Isto é feito calculando a média e a variação de cada recurso. Em cada caso, o valor médio é subtraído, e o resultado dividido pela raiz quadrada da variação (o desvio padrão).

    • Normalizador min-max: O normalizador min-max redimensiona linearmente todas as características para o intervalo [0,1].

      A rescalificação para o intervalo [0,1] é feita mudando os valores de cada recurso de modo a que o valor mínimo seja 0, e depois dividindo-se pelo novo valor máximo (que é a diferença entre os valores máximos originais e mínimos).

    • Não normalize: Não é efetuada qualquer normalização.

  11. Shuffle exemplos: Selecione esta opção para baralhar casos entre iterações.

    Se desmarcar esta opção, os casos são processados exatamente da mesma ordem sempre que executam a experiência.

  12. Semente de número aleatório: Digite um valor a utilizar como semente, se quiser garantir a repetibilidade através de séries da mesma experiência.

  13. Permitir níveis categóricos desconhecidos: Selecione esta opção para criar um agrupamento para valores desconhecidos nos conjuntos de treino e validação. O modelo pode ser menos preciso em valores conhecidos, mas fornecer melhores previsões para novos valores (desconhecidos).

    Se desmarcar esta opção, o modelo só pode aceitar os valores contidos nos dados de treino.

  14. Ligue um conjunto de dados de formação e um dos módulos de treino:

    Nota

    Se passar uma gama de parâmetros para o Modelo de Comboio,utiliza apenas o primeiro valor na lista de parâmetros.

    Se passar um único conjunto de valores de parâmetros para o módulo Tune Model Hyperparameters, quando espera uma gama de definições para cada parâmetro, ignora os valores e utiliza os valores predefinidos para o aluno.

    Se selecionar a opção De Alcance de Parâmetros e introduzir um único valor para qualquer parâmetro, esse valor único especificado é utilizado ao longo da varredura, mesmo que outros parâmetros se alterem numa gama de valores.

Resultados

Após o treino estar completo:

  • Para ver um resumo dos parâmetros do modelo, juntamente com os pesos de recurso aprendidos com o treino, e outros parâmetros da rede neural, clique com o botão direito na saída do Model de Comboio ou dos Hiperparametros do Modelo de Sintonização,e selecione Visualize.

  • Para guardar uma imagem do modelo treinado, clique com o botão direito na saída do modelo treinado e selecione Save As Trained Model. Este modelo não é atualizado em sucessivas execuções da mesma experiência.

  • Para efetuar a validação cruzada contra um conjunto de dados rotulado, ligue o modelo não treinado ao Modelo De Validação Cruzada.

Exemplos

Por exemplo, como este algoritmo de aprendizagem é usado, veja estas experiências de amostra na Galeria Azure AI. As experiências estão relacionadas e descritas num único documento que progride de configurações básicas a avançadas:

Notas técnicas

Esta secção contém detalhes de implementação, dicas e respostas a perguntas frequentes.

Personalizar a rede neural usando o script

No Azure Machine Learning Studio (clássico), pode personalizar a arquitetura de um modelo de rede neural utilizando o idioma Net#. As personalizações suportadas pelo idioma Net# incluem:

  • Especificando o número de camadas escondidas e o número de nós em cada camada
  • Especificar mapeamentos entre camadas
  • Definição de convoluções e pacotes de partilha de peso
  • Escolher 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 escondidas
  • O número de nós em cada camada escondida
  • Como as camadas estão ligadas
  • Qual função de ativação é usada
  • Pesos nas bordas do gráfico

Importante

A estrutura global do gráfico, bem como a função de ativação, podem ser especificadas pelo utilizador. 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 estes incumprimentos:

  • 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.

Pode definir qualquer número de camadas intermédias: estas são por vezes chamadas camadas ocultas, porque estão contidas dentro do modelo, e não estão diretamente expostas como pontos finais.

O guia de referência Net# explica a sintaxe e fornece definições de rede de amostras. Explica como pode usar o Net# para adicionar camadas escondidas e definir a forma como as diferentes camadas interagem entre si.

Por exemplo, o seguinte script utiliza a auto palavra-chave, que define automaticamente o número de funcionalidades para as camadas de entrada e saída, e utiliza 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 scripts adicionais, consulte o Guia para o Idioma de especificação de redes neurais Net#.

Dica

As redes neurais podem ser computacionalmente caras, devido a uma série de hiperparímetros e à introdução de topologias de rede personalizadas. Embora, em muitos casos, as redes neurais produzam melhores resultados do que outros algoritmos, a obtenção de tais resultados pode envolver uma quantidade justa de varreduras (iterações) sobre hiperparímetros.

Parâmetros do módulo

Nome Intervalo Tipo Predefinição Descrição
Especificação de camada escondida Lista Topologia da Rede Neural Caso totalmente ligado Especificar a arquitetura da camada ou camadas escondidas
O diâmetro inicial dos pesos de aprendizagem >=duplo. Epsilon Float 0.1 Especificar os pesos dos nó no início do processo de aprendizagem
A taxa de aprendizagem [O dobro. Epsilon;1.0] Float 0.1 Especificar o tamanho de cada passo no processo de aprendizagem
O impulso [0.0;1.0] Float 0,0 Especificar um peso a aplicar durante a aprendizagem aos nóns de iterações anteriores
Definição da rede neural Qualquer StreamReader Ao selecionar o script de definição personalizada, digite uma expressão de script válida em cada linha para definir as camadas, nós e o comportamento de uma rede neural personalizada
O tipo de normalizador Lista Método de normalização Normalizador mínimo máximo Selecione o tipo de normalização para aplicar a exemplos de aprendizagem
Número de iterações de aprendizagem >=1 Número inteiro 100 Especificar o número de iterações durante a aprendizagem
Baralhar exemplos Qualquer Booleano Verdadeiro Selecione esta opção para alterar a ordem de instâncias entre iterações de aprendizagem
Semente de número aleatório Qualquer Número inteiro Especifique uma semente numérica para usar para a geração de números aleatórios. Deixe em branco para utilizar a semente padrão.
Permitir níveis categóricos desconhecidos Qualquer Booleano Verdadeiro Indicar se deve ser criado um nível adicional para categorias desconhecidas. Se o conjunto de dados do teste contiver categorias que não estão presentes no conjunto de dados de treino, são mapeadas para este nível desconhecido.

Saída

Nome Tipo Descrição
Modelo destreinado Interface ILearner Um modelo de classificação multiclasse não treinado

Ver também

Classificação
Rede Neural de duas classes
Regressão da Rede Neural
Lista de Módulos A-Z