Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація Одного Нейрона | Нейронна Мережа з Нуля
Вступ до нейронних мереж з Python

bookРеалізація Одного Нейрона

Note
Визначення

Нейрон — це базова обчислювальна одиниця нейронної мережі. Він обробляє декілька вхідних даних і генерує один вихід, що дозволяє мережі навчатися та здійснювати передбачення.

У цьому прикладі створюється нейронна мережа з одним нейроном для задачі бінарної класифікації (наприклад, виявлення спаму). Нейрон отримує числові ознаки та видає значення в діапазоні від 0 до 1, що відображає ймовірність того, що електронний лист є спамом (1) або не є спамом (0).

Покроково:

  1. Множення кожного входу на його вагу;
  2. Сума всіх зважених входів;
  3. Додавання зміщення для коригування виходу;
  4. Пропускання результату через сигмоїдну активацію, яка переводить його у діапазон ((0,1)) для ймовірнісного виходу.
Note
Примітка

Зсув нейрона також є параметром, що підлягає навчанню.

Клас Neuron

Нейрон повинен зберігати свої ваги та зсув, тому клас є природним способом об'єднання цих пов'язаних властивостей.

Note
Примітка

Хоча цей клас не буде частиною фінальної реалізації нейронної мережі, він ефективно ілюструє ключові принципи.

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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Вона відображає будь-яке число у діапазон ((0,1)), що робить її ідеальною для бінарної класифікації, де вихід нейрона має представляти ймовірність.

Використовуючи цю формулу, сигмоїду можна реалізувати як просту функцію на Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

Формула для функції ReLU виглядає наступним чином: вона встановлює вихід рівним zz, якщо він додатній, і 0 в іншому випадку:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Яка роль зсуву (bias) в одному нейроні?

2. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?

question mark

Яка роль зсуву (bias) в одному нейроні?

Select the correct answer

question mark

Чому ваги ініціалізують малими випадковими значеннями, а не нулями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 4

bookРеалізація Одного Нейрона

Свайпніть щоб показати меню

Note
Визначення

Нейрон — це базова обчислювальна одиниця нейронної мережі. Він обробляє декілька вхідних даних і генерує один вихід, що дозволяє мережі навчатися та здійснювати передбачення.

У цьому прикладі створюється нейронна мережа з одним нейроном для задачі бінарної класифікації (наприклад, виявлення спаму). Нейрон отримує числові ознаки та видає значення в діапазоні від 0 до 1, що відображає ймовірність того, що електронний лист є спамом (1) або не є спамом (0).

Покроково:

  1. Множення кожного входу на його вагу;
  2. Сума всіх зважених входів;
  3. Додавання зміщення для коригування виходу;
  4. Пропускання результату через сигмоїдну активацію, яка переводить його у діапазон ((0,1)) для ймовірнісного виходу.
Note
Примітка

Зсув нейрона також є параметром, що підлягає навчанню.

Клас Neuron

Нейрон повинен зберігати свої ваги та зсув, тому клас є природним способом об'єднання цих пов'язаних властивостей.

Note
Примітка

Хоча цей клас не буде частиною фінальної реалізації нейронної мережі, він ефективно ілюструє ключові принципи.

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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Вона відображає будь-яке число у діапазон ((0,1)), що робить її ідеальною для бінарної класифікації, де вихід нейрона має представляти ймовірність.

Використовуючи цю формулу, сигмоїду можна реалізувати як просту функцію на Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

Формула для функції ReLU виглядає наступним чином: вона встановлює вихід рівним zz, якщо він додатній, і 0 в іншому випадку:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Яка роль зсуву (bias) в одному нейроні?

2. Чому ваги ініціалізують малими випадковими значеннями, а не нулями?

question mark

Яка роль зсуву (bias) в одному нейроні?

Select the correct answer

question mark

Чому ваги ініціалізують малими випадковими значеннями, а не нулями?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 1
some-alt