Нейронная сеть и глубокое обучение
Вступление
AI - это новое электричество! ИИ может привести к большим преобразованиям, подобным электричеству. Техническая индустрия изучает новые возможности для создания бизнеса или создания продуктов в таких отраслях, как:
- Интернет-реклама и поисковые системы
- Здравоохранение
- Автономный автомобиль
- Точное земледелие
Программа специализации
- Основы нейронных сетей и введение в глубокое обучение. Создайте глубокую нейронную сеть, чтобы распознавать кошку!
- Практические аспекты глубокого обучения. Советы о том, как добиться хорошей работы нейронной сети.
- Стратегия построения системы машинного обучения. Практические советы по улучшению систем машинного обучения.
- Сверточные нейронные сети. Как построить CNN.
- Последовательное моделирование при обработке естественного языка. RNN и LSTM для задач NLP.
Введение в глубокое обучение
Что такое нейронная сеть?
Базовая интуиция нейронной сети на примере игрушки прогноз цен на жилье.
Постановка проблемы: спрогнозируйте цену дома, глядя на данные, описывающие дом.
Технически, если X - это входные данные, которые у нас есть о доме, а Y - цена этого дома, мы хотим найти соответствие между X и Y.
Чтобы понять, как нейронная сеть решает эту проблему, нам нужно начать с простейшей нейронной сети - нейрона. Нейроны являются фундаментальным строением любой нейронной сети, и они сопоставляют свои входные данные с выходными через некоторое отображение функций.
Типичная функция отображения для нейрона выглядит как суммирование всех входных данных, умноженных на их веса, и применение функции активации (нелинейной) к этому значению, чтобы выдать окончательное значение в качестве выхода.
Интуиция
Основная идея того, как нейронные сети подходят к этой проблеме, может быть изучена только после того, как мы расширим наши входные данные от одной функции до нескольких функций.
Нейронные сети будут считывать входные функции и в дальнейшем сопоставлять их с более сильными и релевантными функциями с нашей целевой переменной.
Здесь важно отметить, что такие характеристики, как размер семьи, возможность ходить пешком и качество обучения в школе, являются производными или усвоенными функциями нейронной сети, которые они не представлены в качестве входных данных.
Фактическое построение нейронной сети
Контролируемое обучение
Список популярных примеров
- Прогноз цен на жилье в сфере недвижимости
- Прогнозирование события клика по объявлению в интернет-рекламе
- Классификация объектов для маркировки изображений
- Обнаружение и локализация автомобилей для автономных транспортных средств
- Аудио в текст для голосовой системы виртуальной помощи
Примеры нейронных сетей
- Стандартная нейронная сеть
- Сверточная нейронная сеть
- Рекуррентная нейронная сеть
Структурированные данные и неструктурированные данные
- Структурированные данные обычно представляют собой базу данных какого-либо приложения.
- Неструктурированные данные относятся к необработанным данным, таким как аудио или изображения.
- Люди хорошо интерпретируют неструктурированные данные
Движущие факторы роста глубокого обучения
- Данные (сбор большего количества помеченных данных)
- Вычисления (ускоритель GPU)
- Алгоритмы (такие изменения, как замена Sigmoid на функцию активации Relu)
Итерационный цикл
Обзор остального материала
- Цель - научиться создавать глубокие нейронные сети и заставить их работать.
- Основы программирования нейронной сети
- Создайте глубокую нейронную сеть для классификации изображений
Логистическая регрессия как нейронная сеть
- Логистическая регрессия - это алгоритм обучения, используемый для построения модели машинного обучения для двоичной классификации.
- Мы рассмотрим игрушечный пример классификатора кот против не кота.
- Математическое представление постановки задачи
- Мы часто смотрим на пакет обучающих примеров вместе, поэтому входные векторы складываются вместе, чтобы сформировать матрицу, а метки классов складываются вместе, чтобы сформировать векторы.
- До сих пор мы рассматривали входные данные и данные их меток классов. Пришло время сосредоточиться на прогнозах.
- В логистической регрессии мы ожидаем, что выход модели будет оценкой вероятности, оценивающей метку как один из предопределенных классов с учетом входных данных.
- Мы можем увидеть, как мы соединяем метку нечислового класса количества с числовым значением, которое выводит модель. Дополнительные сведения см. В статье о логистической регрессии.
- Модель линейной регрессии не соответствует требованиям, поскольку она выводит значение в диапазоне от -inf до + inf. Нам нужна оценка вероятности от 0 до 1.
- Это достигается применением сигмоидной функции после суммирования линейной комбинации взвешенных входов.
Функция стоимости логистической регрессии
- Все, что мы хотим от приведенной выше модели, - это выдавать прогнозы, похожие (насколько это возможно) на наземные метки истинности (метки классов).
- Функция потерь / ошибок: мы определяем функцию, которая принимает прогноз и основную истину в качестве входных данных и выводит значение (потери), которое сообщает нам, насколько хороши или плохи наши прогнозы.
- Есть много вариантов таких функций потерь, но не все из них желательны. Например, функция потерь квадратичной ошибки (l2) сопоставляет наш прогноз со значением потерь, но когда вы начинаете изучать параметры с помощью градиентного спуска, задача оптимизации, которую вы должны решить, является невыпуклой с несколькими локальными оптимумами.
- Следовательно, мы используем другую функцию потерь, которая выполняет ту же работу, что и функция потерь квадрата ошибок, но дает нам выпуклую задачу оптимизации.
- Функция стоимости: функция потерь определяется для измерения одного обучающего примера. Функция стоимости определяется для измерения того, насколько хорошо предсказываются все обучающие наборы.
Градиентный спуск
- Задача оптимизации состоит в том, чтобы найти такие параметры (w и b), при которых функция стоимости минимизирована.
- визуализация функции стоимости в более низкой размерности, которая является выпуклой функцией
- Оптимизация - это итеративный процесс, когда мы начинаем с некоторой случайной точки и приближаемся к новой точке, которая приближает нас к точке глобального оптимума.
- Обновление веса: мы используем концепцию частной производной из многомерного исчисления, чтобы понять, как найти правильное направление / шаг для определенного параметра, так что, если мы обновим этот параметр в этом направлении, тогда значение потерь уменьшается.
Производные и вычислительный график:
- Производная функции потерь по параметру модели дает нам направление, в котором мы должны сделать небольшое изменение, чтобы значение потерь уменьшилось.
- Чтобы вычислить частные производные, мы используем концепцию в исчислении, известную как «цепное правило».
- Чтобы просто или визуализировать цепное правило, мы используем концепцию графа вычислений, где мы интерпретируем нашу модель как цепочку операций, так что она образует граф, соединяющий входы слева с выходом справа.
- Мы можем пройти по графу, соединить ввод с конечным выводом, а также мы можем начать с вывода и вернуться к тому, как вычисляются промежуточные шаги или как они связаны с его вводом.
- Теперь прямое и обратное распространение по этому графику кажется более интуитивным.
Градиентный спуск для логистической регрессии
- Наша модель
- Расчетный график модели
- Производные
Векторизация и трансляция
- Если мы посмотрим на наивную реализацию логистической регрессии, мы увидим, что присутствуют два цикла for.
- Один цикл for выполняет итерацию по всем обучающим примерам, другой цикл for выполняет итерацию по всем функциям (элементам) во входном векторе.
- Мы используем библиотеку numpy, которая использует SIMD для оптимизации векторных и матричных умножений.
- Мы заменяем функцию для цикла скалярным произведением между вводом и весом как вектором, иначе мы также можем складывать все входные векторы как матрицу и выполнять умножение матриц, чтобы избежать цикла for для обучающих примеров.