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 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
), e o segundo neurónio naqueles abaixo e acima da diagonal principal (quadrado
), 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!).

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.

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.

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!

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.
- Make a submission
