O Neurônio Artificial: a Base da Inteligência Artificial

 O Neurônio Artificial: a Base da Inteligência Artificial 


Neurônio Artificial


A Inteligência Artificial gerou muito entusiasmo recentemente em função dos avanços obtidos pelos modelos neurais de linguagem baseados em grandes bases de dados (Exemplo: ChatGPT). Esse sucesso motivou um grande número de pessoas a tentar entrar na área para se beneficiar do crescimento da área. No entanto, a maioria dos textos não abordam a base fundamental destas redes neurais: o neurônio artificial. Acreditamos que este conhecimento é a base para o entendimento sólido das redes neurais artificiais. Neste tutorial descreveremos o funcionamento de um neurônio artificial, também chamado de regressão logística.  Apesar de ser simples, o neurônio artificial é muito útil, para resolver diversos problemas, de classificação,  tais como, detecção de spam, previsão de diabetes,  concessão de crédito,  dentre outros. 

    

Classificação dos sistemas, de aprendizado de máquina

    Para melhor compreender, este tipo de técnica,  é importante conhecer, uma forma de classificar os sistemas de aprendizado de máquina.  Aprendizado de Máquina,  é  uma sub área da Inteligência Artificial,  e tem  como objetivo,  o desenvolvimento de sistemas, que podem aprender, e melhorar automaticamente com os dados,  ou com a obtenção, de informação. Podemos dividir os modelos, de Aprendizado de Máquina, em supervisionada,  em não supervisionada,  e por reforço

    Nos modelos supervisionados,  o sistema aprende a partir de exemplos. Já no caso, das técnicas não  supervisionadas,  o sistema detecta padrões,  examinando os dados,  sem que esses padrões tenham sido apresentados anteriormente. Finalmente,  na terceira classe de modelos,  a de aprendizado por reforço,  o sistema aprende a partir de suas ações,  e do feedback recebido,  em termos de recompensas.

O Neurônio Artificial, na forma de regressão logística,  é uma técnica de aprendizado supervisionada.  Os modelos supervisionados,  podem ser divididos, em sistemas de classificação,  e sistemas de regressão.


Classificação do modelos de aprendizado de máquina


Nos modelos de classificação,  o sistema tenta identificar, qual classe é a correta,  dado uma entrada. Por exemplo,  a partir dos dados financeiros  de uma pessoa,  os sistema tenta identificar se é para emprestar dinheiro,  ou para negar o empréstimo.   Outro exemplo,  o sistema pode receber os dados,  sobre um determinado animal,  e,  a partir destes dados,  identificar se é um mamífero, réptil,  uma ave, ou um peixe.  

Imagens de animais

    Já no caso da regressão,  o sistema tenta emitir um valor,  a partir dos dados recebidos.  Por exemplo,  a partir do recebimento dos dados financeiros,  o sistema pode tentar prever,  o valor da inflação.  É uma técnica muito usada no mercado financeiro.  

    Apesar do nome,  a regressão logística é usada para classificação. A classificação pode ser binária,  onde existem apenas duas classes,  tais como, sim ,ou  não, positivo ,ou  negativo.  

    E também pode ser multi classes,  como por exemplo, para classificar se uma palavra, é um verbo,  um substantivo,  um adjetivo,  advérbio,  e assim por diante.  

    Para diferenciar a regressão logística, da regressão linear, podemos observar a diferença graficamente, usando um exemplo com duas entradas, ou bi dimensional. O que torna mais fácil a visualização. No caso da regressão linear sobre um conjunto de pontos em um plano, tentamos ajustar uma linha, que tenta capturar a tendência de distribuição dos pontos no plano. 

regressão linear

Uma vez ajustada esta linha, podemos usá-la para prever um valor de eixo a partir do outro. Se for um espaço tri dimensional, tentaremos ajustar um planoSe tiver um número maior de dimensões, tentaremos ajustar um hiperplano.   

Já no caso da regressão logística, o que queremos, é retornar uma decisão, do tipo sim ou não, ou uma classificação. Então traçar uma reta não adianta. Veja este exemplo simples, onde é preciso tomar uma decisão, se deve-se emprestar dinheiro para uma pessoa, com base em seu salário. Com base nos dados anteriores de empréstimo, fica difícil ajustar uma linha, que seja capaz de responder essa pergunta. 




No entanto. Se usar uma curva, no formato "S", ao contrário de uma linha reta, fica mais fácil fazer esse ajuste. Ao entrar com o valor do salário,  na função em forma de curva, se o valor for mais próximo da parte superior da curva, a resposta será, sim. Caso contrário, será, não. Para transformar a linha em curva é preciso introduzir uma, não linearidade.


Uma função muito utilizada, para introduzir essa não linearidade é a função logística, daí o nome regressão logística.  Aqui podemos ver a fórmula geral,  desta  função. Gostaríamos de destacar o fato de ela ser uma fração, tendo como numerador, o  número 1, e que o denominador é igual a 1, ou, maior.  Isso significa que o valor da função, está limitado entre 0 e 1. No denominador temos uma exponenciação, tendo como base, uma constante matemática, chamada número de Euler, cujo valor é aproximadamente 2,718.


A função logística, é uma função com características interessantes. Primeiro, quando colocada em um gráfico bi dimensional, ela apresenta uma forma de "S".  Por isso, ela é uma função denominada de, sigmoideA segunda característica, é que os valores retornados pela função, ficam entre 0 e 1Isso a torna muito interessante para classificações binárias, onde existem duas classes para realizar a classificação, tais como sim, ou, não.  Positivo, ou, negativo. Empresta, ou, recusa empréstimo. 





A terceira vantagem , é que ela é uma função contínua. Isso quer dizer que, em qualquer ponto da curva, você pode traçar uma reta tangente, e calcular a inclinação da tangente no ponto. Essa característica, é utilizada durante a etapa de ajuste do modelo,  ou seja,  durante seu aprendizado. Se o modelo calcular um valor errado,  podemos calcular a inclinação no ponto que foi emitido, e verificar a direção, para onde devemos ajustar o modelo para diminuir o erro. Veremos, como isso é feito, mais adiante. 


Vamos agora, detalhar como funciona a regressão logística. Primeiramente, precisamos de um conjunto de dados, que devem ser classificados. Por exemplo,  podemos receber os dados de diversas pessoas para verificar se devemos, ou, não emprestar uma determinada quantia para essas pessoas. Por exemplo,  podem ser o salário e a quantidade de dinheiro emprestado que estão solicitando. 


Na realidade,  as empresas usam um número bem maior de informações, para tomar uma decisão desse tipo.  Mas para o nosso exemplo, essas duas informações serão  suficiente.  Cada tipo de informação é chamada de característica ou feature. 


Vamos usar um conjunto de dados sobre as pessoas, que  já está  previamente classificado,  indicando se o empréstimo foi concedido. Eles são separados em dois grupos.  Um de aprendizado,  que será usado para ajustar o modelo, e outro que será usado para testar o modeloAo final do aprendizado, e quando passar pelos testes, com um nível de acerto pré estabelecido. Então podemos dizer que o sistema está pronto para aprovar ou não novos pedidos de empréstimo. Vamos agora, montar o nosso modelo de regressão logística.








Na primeira parte do modelo, pegamos cada valor de entrada. Que no nosso exemplo, são o valor do salário, e do pedido de empréstimo, e multiplicamos por um peso, e depois somamos a um valor, chamado de bias. O valor resultante, vamos chamar  de valor Z.


Você deve estar se perguntando de onde saíram esses valores de peso e esse valor biasEsses valores são, inicialmente, aleatórios e são esses valores, que serão ajustados durante a etapa de aprendizado do modelo. São chamados de parâmetros do sistema. Então, o que o modelo aprende é quais são os valores que devem ser atribuídos aos pesos e ao valor de bias, para que ela emita uma saída correta.Os pesos definem a importância que deve ser atribuída a cada atributo de entrada. E a bias corresponde a um ajuste geral do modelo. 


Vamos ilustrar esse cálculo com um exemplo. Suponha que uma pessoa que ganha 3000, quer um empréstimo, de 10000. Suponha, também, que tanto o peso 1, quanto o peso 2, tenham o valor 0,01. Vamos supor, também, o valor de bias igual a um. Então, nesse caso o valor de, Z será 131Esse valor não diz muita coisa, e o que queremos saber é, se devemos, ou, não emprestar o dinheiro. Para isso, iremos colocar o valor de Z como entrada para a função, sigmoide, na etapa 2, da execução do modelo. 




Na segunda parte, iremos usar o valor, como expoente, no denominador, da fórmula sigmoide.  Ao realizarmos o cálculo, o valor final será praticamente 1. O que pode ser, interpretado, como uma sugestão, de que o empréstimo, deve ser concedido. Ou seja, todo valor igual, ou maior que 0.5, pode ser considerado como um, Sim, e abaixo, pode ser considerado, como um Não.  No entanto, a tabela com os dados, indica que o valor final, deveria ser 0, ou seja, o empréstimo deveria ser, negado. Então ocorreu um erro, e o modelo, precisa ser ajustado para corrigir esse erro. Essa correção é feita durante o aprendizado, e explicaremos, como essa etapa é realizada, um pouco mais adiante.  Agora, gostaríamos de explicar, o que foi feito, de uma forma mais gráfica. 



Podemos ver, o cálculo da regressão logística, como um fluxo. Temos os atributos de entrada, que podem ser vistos como uma sequência de valores x1, x2, até xnEsses valores, são multiplicados, pelos seus respectivos pesos w1, w2, até wnOs resultados, da multiplicação, são somados, juntamente com um valor de bias, gerando um valor Z.



Esse valor, é aplicado, à função sigmoide, representada aqui, pela letra grega sigmaEsta função é também, chamada de função de ativação, e, como veremos mais adiante,  existem outras funções possíveis, além da função sigmoideO valor gerado, pela função de ativação, é o valor emitido pela rede, representado aqui, pela letra ípsilon, com um circunflexo, também chamada, de ípsilon hatUsamos essa notação, para indicar, que é um valor estimado, ou calculado, e para diferenciar do valor esperado, ou real.



Este funcionamento,  é uma metáfora do funcionamento de um neurônio.  Um neurônio,  está conectado a outros  neurônios, por meio de filamentos, chamados de dendritosOs neurônios fornecem entradas, para os outros, por meio de estímulos eletroquímicos.  A força de cada estímulo,  dependerá da força,  de cada conexão,  que é equivalente,  ao papel exercido pelos pesos,  na regressão logística.  No neurônio,  se os estímulos recebidos,  ultrapassarem determinado limiar,  o neurônio dispara,  emitindo um sinal eletroquímico pelo seu  axônio,  que será transmitido a outros neurônios. Em função dessa semelhança,  apesar de superficial,  e de não refletir a complexidade,  de um neurônio,  é que a regressão logística pode ser vista como um neurônio artificial.  E,  como veremos adiante,  a composição desses neurônios em uma rede,  forma uma rede neural artificial



Antes de continuarmos. Vamos falar, um pouco, da  notação utilizada, em nossas  fórmulas. Quando uma variável, representa um único, valor, usamos uma letra minúscula, normal. Quando representa, um vetor, ou, matriz, usamos uma letra, minúscula, em negrito.



Agora,  que entendemos,  o cálculo feito  pela regressão logística, vamos descrever essa etapa,  de um modo,  um pouco mais formal.  Dado um vetor,  de entradas  X  com valores x1, x2, até  xn,   e um vetor de pesos  W  com valores w1, w2, até  wn.  e um valor de bias,  B. Então, a função linear  Z é definida como a multiplicação da transposta do vetor  W  com o vetor  X,  somado à bias.  

A transposta de um vetor,  é apenas a transformação de um vetor na forma de coluna,  para a forma de linha,  para facilitar,  a multiplicação. É uma transformação que ajuda,  principalmente,  na multiplicação de matrizes.  

A multiplicação de dois vetores  é apenas a multiplicação,  de cada elemento  par  a par,  e posteriormente,  a soma desses valores,  gerando um único valor simples,  também,  chamado de escalar.  




Vamos ver outro exemplo. Dado um vetor, com valor de salário  igual a um e um pedido de empréstimo com valor igual a quatro, sendo, ambos os valores, em unidades de milhar,  e seja, também, um vetor de pesos, com valores 0.2, e 0.1. Seja também, um valor de bias  de 0.1 Nesse caso, o valor de Z será 0.7. Aplicando a função logística, a esse valor, obtemos o valor resultante, de, 0.67.




Vamos agora mostrar como implementar este cálculo na linguagem Python.  Primeiramente, vamos importar, do módulo math,  a função exp, que ao receber um número, retorna o valor do número de Euler elevado a esse número. 
Usamos essa função, para criar a nossa função sigmoide

A entrada será definida, por uma matriz de dez linhas, e por duas colunas, onde a coluna de índice 0,  contém o valor do salário, e a coluna de índice 1, contém o valor, do pedido de empréstimo.  As dez linhas representam, os dez casos de pedido de empréstimo.

Precisamos, também, das saídas esperadas para treinar a rede, e isso é implementado por um vetor, de 10 posições, onde o valor 0, indica que o pedido deve ser rejeitado e, o valor 1, indica que o pedido deve ser aceito. O treinamento do neurônio será mostrado no próximo post.



Precisamos definir, os valores iniciais, dos parâmetros do sistema, ou seja, os pesos, e bias. Vamos escolher, aleatoriamente, os valores de 0.2 e 0.1 para os pesos e 0.1 para bias. Após isso, o programa executa um laço, percorrendo cada pedido, e calculando Z e a predição.Também, calculamos o erro, para cada pedido, a partir da diferença, entre a predição, e o valor esperado. O programa imprime, para cada pedido, os valores de entrada, e o que foi calculado.



Este é o segmento inicial, da saída da execução, do programa.  Esse cálculo, reflete o valor dos pesos atuais. Mas se a saída possui erros, então, é preciso, ajustar os pesos. Para isso, temos  a etapa de aprendizado. E esta etapa, será descrita, no próximo Post.




Link para o código no Google  Colaboratory.


Para quem desejar ver o vídeo desta aula, ela está disponível em nosso canal. Nosso curso completo de redes neurais está disponível neste link.


Chegamos ao final de nosso Post. Se esse Post foi útil para você, por favor, considere deixar um comentário.














Comentários

Postagens mais visitadas