Implementación de una Sola Neurona
Una neurona es la unidad computacional básica de una red neuronal. Procesa múltiples entradas y genera una única salida, lo que permite que la red aprenda y realice predicciones.
En este ejemplo, se construye una red neuronal con una sola neurona para una tarea de clasificación binaria (por ejemplo, detección de spam). La neurona recibe características numéricas y produce un valor entre 0 y 1, que representa la probabilidad de que un correo electrónico sea spam (1) o legítimo (0).
Paso a paso:
- Multiplicar cada entrada por su peso;
- Sumar todas las entradas ponderadas;
- Añadir un sesgo para ajustar la salida;
- Pasar el resultado por una activación sigmoide, que lo convierte al rango ((0,1)) para la salida de probabilidad.
El sesgo de la neurona también es un parámetro entrenable.
Clase Neurona
Una neurona necesita almacenar sus pesos y sesgo, por lo que una clase es una forma natural de agrupar estas propiedades relacionadas.
Aunque esta clase no formará parte de la implementación final de la red neuronal, ilustra de manera efectiva los principios clave.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: valores inicializados aleatoriamente (uno por cada entrada);bias: un único valor aleatorio. Ambos se obtienen de una distribución uniforme en ([-1, 1]) utilizandonp.random.uniform()para romper la simetría.
Propagación hacia adelante
El método activate() de la neurona calcula la suma ponderada y aplica la sigmoide.
La suma ponderada utiliza el producto punto de los pesos y las entradas:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Luego se aplica la función de activación para obtener la salida final de la neurona.
El uso de np.dot() evita bucles y calcula toda la suma ponderada en una sola línea.
La función sigmoide transforma este valor bruto en una probabilidad:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Activación Sigmoide
Dado un resultado bruto (z), la función sigmoide es:
σ(z)=1+e−z1Asigna cualquier número a ((0,1)), lo que la hace ideal para clasificación binaria, donde la salida de la neurona debe representar una probabilidad.
Utilizando esta fórmula, la función sigmoide puede implementarse como una función simple en Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
La fórmula para la función ReLU es la siguiente, que básicamente establece que la salida es igual a z si es positiva y 0 en caso contrario:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. ¿Cuál es el papel del término de sesgo en una sola neurona?
2. ¿Por qué inicializamos los pesos con valores aleatorios pequeños en lugar de ceros?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
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
Implementación de una Sola Neurona
Desliza para mostrar el menú
Una neurona es la unidad computacional básica de una red neuronal. Procesa múltiples entradas y genera una única salida, lo que permite que la red aprenda y realice predicciones.
En este ejemplo, se construye una red neuronal con una sola neurona para una tarea de clasificación binaria (por ejemplo, detección de spam). La neurona recibe características numéricas y produce un valor entre 0 y 1, que representa la probabilidad de que un correo electrónico sea spam (1) o legítimo (0).
Paso a paso:
- Multiplicar cada entrada por su peso;
- Sumar todas las entradas ponderadas;
- Añadir un sesgo para ajustar la salida;
- Pasar el resultado por una activación sigmoide, que lo convierte al rango ((0,1)) para la salida de probabilidad.
El sesgo de la neurona también es un parámetro entrenable.
Clase Neurona
Una neurona necesita almacenar sus pesos y sesgo, por lo que una clase es una forma natural de agrupar estas propiedades relacionadas.
Aunque esta clase no formará parte de la implementación final de la red neuronal, ilustra de manera efectiva los principios clave.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: valores inicializados aleatoriamente (uno por cada entrada);bias: un único valor aleatorio. Ambos se obtienen de una distribución uniforme en ([-1, 1]) utilizandonp.random.uniform()para romper la simetría.
Propagación hacia adelante
El método activate() de la neurona calcula la suma ponderada y aplica la sigmoide.
La suma ponderada utiliza el producto punto de los pesos y las entradas:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Luego se aplica la función de activación para obtener la salida final de la neurona.
El uso de np.dot() evita bucles y calcula toda la suma ponderada en una sola línea.
La función sigmoide transforma este valor bruto en una probabilidad:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Activación Sigmoide
Dado un resultado bruto (z), la función sigmoide es:
σ(z)=1+e−z1Asigna cualquier número a ((0,1)), lo que la hace ideal para clasificación binaria, donde la salida de la neurona debe representar una probabilidad.
Utilizando esta fórmula, la función sigmoide puede implementarse como una función simple en Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
La fórmula para la función ReLU es la siguiente, que básicamente establece que la salida es igual a z si es positiva y 0 en caso contrario:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. ¿Cuál es el papel del término de sesgo en una sola neurona?
2. ¿Por qué inicializamos los pesos con valores aleatorios pequeños en lugar de ceros?
¡Gracias por tus comentarios!