Exibindo post do mês de: MARÇO-2023

Redes Neurais Artificiais

2023 está sendo considerado por muitos como o ano da Inteligência Artificial. Isso se deve ao fato de muitas tecnologias que estavam em desenvolvimento, evolução e teste, passarem a fazer ainda mais parte do nosso cotidiano, a exemplo do tão falado e espetacular ChatGPT.

A base de tudo isso parte de um princípio muito simples, mas ao mesmo tempo muito complexo. O aprendizado. Aprender, para os seres humanos, exige muito mais do que imaginamos e ao mesmo tempo, na prática, nos parece algo simples.

Falar sobre Inteligência Artificial significa que devemos falar também sobre "neurônios artificiais".

Redes Neurais Artificiais

As Redes Neurais Artificiais (RNAs), também conhecidas como ANNs (Artificial Neural Networks), são um subconjunto da Inteligência Artificial (IA) que simula a anatomia e a fisiologia do cérebro humano para realizar tarefas desafiadoras, incluindo tomada de decisões, processamento de linguagem natural e identificação de imagens.

Os neurônios artificiais (perceptrons), os nós interconectados que compõem as redes neurais, processam e enviam dados à medida que as camadas da rede são construídas. A rede pode ser ensinada a reconhecer padrões e fazer previsões precisas alterando a força das conexões entre os neurônios.


Modelo de Neurônio Artificial - Perceptron


Modelo de Rede Neural - Perceptrons

Aprendizado

A capacidade das RNAs de aprender e se ajustar a novas informações é uma de suas principais características. Para aumentar sua precisão e desempenho ao longo do tempo, as RNAs podem ser treinadas usando uma variedade de técnicas, incluindo aprendizado supervisionado, não supervisionado e por reforço.

Processamento de linguagem natural, carros sem motorista, reconhecimento de imagem e fala e outros campos fizeram uso de ANNs (Artificial Neural Networks).

Paralelismo

As RNAs também têm o benefício do processamento paralelo, o que lhes permite processar enormes volumes de dados de uma só vez. Com a ajuda de ANNs, empresas e organizações podem prever o futuro e produzir previsões com base na análise de dados.

As RNAs têm inúmeros benefícios, mas também apresentam várias desvantagens, como a necessidade de muitos dados de treinamento, o perigo de overfitting e o desafio de entender como eles tomam decisões.

Alguns Tipos

Uma variedade popular de RNAs é a rede neural feedforward, que possui uma camada de entrada, uma ou mais camadas ocultas e uma camada de saída. Tarefas de classificação, regressão e reconhecimento de padrões são realizadas usando redes feedforward. A rede neural recorrente é um tipo adicional de RNAs que suporta loops de feedback e pode ser aplicada a projetos como modelagem de linguagem e previsão de séries temporais.
Função

A função de ativação, que baseia a saída de um nó em sua entrada, é uma parte crucial das RNAs. As funções sigmoid, ReLU (Rectified Linear Unit) e tanh são funções de ativação populares. As RNAs também podem modificar os pesos e vieses dos nós durante o treinamento usando vários métodos de otimização, como descida de gradiente estocástico.

Programação

Python é uma linguagem de programação popular para criar e treinar RNAs, e bibliotecas como TensorFlow e PyTorch oferecem recursos eficazes para criar redes complexas. Um número crescente de desenvolvedores de RNAs está usando JavaScript, graças a estruturas como TensorFlow.js e Brain.js, para criar Redes Neurais Artificiais que podem ser executadas diretamente no navegador.

Códigos

Vejamos logo abaixo como construir uma rede neural artificial utilizando as linguagens de programação Python e JavaScript.

Python

import tensorflow as t
import numpy as np

# Dados para treinamento
x_train = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y_train = np.array([[0], [1], [1], [0]])

# Arquiterura da rede neural
model = tf.keras.Sequential([
  tf.keras.layers.Dense(4, activation='sigmoid', input_shape=(2,)),
  tf.keras.layers.Dense(1, activation='sigmoid')
])

# Modelo com perda e otimização
model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(),
              metrics=['accuracy'])

# Treine o modelo
model.fit(x_train, y_train, epochs=1000)

# Teste o modelo com novos dados
x_test = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
y_test = np.array([[0], [1], [1], [1]])
test_loss, test_acc = model.evaluate(x_test, y_test, verbose=2)
print('Precisão:', test_acc)

 

JavaScript

import * as tf from '@tensorflow/tfjs'

// Dados para treinamento
const xTrain = tf.tensor2d([[0, 0], [0, 1], [1, 0], [1, 1]]);
const yTrain = tf.tensor2d([[0], [1], [1], [0]]);

// Arquiterura da rede neural
const model = tf.sequential();
model.add(tf.layers.dense({units: 4, activation: 'sigmoid', inputShape: [2]}));
model.add(tf.layers.dense({units: 1, activation: 'sigmoid'}));

// Modelo com perdas e otimização
model.compile({optimizer: tf.train.adam(), loss: 'binaryCrossentropy', metrics: ['accuracy']});

// Treine o modelo
await model.fit(xTrain, yTrain, {epochs: 1000});

// Teste o modelo com novos  
const xTest = tf.tensor2d([[0, 0], [0, 1], [1, 0], [1, 1]]);
const yTest = tf.tensor2d([[0], [1], [1], [1]]);
const [testLoss, testAcc] = await model.evaluate(xTest, yTest);

 

Apresentei neste artigo a "pontinha do iceberg" com relação ao assunto redes neurais artificiais. Há muito mais a saber e conhecer sobre esse fabuloso tema.

Estude e coloque em prática as suas ideias e projetos. 😉

Visite nosso site e leia outros blogs de Stênio Oliveira. 

Por: Stênio Oliveira VER MAIS
WhatsApp Wiser Telegram Wiser