Comments 8
Глубокоуважаемый Максим! Большое спасибо за Ваш гигантский труд. Отличные рисунки, красивый человеческий русский язык.
Пишите вопросы, даже самые глупые. Постараюсь ответить на все.
Огромный труд. Спасибо большое. Хотелось бы больше простых аналогий/примеров для понимания (механизм внимания в первую очередь).
Спасибо за интерес к моей статье. Ниже некоторые разъяснения работы внимания.
Суть самовнимания в том, что каждая текстовая единица в последовательности (тексте) имеет отношение ко всем остальным, выраженное математически в конкретных числах.
Пример без батча:
На вход поступает тензор X [T D], а на выходе должно быть некое переработанное представление тех же данных Z [T D], где главное выделено, а несущественное отброшено.
Технически (в плане формы) мы можем взять X [T D] и умножить на транспонированный вариант Xt [D T], и получить таблицу токенов A [T T]. А потом "взвесить" эти же данные X полученной таблицей A [T T] * X [T D] = Z [T D], и за одно вернуть их к первоначальной форме [T D]. Но в реальности мы работаем с проекциями данных: вход умножаются на три разных обучаемых параметра QKV (матрицы весов), чтобы модель могла меняться и тренировать свое внимание.
В качестве аналогий часто приводятся наименования: "запросы", "ключи" и "значения", которые облегчают понимание механизма.
Все легче, чем кажется.
Если есть конкретные вопросы, то я на них отвечу.
Вроде бы всё понятно, но трудновато склеить весь материал воедино (т.к. я капец медлительный человек и зараз скорей всего не найду времени прочитать и обдумать). Ещё трудней соотнести с кодом (тут можно было использовать, что-то типа [1] связав текст и код). В целом, было бы неплохо чтобы была такая интерактивная схема. где нажав на какой-либо блок, открывалась его расширенная схема. Но думаю это было бы сложно и в статью, скорей всего, только в виде ссылки можно будет вставить.
Но да ладно, читая статью (хотя и до неё) у меня появился вопрос: А как делают серьёзные, большие нейросети на практике и в чём? Тут же у нас, я так понимаю, была учебная практика
В этом случае медлительность признак основательности. Разумеется, статью нельзя изучить за одно прочтение! На создание своего фреймворка я потратил 4 месяца.
Теперь по поводу вопроса, если я его верно понял.
Вы описывайте некий интерактивный интерфейс, но на практике все ограничено возможностями сайта (маркдаун - это максимум). Вы можете создать черновик, чтобы увидеть их.
Серьезные проекты, как правило, пишутся на базе готовых фреймворков с дополнением собственными модулями. Сами модули могут разрабатываться на Python, а за тем переводиться на низкоуровневый язык, например C++. У разных компаний для этого есть собственные специалисты/отделы. То есть сами DS-исследования и чистая инженерия с сопровождением и оптимизацией продукта - это разные вещи.
Мой же материал объясняет смысл и устройство архитектуры. Большинство курсов натаскивают своих жертв на готовые сборки из черных ящиков без понимания сути. Это как учиться живописи по книжке-раскраске: создается некая иллюзия умения. Однако, чтобы написать серьезный проект, например свой собственный слой, нужно досконально понимать базу.
Лучший способ стать хорошим механиком: изобрести свой велосипед!
Трансформер своими руками: с нуля до Numpy реализации и обучения