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

Вступление

AI - это новое электричество! ИИ может привести к большим преобразованиям, подобным электричеству. Техническая индустрия изучает новые возможности для создания бизнеса или создания продуктов в таких отраслях, как:

  1. Интернет-реклама и поисковые системы
  2. Здравоохранение
  3. Автономный автомобиль
  4. Точное земледелие

Программа специализации

  1. Основы нейронных сетей и введение в глубокое обучение. Создайте глубокую нейронную сеть, чтобы распознавать кошку!
  2. Практические аспекты глубокого обучения. Советы о том, как добиться хорошей работы нейронной сети.
  3. Стратегия построения системы машинного обучения. Практические советы по улучшению систем машинного обучения.
  4. Сверточные нейронные сети. Как построить CNN.
  5. Последовательное моделирование при обработке естественного языка. RNN и LSTM для задач NLP.

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

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

Базовая интуиция нейронной сети на примере игрушки прогноз цен на жилье.

Постановка проблемы: спрогнозируйте цену дома, глядя на данные, описывающие дом.

Технически, если X - это входные данные, которые у нас есть о доме, а Y - цена этого дома, мы хотим найти соответствие между X и Y.

Чтобы понять, как нейронная сеть решает эту проблему, нам нужно начать с простейшей нейронной сети - нейрона. Нейроны являются фундаментальным строением любой нейронной сети, и они сопоставляют свои входные данные с выходными через некоторое отображение функций.

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

Интуиция

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

Нейронные сети будут считывать входные функции и в дальнейшем сопоставлять их с более сильными и релевантными функциями с нашей целевой переменной.

Здесь важно отметить, что такие характеристики, как размер семьи, возможность ходить пешком и качество обучения в школе, являются производными или усвоенными функциями нейронной сети, которые они не представлены в качестве входных данных.

Фактическое построение нейронной сети

Контролируемое обучение

Список популярных примеров

  1. Прогноз цен на жилье в сфере недвижимости
  2. Прогнозирование события клика по объявлению в интернет-рекламе
  3. Классификация объектов для маркировки изображений
  4. Обнаружение и локализация автомобилей для автономных транспортных средств
  5. Аудио в текст для голосовой системы виртуальной помощи

Примеры нейронных сетей

  1. Стандартная нейронная сеть
  2. Сверточная нейронная сеть
  3. Рекуррентная нейронная сеть

Структурированные данные и неструктурированные данные

  • Структурированные данные обычно представляют собой базу данных какого-либо приложения.
  • Неструктурированные данные относятся к необработанным данным, таким как аудио или изображения.
  • Люди хорошо интерпретируют неструктурированные данные

Движущие факторы роста глубокого обучения

  • Данные (сбор большего количества помеченных данных)
  • Вычисления (ускоритель GPU)
  • Алгоритмы (такие изменения, как замена Sigmoid на функцию активации Relu)

Итерационный цикл

Обзор остального материала

  • Цель - научиться создавать глубокие нейронные сети и заставить их работать.
  • Основы программирования нейронной сети
  • Создайте глубокую нейронную сеть для классификации изображений

Логистическая регрессия как нейронная сеть

  • Логистическая регрессия - это алгоритм обучения, используемый для построения модели машинного обучения для двоичной классификации.
  • Мы рассмотрим игрушечный пример классификатора кот против не кота.
  • Математическое представление постановки задачи

  • Мы часто смотрим на пакет обучающих примеров вместе, поэтому входные векторы складываются вместе, чтобы сформировать матрицу, а метки классов складываются вместе, чтобы сформировать векторы.

  • До сих пор мы рассматривали входные данные и данные их меток классов. Пришло время сосредоточиться на прогнозах.
  • В логистической регрессии мы ожидаем, что выход модели будет оценкой вероятности, оценивающей метку как один из предопределенных классов с учетом входных данных.
  • Мы можем увидеть, как мы соединяем метку нечислового класса количества с числовым значением, которое выводит модель. Дополнительные сведения см. В статье о логистической регрессии.

  • Модель линейной регрессии не соответствует требованиям, поскольку она выводит значение в диапазоне от -inf до + inf. Нам нужна оценка вероятности от 0 до 1.
  • Это достигается применением сигмоидной функции после суммирования линейной комбинации взвешенных входов.

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

  • Все, что мы хотим от приведенной выше модели, - это выдавать прогнозы, похожие (насколько это возможно) на наземные метки истинности (метки классов).
  • Функция потерь / ошибок: мы определяем функцию, которая принимает прогноз и основную истину в качестве входных данных и выводит значение (потери), которое сообщает нам, насколько хороши или плохи наши прогнозы.
  • Есть много вариантов таких функций потерь, но не все из них желательны. Например, функция потерь квадратичной ошибки (l2) сопоставляет наш прогноз со значением потерь, но когда вы начинаете изучать параметры с помощью градиентного спуска, задача оптимизации, которую вы должны решить, является невыпуклой с несколькими локальными оптимумами.

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

  • Функция стоимости: функция потерь определяется для измерения одного обучающего примера. Функция стоимости определяется для измерения того, насколько хорошо предсказываются все обучающие наборы.

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

  • Задача оптимизации состоит в том, чтобы найти такие параметры (w и b), при которых функция стоимости минимизирована.
  • визуализация функции стоимости в более низкой размерности, которая является выпуклой функцией

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

  • Обновление веса: мы используем концепцию частной производной из многомерного исчисления, чтобы понять, как найти правильное направление / шаг для определенного параметра, так что, если мы обновим этот параметр в этом направлении, тогда значение потерь уменьшается.

Производные и вычислительный график:

  • Производная функции потерь по параметру модели дает нам направление, в котором мы должны сделать небольшое изменение, чтобы значение потерь уменьшилось.
  • Чтобы вычислить частные производные, мы используем концепцию в исчислении, известную как «цепное правило».
  • Чтобы просто или визуализировать цепное правило, мы используем концепцию графа вычислений, где мы интерпретируем нашу модель как цепочку операций, так что она образует граф, соединяющий входы слева с выходом справа.

  • Мы можем пройти по графу, соединить ввод с конечным выводом, а также мы можем начать с вывода и вернуться к тому, как вычисляются промежуточные шаги или как они связаны с его вводом.
  • Теперь прямое и обратное распространение по этому графику кажется более интуитивным.

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

  • Наша модель

  • Расчетный график модели

  • Производные

Векторизация и трансляция

  • Если мы посмотрим на наивную реализацию логистической регрессии, мы увидим, что присутствуют два цикла for.
  • Один цикл for выполняет итерацию по всем обучающим примерам, другой цикл for выполняет итерацию по всем функциям (элементам) во входном векторе.
  • Мы используем библиотеку numpy, которая использует SIMD для оптимизации векторных и матричных умножений.
  • Мы заменяем функцию для цикла скалярным произведением между вводом и весом как вектором, иначе мы также можем складывать все входные векторы как матрицу и выполнять умножение матриц, чтобы избежать цикла for для обучающих примеров.