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

 

Лекция 21. Настройка алгоритма TSP



Лекция 21. Настройка алгоритма TSP

Это видео на YouTube посвящено проблеме коммивояжёра (TSP), NP-сложной проблеме, которая существует уже много лет. Докладчик рассматривает различные алгоритмы и подходы для оптимизации пространства поиска и сокращения поиска, чтобы ускорить алгоритм TSP, например, реализовать лучший алгоритм минимального связующего дерева, включить оптимизацию компилятора и изменить расчет расстояния для использования алгоритма поиска в таблице. Необходимость ограничить пространство поиска и творчески подходить к оптимизации программ для повышения скорости и производительности подчеркивается на протяжении всего видео, что дает ценную информацию о решении TSP и других связанных с этим проблем.

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

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

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

  • 00:10:00 В этом разделе спикер рассказывает о задаче коммивояжёра (TSP) и её важности как прототипа задачи в информатике, которая была одной из первых задач, доказавших свою NP-трудность. Спикер рассказывает личный анекдот о том, как он заинтересовался проблемой, когда его коллега рассказал о своих проблемах с решением TSP из 16 пунктов в своей докторской диссертации. Затем спикер обсуждает, как он написал программу для решения той же задачи 20 лет спустя, которая стала популярной темой в классе алгоритмов в Университете Лихай, что привело к дальнейшим исследованиям того, как инженерия производительности изменилась за 40 лет.

  • 00:15:00 В этом разделе спикер объясняет рекурсивный алгоритм в простой программе на C для генерации всех факториальных перестановок n городов для поиска наилучшего тура. Коэффициент ветвления дерева будет равен 9 в каждом узле, что приведет к большому дереву для n = 10 с 10 факториальными возможными комбинациями. Программа проверяет сумму расстояний между городами для каждой перестановки и сохраняет найденную минимальную сумму. Программа работает корректно, но непонятна ее скорость при n=10.

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

  • 00:25:00 В этом разделе спикер обсуждает, насколько быстрее может стать алгоритм TSP за счет различных оптимизаций. Например, простое включение оптимизации компилятора может привести к повышению производительности до 25 раз. Кроме того, по мере совершенствования аппаратного обеспечения с годами оптимизация ядра может привести к более высокой тактовой частоте, более широким путям данных и более глубоким конвейерам, в результате чего ускорение в 150 раз. Кроме того, изменение расчета расстояния для использования алгоритма поиска в таблице может привести к ускорению в 2,5–3 раза. моделирование может определить влияние различных оптимизаций на алгоритм TSP.

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

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

  • 00:40:00 В этом разделе спикер представляет задачу, которую ему поручила решить его дочь. Задача состоит в том, чтобы найти все перестановки 9 целых чисел от 1 до 9, такие что каждая исходная подстрока длины m делится на M, так что все это делится на 9. Докладчик предлагает подумать, прежде чем писать программу для решения задачи . Затем он обсуждает программу на языке программирования AWK, которая использует строки и рекурсивные процедуры для генерации всех возможных перестановок. Запуск этой программы займет около 49! временная сложность.

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

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

  • 00:55:00 В этом разделе спикер обсуждает, как улучшить нижнюю границу TSP путем реализации лучшего алгоритма минимального связующего дерева, поскольку именно на это тратится большая часть времени вычислений. Он использует параллелизм с представлением подмножества городов в битовой маске для быстрого и эффективного вычисления MST. Несмотря на то, что вычисление MST занимает время, равное n в квадрате, этот метод является мощным механизмом сокращения, позволяющим ускорить выполнение программы. После нескольких испытаний и преодоления трудностей программа сократилась с 17 секунд до 0 секунд, что позволяет с легкостью обрабатывать большие наборы данных.
  • 01:00:00 В этом разделе спикер описывает свой эксперимент по оптимизации алгоритма TSP путем реализации ленивых вычислений, сохранения данных в хэш-таблице и использования лучшего начального тура с более умным поиском. Он обсуждает преимущества кэширования и способы оптимизации производительности алгоритма путем экспериментирования и тестирования различных подходов. Спикер подчеркивает, что проектирование производительности должно опираться на эмпирические данные, а интуиция часто ошибается. Он также упоминает восхождение на гору Монаднок и разницу между предсказуемыми и непредсказуемыми алгоритмами.

  • 01:05:00 В этом разделе видео спикер объясняет, как сделать поиск алгоритма TSP более умным, направляя его быстрее к начальному стартовому городу, а не просто используя случайный тур. Используя простую сортировку вставками и сначала посетив 30 ближайших городов, можно сократить пространство поиска, что имеет большое значение. Спикер рассказывает, что в 1997 году они были счастливы получить 230, но еще через 20 лет, используя только закон Мура, они могли получить коэффициент 1000. Однако, объединив закон Мура и технологию компилятора со всеми алгоритмами, они смогли дойти до 52. Спикер подчеркивает, что всего, чем они поделились, можно было достичь с помощью 160 строк кода, и все эти вещи вполне укладываются в рамки. практики того, кто закончил этот класс.

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

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

  • 01:20:00 В этом разделе спикер выражает благодарность за то, что разработка производительности стала образом жизни. Он упоминает, что это позволило ему разработать алгоритмы, улучшающие различные сервисы Google, что очень его удовлетворило и принесло удовлетворение. Спикер также выражает благодарность за дружеские отношения, которые он установил на протяжении всей своей карьеры, и надеется, что инженерия производительности может быть так же полезна для других, как и для него.
21. Tuning a TSP Algorithm
21. Tuning a TSP Algorithm
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Jon BentleyView the complete course: https://ocw.mit.edu/6-172F18YouTube Playlist...
 

Лекция 22. Оптимизация графов



Лекция 22. Оптимизация графов

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

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

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

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

  • 00:10:00 В этом разделе видео обсуждались различные способы представления графа, включая формат списка смежности и формат сжатой разреженной строки. Формат списка смежности включает в себя массив указателей, где каждый указатель указывает на связанный список, в котором хранятся ребра для этой вершины. Для этого требуется пространство O (n + m), но могут возникнуть проблемы с производительностью из-за произвольного доступа к памяти. С другой стороны, формат сжатой разреженной строки использует пространство O (n + m) и позволяет эффективно вычислять степень вершины. Кроме того, значения или веса на ребрах могут храниться в дополнительном массиве.

  • 00:15:00 В этом разделе видео обсуждаются компромиссы в различных представлениях графа, включая стоимость хранения, сканирование графа, добавление ребра, удаление ребра и поиск всех соседей определенной вершины. Матрица смежности имеет стоимость хранения O (n ^ 2), а добавление и удаление ребер - O (1). Для списка ребер стоимость сканирования графа составляет O(m) и O(1) — добавление ребра. Удаление ребра равно O(m). Степень V требуется для добавления или удаления ребра в списке JCU со стоимостью хранения O(m+n). В худшем случае добавление ребра в формате сжатой разреженной строки может стоить до O(m+n). Нахождение всех соседей конкретной вершины составляет O (n) для матрицы смежности, O (m) для списка ребер и O (степень V) для списка смежности.

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

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

  • 00:30:00 В этом разделе спикер обсуждает реализацию последовательного алгоритма BFS с использованием формата сжатой разреженной строки. Алгоритм включает инициализацию двух массивов, родительского и Q, помещение исходной вершины в очередь и перебор соседей текущей вершины. Однако самая затратная часть кода — это доступ к родителю соседа, что представляет собой произвольный доступ к памяти. Это приводит к промаху кеша почти каждый раз и может привести к снижению производительности. Доступ к массиву адресов в основном осуществляется последовательно, требуется только один случайный доступ к массиву ребер для каждой вершины, что делает его более удобным для кэширования. Общая работа алгоритма определяется как порядок M + N.

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

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

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

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

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

  • 01:05:00 В этом разделе видео обсуждается эффективность подходов «сверху вниз» и «снизу вверх» в BFS, которую изучал Скотт Бимер в 2012 году. Подход вверх более эффективен для больших границ. Выбор между этими двумя подходами основан на размере границы, при этом пороговое значение n больше 20 хорошо работает на практике. В видео также обсуждаются различные способы представления границы и сравнивается производительность трех разных подходов к обходу, включая подход с оптимизацией направления, который всегда быстрее, чем подходы «сверху вниз» и «снизу вверх». Идея оптимизации направления также является более общей, чем просто BFS, и применяется к другим алгоритмам графов.

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

  • 01:15:00 В этом разделе мы узнаем, что для экономии места при выполнении алгоритмов на больших, но относительно разреженных графах реального мира мы должны декодировать ребра на лету, когда мы запускаем наш алгоритм, и кодировать их в куски, чтобы избежать дисбаланса нагрузки. Эксперименты показывают, что эти схемы сжатия экономят место и, хотя они лишь немного медленнее, чем несжатая версия, они становятся быстрее, чем несжатая версия, при параллельной работе из-за использования памяти. Наконец, оптимизация для графиков может хорошо работать для одних графиков, но может не работать для других, и, следовательно, важно протестировать оптимизации на разных типах графиков, чтобы увидеть, где они работают хорошо, а где нет.
22. Graph Optimization
22. Graph Optimization
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Julian ShunView the complete course: https://ocw.mit.edu/6-172F18YouTube Playlist...
 

Лекция 23. Высокая производительность в динамических языках



Лекция 23. Высокая производительность в динамических языках

В этом видео обсуждаются проблемы написания критически важного для производительности кода на высокоуровневых динамически типизированных языках с упором на язык программирования Julia. Julia стремится предоставить интерактивные возможности высокого уровня, обеспечивая при этом тот же уровень производительности, что и языки более низкого уровня, такие как C и Fortran. Способность Джулии писать общий код, который работает для нескольких типов, встроенное метапрограммирование и оптимизированные пути кода делают его быстрее, чем Python, в таких ситуациях, как создание больших матриц Вандермонда и оптимизированный код для определенных полиномов в специальных функциях. Кроме того, оптимизированные пути кода Julia распределяют блоки намного быстрее, чем Python, что делает его лучшим выбором для работы с динамическими структурами данных, такими как массивы. Наконец, в видео обсуждаются возможности Джулии по множественной диспетчеризации и выводу типов, позволяющие рекурсивно выводить разные версии функции для разных аргументов и типов.

В этом видео также объясняется, как параметрический полиморфизм работает в Julia и как он позволяет создавать бесконечные семейства типов. Определив параметризованный тип, такой как точечный тип с параметрами для X и Y, и установив для этих параметров подтип real, можно создать целый набор типов, которые могут быть «созданы» с конкретным подтипом. Кроме того, спикер обсуждает возможности и библиотеки Julia для реализации многопоточности, сборки мусора и параллелизма с распределенной памятью, а также широкий спектр поддержки Unicode для идентификаторов. Кроме того, подчеркивается важность наличия переменных с собственными и описательными именами, и выступающий упоминает проект, который исследует слияние технологии Julia с технологией Silk, что может привести к новым разработкам в будущем.

  • 00:00:00 В этом разделе спикер рассказывает о проблемах написания критически важного для производительности кода на высокоуровневых языках с динамической типизацией, таких как Python и Matlab. Хотя эти языки популярны для технических вычислений и интерактивных исследований, они, как правило, упираются в стену производительности, когда дело доходит до написания кода, критичного для производительности. В результате люди традиционно используют языки более низкого уровня, такие как Fortran или C, в качестве решения для написания кода, критичного для производительности, но это приводит к значительному увеличению сложности кода и потере универсальности. Затем спикер представляет язык программирования Julia, который должен быть таким же высокоуровневым и интерактивным, как Python, но при этом обеспечивать тот же уровень производительности, что и C. Julia позволяет пользователям писать общий код, который работает для нескольких типов, и пока он был выпущен в 2013 году его последняя версия 1.0 теперь стабильна и обеспечивает обещанную производительность.

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

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

  • 00:15:00 В этом разделе спикер обсуждает использование макроса в Julia для перезаписи выражения, которое устанавливает цикл и время. Используя этот метод, требуется около 11 миллисекунд, чтобы обработать 10 в степени 7 чисел. Затем он переходит к бенчмаркингу в Python, используя пакет под названием pycall, который позволяет вызывать функции Python из Джулии. Он отмечает, что, хотя функция sum в Python написана на C и поэтому работает относительно хорошо, тот факт, что списки Python могут состоять из элементов любого типа, означает, что она должна быть структурирована таким образом, чтобы она работала медленнее, чем C. для Джулии, которая допускает неоднородность таким образом, чтобы не ставить под угрозу производительность.

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

  • 00:25:00 В этом разделе спикер обсуждает, как можно сделать быстрый компилятор Python для кода Python. Однако ему не хватает возможности обеспечить быстрый путь для проверки того, все ли типы одинаковы в Python, а это означает, что при каждой итерации цикла он должен выделять новое поле для результата и динамически искать плюсовую функцию, что делает его помедленнее. Встроенный Python оказался намного медленнее, чем код C и NumPy. Тип массива в Julia имеет прикрепленный к нему тип, что делает его более похожим на массив NumPy в памяти, а эквивалент списка Python, называемый массивом any, оказался даже медленнее, чем чистый Python. Julia оптимизировала свои пути кода, чтобы выделять множество блоков намного быстрее, чем Python.

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

  • 00:35:00 В этом разделе спикер объясняет, как язык программирования Julia компилирует специализированные версии функций в зависимости от типа передаваемого в функцию аргумента. Например, если функции f от x равно x плюс один, передается 64-битное целое число, Джулия компилирует специализированную версию этой функции для этого типа. Процесс перехода от входных типов к предполагаемым типам выходных данных называется выводом типа. Спикер отмечает, что Julia — динамический язык, поэтому вывод типов может дать сбой, а если и произойдет, то он вернется к C.

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

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

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

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

  • 01:05:00 В этом разделе спикер объясняет, как работает параметрический полиморфизм в Julia и как он позволяет создавать бесконечные семейства типов. Определив параметризованный тип, такой как точечный тип с параметрами для X и Y, и установив для этих параметров подтип real, можно создать целый набор типов, которые могут быть «созданы» с конкретным подтипом. Это обеспечивает гибкость типов данных без ущерба для производительности или универсальности. Компилятор достаточно умен, чтобы хранить эти типы в последовательной памяти и оптимизировать функции суммирования с помощью узких циклов. Эти параметризованные типы дополняют высокоуровневый синтаксис Julia и избавляют от необходимости писать код C для оптимизации производительности.

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

  • 01:15:00 В этом разделе спикер описывает некоторые технические аспекты Julia, такие как реализация массивов и параметризованных типов. Джулия старается не создавать слишком много привилегированных типов и вместо этого позволяет пользовательскому коду быть таким же хорошим, как и встроенный код. У Джулии есть конкретные типы, которые являются окончательными и не могут иметь подтипов, которые могут вызвать ошибки. Например, подтип массива не будет фактическим массивом этого типа, но может вызвать проблемы с компилятором для функции, которая использует этот массив. Компилятор использует LLVM для генерации машинного кода после нескольких проходов, включая синтаксический анализ, перезапись макросов и вывод типов. Джулия также обладает возможностями метапрограммирования, позволяя пользователям изменять синтаксис и переписывать код. Генерация кода возможна с многомерными массивами, а параллельные средства менее продвинуты, чем такие языки, как Silk, но язык не имеет глобальной блокировки интерпретатора, как Python.

  • 01:20:00 В этом разделе спикер обсуждает различные возможности и библиотеки, предоставляемые Джулией для реализации многопоточности, сборки мусора и параллелизма с распределенной памятью. Также представлены тип BigNum и библиотека BigFloat, которые позволяют манипулировать большими и точными числами. Докладчик отмечает, что Julia имеет широкий спектр поддержки Unicode в качестве идентификаторов и позволяет завершать символы LaTeX с помощью табуляции, что может быть полезно при наборе уравнений. Также упоминается заимствование этой функции Python.

  • 01:25:00 В этом разделе спикер обсуждает важность наличия переменных с собственными и описательными именами в динамических языках. Он упоминает, что имена переменных в определенном формате могут сделать код более читабельным и понятным. Затем спикер благодарит докладчика и упоминает проект, в котором исследуется слияние технологии Julia с технологией Silk, что может привести к новым разработкам в будущем.
23. High Performance in Dynamic Languages
23. High Performance in Dynamic Languages
  • 2019.09.23
  • www.youtube.com
MIT 6.172 Performance Engineering of Software Systems, Fall 2018Instructor: Steven JohnsonView the complete course: https://ocw.mit.edu/6-172F18YouTube Playl...
 

Ричард Фейнман: Могут ли машины думать?



Ричард Фейнман: Могут ли машины думать?

В видео «Ричард Фейнман: Могут ли машины думать?» Фейнман утверждает, что, хотя машины лучше людей во многих вещах, таких как арифметика, решение проблем и обработка больших объемов данных, машины никогда не достигнут человеческого мышления и интеллекта. Машины борются с распознаванием изображений из-за таких сложностей, как различия в освещении и расстоянии, и, хотя компьютеры распознают закономерности, они не могут сами обнаруживать новые идеи и взаимосвязи. Фейнман также обсуждает эффективность использования машин для предсказания погоды и других сложных задач, приводя в пример человека по имени Люмик, который использовал список эвристик, чтобы выиграть чемпионат по морским играм в Калифорнии. Чтобы создать интеллектуальные машины, Фейнман предлагает разработчикам избегать скрытно развивающихся психологических искажений и вместо этого сосредоточиться на поиске новых способов избежать труда, поскольку машины демонстрируют необходимые слабости интеллекта.

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

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

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

  • 00:15:00 В этом разделе Ричард Фейнман обсуждает машину, которая разрабатывалась для решения проблем и поиска новых эвристик. В машине было несколько ошибок, одна из которых была связана с эвристикой, которой присваивалось значение каждый раз, когда машина находила решение. Это заставляло машину неоднократно использовать эту эвристику, что приводило к искажению результатов. Фейнман предполагает, что для того, чтобы создать интеллектуальную машину, разработчикам следует избегать скрытого развития каких-либо психологических искажений и сосредоточиться на поиске новых способов избежать труда. В заключение он заявляет, что машины демонстрируют необходимые слабости интеллекта.
Richard Feynman: Can Machines Think?
Richard Feynman: Can Machines Think?
  • 2019.11.25
  • www.youtube.com
This is a Q&A excerpt on the topic of AI from a lecture by Richard Feynman from September 26th, 1985.This is a clip on the Lex Clips channel that I mostly us...
 

Взгляд на ИИ : Илья Суцкевер



Взгляд на ИИ : Илья Суцкевер

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

  • 00:00:00 В этом разделе Илья Суцкевер рассказывает о своем раннем интересе к ИИ и сознанию и о том, как это привело его к машинному обучению, которое он считал наиболее важным аспектом искусственного интеллекта в то время. Он отмечает, что в 2003 году идея компьютерного обучения была еще совершенно недоступна, поскольку самым большим достижением в области ИИ в то время был Deep Blue, шахматный движок. Затем Суцкевер рассказывает, как ему удалось найти Джеффа Хинтона, профессора Университета Торонто, и начать с ним работать, что в конечном итоге привело к их совместной работе над сверточной нейронной сетью AlexNet в 2012 году.

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

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

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

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

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

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

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

  • 00:40:00 В этом разделе Илья Суцкевер обсуждает роль ИИ в демократии, предполагая, что ИИ может открыть форму демократии с высокой пропускной способностью, когда люди имеют возможность вводить данные, чтобы указать, как должны вести себя системы. Однако Суцкевер ставит под сомнение способность ИИ понимать и анализировать все переменные в данной ситуации. Учитывая, что даже компании среднего размера могут быть непостижимы для любого отдельного человека, он предполагает, что ИИ может быть невероятно полезным практически в любой ситуации, если он будет построен правильно.
Ilya Sutskever
Ilya Sutskever
  • 2023.03.15
  • www.youtube.com
Ilya Sutskever, a cofounder and chief scientist of OpenAI and one of the primary minds behind the large language model GPT-4 and it’s public progeny, ChatGPT...
 

Математика для машинного обучения — математический анализ многих переменных



Математика для машинного обучения — многомерный матанализ

  1. Это видео на YouTube является частью онлайн-специализации «Многомерное исчисление», целью которой является интуитивное и графическое понимание основных концепций исчисления для поддержки машинного обучения. Видео охватывает ряд концепций, включая дифференцирование, цепное правило, правило произведения, функции особого случая и частичное дифференцирование, и подчеркивает важность понимания основ математики, чтобы в полной мере насладиться ее интригующими приложениями. Видео также представляет многомерное исчисление, которое позволяет нам применять исчисление для навигации в многомерных пространствах и анализа многомерных данных с использованием частичного дифференцирования и концепции полной производной.

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

  3. 3-я часть видео охватывает различные аспекты многомерного исчисления, начиная с ряда Тейлора как инструмента для аппроксимации функций полиномиальными рядами для построения аппроксимации исходной функции в близких точках. Затем он переходит к методу Ньютона-Рафсона, который использует только градиент для перехода к решению, и концепцию градиента, вектора, который сочетает в себе линейную алгебру и исчисление. Кроме того, в видео объясняется метод множителей Лагранжа, который полезен при решении задач оптимизации с ограничениями. Наконец, в видео показано, как сопоставить функции с данными с помощью метода наименьших квадратов, который может помочь выявить физические взаимосвязи и гипотезы между переменными. В целом, видео представляет собой исчерпывающий обзор практических приложений многомерного исчисления в машинном обучении.

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

Часть 1

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

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

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

  • 00:15:00 В этом разделе видео объясняет понятие дифференцирования и то, как оно используется для нахождения градиента функции. Процесс включает в себя принятие предела, когда Delta X приближается к нулю выражения (f (x + Delta X) - f (x)) / Delta X, что дает наклон касательной в этой точке. В видео приведены примеры нахождения градиента простых линейных и квадратичных функций этим методом, демонстрирующие взаимозаменяемость правила сумм. Результирующие градиенты являются константой и функцией x соответственно.

  • 00:20:00 В этом разделе инструктор объясняет силовое правило для дифференциации. Если мы возьмем функцию f от X равно AX в степени B и продифференцируем ее, результатом будет f тире X равно ABX в степени B минус 1, что известно как правило степени. Преподаватель также упоминает, что дифференциация может стать утомительной для длинных и сложных выражений. Чтобы ускорить процесс, мы можем использовать такие правила, как правила суммы и мощности. Затем видео переходит к объяснению трех функций специального случая, которые дают нам интересные результаты при дифференцировании. Первая функция — f от X равно 1 относительно X, что показывает разрыв при x равном 0. Преподаватель применяет выражение дифференцирования к этой функции, чтобы исследовать ее градиент.

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

  • 00:30:00 В этом разделе видео объясняет правило произведения, удобный ярлык для дифференциации произведения двух функций. Правило позволяет математикам избежать утомительного процесса вычисления производных при работе с относительно простыми функциями. Правило описывается с помощью прямоугольника, одна сторона которого представляет собой функцию f от x, а другая сторона — функцию g от x. Произведение этих двух функций дает нам площадь прямоугольника, которую можно назвать a от x. Путем деления прямоугольника на четыре области производятся боковые изменения с небольшими значениями Delta X, а самый маленький прямоугольник, который будет уменьшаться быстрее всего, может быть проигнорирован. Окончательное выражение для производной от a по x равно f от x, умноженной на производную от G от X, плюс G от X, умноженное на производную от f от x.

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

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

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

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

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

Часть 2

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

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

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

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

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

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

  • 01:30:00 В этом разделе видео рассказывается, как работает цепное правило для более чем двух ссылок, на примере одномерного анализа с тремя функциями. Затем видео знакомит с многомерным случаем, где цепное правило все еще работает, но с дополнительным вниманием к деталям, таким как матрица Якоби. Производная F по T - это произведение якобиана F с якобианом X и вектором производной U, что приводит к скалярному выходу. Эта концепция имеет решающее значение для искусственных нейронных сетей и их применения в реальных задачах.

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

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

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

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

  • 01:55:00 В этом разделе видео обсуждается процесс создания аппроксимаций функции более высокого порядка с использованием многомерного исчисления. Он начинается с нахождения приближений первого и второго порядка с использованием такой информации, как F(0), F'(0) и F''(0), для создания квадратных уравнений. Затем видео переходит к обсуждению приближений третьего и четвертого порядка, показывая, что можно добавлять кусочно члены более высокого порядка, сохраняя при этом члены более низкого порядка. В видео также отмечается, что коэффициент перед кубическим членом в кубическом приближении появился в результате двойного дифференцирования кубического члена. В целом видео демонстрирует полезность многомерного исчисления для аппроксимации сложных функций.

Часть 3

  • 02:00:00 В этом разделе дополнительно применяется понятие степенного ряда, в котором мы дифференцируем функцию «от е до х» почленно и нашли что-то удовлетворяющее, что остается неизменным. Ряд Тейлора признает, что нет ничего особенного в точке x, равной 0, и говорит, что если вы знаете все о функции в любой точке, то вы можете восстановить функцию в любом месте. Начиная с точки x, равной P, можно скорректировать немецкое уравнение, чтобы разрешить произвольные точки расширения. Член нулевого порядка будет горизонтальной линией, которая везде использует только точку F точки P, и чтобы построить касательную к кривой в точке P, мы должны записать всю доступную информацию и использовать градиент функции.

  • 02:05:00 В этом разделе докладчик представляет ряд Тейлора как полезный инструмент для аппроксимации функций полиномиальными рядами. Он демонстрирует, как преобразовать ряд Маклорена в общую форму ряда Тейлора, применив вторую производную в точке P и заменив X на X минус P. Полученное выражение для одномерного ряда Тейлора можно использовать для удобного повторного выражения функций в виде полиномиального ряда. Докладчик также показывает, как построить разложение функции косинуса в ряд Маклорена, и использует этот пример для объяснения циклического паттерна косинусов и синусов, отсутствия нечетных степеней X в ряду и использования записи суммирования для полного описания ряд. Раздел заканчивается напоминанием о том, что нужно быть осторожным при работе с аппроксимациями рядов и знать область, в которой они приемлемы.

  • 02:10:00 В этом разделе спикер обсуждает, как ряд Тейлора может с трудом справляться с плохо работающей функцией, такой как 1/X, из-за ее разрыва при x = 0, что приводит к неопределенным значениям. Однако, перейдя в другое место, например, x = 1, и применив ряд Тейлора с аккуратным обозначением суммирования, можно построить последовательность улучшающих приближений к функциям. Затем в видео исследуется ожидаемая ошибка в приближении и как использовать приближение первого порядка для оценки функции вблизи точки P. Докладчик упоминает, что ошибку можно точно рассчитать, что дает возможность оценить, насколько точным будет любое заданное приближение. .

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

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

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

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

  • 02:35:00 В этом разделе объясняется концепция градиента — вектора, объединяющего линейную алгебру и исчисление. Град определяется как вектор, в котором мы записываем DF по DX и DF по DY в координатах X и Y вектора. Направленный градиент вводится как скалярное произведение градиента F на единичный вектор, параллельный градиенту F, а максимальное значение направленного градиента равно размеру градиента F. Направление, в котором указывают градиенты, объясняется как направление наискорейшего спуска перпендикулярно контурным линиям. Наконец, обсуждается использование градиента для минимизации разницы между значениями данных и соответствием модели.

  • 02:40:00 в том, что X в квадрате плюс Y в квадрате равно A в квадрате, что означает, что все точки, на которые мы смотрим, находятся на окружности с радиусом A. Чтобы найти максимумы или минимумы на этом пути, мы можем использовать метод множителей Лагранжа. Это включает в себя поиск, где вектор градиента, перпендикулярный контуру функции, находится в том же направлении, с точностью до знака минус, что и вектор градиента, перпендикулярный пути окружности. Это даст нам точки, где контур просто касается пути, где мы найдем минимумы и максимумы. Этот подход позволяет решать задачи оптимизации с учетом ограничений, таких как нахождение максимального или минимального значения функции на определенном пути.

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

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

  • 02:55:00 В этом разделе видео лектор объясняет, как найти оптимальное значение m и c, используя невязку R и меру качества подгонки, называемую хи-квадрат. Он определяет R как разницу между элементами данных и их предсказанным положением на линии, а хи-квадрат - как сумму квадратов остатков. Построив график того, как будет выглядеть хи-квадрат для множества различных возможных значений М и С, он находит минимум на уровне около 215 и вблизи точки пересечения 0. Минимум находится, когда градиент хи-квадрат равен нулю. . Затем лектор объясняет, как решить задачу в явном виде, а затем показывает, как это сделать с помощью линейного спуска. Он также объясняет, как получить представление о неопределенностях в подгоночных параметрах.

Часть 4

  • 03:00:00 В этом разделе обсуждается концепция подгонки линии к некоторым данным с помощью регрессии, и вводится хи-квадрат оценки качества подгонки, который измеряет отклонение подгонки от данных. Подчеркивается важность визуального сравнения подгонки, а также тот факт, что точка пересечения зависит от градиента. Задача переформулирована как расположение центра масс в y на y-баре, чтобы устранить неопределенность в градиенте при рассмотрении постоянного члена в подгонке. Затем в видео рассказывается о подгонке функций, которые сколь угодно сложнее линейной регрессии, а параметры подбираются к данным с использованием нелинейного метода наименьших квадратов, где хи-квадрат рассчитывается как сумма по всем точкам данных разница между YI и моделью XI с ее параметрами a K, разделенными на сигма в квадрате.

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

  • 03:10:00 В этом разделе, посвященном многомерному исчислению, в видео объясняются различные методы решения нелинейных задач наименьших квадратов, в том числе использование гессиана для более быстрой сходимости, метод Левенберга-Марквардта для устойчивости и робастная аппроксимация для обработки выбросов. Затем видео демонстрирует, как использовать MATLAB и Python для выполнения нелинейной аппроксимации кривой наименьших квадратов на примере подбора распределения Гаусса к данным о росте населения. Это подчеркивает важность начала с разумного предположения для начальных параметров, чтобы гарантировать, что алгоритм может сходиться к значимому минимуму.

  • 03:15:00 В этом разделе спикер подчеркивает важность создания хорошего начального предположения и сравнения подгонки с данными при подгонке данных к функциям. Они завершают обсуждение использования многомерного исчисления для оптимизации функций и подгонки данных к функциям, отмечая, что с вычислительной точки зрения легко подогнать функции всего к нескольким строкам кода в Python, MATLAB или R. Однако докладчик отмечает важность понимания как алгоритмы работают под капотом и как их исправить, если что-то пойдет не так. Курс предоставил вводное понимание многомерного исчисления для машинного обучения, от определения производной до того, как его можно применять в нейронных сетях и линейной регрессии, что позволило интуитивно понять, где исчисление может быть полезным.
Mathematics for Machine Learning - Multivariate Calculus - Full Online Specialism
Mathematics for Machine Learning - Multivariate Calculus - Full Online Specialism
  • 2019.11.15
  • www.youtube.com
Welcome to the “Mathematics for Machine Learning: Multivariate Calculus” course, offered by Imperial College London. This video is an online specialisation ...
 

Серия спикеров ETL: Илья Суцкевер, OpenAI



Серия спикеров ETL: Илья Суцкевер, OpenAI

В видео на YouTube под названием «ETL Speaker Series: Илья Суцкевер, OpenAI» Илья Суцкевер, соучредитель и главный научный сотрудник OpenAI, обсуждает такие темы, как большие языковые модели, предпосылки искусственных нейронов, сознание в ИИ и финансовую структуру некоммерческие организации ИИ. Суцкевер подчеркивает важность технического прогресса и хороших исследований для успеха OpenAI и призывает студентов, интересующихся ИИ и предпринимательством, исследовать свои уникальные идеи. Он также предсказывает, что улучшения на различных уровнях стека глубокого обучения и специализированной подготовки окажут огромное влияние в будущем. Наконец, ведущие благодарят Суцкевера за его содержательную дискуссию и приглашают его снова на будущие мероприятия, а также направляют зрителей на веб-сайт электронного уголка Стэнфорда для получения дополнительных ресурсов по предпринимательству и инновациям.

  • 00:00:00 В этом разделе Рави Балани представляет Илью Суцкевера, соучредителя и главного научного сотрудника OpenAI, который известен как основатель, стоящий за выпуском генеративной модели большого языка с предварительным обучением Transformer 3 (GPT-3) и сопутствующий продукт Chat GBT. Балани объясняет прошлое Суцкевера как русско-израильского иммигранта, изучавшего математику и информатику в Израиле, а затем получившего докторскую степень в Университете Торонто. Суцкевер считается движущей силой AlexNet, которая стала известна тем, что начала революцию в области глубокого обучения, которая привела к нынешнему ландшафту ИИ. Затем Суцкевер объясняет предпосылку модели большого языка и то, как она черпает вдохновение из биологических нейронов в человеческом мозгу.

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

  • 00:10:00 В этом разделе Илья Суцкевер, соучредитель OpenAI, обсуждает различия между тем, как учатся нейронные сети, и тем, как учатся люди. Нейронные сети хорошо разбираются в математике или программировании; однако им нужно много данных, чтобы достичь такого уровня знаний. С другой стороны, люди могут глубоко что-то понять, несмотря на то, что прочитали лишь небольшое количество документов. Когда дело доходит до обсуждения точки сингулярности, когда машины превзойдут человеческое обучение и адаптацию, Суцкевер не знает, когда эта точка наступит. Достижения должны произойти, и неопределенность высока. Сложно дать определение Сознанию, но это неизбежность, которую необходимо протестировать в системах ИИ.

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

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

  • 00:25:00 В этом разделе Илья Суцкевер, соучредитель OpenAI, объясняет финансовую структуру таких некоммерческих организаций, как их, которые занимаются искусственным интеллектом (ИИ). Этим компаниям требуются большие средства для поддержки больших нейронных сетей, которые больше не могут поддерживаться университетами, поскольку их стоимость стала слишком высокой. Таким образом, некоммерческие организации, такие как OpenAI, финансируемые за счет пожертвований, предлагают компаниям, занимающимся искусственным интеллектом, возможность внести свой вклад в науку. Финансовая структура OpenAI уникальна; это не коммерческая корпорация, а «компания с ограниченной прибылью». Собственный капитал в OpenAI — это облигация с конечным обязательством перед инвесторами. После выплаты OpenAI снова становится некоммерческой. Хотя это может показаться безумием, эта структура необходима, потому что ИИ становится все более заметным, и для компаний, занимающихся ИИ, может быть более выгодно поддерживать некоммерческие инвестиции. Microsoft является одним из инвесторов OpenAI, и OpenAI проводит с ними обсуждения AGI (Искусственный общий интеллект), поскольку они понимают потенциал AGI и его влияние на мир.

  • 00:30:00 В этом разделе Илья Суцкевер обсуждает фидуциарную обязанность OpenAI и потенциальные риски для инвесторов. Он отличает OpenAI от DeepMind, поскольку OpenAI принадлежит некоммерческой организации, которая имеет GP или LP в разделе для коммерческих организаций. Кроме того, Суцкевер делится своими мыслями о необходимости государственного регулирования и тщательной оценки более мощных нейронных сетей, чтобы добиться разумного прогресса, который был тщательно проверен или сертифицирован. Что касается этических обязательств, он признает важность гражданских обязательств, но ставит во главу угла процветание Соединенных Штатов, где он проживает.

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

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

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

  • 00:50:00 В этом разделе ведущие благодарят Илью Суцкевера за содержательную дискуссию об искусственном интеллекте и глубоком обучении. Они приглашают его снова на будущие мероприятия и напоминают аудитории о предстоящих сессиях ETL с участием лидеров отрасли. Они также направляют зрителей на веб-сайт электронного уголка Стэнфорда, где можно найти дополнительные ресурсы по предпринимательству и инновациям.
ETL Speaker Series: Ilya Sutskever, OpenAI
ETL Speaker Series: Ilya Sutskever, OpenAI
  • 2023.04.19
  • www.youtube.com
Ilya Sutskever is the co-founder and chief scientist of OpenAI, which aims to build artificial general intelligence that benefits all of humanity. He leads r...
 

Илья Суцкевер (главный научный сотрудник OpenAI) — создание ОИИ, мировоззрение, шпионы, Microsoft и просветление



Илья Суцкевер (главный научный сотрудник OpenAI) — создание ОИИ, мировоззрение, шпионы, Microsoft и просветление

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

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

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

  • 00:10:00 В этом разделе главный научный сотрудник OpenAI Илья Суцкевер обсуждает важность взаимодействия человека и машины при создании систем с расширенными возможностями рассуждения, а также необходимость специального обучения для улучшения многоступенчатых рассуждений в моделях машинного обучения. Он также обращается к опасениям по поводу нехватки данных и предполагает, что переход на мультимодальные перевозки может быть ценным направлением для получения большего количества данных. Хотя в прошлом робототехника не была подходящим направлением для OpenAI из-за нехватки данных, сейчас может быть больше потенциала для прогресса в этой области, но это требует твердой приверженности и преданности делу. Наконец, Суцкевер выражает воодушевление по поводу будущих идей, которые могут не работать с текущими аппаратными ограничениями.

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

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

  • 00:25:00 В этом разделе главный научный сотрудник OpenAI Илья Суцкевер обсуждает аппаратное обеспечение в ИИ и развенчивает мнение о том, что пользовательский TPU Google дает им преимущество перед графическими процессорами. Он объясняет, что принципиально архитектура TPU и GPU очень похожа, и единственное, что имеет значение в аппаратном обеспечении, — это стоимость на флоп и общая стоимость системы. Суцкевер также делится своими мыслями о работе, связанной с разработкой ИИ, которая включает в себя понимание системы и результатов, а не просто придумывание новых идей. Он также рассказывает о партнерстве OpenAI с Microsoft и о том, насколько уязвима экосистема ИИ для таких неудач, как стихийное бедствие на Тайване.

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

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

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

  • 00:45:00 В этом разделе Илья Суцкевер отвечает на последний вопрос о том, почему существует сильная корреляция между тем, чтобы быть первым в революции глубокого обучения и по-прежнему оставаться одним из ведущих исследователей. Он считает, что настойчивость является необходимым, но недостаточным условием успеха. Многие вещи должны сойтись воедино, и нужно иметь правильный взгляд на вещи. Трудно ответить на этот вопрос, но он очень старался, и пока этого оказалось достаточно.
Ilya Sutskever (OpenAI Chief Scientist) - Building AGI, Alignment, Spies, Microsoft, & Enlightenment
Ilya Sutskever (OpenAI Chief Scientist) - Building AGI, Alignment, Spies, Microsoft, & Enlightenment
  • 2023.03.27
  • www.youtube.com
Asked Ilya Sutskever (Chief Scientist of OpenAI) about - time to AGI- leaks and spies- what's after generative models- post AGI futures- working with MSFT an...
 

Урок 1: Практическое глубокое обучение для программистов 2022 г.



Урок 1: Практическое глубокое обучение для программистов 2022 г.

В этом видео YouTube «Урок 1: Практическое глубокое обучение для кодеров 2022» инструктор представляет курс, подчеркивая быстрые темпы изменений в глубоком обучении и демонстрируя простоту создания системы «птица или не птица» с использованием Python. Курс направлен на то, чтобы показать людям, как сначала создавать и развертывать модели, а не начинать с обзора линейной алгебры и исчисления, и будет охватывать ряд моделей глубокого обучения, включая алгоритмы на основе изображений, которые могут классифицировать звуки или движения мыши. Преподаватель подчеркивает важность создания блоков данных, понимания детекторов признаков и использования предварительно обученных моделей для снижения требований к кодированию. Курс также охватывает сегментацию и табличный анализ, а fast.ai предлагает лучшие практики, которые помогают сократить кодирование и улучшить результаты.

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

  • 00:00:00 В этом разделе инструктор представляет первый урок Практического глубокого обучения для программистов версии 5, подчеркивая, как много изменилось с момента последнего обновления курса. Он использует юмористический комикс XKCD конца 2015 года в качестве примера того, как быстро развиваются события в области глубокого обучения. Затем он демонстрирует создание системы «птица или не птица» с использованием Python, которая включает в себя загрузку и изменение размера изображений птиц и лесов, создание блока данных с помощью fast.ai и отображение некоторых загруженных изображений. Преподаватель подчеркивает, что курс предоставит гораздо больше деталей и что цель этого раздела — дать краткий общий обзор.

  • 00:05:00 В этом разделе ведущий демонстрирует демонстрацию того, как легко создать модель компьютерного зрения и определить, содержит ли изображение птицу или лес, всего по 200 изображений каждого. То, что раньше было почти невозможным, теперь стало легко доступным благодаря глубокому обучению, и ведущий приводит пример DALLꞏEꞏ2, алгоритма, который генерирует новые изображения из обычного текста. Эти недавние достижения в области глубокого обучения являются свидетельством того, как быстро развивается эта область, и докладчик отмечает, что она доступна, не требуя большого количества кода, математики или чего-то большего, чем портативный компьютер.

  • 00:10:00 В этом разделе спикер обсуждает возможности моделей глубокого обучения и то, как они выполняют задачи, которые когда-то считались невыполнимыми для компьютеров. Они упоминают, как глубокое обучение используется в художественных и языковых моделях, таких как языковая модель путей Google, которая может объяснить ответ на шутку. Спикер также признает необходимость учета этических соображений в глубоком обучении и рекомендует пройти курс по этике данных на сайтеethics.fast.ai. Затем они представляют онлайн-версию системы цветных кубков, чтобы проверить, как идут дела у студентов, и благодарят Радека за ее создание, который только что объявил, что получил работу своей мечты в Nvidia AI.

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

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

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

  • 00:30:00 В этом разделе инструктор обсуждает популярность Pytorch по сравнению с Tensorflow в мире глубокого обучения, при этом Pytorch быстро растет и превосходит Tensorflow в исследовательских репозиториях и среди исследователей. Однако он отмечает, что Pytorch может потребовать много кода для относительно простых задач, и здесь пригодится библиотека fast.ai. Библиотека fast.ai построена на основе Pytorch и предоставляет лучшие практики, которые помогают сократить объем необходимого кода и улучшить результаты. Преподаватель также представляет блокнот Jupyter, веб-приложение, широко используемое в промышленности, академических кругах и при обучении науке о данных, и упоминает облачные серверы, такие как Kaggle, которые можно использовать для запуска блокнотов Jupyter.

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

  • 00:40:00 В этом разделе спикер обсуждает использование внешних библиотек и знакомит с некоторыми библиотеками fast.ai, такими как «fastdownload» и «resize_images». Они также объясняют важность команды блока данных, которая используется для ввода данных в модель. Блок данных имеет пять основных параметров для указания, включая тип ввода, тип вывода, тип метки и элементы, на которых нам нужно обучаться. Спикер подчеркивает, что понимание блока данных имеет решающее значение для практиков глубокого обучения, поскольку настройка архитектуры нейронной сети редко встречается на практике, и этот курс ориентирован на практическое глубокое обучение.

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

  • 00:50:00 В этом разделе инструктор обсуждает, как использовать предварительно обученные модели в fast.ai для задач компьютерного зрения с использованием библиотеки моделей изображений pytorch (timm). Семейства моделей resnet достаточно для большинства случаев использования, но для использования доступно множество других моделей. Преподаватель демонстрирует, как точно настроить модель для конкретной задачи, такой как распознавание изображений птиц в лесу, и как развернуть модель с помощью метода predict(). Преподаватель также отмечает, что существует множество других типов моделей, помимо компьютерного зрения, включая сегментацию.

  • 00:55:00 В этом разделе спикер объясняет сегментацию, которая используется для окрашивания каждого пикселя изображения в соответствии с тем, что он представляет. Используя небольшой объем данных и минимальный код, докладчик показывает, как можно обучить модель сегментировать изображения дорожных сцен на различные категории, такие как автомобили, заборы и здания, всего за 20 секунд, при этом обученная модель будет близка к идеальной после 2 минуты. Докладчик объясняет, что для обработки данных можно использовать специальные классы загрузчиков данных, требующие еще меньше кода для часто встречающихся наборов данных. Затем докладчик переходит к объяснению табличного анализа и тому, как он широко используется в таких отраслях, как прогнозирование столбцов электронных таблиц и таблиц данных. Предоставляя аналогичную информацию блокам данных и используя диспетчеризацию типов, вы можете использовать fast.ai для автоматического выполнения правильных действий с вашими данными, независимо от их типа.
  • 01:00:00 В этом разделе урок охватывает два типа моделей: табличное обучение и совместную фильтрацию. Табличные модели используются для данных без предварительно обученной модели, где таблицы данных сильно различаются. Совместная фильтрация является основой для большинства систем рекомендаций и работает путем поиска похожих пользователей на основе того, какие продукты им нравятся. Набор данных совместной фильтрации будет иметь идентификатор пользователя, идентификатор продукта (например, фильма) и рейтинг. Далее в уроке показано, как создавать загрузчики данных с совместной фильтрацией, и обсуждаются различия между тонкой настройкой и подгонкой модели.

  • 01:05:00 В этом разделе спикер рассказывает о полезности блокнотов Jupyter как инструмента для создания и обмена кодом, в том числе о том, что вся библиотека fast.ai написана в блокнотах. Кроме того, спикер затрагивает текущее состояние глубокого обучения и его приложений в различных областях, включая НЛП, компьютерное зрение, медицину, рекомендательные системы, игровые игры и робототехнику. Докладчик отмечает, что глубокое обучение смогло превзойти самые современные результаты во многих областях и что оно, как правило, хорошо справляется с задачами, которые человек может выполнить достаточно быстро.

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

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

  • 01:20:00 В этом разделе видео инструктор делится несколькими примерами проектов, над которыми работали бывшие студенты курса «Практическое глубокое обучение для программистов», что привело к новым стартапам, научным статьям и предложениям о работе. Эти проекты включают в себя классификацию различных типов людей в зависимости от того, где они живут, создание классификатора кабачков и огурцов, точную классификацию спутниковых изображений по 110 различным городам и определение состояния зданий для усилий по обеспечению устойчивости к стихийным бедствиям. Некоторые студенты даже превзошли самые современные достижения в своих областях, таких как классификатор звука и секвенирование нормальных опухолей. Преподаватель призывает нынешних и будущих студентов начать создавать проекты, независимо от их уровня опыта, и делиться ими на форуме для обратной связи и поддержки.
Lesson 1: Practical Deep Learning for Coders 2022
Lesson 1: Practical Deep Learning for Coders 2022
  • 2022.07.21
  • www.youtube.com
Go to https://course.fast.ai for code, notebooks, quizzes, etc. This course is designed for people with some coding experience who want to learn how to apply...
 

Урок 2: Практическое глубокое обучение для программистов 2022 г.



Урок 2: Практическое глубокое обучение для программистов 2022 г.

Эта серия видеороликов на YouTube представляет собой введение в глубокое обучение для программистов. Он охватывает такие темы, как подготовка данных, создание модели и развертывание модели машинного обучения.

В этом видео хакер Джереми Ховард учит людей создавать собственные веб-приложения с помощью глубокого обучения. Он рассказывает, как настроить проект в Git, как использовать пространство для обнимания лица для загрузки модели для обучения, как обрабатывать естественный язык и как распознавать текст.

  • 00:00:00 Этот урок посвящен практическому глубокому обучению для программистов в 2022 году. Преподаются новые передовые методы, которые помогут учащимся лучше запоминать материал. Курс идет с книгой, а викторины доступны, чтобы помочь студентам проверить свои успехи.

  • 00:05:00 В этом видео рассказывается об основах глубокого обучения кодированию, в том числе о том, как находить данные, очищать данные и запускать модель в производство. Следующее видео из серии покажет, как это сделать.

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

  • 00:15:00 В этом видео представлена техника глубокого обучения: RandomResizedCrop. Это используется для повышения точности распознавания изображений. Также обсуждается увеличение данных, и показано, что если вы хотите обучать модель глубокого обучения более пяти или десяти эпох, вам следует использовать RandomResizedCrop и «aug_transforms».

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

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

  • 00:30:00 В этом видео показано, как использовать Git для управления кодом и как использовать терминал для работы с кодом. В видео также рассказывается, как использовать VS Code для редактирования кода.

  • 00:35:00 В этом руководстве объясняется, как создать модель глубокого обучения с использованием нескольких различных методов, включая пример Kaggle и пример Colab. После создания модели ее можно загрузить и скопировать в тот же каталог, что и код.

  • 00:40:00 В этом уроке автор показывает, как использовать обученного ученика, чтобы предсказать, является ли изображение собакой или кошкой. Учащийся застыл во времени, и его можно легко загрузить и выгрузить.

  • 00:45:00 В этом видео объясняется, как создать интерфейс Gradio для преобразования изображений в классификации и как создать для этого скрипт Python.

  • 00:50:00 На этом уроке инструктор демонстрирует, как создать простую модель PyTorch и загрузить ее в Gradio. Он также предоставляет инструкции по использованию fastsetup для установки PyTorch и Jupyter Notebooks на компьютер.

  • 00:55:00 В этом видео приведены инструкции по установке Python и некоторых необходимых библиотек для глубокого обучения, включая Pytorch и Numpy. Автор рекомендует использовать дистрибутив Python на основе conda, такой как mambaforge, вместо системного Python. Наконец, автор рекомендует установить nbdev для использования Jupyter Notebook.

  • 01:00:00 На этом уроке инструктор демонстрирует, как использовать Gradio, бесплатную платформу для обучения моделей глубокого обучения, для создания веб-сайта, предсказывающего имена кошек и собак. Хотя Streamlit более гибок, чем Gradio, обе платформы бесплатны и просты в использовании.

  • 01:05:00 В этом видео объясняется, как создавать модели глубокого обучения с помощью Javascript. Учебное пособие включает многофайловую версию и HTML-версию одной и той же модели.

  • 01:10:00 В этом видео объясняется, как создать базовое приложение для глубокого обучения, используя только Javascript и браузер. После создания приложения вы можете использовать FastPages, чтобы создать для него веб-сайт, который выглядит как приложение.

  • 01:15:00 В этом видео хакер Джереми Ховард учит людей создавать собственные веб-приложения с помощью глубокого обучения. Сначала он обсуждает, как настроить простой проект в Git, а затем показывает, как использовать пространство обнимающего лица для загрузки модели для обучения. Далее он обсуждает обработку естественного языка, объясняя, как модели работают внутри. Наконец, он демонстрирует, как можно использовать глубокое обучение для распознавания текста.
Lesson 2: Practical Deep Learning for Coders 2022
Lesson 2: Practical Deep Learning for Coders 2022
  • 2022.07.21
  • www.youtube.com
Q&A and all resources for this lesson available here: https://forums.fast.ai/t/lesson-2-official-topic/9603300:00 - Introduction00:55 - Reminder to use the f...