Buscar

A7 - IA

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

INTELIGÊNCIA 
ARTIFICIAL
Pedro Henrique Chagas Freitas
Redes neurais artificiais I
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar os elementos e as notações das redes neurais artificiais.
 � Caracterizar as diferentes estruturas de rede.
 � Exemplificar os algoritmos das redes neurais e suas características.
Introdução
Neste capítulo, você estudará os elementos e as notações principais 
das redes neurais artificiais, bem como suas estruturas e um algoritmo 
utilizado nessas redes e suas características.
Redes neurais artificiais
Para tratar do funcionamento das redes neurais artificiais, é importante contex-
tualizar alguns fundamentos de inteligência artificial e modelagem cognitiva. 
Por exemplo, a espécie Homo sapiens recebeu esse nome devido à inteligência 
dos seres humanos. Durante milhares de anos, procura-se entender como eles 
pensam, percebem, compreendem, prevêm e manipulam um mundo muito 
maior e mais complexo do que eles. Desse pensamento, por volta de 1956, após 
o final da Segunda Guerra Mundial, surgiu o campo da inteligência artificial.
Em suma, a inteligência artificial é o estudo das faculdades mentais pelo 
uso de modelos computacionais (CHARNIAK; MCDEMOTT, 1985). Em 
1950, Alan Turing desenvolveu o teste de Turing, projetado para fornecer uma 
definição operacional sobre inteligência que, de forma simples, funciona com 
um computador que passará por testes e será aprovado caso o interrogador 
humano, depois de propor algumas perguntas por escrito, não conseguir 
descobrir se as respostas escritas vêm de uma pessoa ou de um computador.
Nesse contexto, surgiram quatro premissas que deram origem aos estudos 
das redes neurais artificias:
 � Processamento de linguagem natural para permitir que haja comunicação.
 � Representação de conhecimento para armazenamento.
 � Raciocínio automatizado para usar informações armazenadas.
 � Aprendizado de máquina para realizar adaptação diante de novas cir-
cunstâncias e criação de padrões.
A partir dessas quatro premissas, começou-se a pensar na criação de um 
subgrupo dentro da inteligência artificial para disciplinar sobre ciência cognitiva 
ou modelagem cognitiva, que é a representação de modelos computacionais de 
inteligência artificial e de técnicas experimentais de psicologia, visando construir 
teorias verificáveis a respeito dos processos de funcionamento da mente humana.
Com os estudos de modelagem cognitiva a partir da mente humana, co-
meçou-se a fomentar o estudo das redes neurais artificiais, que é um campo 
de inteligência artificial responsável por simular e referenciar as atividades 
cerebrais dos neurônios por meio de modelos matemáticos, dando origem a 
essas redes neurais. Na Figura 1, você pode ver o esquema de uma representação 
de um neurônio natural e um artificial.
Figura 1. Representação de um neurônio natural e um artificial.
Fonte: Adaptado de Rocha (2017). 
Dendritos (terminal de recepção)
Terminal do axônio
(terminal de transmissão)
Sentido de propagação
Nodo de Ranvier
Bainha de mielina
Axônio
Corpo
x1
x2
xn
– θ 
u y
Redes neurais artificiais I2
As redes neurais artificiais realizam a construção de modelos matemáticos 
que simulam as atividades do cérebro, descrevendo as atividades mentais 
por meio da eletroquímica das células cerebrais (os neurônios). Inspiradas 
na eletroquímica das células cerebrais, algumas aplicações de inteligência 
artificial buscam criar a computação neural a partir de sistemas de proces-
samento distribuído paralelo, com modelos matemáticos que demonstram o 
funcionamento dos neurônios. Segundo McCulloch (1943), as redes neurais 
artificiais começariam a demonstrar a interconexão de um neurônio a partir 
de ligações de entrada e saída, em que a ativação de entrada pode ser qualquer 
estímulo que desencadeie funções de entrada e de ativação, conforme você 
pode observar na Figura 2.
Figura 2. Interconexão de um neurônio artificial a partir de ligações de entrada e saída.
Peso em diagonal
Ligações 
de entrada
Função 
de entrada
Função 
de ativação
Saída
Ligações 
de saída
aj = g(inj)
inj
ajai
a
0
 = 1
w
0j
wij
g
Σ
Portanto, as redes neurais são compostas de nós ou unidades, que se co-
nectam por ligações direcionadas. Uma ligação da unidade i para a unidade 
j serve para propagar uma ativação ai de i para j, sendo que cada ligação tem 
um peso numérico wij associado a ele, que, por sua vez, determina o sinal de 
conexão entre as unidades ou os nós de uma rede neural. Assim, essas redes 
implementam o seguinte somatório:
in w aj i j i
i
n
=
=
∑ ,
0
3Redes neurais artificiais I
O somatório anterior representa a função fundamental das redes neurais, 
chamada de função de ativação, que é uma representação do somatório das 
ligações de entrada em uma rede neural artificial. A seguir, você pode ver o 
somatório para se obter a saída:
a g in g w aj j i j i
i
n
= ( ) =



=
∑ ,
0
Observe que, a partir da representação dos somatórios de entrada e saída, 
pode-se verificar que a função de ativação g é usada para derivar a saída. 
Portanto, essas funções de entrada e saída garantem a propriedade de conexão 
das redes neurais artificiais para cada unidade ou nó delas.
Outra propriedade é a estrutura da conexão em rede das redes neurais, 
que ocorre fundamentalmente por duas estruturas principais: as redes neurais 
artificiais de camada única e as de multicamada. Nas redes de camada única, 
há conexões em uma direção, formando uma matriz dirigida, na qual cada 
nó recebe a entrada de nós “para cima” e libera a saída destes “para baixo”, 
não havendo laços entre eles. Já a rede com camada múltipla tem uma ou 
mais camadas que atuarão com diversas unidades (os nós), representadas por 
funções booleanas básicas nas entradas e saídas.
Estruturas de redes neurais artificiais
Portanto, como foi visto anteriormente, há duas estruturas principais de redes 
neurais artificiais:
 � Redes neurais de camada única. 
 � Redes neurais de multicamada.
As redes neurais de camada única são uma estrutura fundamental com 
todas as suas entradas conectadas diretamente com somente uma saída, por 
exemplo, na Figura 3, você pode ver uma rede de camada única simples de 
duas entradas com duas interligações.
Redes neurais artificiais I4
Figura 3. Rede de camada única simples de duas entradas com duas interligações.
1
w
1,3
w
1,4
w
2,3
w
2,4
3
42
 A estrutura de rede de camada única foi proposta em 1958, por Rosenblatt, 
e é a forma mais simples de estruturação de rede neural artificial, considerando 
que se constitui de uma camada neural e de um neurônio. Essas redes podem ter 
n entradas, porém, apenas uma saída com valores de 0 e 1 ou de –1 e 1. Portanto, 
ela funciona como um classificador binário simples, que mapeia as entradas x 
em função de um valor de saída f(x), criando uma matriz, por exemplo, f(x) = 1 
se w · x + b > = 0, se não 0, conforme você pode conferir no Quadro 1.
x1 x2 f(x)1 f(x)2
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Quadro 1. Exemplo de uma rede neural artificial de camada única que funciona como um 
classificador binário simples
A partir da função, determina-se que w é um vetor que multiplica os valores, 
sejam estes de x1 ou de x2, sendo b um valor constante, dependendo do tipo 
de entrada. Por isso, pode-se criar valores de interligação de 0 e 1 ou –1 e 1 
para diversos tipos de interconexão entre os neurônios, tendo uma camada 
com n entradas, mas somente uma saída. Na Figura 4, você pode observar 
como ocorre essa conexão.
5Redes neurais artificiais I
Figura 4. Interconexão entre os neurônios artificiais e seus valores de entrada e saída.
Entradas
Saída (y)
Função de ativação (f)
Pesos das conexões
Σ u
w
1
w
2
wn
x1
x2
xn
Já as estruturas de redes neurais de multicamada ou perceptrons de multi-
camadas (MLP) são semelhantes aos perceptrons que servem como modelos 
de neurônios artificiais, presentes em somente uma camada ou em multicama-das, mas, nesse último caso, há mais de uma camada de neurônio. Portanto, 
trata-se de uma rede composta de camadas de neurônios ligadas entre si por 
sinapses com pesos, similares à representação de um neurônio (perceptron) 
em uma camada, porém, com mais de uma camada deles, conforme você 
pode ver na Figura 5.
Figura 5. Exemplo de rede neural artificial de multicamada.
1
w
1,3
w
1,4
w
2,3
w
2,4
3
42
w
3,5
w
3,6
w
4,5
w
4,6
5
6
Uma das principais vantagens na construção da multicamada é que, nela, 
há a entrada de estímulos e uma camada intermediária de construção da 
resposta para encaminhar a saída, formando os grafos que simulam neurônios 
em multicamadas, como apresentado na Figura 6.
Redes neurais artificiais I6
Fi
gu
ra
 6
. C
on
st
ru
çã
o 
da
 e
st
ru
tu
ra
 d
e 
m
ul
tic
am
ad
a.
…
…
…
S
in
al
 d
e 
en
tr
ad
a 
o
u
 E
st
ím
u
lo
 
in
ic
ia
l
C
am
ad
a 
d
e 
en
tr
ad
a
P
ri
m
ei
ra
 
ca
m
ad
a 
o
cu
lt
a
S
eg
u
n
d
a 
ca
m
ad
a 
o
cu
lt
a
C
am
ad
a 
d
e 
sa
íd
a
R
es
p
o
st
a 
d
o
 s
in
al
 
d
e 
sa
íd
a
      

7Redes neurais artificiais I
Na Figura 7, você pode ver outras estruturas das redes artificiais de maior 
complexidade, que derivam das redes de camada única e de multicamadas.
Figura 7. Redes artificiais de maior complexidade, derivadas das redes de camada única 
e de multicamada.
Fonte: Van Veen e Leijnen (2016, documento on-line).
Redes neurais artificiais I8
Algoritmos de redes neurais artificiais
A seguir, você pode ver como ocorre a implementação de um algoritmo de rede 
neural artificial de camada única com a linguagem Python apresentada por 
Caraciolo (2018 apud ROCHA, 2017, documento on-line). Nesse caso, utiliza-
-se a classe perceptron oriunda das bibliotecas do Python para implementar a 
rede de camada única, inserindo os métodos, atributos, classes e comentários 
nas linhas do código a fim de representar as entradas, saídas e sua respectiva 
conversão em sinapses de -1 e 1.
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Implementação Perceptron
import sys
import random
class Perceptron:
## Primeira função de uma classe (método construtor de objetos)
## self é um parâmetro obrigatório que receberá a instância criada
def _ _ init _ _ (self, amostras, saidas, taxa _ aprendizado=0.1, 
épocas = 1000, limiar = 1)
self.amostras = amostras
self.saidas = saidas
self.taxa _ aprendizado = taxa _ aprendizado
self.epocas = epocas
self.limiar = limiar
self.n _ amostras = len(amostras) # número de linhas 
(amostras)
self.n _ atributos = len(amostras[0]) # número de atributos
self.pesos = []
## Atribuição de treinamento para amostras e construção da matriz 
def treinar(self):
# Inserir o valor do limiar na posição "0" para cada amostra 
da lista “amostra” Ex.: [[0.72, 0.82], ...] vira [[1, 0.72, 0.82]
for amostra in self.amostras:
 amostra.insert(0, self.limiar)
9Redes neurais artificiais I
# Gerar valores randômicos entre 0 e 1 (pesos) conforme o 
número de atributos
for i in range(self.n _ atributos):
self.pesos.append(random.random())
# Inserir o valor do limiar na posição "0" do vetor de pesos
self.pesos.insert(0, self.limiar)
# Inicializar contador de épocas
n _ epocas = 0
while True:
# Inicializar variável erro
# (quando terminar loop e erro continuar False, é porque não 
tem mais diferença entre valor calculado e desejado
erro = False
# Para cada amostra...
for i in range(self.n _ amostras):
# Inicializar potencial de ativação
u = 0
# Para cada atributo...
for j in range(self.n _ atributos + 1):
# Multiplicar amostra e seu peso e também somar com o potencial
 u += self.pesos[j] * self.amostras[i][j]
# Obter a saída da rede considerando g a função sinal
y = self.sinal(u)
# Verificar se a saída da rede é diferente da saída desejada
if y != self.saidas[i]:
# Calcular o erro
erro _ aux = self.saidas[i] - y
# Fazer o ajuste dos pesos para cada elemento da amostra
for j in range(self.n _ atributos + 1):
 self.pesos[j] = self.pesos[j] + self.taxa _ aprendizado * e
# Atualizar variável erro, já que erro é diferente de zero (e
erro = True
# Atualizar contador de épocas
n _ epocas += 1
Redes neurais artificiais I10
# Critérios de parada do loop: erro inexistente ou o número 
de épocas
if not erro or n _ epocas > self.epocas:
 break
## Testes para "novas" amostras
def teste(self, amostra):
# Inserir o valor do limiar na posição "0" para cada amostra 
da lista “amostra”
amostra.insert(0, self.limiar)
# Inicializar potencial de ativação
u = 0
# Para cada atributo...
for i in range(self.n _ atributos + 1):
# Multiplicar amostra e seu peso e também somar com o poten-
cial que já tinha
 u += self.pesos[i] * amostra[i]
# Obter a saída da rede considerando g a função sinal
y = self.sinal(u)
print('Classe: %d' % y)
## Função sinal
def sinal(self, u):
if u >= 0:
 return 1
 return -1
# Amostras (entrada e saída) para treinamento
amostras = [[0.72, 0.82], [0.91, -0.69],
[0.46, 0.80], [0.03, 0.93],
[0.12, 0.25], [0.96, 0.47],
[0.8, -0.75], [0.46, 0.98],
[0.66, 0.24], [0.72, -0.15],
[0.35, 0.01], [-0.16, 0.84],
[-0.04, 0.68], [-0.11, 0.1],
[0.31, -0.96], [0.0, -0.26],
11Redes neurais artificiais I
[-0.43, -0.65], [0.57, -0.97],
[-0.47, -0.03], [-0.72, -0.64],
[-0.57, 0.15], [-0.25, -0.43],
[0.47, -0.88], [-0.12, -0.9],
[-0.58, 0.62], [-0.48, 0.05],
[-0.79, -0.92], [-0.42, -0.09],
[-0.76, 0.65], [-0.77, -0.76]]
saidas = [-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1, 1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1]
# Chamar classe e fazer treinamento das amostras
rede = Perceptron(amostras, saidas)
rede.treinar()
# Entrando com amostra para teste
rede.teste([0.46, 0.80])
# Fim do perceptron
CHARNIAK, E.; McDERMOTT, D. Introduction to artificial intelligence. Reading: Addison 
Wesley, 1985. 701 p.
ROCHA, V. R. Perceptron – Redes Neurais. Monolito Nimbus, [S. l.], 1 jun. 2017. Disponível 
em: https://www.monolitonimbus.com.br/perceptron-redes-neurais/. Acesso em: 28 
maio 2019.
VAN VEEN, F.; LEIJNEN, S. A mostly complete chart of Neural Networks. In: VAN VEEN, 
F. The Neural Network Zoo. The Asimov Institute for Artificial Creativity and Constraint, 
Utrecht, 14 Sep. 2016. Disponível em: http://www.asimovinstitute.org/neural-network-
-zoo/. Acesso em: 28 maio 2019.
Leituras recomendadas
COPPIN, B. Inteligência artificial. Rio de Janeiro: LTC, 2010. 664 p.
DROZDEK, A. Estrutura de dados e algoritmos em C++. 4. ed. São Paulo: Cengage Lear-
ning, 2017. 708 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
Redes neurais artificiais I12

Continue navegando