Реалізація Одного Нейрона
Нейрон — це базова обчислювальна одиниця нейронної мережі. Він обробляє декілька вхідних даних і генерує один вихід, що дозволяє мережі навчатися та здійснювати передбачення.
У цьому прикладі створюється нейронна мережа з одним нейроном для задачі бінарної класифікації (наприклад, виявлення спаму). Нейрон отримує числові ознаки та видає значення в діапазоні від 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. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 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. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?
Дякуємо за ваш відгук!