Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Implementação de Neurônio Único | Rede Neural do Zero
Quizzes & Challenges
Quizzes
Challenges
/
Introdução às Redes Neurais com Python

bookImplementação de Neurônio Único

Note
Definição

Um neurônio é a unidade computacional básica de uma rede neural. Ele processa múltiplas entradas e gera uma única saída, permitindo que a rede aprenda e faça previsões.

Neste exemplo, é construída uma rede neural com um neurônio para uma tarefa de classificação binária (por exemplo, detecção de spam). O neurônio recebe características numéricas e gera um valor entre 0 e 1, representando a probabilidade de um e-mail ser spam (1) ou legítimo (0).

Passo a passo:

  1. Multiplicar cada entrada pelo seu peso;
  2. Somar todas as entradas ponderadas;
  3. Adicionar um viés para ajustar a saída;
  4. Passar o resultado por uma ativação sigmoide, que converte para o intervalo ((0,1)) para saída de probabilidade.
Note
Nota

Bias do neurônio também é um parâmetro treinável.

Classe Neuron

Um neurônio precisa armazenar seus pesos e bias, tornando a classe uma forma natural de agrupar essas propriedades relacionadas.

Note
Nota

Embora esta classe não faça parte da implementação final da rede neural, ela ilustra de forma eficaz princípios fundamentais.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: valores inicializados aleatoriamente (um para cada entrada);
  • bias: um único valor aleatório. Ambos são extraídos de uma distribuição uniforme em ([-1, 1]) usando np.random.uniform() para evitar simetria.

Propagação Direta

O método activate() do neurônio calcula a soma ponderada e aplica a sigmoide. A soma ponderada utiliza o produto escalar entre os pesos e as entradas:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Em seguida, aplica-se a função de ativação para obter a saída final do neurônio.

O uso de np.dot() evita laços e calcula toda a soma ponderada em uma única linha. A função sigmoide então transforma esse valor bruto em uma probabilidade:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Ativação Sigmoide

Dado o resultado bruto (z), a sigmoide é:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Ela mapeia qualquer número para ((0,1)), tornando-se ideal para classificação binária, onde a saída do neurônio deve representar uma probabilidade.

Utilizando esta fórmula, a sigmoide pode ser implementada como uma função simples em Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

A fórmula para a função ReLU é a seguinte, que basicamente define a saída igual a zz se for positiva e 0 caso contrário:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Qual é o papel do termo de viés em um único neurônio?

2. Por que inicializamos os pesos com pequenos valores aleatórios em vez de zeros?

question mark

Qual é o papel do termo de viés em um único neurônio?

Select the correct answer

question mark

Por que inicializamos os pesos com pequenos valores aleatórios em vez de zeros?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain why we use the sigmoid function for binary classification?

How does the dot product work in the context of neural networks?

What is the difference between sigmoid and ReLU activations?

Awesome!

Completion rate improved to 4

bookImplementação de Neurônio Único

Deslize para mostrar o menu

Note
Definição

Um neurônio é a unidade computacional básica de uma rede neural. Ele processa múltiplas entradas e gera uma única saída, permitindo que a rede aprenda e faça previsões.

Neste exemplo, é construída uma rede neural com um neurônio para uma tarefa de classificação binária (por exemplo, detecção de spam). O neurônio recebe características numéricas e gera um valor entre 0 e 1, representando a probabilidade de um e-mail ser spam (1) ou legítimo (0).

Passo a passo:

  1. Multiplicar cada entrada pelo seu peso;
  2. Somar todas as entradas ponderadas;
  3. Adicionar um viés para ajustar a saída;
  4. Passar o resultado por uma ativação sigmoide, que converte para o intervalo ((0,1)) para saída de probabilidade.
Note
Nota

Bias do neurônio também é um parâmetro treinável.

Classe Neuron

Um neurônio precisa armazenar seus pesos e bias, tornando a classe uma forma natural de agrupar essas propriedades relacionadas.

Note
Nota

Embora esta classe não faça parte da implementação final da rede neural, ela ilustra de forma eficaz princípios fundamentais.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: valores inicializados aleatoriamente (um para cada entrada);
  • bias: um único valor aleatório. Ambos são extraídos de uma distribuição uniforme em ([-1, 1]) usando np.random.uniform() para evitar simetria.

Propagação Direta

O método activate() do neurônio calcula a soma ponderada e aplica a sigmoide. A soma ponderada utiliza o produto escalar entre os pesos e as entradas:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Em seguida, aplica-se a função de ativação para obter a saída final do neurônio.

O uso de np.dot() evita laços e calcula toda a soma ponderada em uma única linha. A função sigmoide então transforma esse valor bruto em uma probabilidade:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Ativação Sigmoide

Dado o resultado bruto (z), a sigmoide é:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Ela mapeia qualquer número para ((0,1)), tornando-se ideal para classificação binária, onde a saída do neurônio deve representar uma probabilidade.

Utilizando esta fórmula, a sigmoide pode ser implementada como uma função simples em Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

A fórmula para a função ReLU é a seguinte, que basicamente define a saída igual a zz se for positiva e 0 caso contrário:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Qual é o papel do termo de viés em um único neurônio?

2. Por que inicializamos os pesos com pequenos valores aleatórios em vez de zeros?

question mark

Qual é o papel do termo de viés em um único neurônio?

Select the correct answer

question mark

Por que inicializamos os pesos com pequenos valores aleatórios em vez de zeros?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 2. Capítulo 1
some-alt