Курс 1 Нейронные сети и глубокое обучение
1. Введение в глубокое обучение
1.2 Что такое нейронная сеть
Начиная с прогнозирования цен на жилье => регрессию регрессию можно рассматривать как простой один слой, нейронную сеть нейронов.
1.3 Контролируемое обучение с нейронными сетями
1.4 Почему растет глубина обучения
- Data
- Computation
- Алгоритмы: например, sigmod -> relu ускоряет вычисление градиентного спуска.
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, и градиентный спуск вычисляется в обратном направлении, так что результаты некоторых вычислений можно использовать повторно, а эффективность вычислений значительно повышается.
2.9 Градиентный спуск в логистической регрессии
\text {图里面的a是之前的} \hat y
Дробный вывод: числитель результата = числитель исходной формулы, умноженный на знаменатель исходной формулы - знаменатель исходной формулы, умноженный на числитель исходной формулы, знаменатель результата = квадрат знаменателя исходной формулы.
2.10 логистическая регрессия на m примерах
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 Векторная логистическая регрессия
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 Обзор нейронных сетей
3.2 Представление нейронной сети
3.5 Объяснение векторизованной реализации
3.6 Функция активации
3.7 Зачем использовать нелинейные функции активации
Если он линейный после нескольких слоев, он все еще линейный, тогда нет смысла иметь несколько слоев.
3.8 Производные функций активации
3.9 Производные функций активации
3.11 Случайная инициализация
Почему W нельзя инициализировать матрицей 0 для нескольких нейронов
4. Глубокие нейронные сети
4.1 Глубокие нейронные сети
4.3 Проверка размеров матрицы
4.7 Параметры и гиперпараметры
Урок 2 Улучшение глубоких нейронных сетей: настройка гиперпараметров, регуляризация и оптимизация
1. Практические аспекты глубокого обучения
1.1 Обучение, разработка, наборы тестов
1.2 Смещение, дисперсия
1.4 Regularization
Что происходит, когда лямда большая:
1.6 Drop Out Regularization
1.8 Другие методы регуляризации
early stopping
1.9 Normalizing inputs
1.10 vanishing/exploding gradients
1.11 Инициализация веса
1.13 Gradient Check
1.14 Gradient Check Implementation Notes
2. Алгоритм оптимизации
2.1 Mini-batch gradient descent
размер пакета должен быть адаптирован к памяти CPU/GPU
2.3 Exponentially weighted averages
Скользящие средние сглаживают краткосрочную волатильность и выявляют долгосрочные тренды или циклы. Математически скользящее среднее можно рассматривать как тип свертки.
Bias correction
2.6 Gradient Descent with Momentum
2.7 RMSprop
2.8 Алгоритм оптимизации Адама
Momentum + RMSprop
2.9 Learning rate decay
Способы постепенного снижения скорости обучения
2.10 Проблема локальных оптимумов
В многомерном пространстве легко найти седловую точку, но нелегко найти локальные оптимумы.
Плато — это проблема, обучение может быть медленным, но такие методы, как Адам, могут облегчить эту проблему.
3. Отладка гиперпараметров, пакетная регуляризация и структура программы
3.1 Поиск гиперпараметров
- Try random values: don't use a grid
- Coarse to fine
3.4 Batch Normalization
Один вопрос, может ли нормализация в регрессии сделать что-то подобное в нейронной сети
Среднее значение и дисперсию можно контролировать с помощью лямбда и бета
3.6 Почему пакетная нормализация эффективна?
- By normlization values to similar range of values, it speed up learning
- Пакетная нормализация уменьшает проблему изменения входных значений (для каждого слоя)
- Has a slight regulazation effect (like dropout, it adds some noice to each hidden layer's activations)
3.7 Batch Normalization at test time
Используйте среднее значение и дисперсию, рассчитанные по взвешенному экспоненциальному среднему в обучении для проверки
3.8 Softmax regression
Многоклассовый, а не двухклассовый. генерация логистической регрессии.
3.10 Структура глубокого обучения
Курс 3 Структурированный проект машинного обучения
1. Стратегии машинного обучения (ML) (1)
1.1 Почему стратегия машинного обучения
1.2 Ортогонализация
- Fit training set well in cost function
- Если это не подходит, использование более крупной нейронной сети или переход на лучшую оптимизацию. алгоритм может помочь.
- Fit development set well on cost function
- Если это не подходит, может помочь регуляризация или использование большего тренировочного набора.
- Fit test set well on cost function
- Если он не подходит, может помочь использование большего набора для разработки.
- Performs well in real world
- Если он работает неудовлетворительно, набор тестов для разработки настроен неправильно или функция затрат неверна. не правильно оценивать
1.3 Единые метрики числовой оценки
Про точность/точность/отзыв/F1
1.4 Встречайте и оптимизируйте метрики
1.5 Разделение обучающих/разработочных/тестовых наборов
1.6 Размер набора тестов набора для разработки
1.7 Когда менять наборы и показатели для разработки/тестирования
1.8 Почему человеческая эффективность
1.9 Предотвратимая предвзятость
1.10 Понимание возможностей человека
1.11 Превышение возможностей человека
1.12 Улучшите производительность вашей модели
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 Пример обнаружения края
Есть много вариантов фильтра (ядра), или сам фильтр используется как параметр для обучения.
1.4 Padding
1.5 Сверточный шаг
1.6 Convolutions over volumes
1.7 Однослойная сверточная сеть
1.8 Пример простой сверточной сети
1.9 Слой объединения
1.10 Пример сверточной нейронной сети
1.11 Зачем использовать свертки?
2. Глубокие сверточные сети: пример
2.1 Зачем проводить тематические исследования
- Classic networks:
- LeNet-5
- AlexNet
- VGG
- ResNet
- Inception
2.2 Классическая сеть
Представлены три классические модели: LeNet-5, AlexNet, VGG-16.
2.3 Остаточные сети (ResNets, остаточные сети)
2.4 Чем полезны остаточные сети?
2.5 Сети внутри сетей и свертки 1×1
Свертки 1×1 можно сжимать или поддерживать, увеличивая количество каналов во входном слое.
2.6 Введение в начальную сеть Google
2.7 Начальная сеть
Inception module -> Inception network
2.8 Используйте реализации с открытым исходным кодом
2.9 Трансферное обучение
Тренируйтесь, используя чужую модель в качестве инициализации (выберите замораживание некоторых слоев)
2.10 Увеличение данных
- mirroring
- random cropping
- rotating,shearing,local warping...
- color shifting
2.11 Состояние компьютерного зрения
3. Обнаружение объекта
3.1 Целевое позиционирование
3.2 Обнаружение характерных точек
3.3 Обнаружение объектов
Сначала обрежьте изображение для обучения модели + слайд-окно => вычислительные затраты очень высоки.
3.4 Реализация свертки в скользящем окне
Один расчет, фактически слайда нет, что намного эффективнее традиционного метода слайд-окна
3.5 Предсказание ограничивающей рамки
YOLO: сверточная реализация алгоритма в grid+ 3.1.
3.6 Пересечение и отношение
IOU - Intersection over Union = SizeOfIntersection/ SizeOfUnion
3.7 Немаксимальное подавление
3.8 Anchor Boxes
3.9 Алгоритм YOLO
3.10 Сеть РПН
4. Специальные приложения: распознавание лиц и нейростиль.
4.1 Что такое распознавание лиц?
4.2 Однократное обучение
4.3 Сиамская сеть
4.4 Тройная потеря
4.5 Верификация по лицу и бинарная классификация
4.6 Что такое передача нейронного стиля?
4.7 Что такое глубокая сверточная сеть?
4.8 Функция стоимости
4.9 Функция стоимости содержания
4.10 Функция стоимости стиля
Суть в том, чтобы максимизировать корреляцию каждого канала