Mostrando postagens com marcador IA. Mostrar todas as postagens
Mostrando postagens com marcador IA. Mostrar todas as postagens

sexta-feira, 25 de junho de 2021

IA 04 - Gráficos e Links

Lembrete: Aqui estão apenas anotações referentes ao curso que frequentei e foi interrompido pela pandemia, e algumas referencias nos links, além de alguns outros links relacionados ao assunto.

Depois de uma pequena revisão das aulas anteriores IA 01 - Inteligencia Artificial e IA 02 - Redes Neurais Artificiais, nos foi proposto o desenvolvimento a partir do modelo matemático para forma de programa, sendo que o professor Angelo nos deixou a vontade para escolhermos com qual linguagem nos adaptaríamos melhor.





Foi sugerida uma tabela com 4 entradas, de valores inteiros, tanto para entrada (X), quanto para peso (W), esta tabela seria inserida em arquivo no formato texto simples (.txt).

 Para a definição do MATLAB (MATrix LABoratory) cito aqui a Wikipedia,  trata-se de um software interativo de alta performance voltado para o cálculo numérico. O MATLAB integra análise numérica, cálculo com matrizes, processamento de sinais e construção de gráficos em ambiente fácil de usar onde problemas e soluções são expressos somente como eles são escritos matematicamente, ao contrário da programação tradicional.


Exemplo do professor no MatLab, apesar de a foto estar sem foco a sintaxe esta transcrita abaixo


No MatLab, o exemplo do professor Angelo, (lembrando que % adiciona comentários no MatLab) ficou com essa sintaxe:

versão 1

clc

x = load (`entradas.txt`);   % carrega as entradas que estão no arquivo texto                          
qteEntradas = size (x);      % dimensiona o tamanho do campo de entrada?
w = [ -3  4 ];                      % define os valores dos pesos

for i  =  1:qteEntradas(1)                      % condição para variável i
     g  =  sum ( x ( 1, : ) . *w );               % torna a variável g como a somatória de entradas e pesos
     if  g >= 0  y = 1, else y = 0, end     % classifica a saída de acordo com o valor da variável g
end                                                                   

Versão 2

clc
x = load ("entradas.txt");
tam = size (x);
g = 0;
%x1 = 12;
%x2 = 10;
w1 = 0.5;
w2 = 1;
for lin = 1;tam(1)
      %for col = 1:tam(2)
               g = g + x(lin, 1) * w1 + x(lin, 2) * w2
      %end
end
if g >= 0
    y = 1
else
    y = 0
end

Como o MatLab requer uma licença para uso, existem outras opções como o Octave e o SciLab.

O objetivo de toda a aula foi para entender e chegar na representação gráfica do neurônio artificial, como o desenho da lousa:


Representação gráfica do neurônio artificial



Posts das anotações das aulas anteriores:

As aulas não continuaram presencialmente, mas no canal Cérebro Eletrônico IFSP tem vídeos com explicação.




Alguns links complementares:
Diversos links com Cursos online USP
Curso de DeepLearning no YouTube, 11 videos, quase 20 horas de conteúdo, da Universidade Federal de Goias
Introduction to DeepLearning MIT , em inglês, com opção de legendas em inglês.
http://deeplearningbook.com.br/


quinta-feira, 23 de abril de 2020

IA 03 - GNU Octave (bônus)



No curso do Instituto Federal Campus São Paulo, as máquinas do laboratório já vem instalados o MATLAB (MATrix LABoratory), porém ele precisa de uma licença, e como também prefiro usar opções com software livre no lugar de crackear e usar um software pirata como a maioria das pessoas fazem, perguntei para alguns colegas e me foi recomendado usar o GNU Octave. O free trial do MATLAB é de apenas 30 dias e precisa de um cadastro antes de efetuar o download.

Após pesquisar um pouco, juntei aqui algumas coisas básicas sobre o GNU Octave. Para instalar o GNU Octave via terminal:

$ sudo apt install octave

Nos casos do Ubuntu Mate e do Parrot, em modo gráfico podemos encontrar o programa no menu Aplicações, na pasta Educativo.

No menu do Ubuntu Mate a esquerda, e na direita o menu do Parrot 

Ao abrir pela primeira vez, aparece a tela de boas vindas do GNU Octave, basta clicar em avançar.




Selecione a opção caso queira saber das novidades da comunidade do GNU Octave, não é obrigatório a seleção, tornando-se opcional, depois basta clicar em avançar novamente.




Nesta tela são apresentados os links de documentação em formato HTML ou em PDF, e do wiki do GNU Octave, caso tenha interesse basta acessa-los ou então clique em Finalizar.



Após finalizar o programa em modo gráfico apresenta a tela inicial com as versões disponíveis.





As operações básicas no GNU Octave são representadas abaixo, sendo x e n variáveis que podem ser substituídas pelo numero a ser usado:

  • soma                x + n 
  • subtração         x - n 
  • divisão             x / n 
  • multiplicação   x * n 
  • potenciação      x ^ n  
  • raiz quadrada, em inglês square root       sqrt (x)
  • raiz cubica, em inglês cube root              cbrt (x)


Print screen do GNU Octave 5.2


Caso use Rwindows ou prefira instalar usando flatpak, sugiro este link

Aqui vão mais alguns links úteis com 5 vídeo aulas básicas:



Posts das anotações das aulas anteriores:

segunda-feira, 23 de março de 2020

IA 02 - Redes Neurais Artificiais

Lembrete: Aqui estão apenas anotações referentes ao curso que estou/estava frequentando.

Como tudo que o ser humano "cria", ele busca inspiração no que existe na natureza, o avião por exemplo, seu formato lembra o de um pássaro, e na tecnologia não seria diferente.
A imagem da anatomia do neurônio serve apenas para comparação e por este motivo esta bem simplificada.


Modelo de neurônio simplificado
Fonte da imagem: http://deeplearningbook.com.br/o-neuronio-biologico-e-matematico/

Apos relembrar as aulas de biologia, fomos apresentados ao modelo de neurônio artificial, sendo que:

i    = variável numérica
n   = variável ultimo item
Xi = Entradas
Wi = Weight (Pesos)
Y   = Saída
∑   = somatória
g    = potencial de ativação

Modelo de neurônio artificial


E também existe o modelo matemático:
       n
g =  ∑    ( Xi * Wi )
      i = 1

Y = f (g)

f  =  { y = 1 , se g >= 0
        { y = 0 , se g <  0


A Rede Neural Artificial pode ser dividida em 3 camadas:



Imagem produzida no Draw.io

Camada de entrada (em azul na imagem) recebe as características do exemplo do problema.

Camadas intermediarias ou camadas escondidas (em verde na imagem) realizam o processamento (mapeamento) entrada X saída.

Camada de saída (em amarelo na imagem) fornece a classificação do exemplo de entrada.


Base de Dados


ENTRADASSAÍDA


TEMPO
SALARIOEMPRÉSTIMOTRABALHOPAGAMENTO
R$ 1.000,00R$ 500,0018 meses0
R$ 2.000,00R$ 100,0024 meses1


Veremos nas próximas aulas com mais detalhes, mas apenas para nos situar, o processo de treinamento pode ser dividido em:

  •  Supervisionado
  • Não supervisionado
  • Por reforço
Arquitetura
  • Feed forward
  • Recorrente ou com realimentação


Algumas outras definições dadas em aula, pelo professor Ângelo:

Modelo conexionista - Conjuntos de unidades de processamento simples (neurônios artificiais) interligados por um grande numero de conexões paralelas (sinapses).

Topologia - Quantidade de camadas intermediarias e quantidade de neurônios nessas camadas.


Para entender ainda mais, foi apresentado o vídeo da base de dados digitalizada dos CEPs dos Estados Unidos, e a digitalização para reconhecer as diferentes formas de escrita. No vídeo podemos ter uma visão de forma gráfica da quantidade de neurônios e sinapses usadas no processo.



Características

  • Adaptação por experiencia
  • Capacidade de aprendizado
  • Tolerância a falhas
  • Capacidade de generalização
  • Não interpretação dos pesos
  • Não justificativa de resultados
  • Aplicação muito especificas
  • Sujeito a resultados tendenciosos (viés)


Referencias:
Modelo do neurônio simplificado (imagem) - http://deeplearningbook.com.br/o-neuronio-biologico-e-matematico/
Para fazer a imagem do modelo de neurônio artificial usei o Lucid Chart e o Draw.io


Posts complementares:
IA 01 - Inteligencia Artificial

sexta-feira, 20 de março de 2020

IA 01 - Inteligencia Artificial

Vou iniciar uma série de postagens de um curso presencial que estou fazendo, são apenas algumas anotações do curso de extensão de "Técnicas de Inteligencia Artificial e Aprendizado de Maquina",  que estou fazendo no Instituto Federal, Campus São Paulo. Caso seja útil para alguém fico feliz em compartilhar, pois usarei como consulta, fica mais fácil e mais pratico que nas folhas de fichário.

Alguns conceitos básicos que o professor Angelo passou foram:

Inteligencia Artificial seria de forma simplificada é um algoritmo reconhecedor de padrões, que possui duas fases, sendo a primeira de treinamento e a segunda de operação.

Na primeira fase chamada de treinamento a Inteligencia Artificial "aprende" a relação entre entradas e saídas, usando dados sobre a aplicação.

Esquema simplificado de Inteligencia artificial

Enquanto na segunda, denominada de operação, os parâmetros internos são fixados e o algoritmo esta apto a dar uma resposta consistente para uma nova entrada não usada na fase de treinamento.

Um exemplo bem conhecido e citado foi o desafio do facebook/instagram de 10 anos (10 year challenge) que ocorreu no inicio de 2019 para se conseguir as entradas e treinar a IA e pouco tempo depois surgiu o aplicativo que transformava as fotos em bebes ou idosos.

Como exemplo em classe usamos a IA para identificar spam, e a partir disto foi criada a tabela:


REMETENTEQtde DESTINATÁRIOPALAVRA ALVOSPAM
SIM1NÃONÃO
NÃO1000SIMSIM


Nesta tabela usamos como entradas as 3 primeiras colunas, sendo que:
_ primeira coluna seria a condição de se o Remetente  faz parte da lista de contatos
_ segunda coluna a quantidade de destinatários da mensagem
_ terceira coluna se contem alguma palavra chave que caracterize spam
Na ultima coluna seria a saída com o resultado classificando se o email foi spam ou não.Este seria um modelo bem resumido para entender o funcionamento da IA.


Fundamentos para aplicação do aprendizado de maquinas

  • Ha um modelo matemático para resolver o problema?
  • Existem dados sobre o problema?
  • Tem um padrão entre entrada e saída?



Apenas como curiosidade e material complementar, aqui estão  alguns desafios da inteligencia artificial contra a inteligencia humana: