📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Diffusion Models Just Beat Large Language Models?

Gaurav Sen15:01

Transcription

В сегодняшнем видео мы увидим, что такое диффузионные модели. Они быстро заменяют большие языковые модели для большинства задач. Генерация кода. Генерация изображений. Генерация видео. К концу этого видео вы будете знать, что такое диффузионная модель, чем она полезна и какой внутренний механизм используется такой моделью. Итак, давайте начнем понимать диффузионные модели. Давайте посмотрим, как они генерируют выходные данные. Входной запрос может быть таким: какой лучший язык программирования. В 2026 году. И если у вас есть большая языковая модель, она может сказать: с точки зрения популярности, я бы сказал Python. Здесь большая языковая модель будет генерировать токены один за другим слева направо. Но если бы вы рассмотрели что-то другое, скажем, скорость, то, возможно, вы бы сказали Rust или Go. Это означает, что окончательный вывод, токены, которые идут после "популярности", полностью зависят от того, что вы выбрали "популярность". Но если мы передадим тот же ввод диффузионной модели. Тогда она сгенерирует кучу токенов. Диффузионная модель теперь может итеративно улучшать этот вывод, заменяя некоторые токены. Так, с точки зрения скорости, можно перейти к "с точки зрения безопасности". Я выбираю C++, и она может еще больше уточнить свой ответ, добавляя токены "и скорость". Если бы это была большая языковая модель. После генерации токена "безопасность" у вас не было бы выбора, кроме как следовать этой первоначальной мысли. Но для диффузионной модели нет такого ограничения. Она может генерировать текст, двигаясь вперед и назад, пока вы не получите что-то приемлемое. Почему это так полезно? Подумайте об изображениях, где вы генерируете изображение. Если вы двигаетесь слева направо при генерации изображения, весьма вероятно, что вы допустили ошибку здесь или здесь. Но в авторегрессионной модели вы не можете действительно улучшить это. В случае диффузионной модели, поскольку все изображение постоянно "пузырится", улучшается, вы можете улучшать изображение до тех пор, пока оно не станет приемлемым. Хорошо, это поведение диффузионной модели. Но почему она становится такой популярной? Действительно ли она лучше, чем большая языковая модель? Во многих случаях нет. Большие языковые модели или авторегрессионные модели, в частности. Имеют преимущество в том, что им требуется меньше вычислительных ресурсов. Так что, если вы покупаете много графических процессоров Nvidia и почти исчерпали бюджет, имеет смысл выбрать авторегрессионную модель, которая потребует меньше вычислений, чем диффузионная модель. Однако на данный момент, когда речь идет о тренировке 25 и далее, похоже, что основным узким местом для масштабирования моделей является не вычислительная мощность, а данные. Данные называют ископаемым топливом мира, в том смысле, что вы можете генерировать только определенное количество данных, и их генерация занимает много времени. Получение информации из этих данных еще более сложно, потому что многие данные повторяются. Например, если у меня есть прогнозы погоды, и я даю вам прогноз погоды: 37 градусов, 38 градусов, 30 градусов, 31 градус, то все эти данные просто дают мне информацию о том, что это жаркое место. Количество данных, которое у нас есть в мире, невелико. То, что мы генерируем, тоже не очень много. Мы можем вычислять гораздо больше, чем генерируем, и объем информации, который у вас есть со всеми этими данными, ограничен и невелик. Зная это, диффузионные модели имеют явное преимущество. Одна из вещей заключается в том, что при том же объеме данных диффузионные модели превосходят авторегрессионные модели. Другая вещь заключается в том, что если вы пропускаете данные снова и снова во время обучения, если вы пропускаете их четыре раза для авторегрессионной модели, то для авторегрессионной модели это почти похоже на свежие данные. Причина в том, что как только вы пропускаете эти данные через свою нейронную сеть, она обновляет свои веса. Во второй раз, когда вы пропускаете данные, некоторые веса могут быть неточными или неправильными, или могли слишком сильно измениться. Итак, у вас есть эпоха 1. Затем у вас есть эпоха 2 до эпохи 4. Таким образом, одни и те же данные могут быть повторно использованы, то же самое снова дублируется. С другой стороны, у вас есть диффузионная модель, которая может иметь дубликаты 100 раз, не четыре раза, а 100 раз. Это основная причина, по которой вы, как инженер, заинтересованы в диффузионной модели. У вас нехватка данных. И чтобы получить максимальную отдачу от ограниченных данных, которые у вас есть, вы смотрите на диффузию. Давайте посмотрим, как на самом деле работают диффузионные модели. Во-первых, у вас есть какой-то ввод, который может быть изображениями, кодом или видео, для модели. Модель отображает этот ввод в вектор. Так что, если это изображение, это будет вектор изображения. Если это видео, это будет вектор видео и так далее. Затем вектор представляет собой отображение в n-мерном пространстве. Модель берет исходный ввод, а затем добавляет к нему некоторый шум, который перемещает вектор в новую позицию. Допустим, это v1. Это будет v2 для зашумленного изображения. Затем вы можете добавить больше шума, чтобы переместить его в новую позицию, v3. И таким образом вы продолжаете добавлять шум, пока исходный ввод почти полностью не исказится. Хорошо, информации очень мало. Если информации очень мало, то этот вектор, который вы можете отобразить в векторном пространстве, имеет очень мало смысла. Итак, вы получаете набор векторов, добавляя все больше и больше шума. Фактически, чтобы быть более точным, вы берете исходное изображение v1, а затем отображаете его в несколько векторов. Здесь. Рядом. Затем вы берете зашумленное изображение, первый слой зашумленных изображений, и добавляете к ним еще больше шума, что означает, что они все дальше и дальше отходят от первого наиболее значимого изображения. И вы получаете это векторное пространство с одним изображением, которое имеет высокое значение здесь, близкое к реальности. Немного меньшее значение здесь, здесь, здесь, здесь и здесь. И гораздо меньшее значение здесь. Здесь. Здесь и здесь. Таким образом, первое исходное изображение имеет очень высокое значение. Вы можете видеть, что его оценка составляет 1000. Второе — 100. Третье — третьего уровня зашумленного изображения — 10. И, возможно, четвертый уровень — 1. Это для одного изображения. Может появиться другое изображение, которое сделает эту точку точкой с высоким значением. Вы можете думать о новом районе, который приходит в район. Цена всего в этом месте растет. И, соответственно, в диффузионной модели, если туда приходит новый образец, вы знаете, что есть некоторая реальность, которую этот вектор на самом деле представляет. Таким образом, все точки рядом с этим местом, после добавления к ним шума, имеют добавленную стоимость. В трехмерном пространстве это будут горы. Это будут холмы поменьше, а это будут маленькие холмики. Все остальное плоское, и ваша задача, когда вы попадаете в это 3D-пространство, — найти самую высокую гору, которую вы можете увидеть. Таким образом, диффузионная модель получает сотни тысяч изображений, которые ей подаются. Затем она генерирует это сложное n-мерное пространство, где высокие значения представлены прямыми векторами, а значение уменьшается. По мере того, как вы добавляете все больше и больше шума к исходным изображениям. Теперь здесь возникают два вопроса. Один — как вы генерируете эти векторы? Откуда вы знаете, что этот вектор должен попасть сюда? И следующее изображение, зашумленное изображение, попадет сюда. Хорошо. Так что дает вам координаты изображения в векторном пространстве? Это один большой вопрос. И второй вопрос: что мы действительно можем сделать, используя эту диффузионную модель? На это есть простой ответ. Мы можем генерировать выходные данные. Если это диффузионная модель на основе изображений, то вы можете генерировать изображения. Если это диффузионная модель на основе кода, то вы можете генерировать код и так далее. Получив входной запрос "сгенерировать код для сортировки", вы возьмете этот исходный входной запрос "код для сортировки". Вы преобразуете его в вектор, который отправит вас куда-то в это n-мерное пространство. Отсюда вы оглядываетесь на самые высокие горы, которые можете увидеть, и выбираете самую высокую гору. Хорошо, здесь вы выполняете своего рода случайное блуждание или градиентный спуск, пока не достигнете конечного состояния. Целевое состояние. Самая высокая гора, которую вы можете увидеть в этом векторном пространстве. Таким образом, генерация текста или любого другого вывода интуитивно понятна. Мы знаем, что пространство с наивысшим значением должно быть тем, куда мы должны идти, потому что входной запрос подталкивает нас в это пространство. Так что это тоже хорошо. И мы медленно итеративно улучшаем решение, используя градиентный спуск. Мы, по сути, движемся по пути к точке максимального значения. Вот как вы можете генерировать выходные данные для любого заданного входного запроса. Запрос может быть изображением. Также сгенерируйте изображение, похожее на это изображение. Хорошо, это можно сделать. Сгенерируйте код, похожий на этот код, или сгенерируйте мне код, взяв мой текстовый запрос. Таким образом, вы возьмете этот текстовый запрос и будете использовать какой-то механизм для его преобразования в вектор. Единственный оставшийся вопрос: как генерируются эти векторы при получении изображения, фрагмента кода или видеофайла? Как мы отображаем его в векторное пространство? Ответ — вариационный автоэнкодер. Хорошо, что звучит намного сложнее, чем есть на самом деле. Это, по сути, как компрессионный движок. Получив любой объект, вы можете хешировать объект, чтобы получить одно число или одно значение. Вариационный автоэнкодер возьмет тот же объект и хеширует его до значения, которое имеет некоторый семантический смысл. Идея будет заключаться в том, что если вы возьмете различные изображения кошек и пропустите их через вариационный автоэнкодер, хеш-значение или окончательный вывод будет таким, что в векторном пространстве все точки для кошек, n-мерные точки, которые мы сгенерировали для кошек, будут близки друг к другу. Хорошо, точки для собак тоже могут быть близки, потому что они, в конце концов, животные. Деревья могут быть довольно далеко друг от друга. И таким образом, этот вариационный автоэнкодер способен сжать изображение до его минимального представления. Как он обучается? Когда вы пропускаете изображение кошки, а затем пытаетесь его воссоздать. Это лучший тест для компрессионного движка. Вы пропускаете исходное изображение, а затем пытаетесь восстановить это исходное изображение. Если вам удается сделать это хорошо, то вы можете сказать, что этот компрессионный движок хорош. Промежуточное представление не теряет никакой информации. Таким образом, векторы генерируются с использованием вариационных автоэнкодеров. Новейшие модели от Google теперь выполняют сквозную генерацию векторов. Таким образом, вам не нужно отдельно обучать VAE. Вы можете фактически создать эту диффузионную модель, это пространство. И пока оно создается, векторы также обновляются. Таким образом, эта функция встроена в процесс обучения диффузии. Вот как выглядят диффузионные модели. Они превосходят авторегрессионные модели с точки зрения эффективности использования данных. И поэтому они широко используются при генерации изображений. Видео и, в последнее время, кода. В будущем, по мере того как у нас будет заканчиваться больше данных, по мере того как у нас будет все меньше и меньше данных для работы и обучения, я вижу, что диффузионные модели будут становиться еще более популярными. Они не более разумны. Они не умнее больших языковых моделей, которые у нас есть сегодня. Просто производительность на бенчмарках лучше. Хорошо, есть фундаментальное различие. Внутренняя архитектура не делает их умнее. Просто их производительность на ограниченных бенчмарках, которые у нас есть сейчас, выше. Спасибо за просмотр. Если у вас есть какие-либо вопросы или предложения, дайте мне знать в комментариях. Увидимся в следующий раз. Пока-пока! Недавно я заметил, что на большие языковые модели было много негативной реакции. Наконец-то люди видят сквозь ажиотаж. Но тогда есть оправдание. Вы говорите, что дело никогда не было в LLM. Дело в следующей модели, которая появится в ближайшие пять лет. Это то, что мы наблюдаем уже очень давно. В 1997 году Гарри Каспаров проиграл системе под названием Deep Blue от IBM. И все думали, что миру конец. Потому что эти системы могут искать в сложной позиции, у них есть эвристики. В конце концов, мир — это принятие решений. Алгоритм поиска решен. ИИ скоро захватит мир. Через 28 лет мы все еще говорим, что мир скоро будет захвачен. Хорошо. Появилось много всего. Ничто из этого даже близко не подходит. Близко к человеческому интеллекту. Честно говоря, я не вижу, чтобы многие из этих систем были даже близки к интеллекту млекопитающих. Человеческий интеллект намного, намного выше. Так что, если вы обеспокоены тем, что ИИ станет более универсальным, чем вы, станет более умным, чем вы, этого не произойдет в ближайшем будущем. Хорошо. Люди говорят о десятилетии. Я действительно не знаю, откуда они берут эти цифры. Но если вы обеспокоены тем, что ИИ может занять вашу работу. Это зависит от вашей работы. Хорошо, если вы врач, если вы крутой юрист, если вы ведущий инженер, этого не произойдет в ближайшее время. Но если вы делаете что-то обыденное, если вы делаете что-то повторяющееся, вы сами считаете, что многое из этого может быть автоматизировано или, по сути, является сопоставлением с образцом, тогда да, вероятно, ИИ будет либо сильно помогать вам в вашей работе, либо просто займет все пространство. Лучшее, что вы можете сделать здесь, — это повысить свою квалификацию. Вы можете узнать больше об ИИ. Вы можете узнать больше, возможно, о людях. Как вы взаимодействуете с большим количеством людей и делаете их более эффективными. Но не беспокойтесь об AGI. Это обычно ерунда. Спасибо за просмотр. Удачи.