Реалізація Одного Нейрона
Нейрон — це базова обчислювальна одиниця нейронної мережі. Він обробляє декілька вхідних даних і генерує один вихід, що дозволяє мережі навчатися та здійснювати передбачення.
У цьому прикладі створюється нейронна мережа з одним нейроном для задачі бінарної класифікації (наприклад, виявлення спаму). Нейрон отримує числові ознаки та видає значення в діапазоні від 0 до 1, що відображає ймовірність того, що електронний лист є спамом (1) або не є спамом (0).
Покроково:
- Множення кожного входу на його вагу;
- Сума всіх зважених входів;
- Додавання зміщення для коригування виходу;
- Пропускання результату через сигмоїдну активацію, яка переводить його у діапазон ((0,1)) для ймовірнісного виходу.
Зсув нейрона також є параметром, що підлягає навчанню.
Клас Neuron
Нейрон повинен зберігати свої ваги та зсув, тому клас є природним способом об'єднання цих пов'язаних властивостей.
Хоча цей клас не буде частиною фінальної реалізації нейронної мережі, він ефективно ілюструє ключові принципи.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: випадково ініціалізовані значення (по одному на кожен вхід);bias: одне випадкове значення. Обидва параметри беруться з рівномірного розподілу в ([-1, 1]) за допомогоюnp.random.uniform()для уникнення симетрії.
Пряме поширення
Метод activate() нейрона обчислює зважену суму та застосовує сигмоїду.
Зважена сума використовує скалярний добуток ваг і вхідних даних:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Далі застосовується функція активації для отримання фінального виходу нейрона.
Використання np.dot() дозволяє уникнути циклів і обчислити всю зважену суму в одному рядку.
Сигмоїдна функція перетворює це сире значення у ймовірність:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Сигмоїдна активація
Для заданого сирого виходу (z), сигмоїдна функція виглядає так:
σ(z)=1+e−z1Вона відображає будь-яке число у діапазон ((0,1)), що робить її ідеальною для бінарної класифікації, де вихід нейрона має представляти ймовірність.
Використовуючи цю формулу, сигмоїду можна реалізувати як просту функцію на Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
Формула для функції ReLU виглядає наступним чином: вона встановлює вихід рівним z, якщо він додатній, і 0 в іншому випадку:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Яка роль зсуву (bias) в одному нейроні?
2. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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?
Чудово!
Completion показник покращився до 4
Реалізація Одного Нейрона
Свайпніть щоб показати меню
Нейрон — це базова обчислювальна одиниця нейронної мережі. Він обробляє декілька вхідних даних і генерує один вихід, що дозволяє мережі навчатися та здійснювати передбачення.
У цьому прикладі створюється нейронна мережа з одним нейроном для задачі бінарної класифікації (наприклад, виявлення спаму). Нейрон отримує числові ознаки та видає значення в діапазоні від 0 до 1, що відображає ймовірність того, що електронний лист є спамом (1) або не є спамом (0).
Покроково:
- Множення кожного входу на його вагу;
- Сума всіх зважених входів;
- Додавання зміщення для коригування виходу;
- Пропускання результату через сигмоїдну активацію, яка переводить його у діапазон ((0,1)) для ймовірнісного виходу.
Зсув нейрона також є параметром, що підлягає навчанню.
Клас Neuron
Нейрон повинен зберігати свої ваги та зсув, тому клас є природним способом об'єднання цих пов'язаних властивостей.
Хоча цей клас не буде частиною фінальної реалізації нейронної мережі, він ефективно ілюструє ключові принципи.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: випадково ініціалізовані значення (по одному на кожен вхід);bias: одне випадкове значення. Обидва параметри беруться з рівномірного розподілу в ([-1, 1]) за допомогоюnp.random.uniform()для уникнення симетрії.
Пряме поширення
Метод activate() нейрона обчислює зважену суму та застосовує сигмоїду.
Зважена сума використовує скалярний добуток ваг і вхідних даних:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Далі застосовується функція активації для отримання фінального виходу нейрона.
Використання np.dot() дозволяє уникнути циклів і обчислити всю зважену суму в одному рядку.
Сигмоїдна функція перетворює це сире значення у ймовірність:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Сигмоїдна активація
Для заданого сирого виходу (z), сигмоїдна функція виглядає так:
σ(z)=1+e−z1Вона відображає будь-яке число у діапазон ((0,1)), що робить її ідеальною для бінарної класифікації, де вихід нейрона має представляти ймовірність.
Використовуючи цю формулу, сигмоїду можна реалізувати як просту функцію на Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
Формула для функції ReLU виглядає наступним чином: вона встановлює вихід рівним z, якщо він додатній, і 0 в іншому випадку:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Яка роль зсуву (bias) в одному нейроні?
2. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?
Дякуємо за ваш відгук!