Статья выбрана из Medium, составлена сердцем машины.
Существуют ли какие-либо простые в использовании курсы глубокого обучения для начинающих, которые преподают с использованием популярных фреймворков нейронных сетей? Недавно Массачусетский технологический институт (MIT) официально открыл вводный онлайн-курс «MIT 6.S191: Introduction to Deep Learning». Курс включает в себя ряд базовых знаний о нейронных сетях и их приложениях в моделировании последовательностей, компьютерном зрении, генеративных моделях и обучении с подкреплением.
MIT 6.S191 — это не просто серия курсов глубокого обучения. При его разработке мы хотели большего. Мы хотим, чтобы наша аудитория обладала практическими навыками, необходимыми для развертывания собственных моделей глубокого обучения и применения их к интересным и вдохновляющим проблемам вне курса.
Поэтому при преподавании этого курса мы выбрали TensorFlow. В дополнение к курсу лекций мы разработали две программные лаборатории на базе TensorFlow, одна из которых посвящена созданию музыки с помощью рекуррентных нейронных сетей, а другая — обнаружению пневмоторакса на медицинских изображениях.
Принцип разработки учебного плана MIT 6.S191 заключается в том, чтобы быть максимально доступным не только для людей разного происхождения и уровня, но также для людей внутри и за пределами сообщества MIT.
Соответственно, первая лабораторная работа знакомит с основами TensorFlow — построением и выполнением вычислительных графов, сессиями и общими операциями, обычно используемыми в глубоком обучении, а также посвящена последнему крупному обновлению TensorFlow: режим Eager.
Эти базовые знания помогают учащимся создавать модели генерации музыки и обнаружения пневмоторакса в TensorFlow.
Создание музыки с помощью RNN
Рекуррентные нейронные сети (RNN) в основном используются в задачах моделирования и прогнозирования последовательностей, начиная от трендов акций и заканчивая обработкой естественного языка и распознаванием медицинских сигналов (таких как электрокардиограммы), и область их применения очень широка. Вы можете ознакомиться с разделом курса «Глубокое моделирование последовательности», чтобы узнать о RNN и их приложениях.
RNN также подходят для создания музыки и могут фиксировать зависимости в данных временных рядов. В первой лаборатории студенты работают над кодированием набора данных музыкальных файлов, определением модели RNN в TensorFlow и выборкой из нее для создания совершенно новой музыки.
Модель музыкального поколения RNN
Набор данных представляет собой набор популярных музыкальных клипов, закодированных в векторный формат для подачи модели RNN. После обработки данных следующим шагом будет определение и обучение модели RNN с использованием набора данных.
Модель основана на одном модуле LSTM, где вектор состояния отслеживает временные зависимости между двумя последовательными узлами. На каждом временном шаге последовательность предыдущих узлов подается в модуль, а окончательный вывод последнего модуля LSTM подается на полностью связанный уровень. Таким образом, учитывая узлы на всех предыдущих временных шагах, мы можем вывести распределение вероятностей следующего узла на временном шаге t. На рисунке ниже представлена визуализация этого процесса.
Предсказать вероятность следующего музыкального узла в последовательности
Мы предоставляем студентам рекомендации по построению моделей RNN и определению подходящих вычислительных графов. Опять же, мы разработали эти лабораторные занятия для всех, кто интересуется ими, независимо от того, имеют ли они опыт работы с TensorFlow или нет.
Лаборатория сначала фокусируется на установке соответствующих гиперпараметров, определении переменных-заполнителей и инициализации весов модели RNN. Затем учащиеся определяют свою собственную RNN (input_vec, веса, смещения), которая принимает соответствующие входные переменные и определяет вычислительный график.
Лаборатория позволяет студентам экспериментировать с различными функциями потерь, схемами оптимизации и даже показателями точности:
loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
logits, labels))
optimizer = tf.train.AdamOptimizer(learning_rate)
true_note = tf.argmax(output_vec,1) # identify the correct note
pred_note = tf.argmax(prediction, 1) # identify the predicted note
correct_pred = tf.equal(pred_note, true_note) # compare!
генерировать новую музыку
Веселье не ограничивается созданием и обучением RNN! В конце концов, эта лабораторная работа связана с созданием музыки, а остальное — с созданием новой музыки с использованием RNN.
Лаборатория инструктирует студентов передать начальное число обученной модели (в конце концов, она не может предсказать новые ноты, если не с чего начинать!), а затем использовать обученную RNN для итеративного прогнозирования каждой последующей ноты. Это эквивалентно случайной выборке из распределения вероятностей следующей ноты, выдаваемой RNN на каждом временном шаге, а затем использованию этих выборок для создания новой песни.
Как и прежде, мы даем студентам только ориентир и определяем выборку по своему усмотрению.
Чтобы предоставить образец сгенерированных песен, мы продолжаем обучать модель, а затем семплируем из нее для создания новых песен. Послушайте пример, сгенерированный обученной моделью: https://soundcloud.com/alexanderamini/mit-6s191-rnn-song.
Создавайте более реалистичную музыку
Как вы, вероятно, обнаружили, здесь есть много возможностей для улучшения. Мы надеемся, что учащиеся будут продолжать использовать предоставляемую нами структуру, настраивая гиперпараметры и дополняя наборы данных для создания более приятной музыки.
Обнаружение пневмоторакса
Вторая лабораторная работа дополняет раздел курса «Глубокое обучение для компьютерного зрения». Студенты имеют возможность обнаруживать заболевания с помощью CNN на реалистичных наборах данных медицинских изображений. В частности, студенты построили модели, используя набор реальных рентгеновских снимков грудной клетки, для обнаружения и классификации сканов, предполагающих наличие пневмоторакса, который возникает, когда между легкими и грудной стенкой имеется аномальное количество воздуха.
Мы выдвигаем эту лабораторную работу за рамки классификации, чтобы попытаться решить проблему интерпретируемости — какие количественные показатели отражают, почему и как сеть присваивает конкретную метку класса данному изображению. Чтобы решить эту проблему, учащиеся применили технику визуализации признаков, называемую картированием активации категорий, чтобы получить представление о различимых областях изображения.
набор данных
Здесь мы используем подмножество набора данных ChestXRay. Как следует из названия, это большой набор данных рентгенограмм грудной клетки, помеченных соответствующей диагностической информацией.
Учитывая, что это набор данных, основанный на информации из реального мира, он содержит много шума. Здесь мы хотим дать учащимся возможность работать с реальными данными, чтобы понять проблемы упаковки и аннотирования данных, особенно в контексте компьютерного зрения.
модель CNN
Студенты будут использовать обученную модель CNN для задачи обнаружения пневмоторакса; здесь, вместо того, чтобы держать нейронную сеть в черном ящике, мы предоставим код для вызова модели и обученной модели в надежде полностью вовлечь учащегося в процесс. эксперимент. Кроме того, в лаборатории будут реализованы функции стоимости и прогнозирования, а также метрики оценки (например, кривые ROC) для классификаторов CNN.
Архитектура CNN для обнаружения пневмоторакса
Интерпретация выходных данных CNN с помощью CAM
Основная цель этой лабораторной работы — применить карты активации классов (CAM) для интерпретации выходных данных CNN. Хотя существует много ресурсов для моделей CNN для классификации изображений, мы нашли несколько лабораторных работ, описывающих интерпретируемость. Но для начинающих важно признать и принять ограничения глубокого обучения — они являются частью этой лабораторной работы и частью всего курса. Включение CAM в эксперименты также дает учащимся возможность ознакомиться с последними результатами исследований и ознакомиться с ними на практике, что может быть очень полезным опытом.
CAM — это способ визуализации областей «внимания» изображения в последнем сверточном слое в CNN. Обратите внимание, что CAM-визуализация применяется к архитектурам с глобальным средним объединяющим слоем перед окончательным полносвязным слоем, где мы выводим пространственное среднее значение карт объектов для каждой единицы на последнем сверточном слое.
CAM эффективно выделяет наиболее важные части входного изображения, чтобы присвоить определенные метки класса. Это также можно сказать интуитивно: CAM класса основан на каждой карте признаков, важности присвоения изображений этому классу. Карты признаков в CNN отражают наличие определенных визуальных паттернов (то есть признаков) в изображении. Мы вычисляем CAM, суммируя карты признаков, взвешенные по их важности. Следовательно, области входного изображения с большей активацией в важных каналах получают больший вес в CAM и, таким образом, кажутся «более горячими».
В контексте классификатора пневмоторакса это эквивалентно выделению на рентгенограмме грудной клетки тех пикселей, которые наиболее важны для выявления (или неидентификации) пневмоторакса.
Карта активации класса на окончательной карте функций
Чтобы быть конкретным, пусть F_k представляет карту признаков k-го на последнем сверточном слое сверточной нейронной сети, а затем пусть w_k представляет вес k-го на выпуклых и полносвязных слоях признаков. Таким образом, карта активации класса для обнаружения пневмоторакса выглядит следующим образом:
После повышения частоты дискретизации окончательной карты активации класса мы можем визуализировать области рентгенограммы грудной клетки, которые наиболее важны для обнаружения пневмоторакса (по крайней мере, с точки зрения нейронной сети).
Эта лабораторная работа демонстрирует весь процесс CAM-вычислений и визуализации в TensorFlow от начала до конца. Учащимся необходимо определить функции для извлечения карты объектов и расчета весов CAM:
(feature_maps, dense_weights) = extract_features_weights(model)
Здесь учащимся необходимо ввести Feature_maps, извлеченные из последнего сверточного слоя, и ввести плотности из полносвязного слоя в функцию, рассчитанную CAM, а затем определить процесс повышения дискретизации.
Карта активации, похожая на рентгенограмму грудной клетки, положительная по пневмотораксу
Как показывает пример положительной рентгенограммы грудной клетки с пневмотораксом, CAM, наконец, может быть визуализирован в виде тепловой карты.
Возможно, самая интересная часть этой лаборатории — это обсуждение, которое она вызывает. Учащимся необходимо более подробно рассмотреть случаи, когда модель неправильно классифицировала входную рентгенограмму грудной клетки, как выглядела CAM в этих случаях, и подумать о том, какие модификации они могут внести в модель, чтобы преодолеть эти ограничения. Создание алгоритма, который «заглядывает» во внутреннюю работу нейронной сети, может помочь пробудить любопытство учащихся и заставить их оценить важность интерпретируемости в машинном обучении.
Вышеупомянутые учебные лабораторные работы являются уникальными для серии курсов MIT 6.S191, и преподаватели специально разработали их для этого курса. Все видеокурсы MIT 6.S191 теперь доступны для бесплатного онлайн-просмотра.