sexta-feira, 13 de agosto de 2021

Neurônios artificiais

 Para o desenvolvimento da inteligência artificial, buscou-se inspiração no cérebro humano, então da mesma maneira que nós possuímos inúmeros neurônios para interpretar informações, foram desenvolvidos os neurônios artificiais, como uma grande simplificação dos biológicos, eles são representados da seguinte maneira:

 

Nesse desenho X1, X2 e X3 são as entradas do neurônio;

 W1, W2 e W3 são chamados de pesos, eles servem para fazer uma ponderação das entradas;

A letra U representa o valor das entradas multiplicadas pelos seus respectivos pesos

 

m é o número máximo de entradas do neurônio;

A função F(u) é chamada de função de ativação do neurônio, a partir do u obtido, escolhemos uma função que melhor atenda à aplicação, e o resultado dessa função será a saída Y do neurônio, 

Mas como podemos escolher essa função de ativação, como já disse dependendo da aplicação, se queremos usar o neurônio para dizer se alguma coisa é verdade ou mentira, assumindo apenas dois valores, podemos usar uma função degrau, 0 se f(u)<0 ou 1 se f(u)>0. Mas se queremos que o neurônio possa assumir um valor qualquer, usamos uma função linear em que por exemplo, Y=u, mas essa escolha irá depender da sua aplicação, vou comentar sobre outra função possível em outro artigo.

E lembram-se do que eu disse em Machine Learning, que o programa se ajusta sozinho, como isso ocorre?

Durante a fase de treinamento o programa irá observar o dataset para verificar se a saída que obteve é a saída desejada, caso não seja os pesos são ajustados de acordo com a seguinte conta:

 

Nessa equação os símbolos são: 

Wn: se refere ao peso daquela entrada;

η: é a taxa de aprendizado da rede, ela determina o quão rápido a rede irá tender aos pesos corretos;

d: é a saida que desejávamos que fosse obtida na iteração que falhou;

y: é a saida obtida na iteração;

Xn: é o valor que foi multiplicado pelo peso que estamos ajustando;

Mas esse ajuste de pesos é realizado apenas na fase de treinamento, ela não ocorre na operação, por isso o treinamento deve ser realizado até que o sistema tenha o rendimento desejado.

Fonte:

Aulas de INART, no Instituto Federal de São Paulo, campus São Paulo, com o professor Miguel Angelo de Abreu de Sousa, no periodo de 11/2020 até 03/2021

Assista à aula sobre Neurônios artificiais Aqui.

quinta-feira, 12 de agosto de 2021

Machine Learning

 Essa é a área de maior sucesso da inteligência artificial hoje em dia, ensinar máquinas a como devem se comportar, utilizando exemplos ao invés de código explícito, então o funcionamento desses sistemas pode ser dividida em duas etapas:

1.Treinamento

A partir de um conjunto de dados, que iremos chamar de dataset, o programa irá se ajustar sozinho para entende-lo, e ajustar seus parâmetros internos.

2. Operação 
 Com os ajustes obtidos durante o treinamento, o sistema é aplicado em uma situação real, com novas entradas, mas da mesma linha do treinamento, por exemplo, um sistema treinado para identificar pessoas a partir de 5 medições do corpo, deverá receber durante a fase de operação, as mesmas 5 medições, mas provenientes de pessoas diferentes, então com valores diferentes,
 
Mas se já sabemos o procedimento que uma aplicação de inteligência artificial faz para operar, porque devemos usar essa ferramenta, ao invés de um programa em linguagem de programação clássica?
Inteligência artificial é utilizada em aplicações que:
  • Temos a aplicação final definida, sabemos exatamente para o que o sistema funcionará;
  • possuímos um grande número de exemplos  da aplicação desejada;
  • Não possuímos um modelo matemático da aplicação. não expressamos os resultados como uma equação;

Conhecendo esses 3 requisitos e as fases de operação podemos começar a ver formas de aplicar inteligência artificial.



Fonte:
Aulas de INART, no Instituto Federal de São Paulo, campus São Paulo, com o professor Miguel Angelo de Abreu de Sousa, no período de 11/2020 até 03/2021
 Assista o vídeo sobre Machine Learning Aqui.

quarta-feira, 11 de agosto de 2021

Inteligência Artificial -- Introdução

 Com o avanço da computação, cada vez mais podemos fazer com que os computadores executem rotinas para realizar uma tarefa desejada, mas se estivermos utilizando programação estruturada, como C, Python, ou outra linguagem com essa forma, o comportamento da rotina dependerá do programador ter preparado ela para todas as possíveis entradas, se ele não fizer isso ocorrerão exceções durante a execução, e as saídas serão apenas aquelas para as quais o código está preparado, se o programador deixar de fazer o processamento de uma entrada, ou se esquecer de fazer uma saida, o algoritmo não vai se comportar como era desejado que fizesse.

Então como podemos preparar programas computacionais que possam processar dados de uma forma mais genérica para aceitar múltiplas entradas para obter uma resposta?

Fazemos isso com as ferramentas de Inteligência Artificial, com elas o computador deixa de processar apenas instruções simples escritas no código, e faz um processamento com tomadas de decisão. Podemos dividir o estudo da inteligência artificial em alguns tópicos:

  • Machine Learning (Aprendizado de Máquina)
  • Redes Neurais Artificiais
  • Deep Learning

Embora a inteligência artificial possa ser usada em uma grande quantidade de tarefas complexas, a implementação dela não é dificil, e veremos como fazer isso nos próximos artigos.

Para assistir aos vídeos disponibilizados pelo professor da disciplina, acesse o canal dele no youtube: Cérebro eletrônico,


Fonte:
Aulas de INART, no Instituto Federal de São Paulo, campus São Paulo, com o professor Miguel Angelo de Abreu de Sousa, no periodo de 11/2020 até 03/2021

segunda-feira, 9 de agosto de 2021

Circuitos com amplificadores operacionais

 No artigo de Amplificadores Operacionais vimos uma introdução sobre esses dispositivos que são de muita ajuda na confecção de sistemas maiores, agora vamos ver melhor sobre alguns tipos de montagens que podemos fazer com eles.

1) Amplificador Inversor

 Esse tipo de circuito, pega uma entrada e multiplica ela por um certo ganho, porém como o nome sugere, ao mesmo tempo que ele amplifica o sinal, ele faz uma mudança de 180° na onda de entrada.
 
Perceba também que existe um resistor ligando a saída na entrada, esse tipo de ligação é chamada de realimentação de sinal, ou feedback. e a saída desse amplificador é calculada como:
 
Perceba também que a relação entrada pela saida pode ser chamada de ganho, e será o valor que multiplica Vi:

No exemplo que coloquei, usei dois resistores simples, então a relação entre entrada e saída é constante, mas se mudarmos o Rfeedback por um potenciômetro, podemos mudar o valor da saída, sem desmontar o circuito, se obsevarmos também os sinais de entrada e saída teremos:
 
Em amarelo vemos o sinal de entrada, e em azul o sinal de saída, que tem o dobro da amplitude da entrada, e podemos ver a inversão de fase, demonstrada pelo sinal de negativo na fórmula, quando a entrada é positiva, a saída é negativa, e vice-versa.
 

2) Amplificador não Inversor 

Essa montagem não faz a inversão de fase do sinal de entrada, porém ela não permite que se controle o ganho livremente, a relação saidá e entrada é calculada como:
A montagem desse circuito é basicamente a mesma, mas mudamos o pino que recebe a entrada:
Observe abaixo como é a saída e a entrada desse circuito:
Agora a saída tem mais que o dobro da amplitude da onda de entrada, mas perceba que dessa vez, não houve a desfasagem de 180° nas fases, então quando a entrada está no seu maior a valor, a saída também estará.

3) Seguidor Unitário ou Buffer

Se usarmos um amplificador operacional nas configurações acima, teremos a saída igual à entrada multiplicada por alguma coisa, mas em algumas aplicações podemos não querer essa modificação então pode-se usar essa montagem de amp-op.
Nessa montagem a saída é idêntica à entrada, mas então qual a vantagem disso? Se estamos trabalhando com uma fonte de sinal que seja sensível, por exemplo um sensor, não queremos que tensão que esteja em uma parte do circuito possa passar para ele, então se devemos permitir a passagem de tensão apenas em uma direção, você pode pensar em usar um diodo, mas diodos possuem uma queda de tensão para funcionarem, 0,7V nos de silício e 0,3V nos de germânio, e antes dessa tensão ser atendida, o diodo não conduz, então se ligássemos um em um sensor, haveria perda de parte do sinal enviado, essa perda não ocorre com essa montagem, então ela pode substituir o diodo em aplicações que queremos preservar sinais de pequena amplitude.

4) Amplificador somador

Essa montagem já é usada quando ao invés de uma única fonte de sinal, possuimos múltiplas, porém ela é muito semelhante ao amplificador inversor.

Ele não está limitado a apenas duas entradas, pode haver mais, mas eu apenas desenhei essas, a saída desse circuito será a sobreposição das ondas de entrada, multiplicadas por certo ganho.
Os resistores de entrada não precisam necessariamente, serem iguais, então podemos dar ganhos diferentes para cada sinal somado.

5) Circuito Integrador

Esse circuito integra o sinal de entrada, nós não podemos usa-lo para fazer uma prova de cálculo, mas a partir de um sinal, ele mostra na saída, qual onda é obtida para aquela taxa de variação na entrada.


6) Circuito Diferenciador

Ao contrario do circuito anterior, esse possui na saída a taxa de variação, ou a derivada do sinal de entrada. A montagem é feita da seguinte maneira:





quarta-feira, 21 de julho de 2021

Amplificadores Operacionais

 Já vimos que o projeto e montagem de um amplificador transistorizado é bastante complexa, e resulta em ganhos não muito altos, pois depende de um ou dois transistores apenas, então se desejarmos um ganho maior devemos ficar projetando múltiplas etapas de amplificação? E é possível fazer esses circuitos de maneira mais simples?

A resposta da primeira pergunta é, não necessariamente, para maiores amplificações usando apenas componentes básicos, resistores, capacitores e transistores, seria necessário múltiplas etapas, mas se usarmos essa nova classe de componentes, os Amplificadores Operacionais, ou AmpOp, esses dispositivos são um circuito integrado que pode realizar diversas funções, dependendo do circuito externo à eles, a imagem com o desenho elétrico e a foto do componente pode ser vista abaixo:

                         

Esse componentes devem ser alimentados de maneira simétrica, ou seja alimentação positiva e negativa, em seus respectivos terminais, tome cuidado ao fazer essas conexões, se alimentar o componente reversamente, ele pode queimar. Outra coisa que pode perceber é que nesse desenho elétrico foram desenhados 5 terminais, mas no encapsulamento tem 8, isso porque existem pinos auxiliares, e pinos que ficam desconectados que não colocamos em desenhos para apresentar o componente, mas quando pegar um amplificador operacional em um software de desenho de circuitos, o símbolo dele pode ser ligeiramente diferente.

Eles também possuem duas entradas com sinais diferentes e a saída, o uso desses pinos veremos em um próximo artigo, a maneira como interligamos esses pinos podem fazer com que o componente amplifique, atenue, integre ou derive o sinal de interesse, mas veremos isso em um próximo artigo.