Regressão de Rede Neural
Importante
O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.
A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).
- Confira informações sobre como mover projetos de machine learning do ML Studio (clássico) para o Azure Machine Learning.
- Saiba mais sobre o Azure Machine Learning.
A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.
Cria um modelo de regressão usando um algoritmo de rede neural
categoria: Machine Learning/inicializar modelo/regressão
Observação
aplica-se a: somente Machine Learning Studio (clássico)
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 de regressão de rede neural no 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 para uso em problemas complexos de aprendizado e modelagem, como reconhecimento de imagem, elas são facilmente adaptadas para problemas de regressão. Qualquer classe de modelos estatísticos pode ser chamada de rede neural se ela usar pesos adaptáveis e puder aproximar funções não lineares de suas entradas. Assim, a regressão de rede neural é adequada para onde um modelo de regressão mais tradicional não tiver uma solução.
A regressão de rede neural é um método de aprendizado supervisionado e, portanto, requer um conjunto de dados marcado que inclua uma coluna de rótulo. Como um modelo de regressão prevê um valor numérico, a coluna de rótulo deve ser um tipo de dado numérico.
Você pode treinar o modelo fornecendo o modelo e o conjunto de dados marcado como uma entrada para treinar modelo ou ajustar hiperparâmetros de modelo. O modelo treinado pode ser usado para prever valores para os novos exemplos de entrada.
Como configurar a regressão de rede neural
As redes neurais são bastante personalizáveis. Esta seção descreve como criar um modelo usando dois métodos:
Criar um modelo de rede neural usando a arquitetura padrão
Se você aceitar a arquitetura de rede neural padrão, use o painel Propriedades para definir os parâmetros que controlam o comportamento da rede neural, como o número de nós na camada oculta, a taxa de aprendizado e a normalização.
Comece aqui se as redes neurais forem uma novidade para você. O módulo permite muitas personalizações, além de ajuste de modelo, sem necessidade de conhecimento profundo das redes neurais.
Definir uma arquitetura personalizada para uma rede neural
Use esta opção se quiser adicionar camadas ocultas extras ou personalizar totalmente a arquitetura de rede, as conexões e as funções de ativação.
Essa opção é melhor se você já tiver experiência prévia com redes neurais. Você usa a linguagem net # para definir a arquitetura de rede.
Criar um modelo de rede neural usando a arquitetura padrão
Adicione o módulo de regressão de rede neural ao seu experimento no estúdio (clássico). Você pode encontrar esse módulo em Machine Learning, Inicializar, na categoria Regressão.
Indique 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 esta 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 hiperparâmetros de modelo para iterar sobre as combinações e encontrar a configuração ideal.
Em especificação de camada oculta, selecione caso totalmente conectado. Essa opção cria um modelo com a arquitetura de rede neural padrão, que tem estes atributos para um modelo de regressão de rede neural:
- A rede tem exatamente 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 oculta pode ser definido pelo usuário (o valor padrão é 100).
Como o número de nós na camada de entrada é determinado pelo número de recursos nos dados de treinamento, em um modelo de regressão pode haver apenas um nó na camada de saída.
Para Número de nós ocultos, digite o número de nós ocultos. O padrão é uma camada oculta com 100 nós. (Essa opção não estará disponível ao definir uma arquitetura personalizada com Net#).
Em taxa de aprendizagem, digite um valor que defina a 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 processa os casos de treinamento.
Para o diâmetro inicial dos pesos de aprendizado , digite um valor que determina os pesos do nó no início do processo de aprendizado.
Em O impulso, digite um valor a ser aplicado durante o aprendizado como um peso nos nós de iterações anteriores.
Para o tipo de normalizador, escolha um dos seguintes métodos a serem usados para normalização de recursos:
Compartimentalização normalizador: compartimentalização cria grupos de tamanho igual e, em seguida, normaliza cada valor em cada grupo a ser dividido pelo número total de grupos.
Normalizador gaussiano: a normalização gaussiana redimensiona os valores de cada recurso para ter a média 0 e a variância 1. Isso é feito computando a média e a variância de cada recurso e, em seguida, para cada instância, subtraindo o valor Mean e dividindo pela raiz quadrada da variância (o desvio padrão).
Normalizador min-max: a normalização mín. máx. 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.
Escolha a opção Embaralhar exemplos para mudar a ordem de casos entre as iterações. Se você desmarcar essa opção, os casos serão processados exatamente na mesma ordem toda vez que você executar o experimento.
Em Semente de número aleatório, você pode digitar um valor inteiro para usar como semente. Especificar um valor de semente é útil quando você deseja garantir a capacidade de repetição em execuções do mesmo experimento.
Selecione a opção permitir níveis categóricos desconhecidos para criar um agrupamento de valores desconhecidos. O modelo pode ser menos preciso em valores conhecidos, mas fornecer previsões melhores para valores novos (desconhecidos).
Se você desmarcar essa opção, o modelo poderá aceitar somente os valores contidos nos dados de treinamento.
Conexão um conjunto de treinamento e um dos módulos de treinamento:
Se você definir criar modo de instrutor como parâmetro único, use treinar modelo.
Se você definir criar modo de instrutor como intervalo de parâmetros, use ajustar hiperparâmetros de modelo.
Aviso
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 selecionar a opção Intervalo de Parâmetros e inserir um único valor para qualquer parâmetro, esse valor único especificado será usado em toda a varredura, mesmo que outros parâmetros sejam alterados em um intervalo de valores.
Execute o experimento.
Definir uma arquitetura personalizada
Adicione o módulo de regressão de rede neural ao seu experimento.
Indique 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 esta 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 hiperparâmetros de modelo para iterar sobre as combinações e encontrar a configuração ideal.
Em especificação de camada oculta, selecione script de definição personalizada. Você deve escolher essa opção se desejar definir uma arquitetura de rede neural personalizada usando a linguagem net # .
Depois de selecionar a opção script de definição personalizada , a caixa de texto definição de rede neural é exibida. Você pode colar o script net # para definir uma arquitetura personalizada para a rede neural, incluindo o número de camadas ocultas, suas conexões e opções avançadas, como especificar os mapeamentos entre camadas.
Em taxa de aprendizagem, digite um valor que defina a 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 processa os casos de treinamento.
Para o diâmetro inicial dos pesos de aprendizado , digite um valor que determina os pesos do nó no início do processo de aprendizado.
Em O impulso, digite um valor a ser aplicado durante o aprendizado como um peso nos nós de iterações anteriores.
Para o tipo de normalizador, escolha um dos seguintes métodos a serem usados para normalização de recursos:
Compartimentalização normalizador: compartimentalização cria grupos de tamanho igual e, em seguida, normaliza cada valor em cada grupo, dividindo pelo número total de grupos.
Normalizador gaussiano: a normalização gaussiana redimensiona os valores de cada recurso para ter a média 0 e a variância 1. Isso é feito computando a média e a variância de cada recurso e, em seguida, para cada instância, subtraindo o valor Mean e dividindo pela raiz quadrada da variância (o desvio padrão).
Min-max: a normalização mín. máx. 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.
Escolha a opção Embaralhar exemplos para mudar a ordem de casos entre as iterações. Se você desmarcar essa opção, os casos serão processados exatamente na mesma ordem sempre que você executar o experimento.
Em Semente de número aleatório, você pode digitar um valor inteiro para usar como semente. Especificar um valor de semente é útil quando você deseja garantir a capacidade de repetição em execuções do mesmo experimento.
Selecione a opção Permitir níveis categóricos desconhecidos para criar um grupo para valores desconhecidos. Todos os valores desconhecidos no conjunto de dados de teste são mapeados para essa categoria desconhecida. Usar essa opção pode tornar o modelo um pouco menos preciso em valores conhecidos, mas fornecer previsões melhores para novos valores (desconhecidos).
Se você desmarcar essa opção, o modelo poderá fazer previsões somente para os valores contidos nos dados de treinamento.
Conexão um datset de treinamento e um dos módulos de treinamento:
Se você definir Criar modo de treinador como Parâmetro Único, use Treinar Modelo.
Se você definir Criar modo de treinador comoIntervalo de Parâmetros, use Ajustar Hiperparérmetros de Modelo.
Aviso
Se você passar um intervalo de parâmetros para Treinar Modelo, ele usará apenas o primeiro valor na lista de intervalos de parâmetros.
Se você passar um único conjunto de valores de parâmetro para o módulo Ajustar Hiperparérmetros de Modelo, quando ele espera um intervalo de configurações para cada parâmetro, ele ignora os valores e usa os valores padrão para o aluno.
Se você selecionar a opção Intervalo de Parâmetros e inserir um único valor para qualquer parâmetro, esse único valor especificado 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 é usado em experimentos, consulte estes exemplos no Galeria de IA do Azure:
- Comparar vários regressores: demonstra o uso de vários algoritmos de regressão e compara seus resultados.
Os experimentos fornecem mais ajuda no Net#. Os experimentos estão relacionados e progridem de configurações básicas para avançadas:
- Exemplo de Redes neurais em profundidade (Parte A)
- Exemplo de Redes neurais em profundidade (Parte B)
- Exemplo de Redes neurais em profundidade (Parte C)
- Exemplo de Redes neurais em profundidade (Parte D)
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 estes 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 auto
a seguir usa a palavra-chave , que define o número de recursos automaticamente para 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 computacionalmente caras, devido a vários hiperparérmetros e à introdução de topologias de rede personalizadas. Embora em muitos casos as redes neurais produzem resultados melhores 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;0,01] | Float | 0,005 | 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 nós ocultos | Qualquer | String | 100 | Digite o número de nós na camada oculta. Para várias camadas ocultas, digite uma lista separada por vírgulas. |
Número de iterações de aprendizado | >=1 | Integer | 100 | Especifique o número de iterações de 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. Esse parâmetro é opcional |
|
Permitir níveis categóricos desconhecidos | Qualquer | Boolean | true | 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ídas
Nome | Tipo | Descrição |
---|---|---|
Modelo não treinado | Interface ILearner | Um modelo de regressão não treinado |