Na programação clássica, o desenvolvedor descreve em uma linguagem de programação específica um certo conjunto de regras rigidamente especificado, que foi determinado com base em seu conhecimento em uma área específica e que, como uma primeira aproximação, descreve os processos que ocorrem no cérebro humano ao resolver um problema semelhante.
Por exemplo, uma estratégia para jogar jogo da velha, xadrez e muito mais pode ser programada (Figura 1).

Figura 1 - A abordagem clássica para resolução de problemas
Considerando que algoritmos de aprendizado de máquina podem definir um conjunto de regras para resolução de problemas sem a participação do desenvolvedor, mas apenas com base na disponibilidade de um conjunto de dados de treinamento.
Um conjunto de treinamento é um conjunto de entradas associadas a um conjunto de resultados esperados (respostas, saídas). A cada etapa do treinamento, o modelo, ao alterar o estado interno, otimizará e reduzirá o erro entre a saída real do modelo e o resultado esperado (Figura 2).

Figura 2 - Aprendizado de máquina
Redes neurais
Por muito tempo, os cientistas, inspirados pelos processos que ocorrem em nosso cérebro, tentaram fazer a engenharia reversa do sistema nervoso central e tentar imitar o trabalho do cérebro humano. Graças a isso, nasceu toda uma direção no aprendizado de máquina - as redes neurais.
Na Figura 3, você pode ver as semelhanças entre o design de um neurônio biológico e a representação matemática de um neurônio usado no aprendizado de máquina.

Figura 3 - Representação matemática de um neurônio
Em um neurônio biológico, um neurônio recebe sinais elétricos de dendritos, modulando sinais elétricos com diferentes intensidades, que podem excitar o neurônio quando um determinado valor de limiar é atingido, o que por sua vez levará à transmissão de um sinal elétrico para outros neurônios por meio de sinapses.
Perceptron
Modelo matemático de uma rede neural, composta por um neurônio, que realiza duas operações sequenciais (Figura 4):
- calcula a soma dos sinais de entrada levando em consideração seus pesos (condutância ou resistência) da conexão
- aplica a função de ativação à soma total dos sinais de entrada.
Figura 4 - Modelo matemático do perceptron
Qualquer função diferenciável pode ser utilizada como função de ativação, as mais comumente utilizadas são apresentadas na Tabela 1. A escolha da função de ativação recai sobre os ombros do engenheiro, e geralmente esta escolha é baseada ou na experiência já existente na resolução de problemas semelhantes, ou simplesmente pelo método seleção.
A anotação
No entanto, há uma recomendação de que, se a não linearidade for necessária em uma rede neural, a função ReLU é mais adequada como uma função de ativação, que tem as melhores taxas de convergência do modelo durante o processo de treinamento.
Tabela 1 - Funções de ativação comuns
Linear function | ![]() |
|
Sigmoid function | ![]() |
|
Softmax function | ( 2) |
|
Hyperbolic Tangent function | |
![]() [-1, 1]. , , |
Rectified Linear Unit (ReLU) | |
![]() , , sigmoid tanh |
Leaky ReLU | |
![]() ReLU , 0 |
Processo de aprendizagem do Perceptron
O processo de aprendizagem consiste em várias etapas. Para maior clareza, consideraremos um determinado problema fictício, que resolveremos com uma rede neural consistindo de um neurônio com uma função de ativação linear (este é essencialmente um perceptron sem função de ativação), também para simplificar a tarefa, excluiremos o nó de deslocamento b no neurônio (Figura 5) ...

Figura 5 - O conjunto de dados de treinamento e o estado da rede neural na etapa anterior do treinamento.
Nesta fase, temos uma rede neural em um determinado estado com certos pesos de conexão que foram calculados no estágio anterior de treinamento do modelo, ou se esta for a primeira iteração de treinamento, então os valores dos pesos de conexão são selecionados em ordem aleatória.
Então, vamos imaginar que temos algum conjunto de dados de treinamento, os valores de cada elemento do conjunto são representados por um vetor de dados de entrada (dados de entrada), contendo 2 parâmetros (recurso) ... Sobno modelo, dependendo do domínio em questão, qualquer coisa pode estar implícita: o número de cômodos da casa, a distância da casa ao mar, enfim, ou estamos apenas tentando treinar a rede neural da operação lógica AND, ou OR.
Cada vetor de entrada no conjunto de treinamento é mapeado para um vetor de saída esperado. Nesse caso, o vetor de dados de saída contém apenas um parâmetro, que, novamente, dependendo da área de assunto selecionada, pode significar qualquer coisa - o preço de uma casa, o resultado da execução de uma operação lógica AND ou OR.
PASSO 1 - Processo de feedforward
Nesta etapa, calculamos a soma dos sinais de entrada levando em consideração o peso de cada título e aplicamos a função de ativação (no nosso caso, não há função de ativação). Vamos fazer os cálculos para o primeiro elemento do conjunto de treinamento:

Figura 6 - Propagação direta do erro
Observe que a fórmula acima é uma equação matemática simplificada para o caso especial de operações de tensores.
Um tensor é essencialmente um contêiner de dados que pode ter N eixos e um número arbitrário de elementos ao longo de cada um dos eixos. A maioria com tensores está familiarizada com matemática - vetores (tensor com um eixo), matrizes (tensor com dois eixos - linhas, colunas).
A fórmula pode ser escrita da seguinte forma, onde você verá as matrizes familiares (tensores) e sua multiplicação, e também entenderá que tipo de simplificação foi discutida acima:
PASSO 2 - Calcular a
função de erro A função de erro é uma métrica que reflete a discrepância entre a saída esperada e a recebida. As seguintes funções de erro são comumente usadas:
- Erro quadrático médio (MSE) - esta função de erro é especialmente sensível a outliers no conjunto de treinamento, uma vez que usa o quadrado da diferença entre os valores reais e esperados (um outlier é um valor que está muito longe de outros valores em conjunto de dados, que às vezes pode aparecer devido a erros de dados, como mistura de dados com diferentes unidades de medida ou leituras de sensor ruins):
- desvio quadrático médio (Root MSE) - na verdade, é o mesmo que o erro quadrático médio médio no contexto de redes neurais, mas pode refletir uma unidade física real de medida, por exemplo, se em uma rede neural os parâmetros de saída de uma rede neural forem o preço de uma casa em dólares, então a unidade de medida o erro quadrático médio será o dólar quadrado (), e para o desvio padrão é o dólar ($), o que naturalmente simplifica ligeiramente a tarefa de análise humana:
- o desvio médio (Erro Médio Absoluto, MAE) - em contraste com os dois valores acima, não é tão sensível às emissões:
- entropia cruzada - usos para tarefas de classificação:
Onde
- o número de cópias no conjunto de treinamento
- o número de aulas ao resolver problemas de classificação
- valor de saída esperado
- o valor real de saída do modelo treinado
Para nosso caso particular, usaremos MSE:
PASSO 3 - Retropropagação
O objetivo de treinar a rede neural é simples - é minimizar a função de erro:
Uma maneira de encontrar o mínimo de uma função é modificar os pesos de conexão na direção oposta ao vetor de gradiente em cada próxima etapa de aprendizagem - o método de descida de gradiente, e parece matematicamente assim:
Onde - k-ésima iteração de treinamento de rede neural;
- a taxa de aprendizagem é definida pelo engenheiro, normalmente pode ser 0,1; 0,01 (sobre como a etapa de aprendizagem afeta o processo de convergência de aprendizagem, observe um pouco mais adiante)
- o gradiente da função de erro.
Para encontrar o gradiente, usamos derivadas parciais em relação aos argumentos personalizados:
No nosso caso particular, levando em consideração todas as simplificações, a função de erro assume a forma:
Memorando de fórmulas derivadas
,
Vamos encontrar as seguintes derivadas parciais:
Então, o processo de retropropagação do erro é o movimento ao longo do modelo da saída para a entrada com modificação dos pesos do modelo na direção oposta ao vetor gradiente. Definindo a etapa de aprendizagem 0,1 (taxa de aprendizagem) que temos (Figura 7):

Figura 7 - Retropropagação do erro
Assim, concluímos k + 1 etapas de treinamento para ter certeza de que o erro diminuiu, e a saída do modelo com novos pesos ficou mais próxima da esperada, realizaremos o processo de propagação direta do erro ao longo do modelo com novos pesos (ver PASSO 1) :
Como você pode ver, o valor de saída aumentou 0,2 unidades na direção certa em direção ao resultado esperado - um (1). O erro será:
Como você pode ver, na etapa anterior do treinamento, o erro era de 0,64, e com os novos pesos - 0,36, portanto, ajustamos o modelo na direção certa.
Próxima parte do artigo:
Aprendizado de máquina. Redes neurais (parte 2): modelagem OR; XOR com aprendizado de máquina TensorFlow.js
. Redes Neurais (Parte 3) - Rede Convolucional sob o microscópio. Explorando a API Tensorflow.js