TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

TÓPICOS ESPECIAIS EM ENGENHARIA DA COMPUTAÇÃO

Por:   •  14/9/2020  •  Trabalho acadêmico  •  384 Palavras (2 Páginas)  •  112 Visualizações

Página 1 de 2

Tópicos especiais em Engenharia da computação III

Aprendizado de máquina

1. Introdução

Foi escolhido um problema de classificação binária. O banco de dados chama-se: “Tic-Tac-Toe Endgame Data Set”.

Esse banco de dados codifica o conjunto completo de configurações possíveis de um tabuleiro de jogo da velha, onde se supõe que "x" tenha sido jogado primeiro. O objetivo é "ganhar com x" (ou seja, verdadeiro quando "x" tem uma das 8 maneiras possíveis de criar um "três em uma linha").

Endereço: https://archive.ics.uci.edu/ml/machine-learning-databases/tic-tac-toe/tic-tac-toe.data

2. Linguagem e bibliotecas utilizadas

Os testes foram realizados utilizando a linguagem Python. E foram utilizadas as bibliotecas pandas e numpy.

3. Arquiteturas

Os códigos não serão colocados completamente para não ocupar muito espaço no relatório. Mas basicamente, foram alterados alguns valores do banco de dados. Os códigos serão colocados em anexo no moodle, junto com o relatório.

Os perceptrons irão separar os resultados positive (1) de negative (-1), o vetor Xb, é a entrada do neurônio perceptron. Foram utilizadas 10000 épocas para treinar o neurônio. Onde a saída pode assumir:

Caso a classe seja -1 o erro ficaria da seguinte maneira:

Yr = -1 => e = -1-(+1) = 0

Yr = +1 => e= -1-(+1) = -2

Caso a classe seja +1 o erro ficaria da seguinte maneira:

Yr = -1 => e = +1-(+1) = +2

Yr = +1 => e=+-1-(+1) = 0

Onde e = erro.

3.1 Perceptron Simples

Trecho do código:

bias = 1

numEpocas = 10000

numAmostras = 319

eta = 0.1

e = np.zeros(319)

W = np.ones([1,10])

for j in range(numEpocas):

    for k in range(numAmostras):

     # Insere o bias no vetor de entrada.

     Xb = np.hstack((bias, X[:,k]))

     

     # Calcula o vetor campo induzido.

     V = np.dot(W, Xb)

     

     # Calcula a saída do perceptron.

     Yr = np.sign(V)

     

     # Calcula o erro: e = (Y - Yr)

     e[k] = Y[k] - Yr

     

     # Treinando a rede.

     W = W + eta*e[k]*Xb

Após o código ser rodado a saída com 319 das 956 linhas do banco de dados, o vetor de erros ficou da seguinte maneira:

Ou seja, o Perceptron acertou quase 100%, portanto o resultado foi satisfatório.

3.2 Perceptron com múltiplas camas

Trecho do código:

numEpocas = 20        # Número de épocas.

q = 319                # Número de padrões.

eta = 0.01            # Taxa de aprendizado.

m = 9                 # Número de neurônios na camada de entrada.

N = 9                 # Número de neurônios na camada escondida.

L = 1                 # Número de neurônios na camada de saída.

d = np.array(res) # vetor de resposta

W1 = np.random.random((N, m + 1))

W2 = np.random.random((L, N + 1))

# Array para amazernar os erros.

E = np.zeros(q)

Etm = np.zeros(numEpocas)

bias = 1

X = np.vstack((acx, acx1, acx2, acx3, ao, aco1, acx4, aco2, aco3))

for i in range(numEpocas):

    for j in range(q):

        

# Insere o bias no vetor de entrada.

        Xb = np.hstack((bias, X[:,j]))

# Saída da Camada Escondida.

        O1 = np.tanh(W1.dot(Xb)) # Equações (1) e (2) juntas.      

...

Baixar como (para membros premium)  txt (5.7 Kb)   pdf (43.4 Kb)   docx (11.2 Kb)  
Continuar por mais 1 página »
Disponível apenas no TrabalhosGratuitos.com