Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Реалізація Одного Нейрона | Нейронна Мережа з Нуля
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Вступ до нейронних мереж з 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

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

Suggested prompts:

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?

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