Professional Documents
Culture Documents
Персептрон
Персептрон
У нейрон надходять вхідні значення, наприклад, 𝑥1, 𝑥2, 𝑥3 (елементи вхідного вектора) з відповідними
вагами 𝑤1, 𝑤2, 𝑤3.
Далі, всередині нейрона відбувається обчислення: обчислюємо зважену суму вхідних значень і додаємо
деякий параметр зміщення 𝑏, від отриманих на попередньому кроці значень, беремо нелінійну функцію 𝑓,
яку прийнято називати функцією активації.
Функція активації визначає вихідне значення нейрона в залежності від результату зваженої суми
входів і порогового значення.
Від цієї різниці ми беремо норму, яку хочемо мінімізувати по всій навчальній вибірці. Потім ми шукаємо
такі параметри моделі 𝑾 *, які мінімізують цю помилку. Спочатку ваги моделі инициализируются
випадковими значеннями.
Задача оптимізації
• Можна застосувати добре відомий в теорії оптимізації метод градієнтного
спуску. Уявімо, що у нас є деяка функція, і ми хочемо знайти її мінімум. Ми
починаємо з деякою точки і нам необхідно зрозуміти, куди нам потрібно
рухатися, щоб наблизитися до мінімуму. Є вектор, який називається
градієнт. І цей вектор спрямований в бік зростання функції. Тому
антіградіент - це градієнт зі знаком мінус спрямований в бік зменшення
функції. Даний алгоритм пропонує рухатися в бік антіградіента і таким
чином наближатися до локального мінімуму.
• У разі нейронних мереж використовується модифікація - стохастичний
градієнтний спуск. Відмінність від попереднього градієнтного спуску в
тому, що ми не обчислюємо градієнт відразу на всіх зразках нашої вибірки,
а тільки на одному зразку за одну ітерацію або на групі зразків (міні батч).
Застосування багатошарового
персептрона до задачі класифікації
Розглянемо приклад використання двошарового персептрона для задач класифікації.
y_train_oh = keras.utils.to_categorical(y_train,
10)
y_val_oh = keras.utils.to_categorical(y_val, 10)
Припустимо, що деяка ознака може приймати 10 різних значень. В
цьому випадку One Hot Encoding має на увазі створення 10 ознак,
всі з яких дорівнюють нулю за винятком одного. На позицію,
відповідну чисельним значенням ознаки ми поміщаємо 1.
• Як приклад побудуємо модель багатошарового персептрона з
двома прихованими шарами по 128 нейронів у кожному.
• Функції активації на прихованих шарах використовуватимемо
функцію elu.
• В якості функції помилки візьмемо перехресну ентропію (cross-
entropy):
Оцінити — означає вказати кількісно, добре чи погано мережа
вирішує поставлені їй завдання.
Для цього будується функція оцінки. Вона, як правило, явно
залежить від вихідних сигналів мережі і неявно (через
функціонування) — від всіх її параметрів.
Найпростіший і найпоширеніший приклад оцінки — сума
квадратів відстаней від вихідних сигналів мережі до їх
необхідних значень.
Щоб перетворити вихідні значення нейромережі 𝑧𝑘 в ймовірність
того, що вхідний об'єкт належить до того чи іншого класу
використовуємо функцію soft-max (іншими словами, нормуємо
значення):
Тепер перейдемо до складання моделі. Вхідні картинки витягнемо
в вектор довжини 28 * 28 (= 784) і будемо подавати його на вхід. На
виході маємо 10 вихідних нейронів за кількістю класів в нашій
задачі. Задаємо ці та описані вище параметри.
K.clear_session()
model = M.Sequential()
model.add(L.Dense(output_dim=128, input_dim=784, activation=‘relu'))
model.add(L.Dense(output_dim=128, activation='elu'))
model.add(L.Dense(output_dim=10, activation='softmax'))
• ReLu (Rectified Linear Unit) f(x)= max(0,x) Якщо вхідне значення
меньше 0, то функція повертає 0, а якщо більше 0 , то саме це
значення
одна епоха (epoch) - весь датасета пройшов через нейронну мережу в прямому і зворотному
напрямку тільки один раз.
Так як одна epoch занадто велика для комп'ютера, датасета ділять на маленькі партії (batches).