Regressão da Rede Neural

Cria um modelo de regressão usando um algoritmo de rede neural

Categoria: Machine Learning / Initialize Model / Regression

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 de regressão da rede neural no Azure Machine Learning Studio (clássico), para criar um modelo de regressão usando um algoritmo de rede neural personalizável.

Embora as redes neurais sejam amplamente conhecidas pelo uso em problemas complexos de aprendizagem profunda e modelação, tais como o reconhecimento de imagem, são facilmente adaptados a problemas de regressão. Qualquer classe de modelos estatísticos pode ser denominada rede neural se usar pesos adaptativos e pode aproximar funções não lineares das suas entradas. Assim, a regressão da rede neural é adequada a problemas em que um modelo de regressão mais tradicional não consegue encaixar numa solução.

A regressão da rede neural é um método de aprendizagem supervisionado, pelo que requer um conjunto de dados marcado, que inclui uma coluna de etiquetas. Como um modelo de regressão prevê um valor numérico, a coluna de etiqueta deve ser um tipo de dado numérico.

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

Como configurar a regressão da rede neural

As redes neuronais podem ser extensivamente personalizadas. Esta secção descreve como criar um modelo utilizando dois métodos:

  • Criar um modelo de rede neural usando a arquitetura padrão

    Se aceitar a arquitetura de rede neural padrão, use o painel de Propriedades para definir parâmetros que controlem o comportamento da rede neural, como o número de nós na camada oculta, taxa de aprendizagem e normalização.

    Comece aqui se for novo em redes neuronais. O módulo suporta muitas personalizações, bem como afinação de modelos, sem profundo conhecimento de redes neurais.

  • Defina uma arquitetura personalizada para uma rede neural

    Utilize esta opção se pretender adicionar camadas extra escondidas ou personalizar totalmente a arquitetura da rede, as suas ligações e funções de ativação.

    Esta opção é melhor se já estiver familiarizado com redes neurais. Usa o idioma Net# para definir a arquitetura da rede.

Criar um modelo de rede neural usando a arquitetura padrão

  1. Adicione o módulo de regressão da rede neural à sua experiência em Studio (clássico). Pode encontrar este módulo na categoria Machine Learning, Initialize, na categoria Regression.

  2. Indique como pretende que o modelo seja treinado, definindo a opção modo de formação Create.

    • 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. Em seguida, especifique uma gama de valores e use o módulo Tune Model Hyperparameters para iterar sobre as combinações e encontrar a configuração ideal.

  3. Na especificação da camada escondida, selecione caso totalmente ligado. Esta opção cria um modelo utilizando a arquitetura de rede neural padrão, que para um modelo de regressão da rede neural, tem estes atributos:

    • A rede tem exatamente uma camada escondida.
    • A camada de saída está totalmente ligada à camada escondida e a camada escondida está totalmente ligada à camada de entrada.
    • O número de nós na camada oculta pode ser definido pelo utilizador (o valor predefinido é de 100).

    Como o número de nós na camada de entrada é determinado pelo número de funcionalidades nos dados de treino, num modelo de regressão só pode haver um nó na camada de saída.

  4. Para o número de nós ocultos, digite o número de nós ocultos. O padrão é uma camada escondida com 100 nós. (Esta opção não está disponível se definir uma arquitetura personalizada usando Net#.)

  5. Para a taxa de aprendizagem, escreva um valor que defina o 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.

  6. Para o número de iterações de aprendizagem, especifiqueo número máximo de vezes que o algoritmo processa os casos de treino.

  7. Para o diâmetro inicial dos pesos de aprendizagem, digite um valor que determina os pesos dos nó no início do processo de aprendizagem.

  8. Para o momento, escreva um valor a aplicar durante a aprendizagem como um peso sobre nós de iterações anteriores.

  9. Para o tipo de normalizador, escolha um dos seguintes métodos a utilizar para normalização de características:

    • Binário: O binário cria grupos de tamanho igual e, em seguida, normaliza todos os valores de cada grupo para serem divididos pelo número total de grupos.

    • Normalizador gaussiano: A normalização gaussiana 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, e depois, por cada instância, subtraindo o valor médio e dividindo-se pela raiz quadrada da variação (o desvio padrão).

    • Normalizador Min-Max: A normalização de 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.

  10. Selecione a opção, Shuffle exemplos, para alterar a ordem dos casos entre iterações. Se desmarcar esta opção, os casos são processados exatamente da mesma ordem sempre que executam a experiência.

  11. Para sementes de número aleatório, pode escrever opcionalmente um valor a utilizar como semente. Especificar um valor de semente é útil quando pretender garantir a repetibilidade em todas as execuções da mesma experiência.

  12. Selecione a opção Deixe níveis categóricos desconhecidos para criar um agrupamento para valores desconhecidos. 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.

  13. Ligue um datset de treino e um dos módulos de treino:

    Aviso

    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.

  14. Execute a experimentação.

Defina uma arquitetura personalizada

  1. Adicione o módulo de regressão da rede neural à sua experiência.

  2. Indique como pretende que o modelo seja treinado, definindo a opção modo de formação Create.

    • 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. Em seguida, especifique uma gama de valores e use o módulo Tune Model Hyperparameters para iterar sobre as combinações e encontrar a configuração ideal.

  3. Na especificação de camada oculta, selecione script de definição personalizada. Você deve escolher esta opção se você quiser definir uma arquitetura de rede neural personalizada usando o idioma Net#.

  4. Depois de selecionar a opção de script de definição personalizada, é apresentada a caixa de texto de definição de rede Neural. Pode colar no script Net# para definir uma arquitetura personalizada para a rede neural, incluindo o número de camadas escondidas, suas ligações e opções avançadas, como especificar os mapeamentos entre camadas.

  5. Para a taxa de aprendizagem, escreva um valor que defina o 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.

  6. Para o número de iterações de aprendizagem, especifiqueo número máximo de vezes que o algoritmo processa os casos de treino.

  7. Para o diâmetro inicial dos pesos de aprendizagem, digite um valor que determina os pesos dos nó no início do processo de aprendizagem.

  8. Para o momento, escreva um valor a aplicar durante a aprendizagem como um peso sobre nós de iterações anteriores.

  9. Para o tipo de normalizador, escolha um dos seguintes métodos a utilizar para normalização de características:

    • Binário: O binário cria grupos de tamanho igual e, em seguida, normaliza cada valor em cada grupo, dividindo-se pelo número total de grupos.

    • Normalizador gaussiano: A normalização gaussiana 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, e depois, por cada instância, subtraindo o valor médio e dividindo-se pela raiz quadrada da variação (o desvio padrão).

    • Min-Max: A normalização de 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.

  10. Selecione a opção, Shuffle exemplos, para alterar a ordem dos casos entre iterações. Se desmarcar esta opção, os casos são processados exatamente da mesma ordem sempre que executam a experiência.

  11. Para sementes de número aleatório, pode escrever opcionalmente um valor a utilizar como semente. Especificar um valor de semente é útil quando pretender garantir a repetibilidade em todas as execuções da mesma experiência.

  12. Selecione a opção Deixe níveis categóricos desconhecidos para criar um agrupamento para valores desconhecidos. Quaisquer valores desconhecidos no conjunto de dados de teste são mapeados para esta categoria desconhecida. A utilização desta opção poderá tornar o modelo ligeiramente menos preciso em valores conhecidos, mas fornecer melhores previsões para novos valores (desconhecidos).

    Se desmarcar esta opção, o modelo só pode fazer previsões para os valores contidos nos dados de treino.

  13. Ligue um datset de treino e um dos módulos de treino:

    Aviso

    Se passar uma gama de parâmetros para o Modelo de Comboio,utilizará 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 será utilizado ao longo da varredura, mesmo que outros parâmetros se alterem numa gama de valores.

  14. Execute a experimentação.

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 é usado em experiências, veja estas amostras na Galeria Azure AI:

As experiências fornecem mais ajuda na Net#. As experiências estão relacionadas e progridem 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.

Mais sobre a Net

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 (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
Taxa de aprendizagem [O dobro. Epsilon;0.01] Float 0.005 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 "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 Min-Max normalizador Selecione o tipo de normalização para aplicar a exemplos de aprendizagem
Número de nós escondidos Qualquer String 100 Digite o número de nós na camada escondida. Para várias camadas escondidas, digite uma lista separada por vírgulas.
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 true 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.

Este parâmetro é opcional
Permitir níveis categóricos desconhecidos Qualquer Booleano true Indicar se deve ser criado um nível adicional para categorias desconhecidas. Se o conjunto de dados de teste contiver categorias não presentes no conjunto de dados de treino, são mapeados para este nível desconhecido.

Saídas

Nome Tipo Descrição
Modelo destreinado Interface ILearner Um modelo de regressão destreinado

Ver também

Regressão
Lista de Módulos A-Z