Этап 1. Начало работы с глубоким обучением — научиться учиться
Когда Covid-19 был классифицирован как пандемия, Анжела и я почти закончили наш первый год обучения биомедицинской инженерии в Университете Ватерлоо. Внезапно мы перешли от сидения в классе 5 дней в неделю к внезапному возвращению домой и появлению большего количества свободного времени. Для Анжелы и меня это звучало как прекрасная возможность развить наши навыки и погрузиться во что-то новое — глубокое обучение.
Мы всегда любили математику и естественные науки, и стипендия Project Aqua показалась нам прекрасной возможностью не только внести свой вклад в проект с открытым исходным кодом, но и вырасти как студенты биомедицинской инженерии. После того, как мы были выбраны для участия в проекте «Сообщество Аква», мы решили взяться за эту сложную новую задачу в надежде начать понимать глубокое обучение. Мы начали ставить краткосрочные еженедельные цели, которые определяли наши планы на лето, и мы начали находить новые ресурсы и узнавать больше о глубоком обучении. Именно в те моменты, когда нас приняли в это сообщество, мы поняли, что путь, который нам предстоит, будет нелегким, но мы, упрямые первокурсники, были полны решимости пройти его. Понимание глубокого обучения включало в себя изучение большого количества новых математических знаний, которые мы только недавно начали постигать на наших занятиях, более глубокое погружение в библиотеку Tensorflow и возможность создавать собственные нейронные сети к концу этого. Мы не только учили наши программы тому, как учиться, но в то же время мы учили самих себя!
В этой статье рассматривается этап 1 нашего проекта, наше введение в машинное обучение и лежащие в его основе математические концепции. На втором этапе этой серии мы продолжим рассказывать о структуре нейроструктурного обучения в Tensorflow и Tensorflow в целом, а в этой статье мы рассмотрим больше математических концепций и обучения, которые мы получили в начале этого товарищества.
Что такое машинное обучение?
Прежде чем погрузиться в математику глубокого обучения, давайте поговорим о машинном обучении в целом. Машинное обучение — это программирование алгоритма обучения на основе набора данных или прошлого опыта. Существует три различных типа машинного обучения:
- Обучение с учителем: система использует помеченные примеры правильного поведения для определения будущих ценностей.
Модель принимает входные данные и предсказывает цель, такую как предсказание чисел с использованием базы данных рукописного ввода MNIST. Это может быть использовано для распознавания объектов, обнаружения объектов, языкового перевода и распознавания речи. Эта форма машинного обучения — это то, для чего используется нейронное структурированное обучение, и мы объясним это подробно.
2. Усиленное обучение — система получает сигнал о вознаграждении и пытается максимизировать этот сигнал о вознаграждении.
При усиленном обучении агент находится в определенной среде, и ему дается набор действий, которые влияют на состояние агента и окружающую среду. Например, агент может играть в игры против оппонента.
3. Неконтролируемое обучение: система ищет интересные закономерности в данных, не используя помеченные примеры.
Различные подтипы состояния идентифицируются и используются для изучения распределения вероятностей, которое максимально точно соответствует набору данных. Затем точки данных делятся на кластеры, в которых данные в одном кластере похожи, а данные в разных кластерах различаются.
Хотя мы сосредоточились на обучении с учителем, если вам нужна дополнительная информация о двух других типах машинного обучения, ознакомьтесь с этими статьями, в которых дается более подробное объяснение различных типов машинного обучения:
Во время этой стажировки мы с Анжелой также открываем для себя Open AI, компанию, занимающуюся исследованиями и внедрением ИИ. Мы можем посмотреть демонстрацию Open AI Scholars их потрясающих трехмесячных проектов глубокого обучения с открытым исходным кодом. Было удивительно видеть эти проекты от людей, которые только начали изучать глубокое обучение, и их проекты вдохновляли и будут продолжать вдохновлять нас, когда мы узнаем больше о глубоком обучении. Проверьте эти проекты здесь
Нейронные сети и глубокое обучение
Нейронная сеть принимает набор входных функций X, которые используются для вычисления Y. Это можно сделать с помощью обучения с учителем с использованием стандартной нейронной сети, сверточной нейронной сети или рекуррентной нейронной сети и структурированных или неструктурированных данных.
Базовая структура глубокого обучения
Часто используемые инструменты:
- NumPy — позволяет выполнять векторизацию в Python и предлагает математические функции, которые можно использовать
- matplotlib — используется для построения графики
- Tensorflow — инструмент машинного обучения, который может помочь в разработке и обучении моделей машинного обучения.
Общая терминология + структура
В глубоком обучении мы поняли, что существует общая структура, которая возникает при ее реализации. Используя вышеперечисленные инструменты, математику можно реализовать в коде (например, numPy используется для создания векторов и массивов, а matplotlib может использоваться для построения графиков функций стоимости). Ниже приведены несколько шагов, которые обычно происходят при реализации нейронной сети. Ресурс, который мы нашли очень полезным, когда узнал об этом, — Специализация глубокого обучения Эндрю Нг на Coursera. Курс Google IT Automation with Python на Coursera также очень помог для общего понимания Python.
- Заполнители создаются в форме данных (например, размера изображения).
- Два параметра, вес (W) и смещения (b), затем инициализируются в виде данных. W — сила связи между входом X и Y. Для начала мы предполагаем, что каждый фрагмент данных имеет некую неизвестную связь; следовательно, W является рандомизированным, поскольку установка нулевого веса предполагает отсутствие связи. Смещения показывают, насколько хорошо данные соответствуют модели с высоким смещением, что означает, что модель не очень хорошо соответствует обучающему набору. Мы предполагаем, что данные хорошо подходят, и инициализируем смещение равным 0.
- Затем используется прямое распространение для перехода от входных данных X к скрытым единицам каждого слоя и получения выходных данных Y.
- Функция стоимости генерируется для обучения параметров W и b. Функция стоимости измеряет ошибку в модели, оценивая взаимосвязь между входными данными X и выходными данными Y. Стоимость хорошего алгоритма снижается в течение нескольких итераций. (Статья об оптимизации стоимостных функций)
- Обратное распространение выполняется с использованием оптимизатора для точной настройки весов и снижения частоты ошибок. (ознакомьтесь с этой статьей об обратном распространении)
Заключительные замечания
В целом мы поняли, что попытка научиться глубокому обучению была сложной задачей, которую определенно было трудно выполнить за 4 месяца. Хотя мы не стали мастерами глубокого обучения, мы смогли гораздо больше понять об общей реализации глубокого обучения и открыть для себя множество ресурсов, которые позволят нам глубже погрузиться в глубокое обучение и продолжить развивать свои навыки. в будущем. Огромное спасибо Дени Линкову за то, что он наставлял нас в этом проекте и поддерживал нас, пока мы работали над этим проектом.