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
Incrível!
Completion taxa melhorada para 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!