Implementação de Neurônio Único
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:
- Multiplicar cada entrada pelo seu peso;
- Somar todas as entradas ponderadas;
- Adicionar um viés para ajustar a saída;
- Passar o resultado por uma ativação sigmoide, que converte para o intervalo ((0,1)) para saída de probabilidade.
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.
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]) usandonp.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)=1+e−z1Ela 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 z se for positiva e 0 caso contrário:
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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Implementação de Neurônio Único
Deslize para mostrar o menu
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:
- Multiplicar cada entrada pelo seu peso;
- Somar todas as entradas ponderadas;
- Adicionar um viés para ajustar a saída;
- Passar o resultado por uma ativação sigmoide, que converte para o intervalo ((0,1)) para saída de probabilidade.
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.
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]) usandonp.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)=1+e−z1Ela 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 z se for positiva e 0 caso contrário:
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?
Obrigado pelo seu feedback!