Автор: Цян Чен, старший инженер по машинному обучению Tubi.
предисловие
Чтобы сделать команду лучше, наша команда Tubi China некоторое время назад официально запустила план TTT (Tubi Talent Time). Каждые две недели будет делиться информацией, которая может быть связана с бизнесом или с бизнесом. Связанные с технологиями или независимые от технологий. У нас есть очень выдающиеся инженеры в различных областях.Предыдущий TTT был о том, как читать и записывать память, как чтение и запись на жесткий диск, называемый ramdisk.Эта кодовая база может использовать память в качестве жесткого диска для повышения скорости чтения и записи.Этот эффект может быть достигнуто путем реализации протокола чтения и записи жесткого диска. Коллеги также оптимизировали его, который может быстро обрабатывать сотни гигабайт файлов в сети с 15G памяти. Во время учебы в аспирантуре я провел некоторые исследования в области глубокого обучения. Мне повезло, что на прошлой неделе меня пригласили рассказать о содержании, связанном с глубоким обучением. Я сделаю здесь текстовое резюме, надеясь, что оно принесет пользу большему количеству людей.
контур
контур
Цель этой статьи - надеяться, что каждый сможет понять, как работает глубокое обучение, и будет некоторый фактический код, который позволит всем понять, как реализовано глубокое обучение.Примеры кода здесь основаны на языке Lua и фреймворке глубокого обучения Torch. . Глубокое обучение — это метод машинного обучения.Чтобы лучше понять глубокое обучение, вот несколько важных концепций машинного обучения. Вот пример классификации и регрессии в машинном обучении или глубоком обучении. Наконец, вводится алгоритм обратного распространения, основанный на цепном правиле в глубоком обучении. В нем также перечислены некоторые учебные ресурсы для глубокого обучения, книги, видео и фреймворки для глубокого обучения.
Что такое глубокое обучение
Что такое глубокое обучение, имя не имеет значения
Из Википедии машинное обучение охватывает много контента: классификацию, кластеризацию, регрессию, обучение с подкреплением, обучение с учителем, обучение без учителя и т. д. Среди них глубокое обучение — это разновидность метода машинного обучения, его также можно использовать для решения многих проблем. Помимо глубокого обучения, мы услышим множество терминов: искусственный интеллект, интеллектуальный анализ данных, распознавание образов, компьютерные нейронные сети и так далее. Во многих случаях эти существительные могут относиться к одному и тому же, и существительные не важны, важнее то, что мы знаем, что эти вещи могут делать и как они работают. Поэтому, что более важно, вам нужно знать, что делает глубокое обучение. Перед этим давайте подытожим, как работает машинное обучение.
Машинное обучение: четыре важные части
Четыре важные части машинного обучения: цифровой ввод, цифровой вывод, критерий и сопоставление.
Для того, чтобы сохранить данные, нам необходимо оцифровать хранящиеся объекты.Например, увиденную глазами сцену можно сохранить в формате фото RGB, а слышимый звук в формате MP3.Конечно, могут быть разного рода то же самое Различные другие типы форматов, различные форматы с различными целями. Точно так же, чтобы решить проблему классификации или регрессии, нам нужно оцифровать объект классификации или регрессии и оцифровать цель классификации или регрессии, чтобы наше отображение можно было легко преобразовать из цифрового ввода в цифровой вывод. В этом процессе нам нужен стандарт или критерий для измерения качества отображения, чтобы мы могли выбрать наилучшее отображение с помощью этого стандарта.
Пример машинного обучения из четырех частей: определение того, является ли изображение хот-догом
Например, классифицируйте изображения, чтобы определить, является ли изображение хот-догом.
- Digital Input: чтобы сопоставление работало, вы можете использовать стандарт RGB для представления изображения в виде матрицы 3 x {высота изображения} x {ширина изображения}.
- Digital Output: Чтобы указать результат, является ли это хот-догом, вы можете использовать двумерный вектор [0, 1], чтобы указать, что это хот-дог, и использовать [1, 0], чтобы указать, что это не хот-дог. хот-дог Конечно, вы также можете использовать цифру 1, чтобы указать, что это хот-дог, и 0, чтобы указать, что это не хот-дог.
- Criterion: Вы можете просто сравнить абсолютное значение чисел в одной и той же позиции через результат, полученный путем сопоставления, и фактический результат.Чем меньше результат, тем лучше эффект сопоставления.
Пример четырех частей машинного обучения: людям с интеллектом в качестве отображения не нужно обращать внимание на цифровой ввод, цифровой вывод и критерий.
Конечно, то, как выбрать цифровой вход, цифровой выход и критерий, во многом зависит от дизайна отображения. Если есть умный человек, играющий роль отображения, на самом деле есть некоторые компании, которые делают это.Для задачи распознавания кода подтверждения нам не нужно оцифровывать код подтверждения, просто распечатайте картинку на экране, люди с интеллектом могут видеть это, а умные люди могут напрямую записывать буквы, которые они где-то видят, без специальной цифровой обработки этих выходных данных.
Как реализовать четыре части машинного обучения на примере прогнозирования цен на жилье
Для прогнозирования цен на жилье Цифровой ввод: Дом содержит много информации. Для простоты здесь выбраны три важных элемента информации. Трехмерный вектор используется для представления дома, кровати представляют количество кроватей, ванны представляют количество ванных комнат и площадь представляет собой площадь дома. Цифровой вывод: цена дома выражается в долларах. Отображение: умножьте сумму весов на числа каждого измерения в качестве прогнозируемой цены дома, где вес является неизвестным числом, и различные эффекты отображения могут быть достигнуты путем выбора разных весов. Критерий: Используйте абсолютную разницу между результатом, полученным при отображении, и реальным результатом, чтобы измерить качество отображения. Если вы все еще не знаете, что происходит, вы также можете обратиться к «четырем ключевым частям машинного обучения» в колонке Zhihu.
Стоимость может быть выражена как функция веса
Здесь видно, что стоимость может быть выражена как функция веса, так как же скорректировать эти веса для достижения цели снижения стоимости? Чтобы представить этот процесс, мы упростим функцию стоимости, чтобы проиллюстрировать процесс.
Упрощенное выражение стоимости
Здесь стоимость упрощена до функции от w1.Из рисунка легко понять, что при w1=-1 стоимость имеет минимальное значение. Конечно, вы можете случайным образом попробовать разные w1, чтобы найти w1, который может минимизировать стоимость, но если необязательный диапазон w1 велик и нужно перебрать много чисел, этот метод насильственного перебора займет очень много времени. Чтобы реализовать автоматический и эффективный расчет компьютера, поскольку известна производная стоимости от w1, для любого заданного значения w1 в это время можно использовать результат производной.Если производная положительна, это означает, что w1 немного уменьшится, соответственно уменьшится и стоимость. Тогда стоимость может непрерывно уменьшаться в соответствии с производной, пример следующий.
Найдите правильное число (вес)
Случайным образом выберите w1, пример здесь w1=0,5 _1=0,5 в качестве примера, когда w1=0,5, производная его стоимости от w1 равна 6, что является положительным числом, так что w1 становится немного меньше, возьмите его здесь немного = 0,5 , поэтому w1 становится 0, и этот процесс продолжает делать w1 желаемым -11.
Оптимизация машинного обучения: примеры из реальной жизни
Оптимизация машинного обучения: реальные примеры, детали сети
Вот пример простой реализации кода. Нажмите, чтобы прочитать исходный текст, чтобы просмотреть слайды, а на слайдах есть ссылки на код. Или откройте эту ссылку кода напрямую:Х. Талант / RG JA Q6B.Цифровой ввод: двумерный вектор, включая x1, x2x1, x2 Цифровой выход: числовое значение, представленное буквой r Отображение: w1 \times x1 + w2 \times x2 + b картинка, где w1, w2, b 1, w2, b - числа, которые можно изменить Критерий: используйте квадрат разницы между результатом, полученным при отображении, и реальным результатом, чтобы измерить качество отображения. Прямой метод в Torch — это метод получения результата отображения или метод получения критерия, обратный метод — это метод, используемый для вычисления производной, и результат производной будет помещен в специальное место. Дополнительные сведения см. в разделе «Метод градиентного спуска и производная» в колонке Zhihu.
Различные сети глубокого обучения
В предыдущем примере мы видели, что для того, чтобы оптимизировать неизвестные в каждом модуле и уменьшить стоимость, нам нужна производная стоимости для каждого модуля и каждого неизвестного, потому что ее можно использовать, чтобы указать нам, как изменить эти неизвестные на достижения цели снижения затрат. Глубокое обучение может складывать несколько отображений вместе и выполнять обработку нескольких отображений на входе.Теоретически, выразительная способность наложения нескольких отображений будет выше, чем у одного отображения.После оптимизации отображения стоимость может быть снижена.Многие текущие сети могут достигать сотен или даже тысяч слоев. Вот пример, показывающий, как можно использовать цепное правило деривации, чтобы помочь дифференцировать стоимость переменных параметров в каждом отображении.
Найдите цепное правило вывода, стоимость которого является выводом переменных в f
Цепное правило производных, функция f
Цепное правило производных, g-функция
Цепное правило вывода, k-функция
Цепное правило производных, целевая функция
Имеются три отображения f, g и k. При вычислении производной стоимости к картинке w используется результат вывода модуля f к собственной картинке параметров, а результат вывода g' к f' f' (то есть есть вывод модуля g Результат вывода выхода на вход), а также результат вывода y' на g' (то есть результат вывода выхода модуля k на вход), и результат вывода стоимости y'.
Найдите цепное правило вывода, стоимость вывода переменных в g
Кроме того, обратите внимание, что при расчете производной стоимости по изображению также используется производная выхода аналогичного модуля по входу.
В общем, пока модуль (карта) предоставляет производную вывода по отношению к входу и производную вывода по числам внутри модуля (имена которых также могут быть неизвестными, весами, параметрами и т. д. .), его можно подключить к нашему. Он становится частью модели и использует цепное правило для оптимизации всей модели. Нажмите, чтобы прочитать исходный текст, чтобы просмотреть слайды, а на слайдах есть ссылки на код. Или откройте эту ссылку кода:t.cn/RgJ2bly. Так называемая алхимия глубокого обучения - это процесс проектирования или создания сети глубокого обучения.Попробуйте добавить в сеть различные сопоставления.Здесь сопоставления также можно назвать модулями, создавая разные сети и используя метод градиентного спуска для выполнения Оптимизируйте, посмотрите, какая структура может дать наилучший эффект, как в алхимии, используйте различное сырье для комбинирования, посмотрите, какая комбинация может дать неожиданные результаты, большая корова упомянула слово алхимия на конференции, алхимия Термин стал популярным в области глубокого обучения.
Процесс создания сети также немного похож на укладку блоков. Маленькие карты здесь являются строительными блоками. Различные методы укладки создают разные сетевые структуры. Вы также можете создавать строительные блоки самостоятельно или комбинировать исходные строительные блоки, чтобы сформировать новые строительные блоки. Процесс обучения глубокому обучению похож на процесс укладки дров.Если у вас больше опыта в укладке, вы будете знать, как спроектировать сеть, при каких обстоятельствах она будет эффективной.
Дополнительные учебные материалы
Материалы для глубокого обучения
- книги: Глубокое обучение, эта книга является работой Даниу Яна Гудфеллоу и Йошуа Бенджио в этой области, а также автора Аарона Куртиля.
-
видеоурок:
- Основы машинного обучения, Если у вас нет основ машинного обучения, настоятельно рекомендуется пройти курс машинного обучения Эндрю Нг на cousera, приведенное выше задание очень хорошо разработано.
- глубокое обучение, глубокое обучение оказывает огромное влияние на компьютерное зрение. Лучший учебник, который я нашел, — это курс Стэнфорда cs231n.На домашней странице курса Стэнфорда есть много очень хорошей информации о домашних заданиях, и вы можете найти видеокурсы только на youtube.com. Если вы сделаете домашнюю работу этого курса тщательно, вы многого добьётесь.Если вы сделаете это самостоятельно, ваше понимание применения глубокого обучения в компьютерном зрении может как минимум превысить 80% студентов магистратуры, которые занимаются визуальными исследованиями.
- кодовая практика: Если вы проводите исследования, вы можете использовать Torch на основе языка Lua. Код, выпущенный некоторыми академическими авторами, также основан на Torch. Если он используется в промышленности, вы можете использовать Pytorch на основе языка Python. Обе рамы имеют очень элегантный дизайн.
использованная литература
[Video]Lecture 4 | Introduction to Neural Networks, Backpropagation, and Neural Networks t.cn/RgpLEoW
[Slides]Lecture 4: Backpropagation and Neural Networks t.cn/RdSvvmz
Torch | Developer Documentation, Define your own layer t.cn/RgpyUCd
Знайте колонку: машинное обучение и математика — бананt.cn/RgpyVSZ