Машинное обучение и нейронные сети - страница 35

 

Tensorflow для исследований глубокого обучения — Лекция 1



Tensorflow для исследований глубокого обучения — Лекция 1

Видео «Tensorflow для исследования глубокого обучения — лекция 1» знакомит с учебным пособием по TensorFlow, рассказывая о необходимости подробного руководства, объясняя основы библиотеки и практические приложения. В лекции рассказывается, как создавать и структурировать модели с использованием TensorFlow с точки зрения глубокого обучения. В учебнике также рассматриваются инструменты, используемые в TensorBoard для визуализации модели вычислительного графа, в том числе способы работы с узлами, ребрами и сеансами, которые обеспечивают эффективные параметры вычислений за счет запуска подграфов. Лектор рекомендует изучить TensorFlow с нуля, чтобы создавать собственные модели и эффективно обрабатывать ресурсы, с возможностью запуска на процессоре, графическом процессоре, Android или iOS, обеспечивая при этом возможность развертывания моделей.

  • 00:00:00 В этом разделе спикер представляет учебник по TensorFlow, объясняя, что есть потребность в видеоуроках, которые не являются слишком поверхностными и учитывают моменты, которые упускаются из виду в других учебниках. Он объявляет, что лекция будет соответствовать содержанию CS 20 Стэнфордского университета и использует слайды, созданные Чипом Хьюеном, с его личными мыслями. Кроме того, он указывает, что TensorFlow — это библиотека для числовых вычислений, разработанная Google, которая позволяет использовать графики и числовые вычисления, что делает ее пригодной для построения различных моделей машинного обучения, от логистической регрессии до моделей глубокого обучения. TensorFlow также предоставляет возможность развертывания моделей на CPU, GPU, Android или iOS.

  • 00:05:00 В этом разделе спикер обсуждает концепцию чекпойнтов — сохраненных состояний моделей, позволяющих продолжить с той же точки в случае прерывания. Подчеркивается важность дифференциации в фреймворках глубокого обучения, и докладчик предлагает попробовать написать слои обратного распространения вручную, чтобы понять, насколько легко Tensorflow упрощает процесс. Популярность Tensorflow объясняется его использованием большим сообществом, и обсуждаются различные проекты, такие как передача стиля изображения, генерация рукописного ввода и StackGAN. Лекция направлена на то, чтобы охватить модель вычислительного графа Tensorflow, функции построения и модели структурирования с точки зрения глубокого обучения. Наконец, спикер советует использовать сайт Tensorflow в качестве источника последних API и библиотек.

  • 00:10:00 В этом разделе спикер обсуждает важность изучения TensorFlow с нуля. В то время как абстракции высокого уровня могут решать более сложные задачи, понимание работы кода имеет решающее значение для создания пользовательских моделей. Спикер объясняет, что TensorFlow отделяет определение вычислений от их выполнения, собирая вычислительный граф и используя сеанс для выполнения операций. В этом разделе объясняется, как определение операций в TensorFlow создает график, который можно визуализировать с помощью встроенного инструмента TensorBoard. Используемый пример кода показывает узлы для операторов и тензоров, где значения ребер представляют значения тензора.

  • 00:15:00 В этом разделе лектор обсуждает узлы и ребра в графе TensorFlow, а также использование сессий для выполнения вычислений внутри графа. Узлы могут быть операторами, переменными или константами, а ребра — тензорами. Сеанс используется для создания экземпляра графа и выполнения вычислений, при этом сеанс заботится о необходимых ресурсах. Запуск определенного узла в графе с сеансом вычислит граф и вернет значение узла, и лектор демонстрирует это на примере с использованием сложения. Объект сеанса инкапсулирует ресурсную среду для выполнения операторов и тензорных объектов. Лектор также упоминает использование оператора with в качестве альтернативы явному закрытию сеанса.

  • 00:20:00 В этом разделе видео объясняет концепцию ленивых вычислений в Tensorflow. В нем говорится, что когда граф создается в Tensorflow, он не вычисляется заранее и не кэшируется где-то, а вычисления выполняются лениво по мере необходимости. Сила ленивых вычислений заключается в том, что не все нужно вычислять, поэтому это экономит кучу вычислений, когда мы углубляемся в модели. При вызове метода запуска сеанса первым аргументом является список узлов в списке выборок, которые необходимо вычислить, и Tensorflow вычисляет все эти различные узлы и возвращает результаты в виде списка.

  • 00:25:00 В этом разделе лектор обсуждает преимущества моделирования вычислений в виде графа в TensorFlow, включая возможность параллельного запуска подграфов на нескольких процессорах или графических процессорах. Они объясняют, как указать конкретный граф для запуска на конкретном графическом процессоре с помощью команды TF device GPU и как создать несколько графов в TensorFlow, что может быть полезно в таких случаях, как ансамблевое обучение, когда у вас могут быть разные модели, работающие параллельно. Лектор также отмечает, что сеансы в TensorFlow могут быть жадными с точки зрения использования ресурсов, поэтому при использовании нескольких графов может потребоваться тщательное управление ресурсами.

  • 00:30:00 В этом разделе лектор обсуждает, как создавать графики и управлять ими в TensorFlow. Они объясняют, что можно создать несколько сеансов, но передавать данные между ними может быть сложно. Для простоты рекомендуется использовать только один сеанс. Для добавления узлов в граф используется TF dot Graph API, где экземпляр графа можно установить по умолчанию. При создании экземпляра сеанса граф может быть передан в качестве аргумента, и вся среда выполнения создается вокруг него. Важно избегать смешивания двух графиков, а для получения дескриптора графика по умолчанию используется точка API TF с подчеркиванием по умолчанию.

  • 00:35:00 В этом разделе спикер обсуждает преимущества использования графов в TensorFlow. Одним из преимуществ является возможность запуска подграфов и даже одной операции вместо запуска всего графа, что делает вычисления более эффективными. TensorFlow также имеет распределенный режим, позволяющий выполнять вычисления на разных устройствах и машинах, когда вычисления описываются с помощью подграфов. Вывод из этого раздела — важность настройки графов вычислений и запуска подграфов в сеансе.
Tensorflow for Deep Learning Research - Lecture 1
Tensorflow for Deep Learning Research - Lecture 1
  • 2017.01.29
  • www.youtube.com
These series of tutorials on tensorflow are based on the publicly available slides from the Stanford University class - CS20SI -being offered in the winter o...
 

Tensorflow для исследований глубокого обучения — Лекция 2



Tensorflow для исследований глубокого обучения — Лекция 2

Лекция о TensorFlow для исследований глубокого обучения охватывает широкий круг тем, включая основные операции, типы тензоров, заполнители и отложенную загрузку. Подчеркивается важность использования TensorBoard для визуализации выполняемого графика и обсуждаются различные функции из TensorFlow API, включая случайное перемешивание, случайную обрезку, многочлен TF.dot и функцию случайной гаммы. В видео также рассматриваются концепции определения нулевой принадлежности для различных типов данных, инициализации переменных, присвоения им значений и преимуществ использования интерактивного сеанса TensorFlow. Наконец, подробно рассматривается использование заполнителей в TensorFlow и обсуждаются потенциальные проблемы при использовании заполнителей с неопределенными формами.

Спикер также обсуждает использование заполнителей в TensorFlow, в том числе то, как передавать несколько точек данных и использовать бесплатные словари. Затем лекция переходит к ленивой загрузке, при которой вычисления откладываются до времени выполнения, чтобы избежать раздувания графа, вызванного несколькими узлами одной и той же операции в циклах. Отделение определения объектов операций от вычислений и структурирование кода для определений переменных и вычислительных функций помогает избежать проблем с вызовом функций в TensorFlow. Докладчик также рассказывает, как оптимизатор минимизирует перекрестную энтропию и обновляет веса и смещения, используя свойства для эффективного структурирования кода TensorFlow.

  • 00:00:00 В этом разделе лекции инструктор рассказывает об основных операциях, типах тензоров, заполнителях и отложенной загрузке. Они демонстрируют, как визуализировать график TF с помощью TensorBoard с помощью простой графической программы, которая визуализируется с помощью TensorBoard. Этот процесс включает в себя добавление средства записи сводного файла таблицы TF в контекст сеанса, указание места для записи событий, указание того, что следует записывать, а затем закрытие средства записи по завершении. Они также показывают, как сделать график более читабельным, добавив аргументы имени.

  • 00:05:00 В этом разделе спикер подчеркивает важность использования TensorBoard для визуализации выполняемого графа, что является автоматической функцией TensorFlow, недоступной в других фреймворках. Затем лекция углубляется в сигнатуру функции TF.constant и в то, как ее значение, форма и тип данных могут быть указаны или выведены. Кроме того, спикер объясняет, что происходит, когда для параметра verify_shape установлено значение true или false, и как TensorFlow обрабатывает уникальные имена для констант. Наконец, лекция демонстрирует, как создать вектор и матрицу, сложить их вместе и использовать TensorBoard для визуализации графика.

  • 00:10:00 В этом разделе лекции раскрывается тема трансляции в TensorFlow и демонстрируется, чем она похожа на NumPy. Трансляция показана на примерах сложения и умножения констант на матрицу. Также рассматривается концепция создания тензоров, предварительно заполненных определенными значениями, будь то нулями или единицами, и как создавать тензоры, заполненные пользовательским значением, с помощью метода TF.fill. Подчеркнута важность правильной установки типа данных для этих тензоров. В целом в лекции подчеркивается важность понимания сходств и различий между TensorFlow и другими библиотеками, основанными на числовых данных, такими как NumPy.

  • 00:15:00 В этом разделе спикер обсуждает некоторые различные типы ограничений и последовательностей, которые можно использовать в Tensorflow. Одним из примеров является использование linspace для создания последовательности равноудаленных интервалов, где начальное и конечное значения являются числами с плавающей запятой 32 или числами с плавающей запятой 64. Другим примером является случайная нормальная функция, которая генерирует тензор заданной формы путем выборки из нормального распределения. Усеченная норма аналогична, но выборки находятся в пределах двух стандартных отклонений от среднего. Наконец, случайное перемешивание обсуждается как способ перетасовки значений тензора в определенном измерении. Спикер предлагает практиковать эти функции, чтобы развить мышечную память и не полагаться постоянно на документацию.

  • 00:20:00 В этом разделе лектор обсуждает различные функции из Tensorflow API, начиная с функции случайного перемешивания, которая по умолчанию перемешивает данные в четвертом измерении, что делает ее полезной для наборов данных изображений. Функция случайного кадрирования вырезает из тензора смежные блоки данных заданной формы. Полиномиальная функция TF.dot производит выборки из полиномиального распределения с заданным логит-тензором и количеством выборок. Наконец, обсуждается случайная гамма-функция, которая представляет собой еще одно статистическое распределение, имеющее два параметра: форму и бета.

  • 00:25:00 В этом разделе спикер обсуждает использование функций TensorFlow для генерации случайно сгенерированных констант и последовательностей для исследований глубокого обучения. Введена функция set_random_seed, которая позволяет пользователям настраивать случайную подачу для всего графика, делая результаты более детерминистически случайными и позволяя пользователям последовательно повторять эксперименты. Докладчик также объясняет различные функции TensorFlow для основных операций, таких как поэлементное сложение, умножение матриц и операции по модулю. Кроме того, спикер подчеркивает, что некоторые нативные типы Python, такие как логические и строковые, можно использовать с TensorFlow.

  • 00:30:00 В этом разделе лекции спикер обсуждает концепции определения 0-ности для разных типов данных, таких как векторы, матрицы и строки, в TensorFlow, а также ожидаемый результат для каждого типа. Они также охватывают типы данных TensorFlow, в том числе медленные 32 64, в 8 16 32 64, и способы их взаимозаменяемого использования с NumPy. Кроме того, докладчик предостерегает от использования констант в TensorFlow, поскольку они хранятся в определении графа, что впоследствии может вызвать проблемы.

  • 00:35:00 В этом разделе спикер обсуждает использование переменных TensorFlow, объясняя, что пользователи могут определить переменную с помощью TFDOTvariable вместе со значением и необязательным именем. Размеры выводятся из вводимого значения, и пользователи могут выбрать инициализацию своих переменных с помощью функции TF.global_variables_initializer(). Докладчик предупреждает, что неинициализированные переменные приведут к ошибкам, но при необходимости пользователи могут инициализировать только подмножество переменных. Кроме того, спикер объясняет, что константы отличаются от переменных, поскольку константа — это оператор, а переменная — это класс с несколькими функциями и методами, которые могут вызывать пользователи.

  • 00:40:00 В этом разделе в видео объясняются различные способы инициализации переменных в TensorFlow, один из которых — вызов для них операции «assign» с определенным значением. Этот подход может быть полезен при обучении модели с использованием трансферного обучения, когда некоторым слоям присваиваются значения из предварительно обученной модели, а другие инициализируются случайным образом. В видео также обсуждается, как инициализировать одну переменную и как получить значение переменной с помощью метода «eval». Кроме того, в видео объясняется, что при присвоении значения переменной допустимо, если переменная не была инициализирована ранее, и операция «назначения» может инициализировать переменную перед присвоением значения.

  • 00:45:00 В этом разделе видео рассказывается об инициализации переменных и присвоении им значений. Инициализатор op присваивает начальное значение переменной самой переменной. Кроме того, операция присваивания складывает, вычитает или умножает текущее значение переменной на новое значение, а подоперация присваивания вычитает новое значение из текущего значения. Несколько сеансов будут поддерживать свои собственные копии переменных и инициализаций, и важно тщательно управлять и следовать пути выполнения при работе с несколькими сеансами, чтобы избежать непредвиденных результатов. Наконец, неинициализированные переменные не будут влиять на назначения или операции, и все сеансы должны быть закрыты для высвобождения ресурсов.

  • 00:50:00 В этом разделе спикер обсуждает инициализацию переменных в библиотеке TensorFlow. При запуске TensorFlow все переменные, используемые в коде, должны быть инициализированы. Это может быть рискованно при использовании нескольких переменных, поскольку они могут зависеть друг от друга. В таких случаях следует использовать значение инициализации переменной, чтобы убедиться, что значение переменной безопасно, прежде чем использовать его для инициализации другой переменной. Затем спикер объясняет преимущества использования интерактивного сеанса TensorFlow и то, как использовать сеанс для оценки ряда операций в коде. Наконец, докладчик обсуждает зависимость управления, метод обеспечения выполнения всех соответствующих операций перед вызовом последней операции. Это может быть полезно в сложных моделях машинного обучения, содержащих множество операций.

  • 00:55:00 В этом разделе видео обсуждаются заполнители в TensorFlow, которые позволяют собирать граф, не зная значений данных, которые будут использоваться в вычислении. Заполнители действуют как заполнители для фактических значений, которые будут вычисляться в дальнейшем, и они определяются с помощью оператора TF.placeholder с определенным типом и формой. При выполнении операций, включающих заполнители, необходимо создать словарь с заполнителями и их значениями, и этот словарь затем передается в вызов session.run(). Стоит отметить, что, хотя заполнители могут не иметь формы, некоторые операции требуют определения формы, что может привести к ошибкам.
  • 01:00:00 В этом разделе видео обсуждаются заполнители и то, как они являются действительными первоклассными операциями на собственной основе, которые можно визуализировать в TensorBoard. В этом разделе также рассказывается, как передать несколько точек данных и как использовать бесплатный словарь для любых переменных или констант на вашем графике. Затем видео переходит к отложенной загрузке, когда объекты создаются только тогда, когда они необходимы, и к обычной загрузке, когда узел создается в графе перед его выполнением. Концепция отложенной загрузки помогает в управлении памятью, особенно при работе с большими наборами данных.

  • 01:05:00 В этом разделе спикер объясняет отложенную загрузку и ее значение для TensorFlow. Ленивая загрузка — это метод, при котором вычисления откладываются до времени выполнения, а не при построении графа — это может привести к появлению нескольких узлов одной и той же операции в графе вычислений, особенно в циклах. Во избежание раздувания графа и других связанных с этим проблем спикер рекомендует отделить определение объектов операций от вычисления и запуска операций. Кроме того, спикер подчеркивает важность структурирования кода таким образом, чтобы определения переменных находились в одном месте, а вычислительные функции — в другом.

  • 01:10:00 В этом разделе лектор объясняет, как структурировать код, чтобы избежать проблем с вызовом функций при использовании TensorFlow для исследований глубокого обучения. Используя свойства Python, лектор демонстрирует, как определить внутренние атрибуты, такие как «start_prediction», «optimized» и «error». Первая часть кодового блока вычисляет размер данных, целевой размер, вес и смещение перед добавлением операции. Полученный результат этой операции добавляется к графику. Функция «оптимизировать» следует тому же шаблону, создавая начальные узлы при первом вызове и возвращая дескрипторы этих узлов при последующих вызовах.

  • 01:15:00 В этом разделе спикер обсуждает, как оптимизатор минимизирует перекрестную энтропию и обновляет веса и смещения в TensorFlow. Когда оптимизатор вызывается в первый раз, TensorFlow выполняет обратное распространение и обновляет переменные, которые способствуют потерям. Когда оптимизатор вызывается впоследствии, TensorFlow уже имеет график и вычисляет входящие узлы для минимизации и обновления весов без вызова каких-либо дополнительных узлов. Использование свойств помогает более эффективно структурировать код TensorFlow. В следующей лекции будет приведен пример, чтобы лучше понять этот процесс.
Tensorflow for Deep Learning Research - Lecture 2
Tensorflow for Deep Learning Research - Lecture 2
  • 2017.02.05
  • www.youtube.com
This is the second lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

Tensorflow для исследований глубокого обучения — Лекция 3



Tensorflow для исследований глубокого обучения — Лекция 3

Третья лекция о TensorFlow для исследований в области глубокого обучения посвящена линейной регрессии и логистической регрессии с использованием набора данных MNIST. Лектор показывает, как обучать модель линейной регрессии в TensorFlow, создавая заполнители для входных данных, инициализируя обучаемые переменные для весов и смещения, делая прогнозы, вычисляя потери и определяя оптимизатор как градиентный спуск с определенной скоростью обучения. В лекции также объясняется мини-пакетный стохастический градиентный спуск и важность запоминания формы переменных. Точность модели рассчитывается путем сравнения индекса максимального значения, полученного из функции argmax TF, с целевой переменной y, вычисления количества правильных прогнозов с использованием TF reduce sum и TF float и деления его на общее количество тестов. Примеры. Наконец, лектор отмечает, что эта модель не считается мощной, и существуют более надежные модели, такие как сверточные слои, которые обеспечивают более высокую точность.

  • 00:00:00 В этом разделе спикер начинает третью лекцию о TensorFlow для исследований глубокого обучения и начинает с обзора материала из предыдущей лекции. Они объясняют, как TensorFlow отделяет определение графа вычислений от его выполнения и как собрать граф, добавляя к нему различные операции. Затем они обсуждают константы, переменные и заполнители TF, а также их функции на графике. Докладчик подчеркивает важность избегать ленивой загрузки и вместо этого разделять сборку графа и его выполнение для оптимальной эффективности. Затем они представляют первый пример линейной регрессии и объясняют, как предсказать зависимую переменную Y на основе независимых переменных в наборе данных. Спикер рекомендует слушателям следовать примерам и самим решать задачи.

  • 00:05:00 В этом разделе лектор объясняет основы линейной регрессии и демонстрирует, как обучить модель линейной регрессии в TensorFlow. Используется простая линейная модель, в которой прогнозируемое значение y равно W, умноженному на X, добавленному к B. Потери рассчитываются как разница между прогнозируемым значением и фактическим значением Y, а обучение происходит путем минимизации потерь путем оптимизации обучаемые переменные W и B. Затем лектор делится кодом для примера линейной регрессии, где входными данными является количество пожаров, а выходной целевой переменной является количество тестов в данной выборке. Код демонстрирует, как создавать заполнители для входных данных, инициализировать обучаемые переменные W и B, делать прогнозы, вычислять потери и определять оптимизатор как градиентный спуск с определенной скоростью обучения.

  • 00:10:00 В этом разделе лектор описывает процесс обучения модели в TensorFlow для исследования глубокого обучения. После создания модели и разработки функции потерь следующим шагом является запуск сеанса и запуск модели в течение определенного количества эпох. Каждая эпоха включает в себя повторный запуск обучающих данных через сеанс и обновление переменных для минимизации потерь. Процесс визуализируется с помощью TensorBoard, и полученную модель можно использовать для прогнозирования вывода для любого заданного входного значения. Лектор также отмечает наличие выброса в данных, который влияет на предсказание модели.

  • 00:15:00 В этом разделе лектор объясняет роль оптимизаторов в обучающих моделях в TensorFlow и перечисляет несколько оптимизаторов, включая градиентный спуск, градиентный импульс, Адам, RMSprop, проксимальный градиент и проксимальный градиент. Лектор подчеркивает важность проверки производительности модели на данных, которых она раньше не видела, чтобы убедиться, что модель можно обобщать. Чтобы рассмотреть чувствительность функции потерь квадратичной ошибки к выбросам, лектор представляет функцию потерь Хубера и объясняет, как она работает. Лектор также дает инструкции о том, как закодировать функцию потерь Хубера в TensorFlow.

  • 00:20:00 В этом разделе лектор объясняет реализацию потери Хьюбера, которая представляет собой функцию потерь, обычно используемую в глубоком обучении. Потеря Хубера используется для задач регрессии и работает путем нахождения остатка между прогнозами и метками. Если остаток меньше значения Delta, возвращается функция, называемая Small Res. Однако, если оно больше Delta, возвращается Large Res. Затем лектор переходит к обсуждению логистической регрессии с использованием набора данных MNIST. Логистическая регрессия используется для задач классификации и работает путем вычисления логита как X в W плюс B. Результат этого затем передается через функцию softmax, создавая распределение вероятностей. Функция потерь, используемая в этом случае, представляет собой кросс-энтропийные потери, которые измеряют расстояние между двумя распределениями вероятностей.

  • 00:25:00 В этом разделе инструктор объясняет концепцию мини-пакетного стохастического градиентного спуска и использование пакетов при обучении моделей для глубокого обучения. Таким образом, он помогает наилучшим образом использовать память графического процессора и эффективен, когда мы не можем использовать полный тренировочный набор. Учебное пособие включает шаги по созданию заполнителя для модели, инициализации значений веса и смещения для входных и выходных функций, а также созданию модели с тензорным потоком с использованием функции tf.random.normal для инициализации. Также была подчеркнута важность запоминания формы этих переменных при их создании, особенно в отношении последнего входного измерения объекта и количества классов.

  • 00:30:00 В этом разделе обсуждается простая модель DF с размерностью до размера партии 10, где для расчета потерь используется функция кросс-энтропийных потерь. Определен оптимизатор, и после того, как модель обучена, она проверяется, чтобы найти общее количество правильных прогнозов. Правильные прогнозы рассчитываются с использованием пакета логитов и функции softmax, где значения вероятности передаются в модель и сравниваются с фактическими метками для расчета правильных значений прогноза. Рекомендуется не запускать оптимизатор на тестовом наборе, чтобы избежать переобучения.

  • 00:35:00 В этом разделе ведущий объясняет, как рассчитать точность модели. Функция TF argmax используется для получения максимального значения в строке и возвращает индекс цифры с наибольшей вероятностью. Мы сравниваем этот индекс с целевой переменной y. Затем мы вычисляем количество правильных прогнозов, используя TF уменьшающую сумму и TF с плавающей запятой. Наконец, мы делим количество правильных прогнозов на общее количество тестовых примеров, чтобы получить точность, которая составляет 90% для этой конкретной линейной модели. Докладчик также отмечает, что эта модель не считается мощной, и существуют более надежные модели, такие как сверточные слои, которые обеспечивают более высокую точность.
Tensorflow for Deep Learning Research - Lecture 3
Tensorflow for Deep Learning Research - Lecture 3
  • 2017.02.15
  • www.youtube.com
This is the third lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI ...
 

Tensorflow для исследований глубокого обучения — Лекция 4



Tensorflow для исследований глубокого обучения — Лекция 4

В лекции 4 из серии TensorFlow for Deep Learning Research спикер углубляется в встраивание слов в обработку естественного языка на основе глубокого обучения. В лекции объясняется концепция изучения встраивания слов для задач НЛП и описывается процесс представления слов в виде числовых векторов в нейронных сетях. В лекции обсуждаются различные методы генерации векторов слов с использованием CBOW и скип-грамм на основе ИИ, а также решение проблемы вычислительной сложности в softmax с использованием отрицательной выборки и NCE. Кроме того, лектор освещает процесс внедрения переменных в TensorFlow и использование t-SNE для визуализации многомерных векторов слов в уменьшенных размерах. Наконец, лекция завершается кратким изложением рассмотренных концепций и кратким изложением следующей лекции, которая будет посвящена построению словесных моделей.

  • 00:00:00 В этом разделе лектор обсуждает концепцию встраивания слов в НЛП на основе глубокого обучения. Встраивание слов — это способ представления слов в виде чисел в нейронной сети, которая фиксирует семантические отношения между словами. Цель состоит в том, чтобы построить модель, которая может объединять схожие концепции, такие как страны, при проецировании их на двумерное пространство. Лектор также объясняет процесс изучения встраивания слов посредством подсчета и знакомит с новым подходом использования обратного распространения с нейронными сетями.

  • 00:05:00 В этом разделе спикер обсуждает способы представления слов в виде векторов с использованием матрицы совместного появления. Однако матрица совпадений очень велика и разрежена, что затрудняет работу с ней. Чтобы решить эту проблему, спикер предлагает использовать усеченный SVD, чтобы найти аппроксимацию матрицы низкого ранга. Это включает в себя разложение матрицы на три матрицы и выбор только первых K правильных сингулярных векторов для использования в качестве представлений. Однако SVD требует больших вычислительных ресурсов, особенно для больших словарей, что затрудняет масштабирование. Более того, добавление нового слова в словарь потребовало бы переделки всего расчета.

  • 00:10:00 В этом разделе видео обсуждаются два метода создания векторов слов с использованием методов, основанных на создании ИИ: непрерывный пакет слов (CBOW) и пропуск грамма. CBOW использует контекст вокруг целевого слова для предсказания центрального слова, в то время как пропуск грамма использует центральное слово для предсказания слов контекста. Для представления каждого слова используются горячие векторы, а матрица весов создается с помощью простой нейронной сети для изучения векторов слов. Обучающие образцы выбираются путем выбора размера окна и перемещения окна по тексту. Нейронная сеть обучена находить вероятность любого другого слова в контексте при заданном конкретном слове в середине предложения.

  • 00:15:00 В этом разделе лекции спикер объясняет технику встраивания слов, которая включает в себя представление слов в виде векторов, чтобы сделать их интерпретируемыми для нейронной сети. Этот метод включает в себя случайный выбор слова из контекста и использование весовой матрицы для изучения векторов слов, которые затем объединяются с выходной матрицей для создания вероятностного распределения слов в словаре. Функция softmax используется для нормализации скалярного выходного распределения, поэтому слова с похожим контекстом будут иметь одинаковые вероятности, назначенные им. Используя этот подход, пример в лекции показал, как слова «умный» и «умный» будут встречаться в сходных контекстах, и, таким образом, векторы слов для этих двух слов будут очень похожими.

  • 00:20:00 В этом разделе лектор обсуждает возможные решения проблемы вычислительной сложности, возникающей при использовании softmax. Для решения этой проблемы обычно используются два метода: отрицательная выборка и оценка шумового контраста (NCE). Хотя NCE может аппроксимировать softmax с теоретической гарантией, оба метода дают схожие результаты для практических целей. Затем лекция углубляется в определения эмпирического распределения и распределения знаний, где цель состоит в том, чтобы аппроксимировать эмпирическое распределение с помощью параметров модели. Наконец, лектор представляет NCE как метод уменьшения проблемы оценки языковой модели.

  • 00:25:00 В этом разделе спикер объясняет, как они будут генерировать данные для задачи обучения двух классов, используя прокси-бинарную классификацию. Они производят выборку центрального слова из P тильда C, а затем берут одну истинную выборку из PT маленькая P тильда W запятая C. Они генерируют K шумовых отсчетов, используя QW, и присваивают им метку D, которая равна 0, чтобы указать, что эти точки данных являются шумом. Затем они вычисляют совместную вероятность D, запятая W в данных двух классов, создавая смесь двух распределений. Используя определение условной вероятности, они могут превратить это в условную вероятность D, учитывая W и C для двух случаев, когда D равно 0 и когда оно равно 1.

  • 00:30:00 В этом разделе спикер обсуждает проблему дорогого расчета статистической суммы и способы ее решения с помощью Noise Contrastive Estimation (NCE). NCE предлагает добавить функцию распределения в качестве параметра для каждого слова эмпирического контекста и изучить его с помощью обратного распространения. Зафиксировав параметр Vc равным единице и заменив запятую C с тильдой P на запятую C с u-тета W, деленную на статистическую сумму на Vc, получается проблема бинарной классификации. Цель состоит в том, чтобы максимизировать условную вероятность D по отношению к K отрицательным образцам, которую можно записать в виде логарифмической вероятности. Докладчик объясняет, как NCE заменяет ожидание приближением Монте-Карло, делая процесс менее затратным в вычислительном отношении.

  • 00:35:00 В этом разделе обсуждается использование шумовой контрастной оценки (NCE) вместо отрицательной выборки (NS). NCE может свести цель языкового моделирования к проблеме бинарной классификации, и показано, что цель будет реализована в той же точке для параметров модели. Представлен API TensorFlow для потери NCE, а также использование области имен, что позволяет группировать узлы вместе для лучшей визуализации в TensorBoard. Область видимости имен переменных также объясняется в контексте функции области видимости имени.

  • 00:40:00 В этом разделе лектор обсуждает процесс встраивания переменных в TensorFlow для исследований глубокого обучения. Встраивая переменные в определенную область, они становятся частью хорошо сгруппированной визуализации на TensorFlow Board. Лектор также объясняет, как визуализировать векторы слов с помощью метода, называемого t-SNE, и дает рецепт построения графика TC для визуализации. Взяв многомерные векторы, полученные из матрицы встраивания, t-SNE используется для уменьшения размеров до 2D или 3D, показывая отношения ближайших соседей между словами. Наконец, лектор дает обзор кода, используемого для модели Word to Work.

  • 00:45:00 В этом разделе лектор обсуждает процесс определения заполнителей для ввода и вывода, построения переменной для потери NCE и определения вложений и матрицы вложений. Используя размер словаря 50 000 и размер пакета 128, лекция определяет матрицу вложения, которая изучает 128-мерный вектор слов для каждого слова. Также объясняется процесс вывода в skip-gram, при этом лекция сосредоточена на одном слове за раз для простоты объяснения. Затем с помощью TensorFlow API определяется функция потерь, а в лекции приводится разбивка ключевых переменных, таких как отрицательные выборки и количество этапов обучения.

  • 00:50:00 В этом разделе спикер обсуждает, как NCE (оценка контрастности шума) используется для создания задачи бинарной классификации, которая помогает решить сложность softmax. Каждый из 64 отрицательных и один положительный пример, созданный для прокси-классификации, соответствует вектору слов. Автодифференциация TensorFlow используется для обновления весов бинарного классификатора, чтобы отделить один положительный пример от 64 отрицательных примеров. Лекция заканчивается кратким изложением концепций, рассмотренных до сих пор, включая векторы слов, NCE, матрицы встраивания и анализ основных компонентов (PCA). Следующая лекция будет посвящена управлению различными программами и экспериментами при построении моделей слов.
Tensorflow for Deep Learning Research - Lecture 4
Tensorflow for Deep Learning Research - Lecture 4
  • 2017.03.04
  • www.youtube.com
This is the fourth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford University class - CS20SI...
 

Tensorflow для исследований в области глубокого обучения — Лекция 5_1



Tensorflow для исследований в области глубокого обучения — Лекция 5_1

Пятая лекция из серии TensorFlow for Deep Learning Research охватывает несколько тем, в том числе эффективное управление экспериментами по глубокому обучению, важность автоматической дифференциации в TensorFlow, а также процесс обучения моделей и сохранения переменных. Спикер объясняет, что в таких средах глубокого обучения, как TensorFlow, предусмотрена автоматическая дифференциация, что упрощает для пользователей кодирование своих моделей, не имея дело с градиентами. Хотя нет необходимости вычислять градиенты вручную, все же полезно вычислить их для простых функций и сетей. Также рассматривается создание модели распознавания именованных объектов с подклассами и необходимыми заполнителями и методами подачи, а также сохранение и восстановление переменных в TensorFlow и процесс сохранения моделей в разных сеансах и на разных машинах.

  • 00:00:00 В этом разделе спикер обсуждает, как управлять экспериментами по глубокому обучению и важность автоматической дифференциации в TensorFlow. Они объясняют, что при написании модели вы будете пробовать разные вещи, запускать и перезапускать обучение, поэтому важно правильное управление. В таких средах глубокого обучения, как TensorFlow, предусмотрена автоматическая дифференциация, что позволяет пользователям легко кодировать свои модели, не имея дело с реальными градиентами. Докладчик приводит пример, в котором операция «градиенты» TensorFlow позволяет находить градиенты Y по отношению к каждому тензору в списке, указанном в качестве второго аргумента. Они также упоминают, что все в TensorFlow и глубоком обучении основано на численном дифференцировании.

  • 00:05:00 В этом разделе спикер рассказывает о том, нужно ли учиться вычислять градиенты вручную, когда в TensorFlow уже есть функция точечных градиентов. Он предполагает, что, хотя это и не обязательно, все же полезно разрабатывать градиенты для простых функций или сетей, особенно при написании пользовательских слоев или решении проблем с градиентами, таких как взрыв или исчезновение градиентов. Он также предлагает структурировать модель более объектно-ориентированным способом, чтобы упростить ее использование и полностью вывести модель из функции. Докладчик упоминает структуру назначения CS 244 D в качестве примера того, как инкапсулировать компоненты модели глубокого обучения.

  • 00:10:00 В этом разделе спикер обсуждает модельный аспект создания модели глубокого обучения. Они объясняют, что в модели записывается полный вывод, берутся входные данные и выполняется прямой проход для получения выходных данных, а затем добавляется операция потерь, которая создает скаляр потерь, который сравнивает прогнозируемые выходные данные с истинными выходными метками из заполнителей. Докладчик предлагает абстрагировать все как один базовый класс и создавать подклассы для определенных типов моделей, таких как языковая модель. Наконец, они объясняют, как создать модель распознавания именованных объектов с подклассами и необходимыми API-интерфейсами, такими как заполнители и технология фидов.

  • 00:15:00 В этом разделе мы узнаем о процессе обучения моделей глубокого обучения с использованием TensorFlow и о том, как эффективно управлять экспериментами. Процесс включает в себя создание переменных матриц и получение вложений для обучающих данных перед запуском эпохи обучающих данных в цикле, который обучает матрицы встраивания. Чтобы сохранить прогресс, TF для train.saver сохраняет переменные в графике в двоичных файлах, которые можно вызывать во время будущих запусков, чтобы начать с того места, где он остановился. В примере кода показано, как создать экземпляр объекта-сохранителя и пройти этап обучения для запуска оптимизатора, сохраняя сеанс и некоторое имя каталога.

  • 00:20:00 В этом разделе спикер углубляется в детали класса TensorFlow Save и связанных с ним переменных. Глобальная ступенчатая переменная, определенная как необучаемая кодовая переменная, начинающаяся с 0, может увеличиваться каждый раз при вызове операции обучения, предоставляя ее в функции «свернуть». Кроме того, переменная «максимальное количество сохраняемых» ограничивает количество сохраняемых контрольных точек самыми последними, а переменная «сохранять контрольные точки каждые» определяет частоту сохранения контрольных точек, что делает ее полезной для длительных циклов обучения.

  • 00:25:00 В этом разделе инструктор обсуждает, как сохранять и восстанавливать переменные в TensorFlow. Он объясняет, что пользователи могут указать список переменных или словарь для сохранения определенных переменных вместо сохранения всего. Преимущество этого заключается в экономии места и увеличении пропускной способности, особенно при переносе обучения. Чтобы восстановить переменные, пользователи могут вызвать функцию tf.latest_checkpoint, которая проверит наличие последней контрольной точки в определенном каталоге и восстановит ее с помощью функции session.restore(). Преподаватель также упоминает, что пользователи могут сохранять график в TensorFlow 0.11 и выше, создавая коллекции с ключами и значениями, соответствующими переменным, а затем создавая экземпляр объекта-сохранителя со всеми значениями по умолчанию.

  • 00:30:00 В этом разделе лекции инструктор объясняет, как сохранять и восстанавливать модели TensorFlow в разных сеансах и даже на разных машинах. Шаги включают в себя запуск инициализатора глобальных переменных, сохранение сеанса и использование метода «экспорт метаграфа» для создания сохраненного файла графика. Этот сохраненный график можно восстановить, а переменные можно повторно инициализировать в совершенно другом процессе или машине, если исходный график недоступен. Инструктор также упоминает TF.summary, о котором будет рассказано в следующем видео.
Tensorflow for Deep Learning Research - Lecture 5_1
Tensorflow for Deep Learning Research - Lecture 5_1
  • 2017.03.18
  • www.youtube.com
This is the first part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Universi...
 

Tensorflow для исследований глубокого обучения — Лекция 5_2



Tensorflow для исследований глубокого обучения — Лекция 5_2

В видеоруководстве обсуждается реализация сводных операций TF, которые позволяют визуализировать данные в TensorBoard. В руководстве рассматриваются три типа сводных операций — TF.summary.scalar, TF.summary.histogram и TF.summary.image — и объясняется, как объединить их в один и записать в файл событий с помощью класса FileWriter. Лектор демонстрирует, как использовать области имен для визуализации графа в TensorBoard, и определяет автора тестов и обученного автора для записи сводок в отдельные файлы. Они подчеркивают важность использования возможностей визуализации TensorBoard для лучшего понимания производительности своей модели. В целом, TensorBoard — важный инструмент для отслеживания прогресса обучения, а API для добавления операций и их объединения прост.

  • 00:00:00 В этом разделе видеоруководства обсуждается, как использовать сводные операции TF, которые представляют собой функции, которые прикрепляют информацию к узлам в вычислительном графе для создания сводных данных для визуализации в TensorBoard. Учебное пособие охватывает три типа сводных операций: TF.summary.scalar для присоединения к узлам скалярных значений в графе, таким как потери, перекрестная энтропия и скорость обучения; TF.summary.histogram для визуализации распределения тензора, такого как веса конкретного слоя; и TF.summary.image для визуализации изображений, входных данных или даже некоторых промежуточных слоев. В руководстве объясняется, как объединить все сводные операции в одну и записать их в файл событий с помощью класса FileWriter.

  • 00:05:00 В этом разделе спикер объясняет, как настроить средство записи файлов и сводку в TensorFlow, чтобы визуализировать данные на TensorBoard. Они рекомендуют настроить модуль записи на запуск через определенные промежутки времени, поскольку его запуск на каждом этапе может привести к получению слишком большого объема данных. Предоставив средству записи файла объект графа, вычислительный граф можно сохранить как определение графа и визуализировать на TensorBoard. Докладчик демонстрирует, как визуализировать скаляры и гистограммы на TensorBoard, выбирая определенные шаги по оси x, чтобы увидеть соответствующие значения по оси y. Они призывают пользователей использовать возможности визуализации TensorBoard, чтобы лучше понять производительность своей модели.

  • 00:10:00 В этом разделе лектор обсуждает определение функции с именем variable_summary, которая принимает тензор и добавляет итоговый узел. Функция охватывает среднее значение, стандартное отклонение, максимум, минимум и гистограмму; каждая переменная будет ограничена с точки зрения именования. Они также обсуждают идею беспорядка в распределениях, где потери самые высокие, когда модель недостаточно обучена, а по мере увеличения размера шага потери уменьшаются. Для различных экспериментов можно использовать разные устройства записи файлов, которые можно сохранять в журнале. Опция плотного размещения позволяет выбирать и переключаться между различными вариантами.

  • 00:15:00 В этом разделе видео посвящено реализации сводных операций и использованию областей имен в TensorFlow для визуализации. Код определяет области имен для перекрестной энтропии и точности, чтобы помочь с визуализацией графика в TensorBoard. Объединенная операция получается путем вызова TF.summary.merge_all, и эта операция используется при запуске сеанса. Код также определяет автора тестов и обученного автора для записи результирующих сводок в отдельные файлы. Для каждого шага код обучает модель и записывает сводки. Если количество шагов по модулю 10 равно нулю, сводка записывается в тест-писатель, а для всех остальных шагов — в обученный писатель.

  • 00:20:00 В этом разделе спикер обсуждает метод запуска TensorBoard для одновременной визуализации событий как в модуле записи тестов, так и в модуле записи поездов. Визуализировать все помогает команда "s about -- clock там равно пути" , а текущий хост - это localhost двоеточие шесть ноль ноль шесть, по которому можно перемещаться через браузер. Кроме того, итоговое точечное изображение TF по умолчанию имеет имя tensor max, выводимое по умолчанию, и интерпретирует четырехмерный тензор с формой пути, размером, высотой, шириной и каналами. Аргумент max outputs определяет, сколько смещенных назад изображений будет отображаться и отображаться на TensorBoard. В целом, TensorBoard — это важный инструмент для отслеживания прогресса обучения, а API для добавления различных операций и их объединения прост.
Tensorflow for Deep Learning Research - Lecture 5_2
Tensorflow for Deep Learning Research - Lecture 5_2
  • 2017.04.03
  • www.youtube.com
This is the second part of the fifth lecture in the series of tutorials on tensorflow and is based on the publicly available slides from the Stanford Univers...
 

Интуитивное понимание обратного распространения как вычислительного графа



Интуитивное понимание обратного распространения как вычислительного графа

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

  • 00:00:00 в этом разделе обратное распространение позволяет обучать нейронные сети быстро сходиться, и его глубокое понимание может быть полезным для исследователей. Лекция начинается с объяснения того, что цель нейронной сети — найти функцию, которая отображает входы в выходы, обозначаемую F(x), которая является эмпирической функцией, которую невозможно обнаружить. В лекции рассказывается, что суррогатная функция G(x, θ) используется для оценки F, где θ обозначает параметры нейронной сети, и цель состоит в том, чтобы найти параметры, которые минимизируют функцию потерь J. Затем в лекции обсуждается, как метод обратного распространения позволяет сети находить оптимальные параметры путем вычисления градиента функции потерь по каждому параметру посредством обратного прохода графика.

  • 00:05:00 В этом разделе спикер обсуждает нахождение производной от G по тета, что имеет решающее значение при обучении нейронной сети. Используемый пример представляет собой простую функцию X, Y и Z, где необходимо вычислить частную производную F по X, Y и Z. Вводится понятие локальных градиентов, которые являются производными выхода по отношению к входу для данной операции. Однако цепное правило необходимо для вычисления конечного результата относительно удаленной переменной, которой в данном случае являются X, Y и Z.

  • 00:10:00 В этом разделе мы увидим, как найти градиенты в вычислительном графе, используя обратный поток градиента. Градиент выходного узла тривиально равен 1, и для вычисления градиента в каждом узле мы умножаем локальный градиент на градиент, полученный от предыдущего узла. Затем программа может рассчитать окончательные градиенты del F по Del X, del F по Del Y и del F по Del V. Крайне важно помнить, что мы всегда вычисляем градиент по отношению к конечной функции потерь, которая в случае нейронной сети — функция потерь J. Наконец, мы узнаем, как нейрон в нейронной сети выполняет простую функцию во время прямого прохода и как во время обратного распространения мы можем локально вычислять и использовать градиенты.

  • 00:15:00 В этом разделе спикер объясняет интуицию, стоящую за обратным распространением, как вычислительный граф для нейрона. Локальный градиент получается путем умножения обратной функции с del Z на значения Del X и del Z на значения Del Y. Обратный поток идет в направлении выхода нейрона, где другие нейроны, отправляющие ему данные, получают Del J по Del X. Техника вычислительного графа также используется для более сложных функций, таких как сигмоидальная функция, где обратный градиент рассчитывается численно. Локальный градиент для каждого узла вычисляется путем взятия производной функции, а затем умножения ее на поток градиента.

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

  • 00:25:00 В этом разделе спикер обсуждает интуицию обратного распространения ошибки в виде вычислительного графа. Они объясняют, как рассчитываются градиенты для различных типов вентилей, таких как вентили сложения и мультипликативные вентили, а также закономерность, возникающую при расчете обратного потока. Докладчик также объясняет, как определить прямые и обратные функции для каждого вентиля, и после определения эти функции можно использовать для любого вычислительного графа, что делает процесс более эффективным.

  • 00:30:00 В этом разделе концепция прямых и обратных проходов при обратном распространении обсуждается в виде вычислительного графа. Прямой проход вычисляет выход, который становится входом для следующего узла, пока не будет достигнута потеря. При обратном проходе DZ изначально устанавливается равным единице и вычисления производятся в обратном направлении. При работе с векторами локальный градиент берется с использованием матриц Якоби, а левое умножение используется в цепном правиле. Del L по Del X или Del L по Del Y вычисляется с использованием двух матриц Якоби: del Z по Del X или del Z по Del Y и del L по Del V.

  • 00:35:00 В этом разделе спикер объясняет, как рассчитать прямой проход и обратное распространение заданной функции с помощью вычислительного графа. Используя пример функции, спикер проходит через процесс создания промежуточных переменных и вычисления прямого прохода. Затем спикер показывает, как рассчитать обратный проход, вычислив градиенты по отношению к входу и выходу каждого вентиля. Докладчик подчеркивает полезность учета производных сигмовидной функции.

  • 00:40:00 В этом разделе спикер объясняет, как обрабатывать градиенты для операций ветвления и векторизации в обратном распространении. Когда происходит ветвление, добавляются градиенты, а при вычислении градиентов для функций можно повторно использовать предыдущие промежуточные градиенты. Операции векторизации, такие как матричное умножение, можно обрабатывать аналогичным образом, вычисляя градиенты по отношению к каждому элементу отдельно и используя матричные операции для их объединения. Размерность градиентов определяется размерностью вывода выполняемой операции.

  • 00:45:00 В этом разделе спикер объясняет, как добиться того, чтобы размерность сработала при вычислении del D/del W и del D/del X в функции на примере умножения матриц в TensorFlow. Размеры W и DD известны, и поскольку единственный способ заставить работать умножение — это использовать W точка точка точка X, неплохо запомнить эту формулу. Докладчик напоминает зрителям, что понимание вычислительных операций с графами в TensorFlow важно, даже если такие фреймворки, как TensorFlow, абстрагируются от такой сложности. Эти знания окажутся полезными при работе с пользовательскими слоями, которые требуют от пользователя записи их прямых и обратных проходов.
Intuition Behind Backpropagation as a Computational Graph
Intuition Behind Backpropagation as a Computational Graph
  • 2017.03.13
  • www.youtube.com
Here I go into details on how to visualize backpropagation as a computational graph. As part of my other tutorials on tensorflow, we have discussed as to how...
 

Производство глубокого обучения для компьютерного зрения



Производство глубокого обучения для компьютерного зрения

Технический директор и главный научный сотрудник Jumio Лаваш Патель рассказывает, как их компания использует сочетание экспертов по искусственному интеллекту и идентификации для установления доверия в Интернете и проверки подлинности документов, удостоверяющих личность. Процесс проверки личности затруднен из-за разнообразия идентификаторов и подтипов, а также необходимости исправления и отклонения нечитаемых изображений. Для поддержания точности используется подход «человек в цикле», когда модели ИИ обнаруживают проблемы, а человек проверяет результаты на работоспособность. Патель также обсуждает, как Jumio реализует глубокое обучение с помощью гибридного алгоритма активного обучения, который адаптируется к новым подтипам и совершенствуется путем самообучения. Кроме того, он подчеркивает важность чистых данных при распознавании лиц и соблюдении требований PCI при работе с конфиденциальными данными для целей машинного обучения.

  • 00:00:00 В этом разделе Лаваш Патель, технический директор и главный научный сотрудник Jumio, описывает бизнес компании по установлению доверия в Интернете с помощью сочетания экспертов по искусственному интеллекту и идентификации для проверки подлинности документа, удостоверяющего личность. Проблема с этим видом процесса проверки усложняется тем фактом, что они принимают трафик со всех видов каналов, включая мобильные телефоны, веб-камеры и простые вызовы API. Чтобы решить эти проблемы, Jumio использует сочетание моделей классификации и Facemash, чтобы помочь проверить подлинность удостоверения личности и личность человека перед камерой.

  • 00:05:00 В этом разделе спикер обсуждает проблемы использования ИИ для проверки личности, учитывая разнообразие существующих идентификаторов и подтипов. Подчеркивается важность исправления или выравнивания изображений, а также необходимость отбраковки нечитаемых изображений из-за размытия или бликов. Утверждение идентификационных изображений — более строгий процесс, чем отклонение, поскольку каждый компонент должен пройти проверку, чтобы считаться действительным. Чтобы обеспечить строгую точность и отклонить мошеннических пользователей, используется подход «человек в цикле», когда модели ИИ используются для обнаружения проблем, а человек используется для проверки результатов на работоспособность. Этот подход обеспечивает лучшую в отрасли точность с точки зрения конверсии и обнаружения мошенничества.

  • 00:10:00 В этом разделе спикер обсуждает аспект классификации производственного применения глубокого обучения для компьютерного зрения. Хотя в последние несколько лет классификация изображений решалась с использованием предварительно обученной сети, такой как Inception Version 4 или Viji 16, проблема немного отличается из-за агрегированных тегов вместо гранулированных. С более чем 100 миллионами изображений с тегами обнаружение различных классов стало проблемой обнаружения преобразованных классов, которую может решить активное обучение. Гибридное активное обучение включает в себя этап неконтролируемого обучения или встроенной кластеризации, начиная с самых популярных классов с помеченными примерами, чтобы получить несколько классов.

  • 00:15:00 В этом разделе спикер объясняет, как реализовать глубокое обучение для компьютерного зрения с помощью гибридного алгоритма активного обучения. Алгоритм собирает большое количество образцов для каждого класса и обучает классификатор уверенно классифицировать изображения по 50 классам с выходными уровнями достоверности. Затем алгоритм автоматически группирует изображения, в которых классификатор не уверен, и агент-человек просматривает их, чтобы при необходимости добавить новые классы. После создания модели она развертывается как API, и, если существуют правила соответствия, могут быть добавлены ведение журнала, мониторинг и проверки работоспособности. Кроме того, спикер отмечает, что алгоритм адаптируется к новым подтипам и продолжает совершенствоваться за счет самообучения, как это было, когда был обнаружен новый идентификатор с неверным написанием, а человек-агент отклонил его.

  • 00:20:00 В этом разделе спикер обсуждает, как они производят новые модели, всегда имея модель-чемпион и оценивая новые модели на основе их производительности по сравнению с чемпионом. Этот метод также позволяет постоянно совершенствоваться, используя гибридную инфраструктуру активного обучения, которая постоянно собирает и очищает наборы данных. Производственный конвейер чувствителен к чистоте наборов данных, при этом целевая частота ошибок для обучения не должна превышать 20 %. Весь процесс также должен соответствовать требованиям PCI и GDP, а это означает, что все должно быть зашифровано и передано в данные, а не в данные для обучения. Затем спикер представляет второй пример сопоставления лиц, в котором они используют предвзятость данных по возрасту, полу и этнической принадлежности в своих интересах при сопоставлении селфи с удостоверениями личности.

  • 00:25:00 В этой секции спикер обсуждает возможный подход к решению проблемы обнаружения пользователей-мошенников за счет использования вложений лиц и функции потери триплетов в сети с глубокой свёрткой. Процесс включает вырезание лиц с помощью детектора лиц и использование общедоступных наборов данных для обучения модели с последующей точной настройкой производственных данных. Модель настраивается в процессе активного обучения, которое включает использование контролируемой инфраструктуры для сбора информативных образцов и постоянного дополнения данных. Спикер подчеркивает эффективность активного обучения в широком диапазоне вариантов использования.

  • 00:30:00 В этом разделе спикер подчеркивает важность чистых данных в компьютерном зрении, особенно в распознавании лиц. Он подчеркивает, что производство глубокого обучения включает в себя гораздо больше, чем просто моделирование, и даже такие простые проблемы, как классификация, могут привести к многочисленным сложностям на этапе производства. Совместный интеллект или рабочие процессы с участием человека также могут быть полезны для улучшения алгоритмов и особенно важны для распознавания лиц, поскольку для этого требуются чистые наборы данных. Спикер также упомянул, что их компания набирает сотрудников для своих R&D команд, базирующихся в Вене и Монреале.

  • 00:35:00 В этом разделе спикер обсуждает проблемы обеспечения соответствия PCI при работе с конфиденциальными данными для целей машинного обучения и ИИ. Спикер объясняет, что данные должны использоваться только по прямому назначению, и что должны быть предусмотрены высокозащищенные места и процедуры для предотвращения любого несанкционированного доступа. Спикер также объясняет, что данные помещаются в корзины Amazon S3 в демилитаризованной зоне PCI и что для целей машинного обучения создаются запутанные образы, которые затем контролируются удаленно, чтобы исключить утечку личных данных.
Productionalizing deep learning for Computer Vision
Productionalizing deep learning for Computer Vision
  • 2018.10.16
  • www.youtube.com
In this conference talk, I explore how we use deep learning algorithms for smarter data extraction, fraud detection, and risk scoring to continuously improve...
 

Гейл Вайс: Мыслить как трансформеры



Гейл Вайс: Мыслить как трансформеры

В этом видео Гейл Вайс обсуждает концепцию кодировщиков-преобразователей, объясняя их способность обрабатывать последовательности и кодировать их в векторы. Вайс выделяет несколько исследований, изучающих сильные стороны и ограничения кодировщиков-преобразователей, и представляет язык программирования, называемый языком обработки последовательности с ограниченным доступом (RASP), для представления возможностей кодировщиков-преобразователей. Она также обсуждает многоголовое внимание, шаблоны выбора и проблемы softmax при определенных условиях, прежде чем углубиться в использование операторов последовательности и библиотечных функций для вычисления обратного и флип-селектора. Вайс дает представление о создании оптимальной программы для преобразователя, а также о выводах универсального и сэндвич-преобразователей, в конечном итоге обсуждая предикат выбора и отношения двоичного и третьего порядка.

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

  • 00:00:00 В этом разделе видео Гейл Вайс знакомит с концепцией кодировщиков-преобразователей, которые являются частью нейронной сети, предназначенной для обработки последовательностей. Она объясняет, что кодировщик преобразователя берет заданную последовательность и кодирует ее в набор векторов, причем некоторые популярные примеры включают BERT. Затем Вайс выделяет несколько исследований, в которых изучались сильные и слабые стороны преобразователей кодирования, в том числе их способность распознавать формальные языки и выполнять вычисления. Хотя эти исследования дают представление о возможностях преобразователей кодирования, Вайс отмечает, что они не дают ясного представления о том, как преобразователи на самом деле обрабатывают задачи.

  • 00:05:00 В этом разделе Гейл Вайс объясняет, что рекуррентные нейронные сети (RNN) подобны конечному автомату, который определяет переходы между состояниями на основе входных векторов, выдавая окончательную классификацию в соответствии с достигнутым состоянием. Анализируя их выразительную мощь с использованием нашего понимания детерминированных конечных автоматов, они получают представление о том, что делать с RNN, позволяя преобразовать RNN во взвешенные конечные автоматы, детерминированные конечные автоматы или взвешенные детерминированные конечные автоматы. Однако эта интуиция не существует для трансформеров, и необходимо придумать модель, которая служила бы аналогичной цели для кодировщика трансформеров. В отличие от RNN, кодировщики Transformer принимают весь свой ввод сразу и обрабатывают все входные токены параллельно через глубокую сеть, которая применяет обработку фиксированное количество раз. Хотя в Transformers нет состояний, есть смысл обработки и распространения информации посредством набора операций.

  • 00:10:00 В этом разделе Гейл Вайс объясняет, как кодировщик преобразователя может быть представлен в виде языка программирования, называемого языком обработки последовательности с ограниченным доступом (RASP), который описывает создание операторов последовательности (S-ops). S-операции представляют собой уровни кодера преобразователя, которые применяют операции к последовательности, создавая больше обработанной информации. RASP предоставляет две константы, маркеры и индексы, которые создают новые последовательности символов и индексов из любой входной последовательности, а затем применяют поэлементную сеть прямой связи к каждому из векторов, которые поступают на вход уровня кодировщика преобразователя. Программист несет ответственность за логический или разумный расчет применяемых операций, поскольку они могут быть любой поэлементной операцией.

  • 00:15:00 В этом разделе видео Гейл Вайс представляет концепцию многонаправленного внимания, которая является частью уровня преобразователя кодирования, не являющегося поэлементным. Она начинает с объяснения одноголового внимания и того, как оно работает, применяя два линейных преобразования к последовательности векторов, создавая набор запросов и набор ключей. Ключ описывает информацию, которую он может предложить, а запрос описывает информацию, которая требуется в каждой позиции. Через скалярное произведение запроса с каждым из ключей нормализуются веса и получается вывод в каждой позиции. Вайс также уточняет вопрос о промежуточном преобразовании ключей и значений, позволяющем модели иметь больше параметров.

  • 00:20:00 В этом разделе спикер обсуждает многоголовое самовнимание и то, как его можно использовать для объединения нескольких операций в один слой. Процесс включает в себя разделение входных векторов на векторы одинаковой длины и передачу каждого блока в разные головки. Как только несколько головок были применены, они объединяются, чтобы сформировать результат многоголового внутреннего внимания. Хотя между разными головками нет никакой зависимости, один слой может выполнять несколько операций, поскольку у него несколько разных головок. Этот процесс позволяет программисту беспокоиться о головках внимания вместо многоголового внимания к себе, что является проблемой для компилятора.

  • 00:25:00 В этом разделе Гейл Вайс приводит примеры кодирования определенных шаблонов выбора для преобразователя. Используя пример выбора позиций на основе того, описывают ли они себя нулем, единицей или двумя, Вайс указывает, что первая позиция выбирает две последние позиции, вторая позиция ничего не выбирает, а третья позиция выбирает только первую. Вайс также объясняет, что могут быть выбраны различные типы сравнения, такие как больше или равно, меньше или равно или неравно, и что селекторы могут быть составлены вместе. Однако Вайс отмечает, что абстракция шаблонов выбора для преобразователей зависит от разумности выполняемой операции, и это должен обеспечить программист.

  • 00:30:00 В этом разделе спикер обсуждает проблемы использования софтмакс при определенных условиях, а именно то, что есть небольшое внимание к оставшимся позициям, которые не соответствуют критериям отбора. Чтобы решить эту проблему, спикер предполагает, что если размер этих вложений будет увеличен, softmax начнет аппроксимировать жесткий выбор позиций «меньше или равно» и «больше». Затем презентация переходит к идее агрегации и тому, как токены могут быть выбраны и взвешены с использованием среднего значения. Докладчик приводит пример реверсирования токенов и то, как они создали реверсивный селектор и агрегировали токены, чтобы получить обратную входную последовательность, используя пример слова «hello» для вывода «olleh».

  • 00:35:00 В этом разделе спикер обсуждает, как можно использовать оператор длины в преобразователях, даже если он не является частью ввода, и как решения выбора являются попарными, чтобы предотвратить произвольно мощные операции выбора, которые могут скрыть произвольную мощность. Докладчик также говорит о других компонентах преобразователя, таких как скип или остаточное соединение, которое добавляет обратно значение вложений, и нормы слоев, которых нет в модели RASP. Кроме того, спикер упоминает об использовании функций и составлении селекторов для удобства, чтобы избежать повторения кода.

  • 00:40:00 В этом разделе докладчик обсуждает использование операторов последовательности, таких как val, min и max, для проверки того, какие индексы находятся в определенном диапазоне. Они также упоминают полезность библиотечных функций, таких как ширина селектора, в реализации таких функций, как гистограммы на месте и подсчет токенов во входных последовательностях. Кроме того, спикер описывает, как они вычисляли длину последовательности с помощью селектора и индикаторной функции, отмечая, что нормализация слоя может усложнить такие вычисления. Наконец, они предлагают альтернативное решение, включающее сеть обратной связи для вычисления обратного, но признают, что на него все еще может влиять нормализация слоев.

  • 00:45:00 В этом разделе Гейл Вайс обсуждает, как преобразователи могут научиться вычислять инверсию и флип-селектор даже при работе с относительно короткими последовательностями. Далее она объясняет, что программный анализ Ras можно использовать для определения того, когда следует применять вычисления в обратном направлении, а когда применять флип-селектор, при этом гарантируя, что пары выбора и агрегирования являются просто головками внимания. Наконец, она исследует, как реальный преобразователь может выполнять обратное вычисление в двух слоях, что подтверждается выводами о том, что преобразователю удалось достичь 99,6-процентной точности при обращении входных последовательностей длиной до 100 после 20 эпох.

  • 00:50:00 В этом разделе Гейл Вайс обсуждает создание оптимальной программы для трансформатора, которая требует двух слоев для эффективного выполнения задачи. Даже если программу свести к одному слою и добавить в два раза больше параметров или использовать две головки, ей не удастся добиться высокой точности, потому что она не умеет работать с меняющейся длиной последовательности. Кроме того, паттерны внимания одинаковы на обоих уровнях: первый уровень использует равномерное внимание для вычисления длины последовательности, а второй уровень использует тот же паттерн обратного внимания. Далее Вайс демонстрирует гистограмму на месте, которая включает в себя выбор токенов и вывод количества раз, когда этот токен появляется во входной последовательности. Сосредоточив внимание каждой лексемы на той же лексеме, что и она сама, или на первой позиции в начале лексемы последовательности, они используют только одну головку внимания для обучения преобразователя, что значительно упрощает вычисление инверсных и других элементов.

  • 00:55:00 В этом разделе Гейл Вайс рассказывает о прозрении, которое исходит от универсального трансформера и сэндвич-трансформера, которые влияют на образ мышления и использование модели трансформера. Она объясняет, что каждый оператор последовательности в RASP является результатом конечного числа операций, поэтому язык не является бесконечно мощным, а требует конечного числа O(n^2) вычислений. Она также затрагивает вычислительную стоимость головы внимания в кодировщике преобразователя и то, что, возможно, не стоит использовать вычисления n^2. Затем разговор переходит к обсуждению предиката select и отношений бинарного и третьего порядка.
  • 01:00:00 В этом разделе Гейл Вайс обсуждает потенциальное увеличение мощности модели трансформатора с вниманием более высокого порядка, например третьего порядка вместо второго. Она объясняет, что такая модель потенциально может вычислять функции с более чем O(n^2) операциями, что увеличивает ее мощность. Однако это также будет более затратным в вычислительном отношении. Вайс также подчеркивает важность остаточных соединений в модели преобразователя как способа сохранения и повторного использования информации на всех уровнях и предполагает, что их удаление может резко снизить производительность, даже если они могут не отображаться как отдельная операция.

  • 01:05:00 В этом разделе видео Гейл Вайс обсуждает потенциальные проблемы, которые могут возникнуть с очень глубокими трансформаторами, и то, как они могут отклоняться от модели RASP. Она упоминает документ, который она прочитала в ICML, о важности удаления определенной информации из преобразователя, что может привести к быстрой потере информации. Однако она также отмечает, что информация может быть сохранена, если она будет признана важной. Вайс также обсуждает идею очень длинного встраивания для преодоления проблем с нечеткостью информации по мере того, как преобразователь углубляется.
Gail Weiss: Thinking Like Transformers
Gail Weiss: Thinking Like Transformers
  • 2022.02.25
  • www.youtube.com
Paper presented by Gail Weiss to the Neural Sequence Model Theory discord on the 24th of February 2022.Gail's references:On Transformers and their components...
 

Визуализация и понимание глубоких нейронных сетей, Мэтт Зейлер



Визуализация и понимание глубоких нейронных сетей, Мэтт Зейлер

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

  • 00:00:00 В этом разделе Мэтт Зейлер описывает метод визуализации сверточных сетей, используемых для распознавания объектов на изображениях и видео, что позволяет им понять, что изучает каждый слой, и получить информацию для повышения производительности. Сверточные нейронные сети существуют с конца 80-х годов, и новые подходы используют почти ту же архитектуру, что и раньше. Прорыв в этой области был совершен командой Джеффа Хинтона, поскольку их нейронная сеть снизила частоту ошибок в общем эталонном тесте ImageNet на десять процентов вместо обычных двадцати шести процентов, что привело к повышению производительности в задачах распознавания.

  • 00:05:00 В этом разделе Мэтт Зейлер обсуждает недавние исследования, сравнивающие эффективность глубоких нейронных сетей с эффективностью распознавания объектов приматами и людьми. Одно исследование включало запись срабатывания электродов в мозгу обезьяны, когда ей предъявляли изображения, и сравнение точности распознавания с точностью глубоких нейронных сетей и людей. Результаты показали, что люди, глубокие нейронные сети и ИТ-кора головного мозга обезьян работали почти одинаково, когда изображения предъявлялись менее 100 миллисекунд. Кроме того, Зейлер обсуждает сверточные сети D, которые представляют собой модели обучения без учителя, используемые для реконструкции изображений при разрежении признаков верхнего уровня, с целью изучения того, что на самом деле изучает сверточная сеть.

  • 00:10:00 В этом разделе Мэтт Зейлер объясняет важность обеспечения обратимости операций в сверточных сетях для достижения хороших реконструкций, особенно при работе с несколькими уровнями информации. Он демонстрирует, как визуализируется самый высокий слой в сети (используя проверочный набор из 50 000 изображений), выбирая одну карту объектов с самой сильной активацией за раз и используя ее в качестве входных данных для вершины сверточной сети для восстановления визуализаций из снизу вверх. Визуализация карт объектов первого слоя показывает фильтры, состоящие из ориентированных краев и цветных краев с разной ориентацией и частотой, чего исследователи и ожидали ранее. Однако визуализация более высоких уровней дает новое представление о том, как сеть изучает и классифицирует различные объекты, показывая самые сильные активации и инварианты на нескольких изображениях.

  • 00:15:00 В этом разделе Цайлер объясняет развитие второго уровня нейронных сетей, который демонстрирует гораздо более сложный набор паттернов, чем первый. Комбинации ребер, параллельных линий, кривых, кругов и цветных блоков, среди прочих структур, присутствуют во втором слое. Благодаря объединению он имеет более широкий спектр того, что он может обрабатывать из изображения. Глядя на третий слой, Цейлер показывает, как он изучает части объекта, которые имеют решающее значение для создания представления объекта, например морду собаки или человеческое лицо. Элементы группировки остаются в третьем слое, но как более семантически релевантная группировка сеток или определенных структур лица.

  • 00:20:00 В этом разделе объясняется, как нейронная сеть учится идентифицировать определенные объекты по мере прохождения слоев. На четвертом уровне сети соединения становятся более объектно-ориентированными, а категории, не явные в задачах, такие как трава, становятся функциями. Модель также учится распознавать множественные признаки, такие как разные породы собак или разные типы клавиатур в разных ориентациях. Последний слой свертки становится больше из-за граничных эффектов на свертки по мере приближения к слою классификации. Содержимое этого последнего слоя становится сильно зависящим от объекта, поскольку модель должна принять решение о том, к какому классу принадлежит изображение, а в этом слое существует только 256 признаков.

  • 00:25:00 В этом разделе Мэтт Зейлер обсуждает эксперимент, чтобы подтвердить, что визуализации запускаются в соответствующих частях изображения. Они перемещали блок нулей со средним пикселем 128 по изображению и записывали активации или вероятности модели. Заблокировав морду померанского шпица, они обнаружили, что вероятность померанского шпица значительно падает, в то время как наиболее вероятным классом является теннисный мяч, когда морда заблокирована. Интересно, что они обнаружили, что пятый слой изучил детектор текста, поскольку он значительно снижает функцию при блокировании любого текста на изображении, обеспечивая представление о том, что слой может ассоциировать текст с другими классами. Наконец, они использовали модель группы из Торонто, которая выиграла конкурс ImageNet в 2012 году и обнаружила огромное несоответствие в нормализации фильтров на первом уровне.

  • 00:30:00 В этом разделе видео Мэтт Зейлер обсуждает процесс улучшения архитектуры глубоких нейронных сетей. Он объясняет, что после исправления проблемы с перенормировкой стало ясно, что фильтры первого слоя были слишком большими, что приводило к мертвым фильтрам. На втором уровне также было много блокирующих артефактов, из-за чего он терял информацию, что приводило к уменьшению шагов в свертке и удалению блокирующих артефактов, а также к повышению гибкости второго уровня. Эти модификации помогли им выиграть конкурс ImageNet 2013 года, и эти подходы снова использовались в более поздних конкурсах, что привело к хорошим результатам. Зейлер также обсуждает возможности обобщения и использование этих нейронных сетей для определения значимости.

  • 00:35:00 В этом разделе Зейлер обсуждает ограничения глубоких моделей, когда используется лишь небольшой объем обучающих данных, заявляя, что модели изо всех сил пытаются правильно изучить функции. Он объясняет, что эти модели умеют распознавать особенности, которые в целом важны для распознавания объектов, и это можно перенести на другие задачи только с несколькими примерами, отображаемыми с помощью различных таблиц и графиков. Кроме того, Зейлер исследует, насколько важно обучать глубокую модель, рассматривая все промежуточные слои и различные типы классификаторов. Наконец, Зейлер предполагает, что использование обученной модели для очистки собранных данных меток возможно и потенциально может улучшить модели обучения.

  • 00:40:00 В этом разделе Зейлер отвечает на вопрос о том, можно ли использовать нижние слои нейронной сети, показавшие достойную производительность в классификации, в более высоких слоях или рядом с выходными данными классификации. Он объясняет, что на более высоких уровнях может быть больше информации из-за многократного извлечения, но также могут помочь разные типы информации. Затем разговор переходит к производительности различных слоев и соображениям об оборудовании для обучения больших нейронных сетей. Зейлер также обсуждает способность нейронных сетей распознавать менее конкретные классы, такие как тонкие эмоции или жесты, и отображение слоев разных размеров.

  • 00:45:00 В этом разделе спикер объясняет, как свертки применяются к изображению и другим слоям в нейронных сетях. Применение сверток зависит от двух параметров: размера фильтра и шага между местами применения фильтра. Говорящий объясняет, что на нижних уровнях используются два шага, потому что объем пространственного контента слишком велик, а вычисления в каждом месте слишком дороги. Однако это может привести к потере информации. Спикер также упоминает, что в первых нескольких слоях нейронной сети нет неконтролируемого обучения и что описательные слова, такие как «заброшенный», уже встроены в словарный запас.
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
Visualizing and Understanding Deep Neural Networks by Matt Zeiler
  • 2015.02.02
  • www.youtube.com
Matthew Zeiler, PhD, Founder and CEO of Clarifai Inc, speaks about large convolutional neural networks. These networks have recently demonstrated impressive ...