Construindo Redes Neurais Simples

Neste capítulo, vamos explorar como construir redes neurais simples usando TensorFlow. Redes neurais são a base de muitos modelos de aprendizado profundo e entender como construí-las é essencial para qualquer desenvolvedor de IA.

Estrutura de uma Rede Neural Simples

Uma rede neural simples é composta por camadas de neurônios, onde cada neurônio realiza uma operação matemática sobre os dados de entrada. A estrutura básica de uma rede neural pode ser representada como:

graph TD;
    A["Entrada"] --> B["Camada Oculta 1"];
    B --> C["Camada Oculta 2"];
    C --> D["Saída"];

Equações Matemáticas

Cada neurônio em uma camada realiza uma operação linear seguida por uma função de ativação. A operação linear pode ser expressa como:

$$ z = W \cdot x + b $$

onde:

  • \( W \) é o vetor de pesos,
  • \( x \) é o vetor de entrada,
  • \( b \) é o viés.

A saída do neurônio é então passada por uma função de ativação \( \sigma \):

$$ a = \sigma(z) $$

Exemplo de Implementação

Vamos implementar uma rede neural simples com uma camada oculta usando TensorFlow. Esta rede será usada para classificar dados em duas classes.

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

# Definindo o modelo
model = Sequential([
    Dense(units=4, activation='relu', input_shape=(3,)),  # Camada oculta com 4 neurônios
    Dense(units=1, activation='sigmoid')  # Camada de saída com 1 neurônio
])

# Compilando o modelo
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Resumo do modelo
model.summary()

Diagrama de Fluxo de Dados

O fluxo de dados através da rede pode ser visualizado no diagrama abaixo:

graph TD;
    A["Entrada $$\;x_1, x_2, x_3$$"] --> B["Camada Oculta 1"];
    B --> C["Camada de Saída"];
    C --> D["Saída $$\;\hat{y}$$"];

Treinamento do Modelo

Para treinar o modelo, precisamos de um conjunto de dados de entrada e os rótulos correspondentes. O treinamento ajusta os pesos \( W \) e os vieses \( b \) para minimizar a função de perda.

# Dados de exemplo
X_train = [[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]]
y_train = [0, 1, 0]

# Treinando o modelo
model.fit(X_train, y_train, epochs=10)

Conclusão

Construir redes neurais simples é o primeiro passo para entender modelos mais complexos. Com o TensorFlow, podemos facilmente definir, compilar e treinar redes neurais para resolver uma variedade de problemas de aprendizado de máquina. Nos próximos capítulos, exploraremos redes neurais mais avançadas e técnicas de aprimoramento de modelos.