Prévia do material em texto
UNIVERSIDADE DO NORTE DO PARANÁ(UNOPAR) Curso de Engenharia de Software Antonio Carlos Barreiros Neto ROTEIRO AULA PRÁTICA 2 Descrição: Trabalho realizado para a disciplina de Fundamentos da Inteligência Artificial do 3° período Engenheria de Software. Itajubá 2024 Sumário 1. Introdução ............................................................................................................................................... 3 2. Objetivo .................................................................................................................................................... 4 3. Resolução ................................................................................................................................................. 5 1. Introdução As redes neurais artificiais representam uma das tecnologias mais inovadoras e promissoras no campo da inteligência artificial e aprendizado de máquina. Inspiradas no funcionamento do cérebro humano, essas redes são capazes de aprender padrões complexos a partir de grandes volumes de dados e realizar previsões ou classificações com alto grau de precisão. A compreensão e o desenvolvimento de uma rede neural envolvem o domínio de conceitos matemáticos e algoritmos de aprendizado, sendo a linguagem Python uma escolha popular entre pesquisadores e profissionais devido à sua simplicidade e a vasta disponibilidade de bibliotecas especializadas, como TensorFlow e PyTorch. Neste trabalho, será abordado o desenvolvimento de uma rede neural utilizando Python, desde os conceitos básicos até a implementação prática. Serão explorados temas fundamentais, como a estrutura das redes neurais, os processos de treinamento e validação, e as técnicas de ajuste de hiperparâmetros para otimizar a performance do modelo. 2. Objetivo Implemente uma rede neural de uma camada utilizando a função de ativação sigmoide. O objetivo é treinar a rede para realizar a classificação binária. Você receberá uma matriz de entrada e uma matriz de saída desejada e deverá ajustar os pesos da rede (sinapse) através do processo de aprendizado supervisionado. • Importação das Bibliotecas Necessárias: Utilize a biblioteca NumPy para realizar operações matemáticas e manipulações de arrays. • Definição da Função Sigmoide: Implemente a função de ativação sigmoide que será utilizada tanto para a ativação quanto para a derivada no cálculo do gradiente. • Definição das Entradas e Saídas: Crie a matriz de entrada X e a matriz de saída y. • Inicialização dos Pesos: Inicialize os pesos da sinapse com valores aleatórios. • Treinamento da Rede Neural: Implemente o loop de treinamento que ajustará os pesos da sinapse. O treinamento deve ser executado por 10.000 iterações. • No loop de treinamento, execute os seguintes passos: Realize a propagação para frente calculando as saídas. Calcule o erro. Calcule o delta (ajuste dos pesos) utilizando a derivada da função sigmoide. Atualize os pesos da sinapse. 3. Resolução • Implementando a Rede Neural Utilizando a biblioteca NumPy para manipulação matematica e arrays. • Definindo Função Sigmoide Implementado a função de ativação sigmoide e sua derivada, que são usadas para a propagação para frente e calculo do gradiente, respectivamente. • Definindo as Entradas e Saidas Definido as matrizes de entrada X e a matriz de saída desejada Y • Inicialização dos Pesos Iniciado os pesos da camada com valores aleatorios. • Treinamento da Rede Neural Implementado o loop de treinamento para ajustar os pesos. O treinamento foi realizado por 10.000 interações. 3.1. Explicação do Código Função Sigmoide e Derivada: sigmoid(x): Calcula a saída da função sigmoide. sigmoid_derivative(x): Calcula a derivada da função sigmoide, que é usada para ajustar os pesos durante o treinamento. Entradas e Saídas: X é a matriz de entrada. y é a matriz de saída desejada. Inicialização dos Pesos: Pesos são inicializados aleatoriamente entre -1 e 1. Treinamento: Para cada iteração, calculado a saída da rede, o erro, e ajustamos os pesos com base no erro e na derivada da sigmoide. Resultados: Após o treinamento, exibido os pesos finais e a saída da rede para as entradas fornecidas. Este código implementa uma rede neural básica com uma camada de saída e a função de ativação sigmoide, treinando-a para realizar a tarefa de classificação binária.