Примечания к курсу Эндрю Нг по глубокому обучению

глубокое обучение алгоритм Нейронные сети модульный тест

Курс 1 Нейронные сети и глубокое обучение

1. Введение в глубокое обучение

1.2 Что такое нейронная сеть

Начиная с прогнозирования цен на жилье => регрессию регрессию можно рассматривать как простой один слой, нейронную сеть нейронов.

1.3 Контролируемое обучение с нейронными сетями

image

1.4 Почему растет глубина обучения

  • Data
  • Computation
  • Алгоритмы: например, sigmod -> relu ускоряет вычисление градиентного спуска.

image

2. Основы нейронной сети

2.1 Дихотомическая классификация

some notations ...

2.2 Логистическая регрессия

Логистическая регрессия — это неглубокая (на самом деле скрытого слоя нет, только один выходной слой) нейронная сеть.

Give\ x,\ want\ \hat y = P(y=1|x);\  (0<=y<=1)

parameters:w\in \mathbb{R},b\in \mathbb{R}

Output:\hat y=\sigma(w^tx+b); find\ w,b

\sigma(z)=\frac{1}{1+e^{-z}}

2.3 Функция потерь логистической регрессии

Используйте эту функцию потерь, чтобы облегчить расчет градиентного спуска.

Loss(Error)\ Function : L(\hat y,y) = - (y\log\hat y + (1-y)\log(1-\hat y)) 

Cost\ Function:  J(w,b) = 1/m *\sum_{i=1}^m  L(\hat y^i,y^i) = -\frac{1}{m}*\sum_{i=1}^m(y^i\log\hat y^i + (1-y^i)\log(1-\hat y^i)) 

2.4 Градиентный спуск

w := w - \alpha \frac{dJ(w,b)}{dw};\  (\alpha:learning\ rate)

b := b - \alpha \frac{dJ(w,b)}{db}

2.7 Расчетный граф

Обратное распространение: По сути, это похоже на алгоритм dp, и градиентный спуск вычисляется в обратном направлении, так что результаты некоторых вычислений можно использовать повторно, а эффективность вычислений значительно повышается.

image

2.9 Градиентный спуск в логистической регрессии

\text {图里面的a是之前的} \hat y

image

Дробный вывод: числитель результата = числитель исходной формулы, умноженный на знаменатель исходной формулы - знаменатель исходной формулы, умноженный на числитель исходной формулы, знаменатель результата = квадрат знаменателя исходной формулы.

2.10 логистическая регрессия на m примерах

image

2.11 Векторизация

Векторизованные вычисления более эффективны

import numpy as np
import time

a = np.random.rand(1000000)
b = np.random.rand(1000000)
tic = time.time()
c = np.dot(a, b)
print("cost " + str((time.time() - tic)*1000) + "ms")

2.13 Векторная логистическая регрессия

image

2.15 Вещание в питоне

2.16 Векторная иллюстрация в python/numpy

Не используйте вектор ранга 1, используйте его явно1*nилиn*1вектор , Используйте изменение формы и утверждение, чтобы убедиться, что размеры соответствуют ожидаемым.

import numpy as np
a = np.random.randn(5) #do not use 
print("a:",a.shape,"\n", a)
b = np.random.randn(5, 1)
print("b:",b.shape,"\n", b)
c = np.random.randn(1, 5)
print("c:",c.shape,"\n", c)

a = a.reshape(5, 1)
assert(a.shape == (5, 1))

3. Неглубокие нейронные сети

3.1 Обзор нейронных сетей

image

3.2 Представление нейронной сети

image

3.5 Объяснение векторизованной реализации

image

3.6 Функция активации

image

3.7 Зачем использовать нелинейные функции активации

Если он линейный после нескольких слоев, он все еще линейный, тогда нет смысла иметь несколько слоев.

3.8 Производные функций активации

image
image
image

3.9 Производные функций активации

image

image

3.11 Случайная инициализация

Почему W нельзя инициализировать матрицей 0 для нескольких нейронов

4. Глубокие нейронные сети

4.1 Глубокие нейронные сети

image

4.3 Проверка размеров матрицы

image

image

4.7 Параметры и гиперпараметры

image

Урок 2 Улучшение глубоких нейронных сетей: настройка гиперпараметров, регуляризация и оптимизация

1. Практические аспекты глубокого обучения

1.1 Обучение, разработка, наборы тестов

1.2 Смещение, дисперсия

image
image

1.4 Regularization

image
image

Что происходит, когда лямда большая:

image

1.6 Drop Out Regularization

1.8 Другие методы регуляризации

early stopping

1.9 Normalizing inputs

image

image

1.10 vanishing/exploding gradients

image

1.11 Инициализация веса

image

1.13 Gradient Check

image

1.14 Gradient Check Implementation Notes

image

2. Алгоритм оптимизации

2.1 Mini-batch gradient descent

размер пакета должен быть адаптирован к памяти CPU/GPU

2.3 Exponentially weighted averages

image

Скользящие средние сглаживают краткосрочную волатильность и выявляют долгосрочные тренды или циклы. Математически скользящее среднее можно рассматривать как тип свертки.

Bias correction

image

2.6 Gradient Descent with Momentum

image

2.7 RMSprop

image

2.8 Алгоритм оптимизации Адама

Momentum + RMSprop

image

2.9 Learning rate decay

Способы постепенного снижения скорости обучения

2.10 Проблема локальных оптимумов

В многомерном пространстве легко найти седловую точку, но нелегко найти локальные оптимумы.

Плато — это проблема, обучение может быть медленным, но такие методы, как Адам, могут облегчить эту проблему.

3. Отладка гиперпараметров, пакетная регуляризация и структура программы

3.1 Поиск гиперпараметров

image

  1. Try random values: don't use a grid
  2. Coarse to fine

image

3.4 Batch Normalization

Один вопрос, может ли нормализация в регрессии сделать что-то подобное в нейронной сети

image

Среднее значение и дисперсию можно контролировать с помощью лямбда и бета

image

image

image

3.6 Почему пакетная нормализация эффективна?

  1. By normlization values to similar range of values, it speed up learning
  2. Пакетная нормализация уменьшает проблему изменения входных значений (для каждого слоя)
  3. Has a slight regulazation effect (like dropout, it adds some noice to each hidden layer's activations)

3.7 Batch Normalization at test time

Используйте среднее значение и дисперсию, рассчитанные по взвешенному экспоненциальному среднему в обучении для проверки

image

3.8 Softmax regression

Многоклассовый, а не двухклассовый. генерация логистической регрессии.

image

3.10 Структура глубокого обучения

Курс 3 Структурированный проект машинного обучения

1. Стратегии машинного обучения (ML) (1)

1.1 Почему стратегия машинного обучения

1.2 Ортогонализация

  1. Fit training set well in cost function
  • Если это не подходит, использование более крупной нейронной сети или переход на лучшую оптимизацию. алгоритм может помочь.
  1. Fit development set well on cost function
  • Если это не подходит, может помочь регуляризация или использование большего тренировочного набора.
  1. Fit test set well on cost function
  • Если он не подходит, может помочь использование большего набора для разработки.
  1. Performs well in real world
  • Если он работает неудовлетворительно, набор тестов для разработки настроен неправильно или функция затрат неверна. не правильно оценивать

1.3 Единые метрики числовой оценки

Про точность/точность/отзыв/F1

image
image

1.4 Встречайте и оптимизируйте метрики

1.5 Разделение обучающих/разработочных/тестовых наборов

1.6 Размер набора тестов набора для разработки

1.7 Когда менять наборы и показатели для разработки/тестирования

1.8 Почему человеческая эффективность

1.9 Предотвратимая предвзятость

1.10 Понимание возможностей человека

1.11 Превышение возможностей человека

1.12 Улучшите производительность вашей модели

image

2. Стратегии машинного обучения (ML) (2)

2.1 Выполните анализ ошибок

2.2 Четко обозначьте неверные данные

2.3 Быстро создайте свою первую систему и повторите ее

2.4 Обучение и тестирование на разных разделах

2.5 Смещение и дисперсия для несоответствующих разделов данных

2.6 Данные о местоположении не совпадают

2.7 Трансферное обучение

2.8 Многозадачное обучение

2.9 Что такое сквозное глубокое обучение

2.10 Использовать ли сквозное глубокое обучение

Курс 4 Сверточные нейронные сети

1. Сверточные нейронные сети

1.1 Компьютерное зрение

Реальное обработанное изображение очень большое -> сверточная нейронная сеть

1.2 Пример обнаружения края

Есть много вариантов фильтра (ядра), или сам фильтр используется как параметр для обучения.

image

1.4 Padding

image

1.5 Сверточный шаг

1.6 Convolutions over volumes

image

1.7 Однослойная сверточная сеть

image

1.8 Пример простой сверточной сети

image

1.9 Слой объединения

image

1.10 Пример сверточной нейронной сети

image
image

1.11 Зачем использовать свертки?

image

2. Глубокие сверточные сети: пример

2.1 Зачем проводить тематические исследования

  • Classic networks:
    • LeNet-5
    • AlexNet
    • VGG
  • ResNet
  • Inception

2.2 Классическая сеть

Представлены три классические модели: LeNet-5, AlexNet, VGG-16.

2.3 Остаточные сети (ResNets, остаточные сети)

image

2.4 Чем полезны остаточные сети?

2.5 Сети внутри сетей и свертки 1×1

Свертки 1×1 можно сжимать или поддерживать, увеличивая количество каналов во входном слое.

image

2.6 Введение в начальную сеть Google

2.7 Начальная сеть

Inception module -> Inception network

image
image

2.8 Используйте реализации с открытым исходным кодом

2.9 Трансферное обучение

Тренируйтесь, используя чужую модель в качестве инициализации (выберите замораживание некоторых слоев)

image

2.10 Увеличение данных

  • mirroring
  • random cropping
  • rotating,shearing,local warping...
  • color shifting

2.11 Состояние компьютерного зрения

image

3. Обнаружение объекта

3.1 Целевое позиционирование

image

3.2 Обнаружение характерных точек

image

3.3 Обнаружение объектов

Сначала обрежьте изображение для обучения модели + слайд-окно => вычислительные затраты очень высоки.

image

3.4 Реализация свертки в скользящем окне

Один расчет, фактически слайда нет, что намного эффективнее традиционного метода слайд-окна

image

3.5 Предсказание ограничивающей рамки

YOLO: сверточная реализация алгоритма в grid+ 3.1.

image
image

3.6 Пересечение и отношение

IOU - Intersection over Union = SizeOfIntersection/ SizeOfUnion

3.7 Немаксимальное подавление

image

3.8 Anchor Boxes

image

3.9 Алгоритм YOLO

3.10 Сеть РПН

image

4. Специальные приложения: распознавание лиц и нейростиль.

4.1 Что такое распознавание лиц?

image

4.2 Однократное обучение

image

4.3 Сиамская сеть

image

4.4 Тройная потеря

image
image
image

4.5 Верификация по лицу и бинарная классификация

image

4.6 Что такое передача нейронного стиля?

4.7 Что такое глубокая сверточная сеть?

image

4.8 Функция стоимости

4.9 Функция стоимости содержания

4.10 Функция стоимости стиля

Суть в том, чтобы максимизировать корреляцию каждого канала

image

image

4.11 Обобщение от одномерного до трехмерного