1 of 34

ОЦЕНКА

КАЧЕСТВА

ОБУЧЕНИЯ

НЕЙРОСЕТИ

2 of 34

АКТИВАЦИОННЫЕ

ФУНКЦИИ

3 of 34

ИСКУССТВЕННЫЙ

 

НЕЙРОН

Маккалок Дж., Питтс У. Логические исчисления идей, относящихся к нервной деятельности // Автоматы. М.: ИЛ, 1956

4 of 34

# Входной полносвязный слой

model.add(Dense(800, input_dim=784, activation="relu"))

# Выходной полносвязный слой

model.add(Dense(10, activation="softmax"))

MNIST

НЕЙРОСЕТЬ ДЛЯ

5 of 34

Полулинейная функция (RELU)

Rectified Linear Unit

(ReLU)

 

 

6 of 34

(softmax)

ФУНКЦИЯ МЯГКОГО МАКСИМУМА

 

 

- количество нейронов в слое

- выходное значение i-го нейрона до активации

7 of 34

Почему

Softmax?

Источник: https://datascience.stackexchange.com/questions/23159/in-softmax-classifier-why-use-exp-function-to-do-normalization

Требования к функции активации для задач классификации:

  • Выходные значения нейронов в диапазоне от 0 до 1, и в сумме должны давать единицу
  • Функция должна быть дифференцируема

Пример:

  • Выходные значений нейронов: [2, 4, 2, 1]
  • Жесткий максимум: [0, 1, 0, 0]
  • Простая нормализация: [0.2222, 0.4444, 0.2222, 0.1111]
  • Мягкий максимум: [0.1025, 0.7573, 0.1025, 0.0377]

8 of 34

График

exp(x)

9 of 34

Bias

В НЕЙРОНАХ

10 of 34

МОДЕЛЬ

ИСКУСТВЕННОГО НЕЙРОНА

11 of 34

СМЕЩЕНИЕ

В НЕЙРОННЫХ СЕТЯХ

1

wb

12 of 34

СМЕЩЕНИЕ

В НЕЙРОННЫХ СЕТЯХ

1

wb

13 of 34

ОБУЧАЮЩАЯ, ПРОВЕРОЧНАЯ И ТЕСТОВАЯ ВЫБОРКИ

14 of 34

Подбор гипер-параметров модели

Параметры модели машинного обучения

  • Изменяются в процессе обучения
  • Для нейронной сети – веса входов в нейроны

Гиперпараметры модели

  • Не меняются в процессе обучения
  • Влияют на конфигурацию модели и методы обучения
  • Для нейронной сети – количество слоев, количество нейронов на слое, скорость обучения, размер мини-выборки

Подбор гиперпараметров

  • Обучение на обучающей выборке, проверка на тестовой, изменение гиперпараметров
  • Переобучение на тестовую выборку

15 of 34

Наборы данных

для обучения

  • Обучающая выборка (training set) – набор данных, который используется для обучения сети
  • Проверочная выборка (validation set) – набор данных, который используется в процессе обучения для оценки качества обучения
  • Тестовая выборка (test set) – набор данных, который используется для оценки качества работы сети после завершения обучения

16 of 34

НАБОРЫ ДАННЫХ

ДЛЯ ОБУЧЕНИЯ

Демонстрация использования обучающей, проверочной и тестовой выборок в Keras

17 of 34

Схема обучения нейронной сети

Делим данные на три набора

  • Обучающий, проверочный, тестовый

Обучаем модель на обучающем и проверочном наборе

  • Для подбора гиперпараметров используем проверочный набор
  • В процессе обучения мониторим качество на обучающем и проверочном наборе
  • Если качество на обучающем наборе растет, а на проверочном падает – началось переобучение

Проверка обобщающей способности сети

  • Оценка качества работы на тестовом наборе данных, которые сеть не видела в процессе обучения

18 of 34

ПЕРЕОБУЧЕНИЕ

19 of 34

  • Нейронная сеть распознает цифры, которые она видела, с точностью 100%
  • Это хорошо или плохо?

Точность распознавания

20 of 34

Проблема

переобучения

Сеть может научиться распознавать особенности выборки, а не данных

21 of 34

  • Маленькая база
  • Плохо собранная база
  • Слишком сложная архитектура сети
  • Разбалансировка базы

Причины переобучения

22 of 34

  • Увеличивать базу
  • Чистить базу
  • Делать проще архитектуру сети
  • Делать проще параметризацию данных
  • Нормализовать данные
  • Использовать Dropout
  • Использовать BatchNormalization

Как бороться с переобучением

23 of 34

СЛОЙ DROPOUT

24 of 34

Dropout

СЛОЙ

25 of 34

Dropout

СЛОЙ

26 of 34

Dropout

СЛОЙ

27 of 34

Dropout

СЛОЙ

28 of 34

# Входной полносвязный слой

model.add(Dense(800, input_dim=784, activation="relu"))

# Слой Dropout

model.add(Dropout(0.5))

# Выходной полносвязный слой

model.add(Dense(10, activation="softmax"))

Dropout в Keras

29 of 34

СЛОЙ DROPOUT

Статья с подробным описанием Dropout:

  • Dropout: A Simple Way to Prevent Neural Networks from Overfitting. http://www.jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf

Предотвращение переобучения:

  • Разделение данных на три набора: обучающий, проверочный, тестовый
  • Слои Dropout и BatchNormalization
  • Упрощение архитектуры сети
  • Уменьшение шага обучения

30 of 34

Слой BatchNormalization

31 of 34

Нормализация

Виды нормализации

  • Данные в диапазоне от 0 до 1
  • Данные со средним значением в 0 и стандартным отклонением 1

Алгоритмы машинного обучения лучше работают с данными в нормализованном виде

32 of 34

ПАКЕТНАЯ

НОРМАЛИЗАЦИЯ

Выполняется на уровне мини-выборки

Рассчитывается по формулам:

 

 

 

 

 

параметры, которые сеть изучает в процессе обучения

33 of 34

model = Sequential()

model.add(BatchNormalization(input_shape=(28, 28, 1)))

model.add(Conv2D(32, (3, 3), padding='same', activation='relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Dropout(0.25))

model.add(BatchNormalization())

model.add(Conv2D(64, (3, 3), padding='same', activation='relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Dropout(0.25))

Пакетная нормализация

в Keras

34 of 34

СПАСИБО

ЗА ВНИМАНИЕ