Font size
  • A-
  • A
  • A+
Site color
  • R
  • A
  • A
  • A
Skip to main content
AI4VET AI4VET
  • Home
  • Calendar
  • More
You are currently using guest access
Log in
AI4VET
Home Calendar
Expand all Collapse all
  1. AI/ML Fundamentals
  2. AIML-PT
  3. 4. Neural Networks (PT)
  4. Exercício 10: Treinar redes neurais

Exercício 10: Treinar redes neurais

Parque Infantil TensorFlow

Agora que sabes o que são redes neurais e como elas são treinadas, podes também tentar construir e treinar a tua própria rede!

O TensorFlow Playground é um ambiente gráfico que o aproxima do que realmente parece treinar uma rede neural. Podes aceder em https://playground.tensorflow.org/ e, em seguida, continuar lendo e acompanhando. Não precisas de uma conta especial ou software adicional, tudo será executado no teu navegador. Na janela, em que te encontras verás imediatamente muitos quadrados representando neurónios e linhas representando as conexões entre eles!

A screenshot of a computer

AI-generated content may be incorrect.

A terra mais prometida do mundo, os anos 2000, é o dia dos 1000 dias do Dia Mundial de 2016.


Na parte superior da  página do TensorFlow Playground, há uma barra que permite selecionar o tipo de tarefa e, em seguida, depois de criar uma rede que resolve o problema, podes começar a treinar. Podes selecionar o tipo de tarefa, que pode ser classificação ou regressão, no  campo  Tipo de problema  à direita. Através do  campo  Taxa de aprendizagem  , podes influenciar o tamanho da etapa de aprendizagem usada para determinar os melhores valores de parâmetro. Na  Ativação  podes escolher uma das funções de ativação oferecidas. Os  campos  Regularização  e  Taxa de Regularização  afetam a regularização de camadas individuais da rede neural, semelhante à lição sobre regularização e ao exemplo de regressão linear. O treinamento da própria rede é iniciado clicando na seta à esquerda. O número de épocas de treinamento será impresso no  campo Iterações  .

Home bar com opções para configurar o treinamento


Para começar, podes tentar uma das tarefas de classificação oferecidas. Todas as tarefas de classificação são tarefas de classificação binária, há quatro delas no total e são representadas por ícones que descrevem os conjuntos de dados usados nelas. As instâncias que pertencem a uma classe positiva são coloridas em azul, enquanto as instâncias que pertencem a uma classe negativa são coloridas em laranja. Você pode selecionar conjuntos na seção Dados No lado esquerdo da tela. Para o exercício, escolheremos inicialmente um conjunto representado por círculos concêntricos - os restantes conjuntos são uma espiral, quatro quadrantes correspondentes à tarefa de aprender disjunção exclusiva e dois agrupamentos de dados. Com as configurações nesta seção, você também pode influenciar a escala do conjunto de treinamento e do conjunto de teste (por padrão, esses dois conjuntos são iguais em tamanho) e o nível de sobreposição de classe (o  parâmetro Noise). O tamanho do pacote de treinamento é definido como 10 por padrão (parâmetro Batch size).

A seção Recursos refere-se à camada de entrada e aos atributos da malha. Como os conjuntos com os quais os conjuntos de pontos estão no plano, o atributo \(x_1\) representa o valor  das coordenadas \(x\) e o atributo \(x_2\) representa  o valor das coordenadas \(y\  ). Também é possível selecionar os atributos \(x_1^2, x_2^2, x_1x_2\), bem como \(sin(x_1)\) e \(sin(x_2)\).

Podes controlar o número de camadas da rede neural com a opção   Camadas ocultas. Clicar no botão + adiciona uma nova camada oculta, enquanto clicar no botão - exclui a camada oculta. O número de neurónios em camadas individuais também é controlado clicando nos botões + e -. A rede que é criada desta forma é uma rede neural totalmente ligada. As ligações entre os neurónios são mostradas por linhas pontilhadas e sua cor e espessura estão alinhadas com os valores dos parâmetros que os acompanham. Ao clicar em cada um dos O valor do parâmetro pode ser definido individualmente.

Depois de criar a grade, precisas clicar na seta para começar a treinar. No painel à direita chamado   Saída,  podes acompanhar o sucesso da sua sessão de treinamento visualmente ou plotando as curvas de erro e exibindo seus valores.


 

O problema com os círculos de dados concêntricos que escolhemos para o exercício não é linear - não podemos traçar as linhas que separam o conjunto de instâncias azuis e o conjunto de ocorrências laranjas. Portanto, precisamos aprender um modelo não linear mais complexo. Podemos primeiro tentar uma rede que tenha entradas \(x1\) e \(x2\) e uma camada oculta com dois neurónios que usam a função de ativação ReLU. Vamos notar que depois de uma época a rede estagnou com a aprendizagem, por isso, se a pararmos depois de 500 épocas, obtemos uma imagem como na imagem abaixo. O problema em si não está idealmente resolvido porque não há fronteiras claras entre as classes. Podemos ver que o primeiro neurônio da camada oculta aprendeu a classificar as ocorrências em esquerda e direita (quadrado  tfk1), e o segundo neurónio naqueles abaixo e acima da diagonal principal (quadrado tfk2 ), de modo que, combinando esse conhecimento, obtemos um limite como na figura. Ao ficar em dois neurónios e experimentar outras funções de ativação, os resultados não serão satisfatórios (certifique-se de verificar isso!).

A screenshot of a computer

AI-generated content may be incorrect.

 

Se agora criarmos uma rede que tenha entradas \(x_1\) e \(x_2\) e uma camada oculta com três neurónios usando a função de ativação ReLU, obteremos uma representação como a imagem abaixo. Agora somos capazes de separar as instâncias mais finamente - o primeiro neurónio aprendeu a percebê-las no canto inferior direito, o segundo a separá-las horizontalmente (ligeiramente obliquamente) e o terceiro verticalmente (ligeiramente obliquamente). Todo este conhecimento está também condicionado pela natureza da função de ativação que utilizámos. Ao combiná-los, podemos certamente alcançar uma melhor fronteira entre as classes.

A screenshot of a computer

AI-generated content may be incorrect.

Vamos tentar a mesma combinação, mas usando a ativação sigmoide. Num número semelhante de épocas, chegámos a uma fronteira mais oval. Também podemos ver que agora os neurónios aprenderam a distinguir instâncias de acordo com alguns critérios ligeiramente diferentes, e com o mesmo sucesso.

A screenshot of a computer

AI-generated content may be incorrect.

 

Existem muitas mais redes que podem resolver esta tarefa, continue a experimentar e descobrir a sua rede. No final do exercício, podes deixar a tarefa em espiral porque é a mais desafiadora. Vê como pode ser uma rede que o segue!

A screenshot of a computer

AI-generated content may be incorrect.

 

Na prática, bibliotecas como TensorFlow, Hard, PyTorch, JAX e outras. Através da sua API, oferecem funcionalidades que descrevem as camadas da rede, ajustam algoritmos de otimização e monitorizam todo o processo de formação. Além dessas funcionalidades principais, as bibliotecas também definem técnicas para monitorar a readaptação, medidas para avaliar modelos, bem como mecanismos para controlar e alocar recursos de hardware. Essas bibliotecas geralmente são emparelhadas com bibliotecas que mostram todo o processo de treinamento graficamente de forma mais fina. As bibliotecas são, por exemplo, TensorBoard e Weights & Biasis. Existem também muitas ferramentas adaptadas a tarefas específicas.

Completion requirements:
  • Make a submission
Previous activity 4.5 Algoritmo K-Means
Next activity Exercício 11: Tarefa de Classificação de Rede e Imagem VGG-16
You are currently using guest access (Log in)
Data retention summary
Get the mobile app
Get the mobile app
Play Store App Store
Powered by Moodle

This theme was proudly developed by

Conecti.me