Разбор как делается токенизация, извлечение вектора из словаря и неочевидный момент суммирования с позиционной кодировкой (Positional Encoding)
*https://www.youtube.com/watch?v=uyBCEA_N7DI
**https://300.ya.ru/v_c3UIDYDq
таймкоды
00:00:01 Введение в модель Андрея Карпатова
- Обсуждение мифов о преобразовании текста в векторы.
- Представление учебной модели Андрея Карпатова с 85 тысячами параметров и крошечным словарём из трёх токенов.
- Задача модели — сортировка слов.
00:00:53 Аналогия с AlphaFold
- Сравнение с системой AlphaFold, получившей Нобелевскую премию за моделирование сворачивания белка.
- Подчёркивание способности текстовых нейросетей решать сложные задачи, включая химию.
00:01:45 Разбиение текста на токены
- Объяснение процесса разбиения текста на токены.
- Формирование векторного словаря на основе токенов.
00:02:45 Заблуждения о векторах
- Развенчивание мифов о расшифровке векторов.
- Вектор интерпретируется в контексте, а не сам по себе.
00:04:01 Преобразование текста в токены
- Преобразование каждого слова или буквы в отдельный токен.
- Извлечение преднастроенного вектора из словаря.
00:04:42 Прорыв в трансформерах
- Объяснение прорыва в создании трансформеров, которые рассматривают весь контекст одновременно.
- Роль распределённого внимания в работе трансформеров.
00:06:23 Позиционные кодировки
- Объяснение работы позиционных кодировок и их связи с порядком слов.
- Разрушение мифа о необходимости использования синусов и косинусов в позиционных кодировках.
00:07:52 Сложение векторов и позиционных кодировок
- Сложение семантических и позиционных кодировок в одном векторе.
- Объяснение, почему реальные вектора без позиционных кодировок бессмысленны.
00:09:39 Заключение
- Подчёркивание важности позиционных кодировок для осмысленности векторов.
- Анонс перехода к следующему ролику.
Расшифровка видео
0:01
Так, ну, начнём мы с самого начала, как
0:04
у нас текст превращается вектора в
0:06
эмбединги. Как раз мы сейчас начнём
0:08
разрушать некоторые мифы вот типа вот
0:10
этих вот, которые уже сильно
0:13
укоренились. Хотя, в принципе, это
0:14
возможно, но как мы сейчас покажем, в
0:16
реальном трансформере такое не сделаешь.
0:18
Итак, в начале давайте разберёмся, что
0:21
за моделью мы сейчас работаем от Андрея
0:23
Карпатова. Вот. То есть ещё раз могу
0:25
сказать, что это его учебная дисмодель.
0:28
Э, оно, он в принципе её сделал так,
0:30
что, э, в данном случае это совсем
0:32
маленькая как бы нейросеть, которой
0:34
можно запустить даже локально себя на
0:36
компьютере. Всего лишь 85.000
0:38
параметров. У неё крошечный совершенно
0:40
словарь как бы из
0:43
трёх так называемых токенов, которые
0:45
обозначают одну букву ABC. И в принципе
0:48
задача вот этой маленькой крошечной
0:50
нейросети вроде бы совсем простая,
0:52
отсортировать слова. Но в чём тут как
0:54
раз будет большая такая вот,
0:58
скажем так, аналогия с Новелевской вот
1:01
премии, которая была вручена тоже в
1:03
лаборатории Google
1:05
в принципе за их так называемая альфад
1:08
систему, которая моделирует сворачивание
1:10
белка. Ээ что вроде бы как бы кажется,
1:13
что не имеет никакого отношения у нас к
1:15
текстовым нейросетям. Но вопрос
1:17
заключается в том, что как бы сам по
1:19
себе вот эти GPT, она может решать
1:21
задачи гораздо более сложно, чем вам
1:23
кажется. Она, в общем-то, то, что она с
1:25
вами общается на некотором тексте, это
1:28
она подстраивается под вас, потому что
1:29
внутри у неё всё равно векторные
1:31
представления сделаны. Вот. Но одна из
1:33
задач, которая для неё тоже очень лёгкая
1:34
это на самом деле химия. Поэтому нас
1:36
ждут очень большие прорывы химии,
1:38
биохимии, потому что вот этими буквами
1:40
можно закодировать атомы, и он может ими
1:42
манипулировать достаточно легко. Вот сам
1:44
по себе.
1:46
Давайте сейчас рассмотрим, как это,
1:48
допустим, происходит всё-таки с таким
1:51
примером более реалистичным, если мы
1:53
работаем там в какой-нибудь там GPT4.
1:55
Вот. То есть, когда мы пишем некоторый
1:57
текст, есть вот так называемый даже
1:59
такинайзер, где можно посмотреть, э, как
2:01
бы текст наш разбивается сначала так
2:03
называемые токены. То есть, если это
2:05
английский текст, то считайте одно
2:07
слово, это будет один токен. Видите,
2:08
здесь подсвечивается русские, они
2:10
разбиваются на несколько токенов, как
2:12
правило. Вот. То есть, соответственно,
2:13
даже можно посмотреть вот номера у этих
2:15
вот токенов, словарики. Дальше
2:18
формируется как некоторый, что ли, такой
2:20
векторный словарик. Далее, вот он. Он
2:22
здесь всего на три токена. Видите, он
2:24
снизу написано, потому что в данном
2:27
случае вы в этом примере всего у нас три
2:30
слова, даже три буквы ABC считаете, и мы
2:33
будем им пользоваться. C — это как раз
2:35
вот
2:36
измерение вот этого вектора. Мы сейчас
2:38
посмотрим, почему это вектор и что это
2:40
такое, как с чем его тут как бы едят
2:43
самого по себе. Вот отдельно я думаю,
2:46
что по векторам я сделаю как бы м что ли
2:51
отдельный ролик и покажу их историю, как
2:52
от это философии Фёрса это всё шло и на
2:55
нашем канале в телеграме это
2:56
рассказывал. Но какие здесь есть
2:58
заблуждения, которые сейчас сразу же
3:00
проявятся? То есть вот эта попытка
3:02
расшифровывать сам по себе вектор, она
3:04
безуспешна будет по многим моментам,
3:06
потому что, во-первых, он сейчас
3:08
вмешается вместе с позиционными
3:09
кодировками. Я сейчас это покажу, как
3:11
это происходит. Вот. А второй момент,
3:13
который здесь как бы связан с ним, что
3:17
на самом деле основной смысл вектора,
3:19
вот он как бы, если его бы даже
3:20
покрутить, это корреляционные ссылки с
3:22
другими понятиями. То есть это такая
3:25
большая как бы ссылочная система,
3:27
которая делает ссылки, с чем это понятие
3:30
связано. И фактически это единственное,
3:33
что в нём находится. То есть поэтому,
3:34
чтобы расшифровать вектор сам один по
3:36
себе, он ничего не значит на самом-то
3:38
деле. Вот его расшифровка происходит
3:40
именно в контексте. Вот. И мы сейчас,
3:42
когда будем двигаться по трансформеру,
3:44
вот это вот дело как раз сможем понять.
3:46
Вот. Ну, по векторам я отдельно ещё
3:48
сниму, потому что это около 50 лет
3:49
возревала. Это якобы идея, она целая
3:51
философская. Давайте сейчас посмотрим на
3:53
примере, что здесь происходит, потому
3:55
что сразу же станет понятно, что
3:56
какие-то простые такие блогерские
3:58
примеры, они не работают в реальности.
4:01
Вот. Ну, вначале, видите, как я сказал,
4:04
что превращается у нас каждое слово там
4:06
или буква в отдельный токен. И теперь
4:08
нам нужно сделать две вещи. Нам нужно
4:11
вытащить сначала преднастройку вот этого
4:14
вектора, как как бы некоторую карточку с
4:15
признаками. Вот ещё раз могу сказать,
4:17
они носят корреляционный как бы смысл,
4:20
то есть это с чем это связано, условно
4:22
говоря. Вот. Ну, дальше сейчас тут
4:25
продвинемся вот по этой анимации. Вот.
4:27
Ну, поскольку это у нас в данном случае
4:29
рассматривается B, видите, у нас
4:31
словарик очень короткий. Это специально
4:32
сделано, чтобы легче было разбираться.
4:34
Вот. И мы, соответственно, извлекаем от
4:36
средний. Здесь вектор, как показан.
4:42
Вот теперь очень важный как бы момент.
4:44
Сейчас вот я открою даже свой в Экcле
4:46
табличку. Э, что у нас сделал Google? В
4:49
чём был прорыв как раз в создании
4:51
трансформеров? Что он с нами заговорил?
4:54
Особенность предыдущих нейросетей типа
4:56
ЛСТМ была то, что они по одному слову,
4:59
как как люди вроде бы читали и по одному
5:02
слову там печатали нам в ответ. Даже в
5:04
принципе, если делать
5:05
нейрофизиологические исследования, даже
5:07
взрослый человек тоже так не читает, он
5:08
читает как бы захватывая как бы в том
5:10
числе периферическим зрением вот сразу
5:13
же большой кусок текста. Вот даже есть
5:15
такие называемая модель когнитивистов
5:17
типа EASриad, вот которые это
5:19
показывают, как это происходит.
5:22
Сам по себе как бы трансформер, если
5:24
боевой, он захватывает около 4.000
5:26
токенов. Там есть отдельная тема,
5:28
которую я уже на пробинге на уроках
5:29
рассказывают SPS attention, то есть как
5:31
работает распределённое внимание, как им
5:33
управлять, потому что там очень много
5:34
есть эффектов с ним связано. Но основная
5:37
как бы фокус, он заключается в том, что
5:38
мы отказались то есть ну как бы мы, в
5:42
принципе, авторы в Гугле от
5:44
рассматривания по одному слову мы
5:46
рассматриваем весь контекст
5:47
одновременно. То есть всё, что мы
5:48
написали, берём и сразу начинаем искать
5:50
корреляции, э, как бы дальше, как эти
5:53
вещи между собой у нас сходны. Вот, то
5:55
есть какие между ними есть связи. Вот.
5:58
Но для того, чтобы мы это могли делать,
5:59
нам нужен не только как бы некоторый
6:01
семантический смысл вот этого одного
6:03
понятия, но и, в принципе, его
6:05
положение, потому что как бы от порядка
6:07
слов, естественно, что-то зависит. А вот
6:09
в этой задаче, тем более, если это будет
6:11
задача на сортировку, вот, ну, она, в
6:13
принципе, очень близка, как раз, я
6:14
говорю, вот к этой нобелевской задаче
6:16
там, аэ, биохимической. То есть,
6:18
например, эта задача просто сделать
6:20
некоторую молекулу, например. Э в этом
6:23
случае от порядка уж молекула уж точно
6:25
зависит у нас последовательность, как и
6:27
от наших слуг. Значит, это делается
6:29
через эти так называемые позиционные
6:30
кодировки. И тут тоже как раз вот сразу
6:32
же разрушается первый такой миф.
6:35
то, что не обязательно должны идти так
6:37
через синусы и косинусы, как на думаю,
6:39
что вы на роликах уже блогеров
6:41
посмотрели. Это делается необязательно.
6:44
То есть, например, если, более того, это
6:46
даже вообще не делается, если у вас
6:48
задача на комбинаторику идёт. Вот. То
6:51
есть, например, ну, то есть поймать
6:53
какие-то определённые комбинации слов.
6:54
То есть также вот, в принципе, в
6:56
альфа-фол там нет никаких синусов,
6:57
косинусов в позиционных кодировках, то
6:59
есть нало на ловлю некоторых что ли
7:01
периодических структур. Вот. Аа в данном
7:04
случае вот эта вся матрица, она
7:06
тренируется в в режиме обучения, она
7:08
ищет именно комбинации. То есть поэтому,
7:10
в принципе, есть два подхода. То есть
7:11
первое — это как в принципе в начале,
7:13
как Google сделал. То есть он вот эту
7:15
матрицу не обучает, он в неё загрузил
7:17
просто периоды э разнообразные. То есть
7:20
это отдельно, конечно, нужно уточнять,
7:22
как как это работает, потому что это
7:23
довольно глубокая очень абстракция. Он
7:25
требует
7:26
уточнения в случае, ээ, в принципе, если
7:29
просто комбинации всех слов ловятся, а
7:32
не какой-то синтаксис, например, как в
7:33
программе или в естественном тексте, тот
7:36
матрица — это полностью обучаемые, как
7:37
вот в этом примере, видите? То есть вот
7:39
серые матрицы — это те, которые
7:40
обучаются нейро сетью в результате
7:43
обучения. Словарь тоже — это результат
7:45
обучения. Ну давайте посмотрим вот этот
7:47
сейчас очень важный момент, который на
7:49
самом-то деле делается сюда в любом
7:50
трансформере.
7:52
Так, ну вот мы извлекли, в принципе, у
7:55
нас, как видите, и из словарика как бы
7:59
себе вот этот преднастроенный вектор,
8:01
как некоторую карточку, с чем
8:03
коррелировать может это понятие. Второй
8:05
момент, поскольку он у нас занимал здесь
8:08
там третью или там четвёртую позицию, мы
8:10
взяли из вот этих позиционных кодировок,
8:13
которые кодируют уже разложенные
8:15
комбинации слов, и в этот же вектор
8:17
сделали. Ну, ещё раз давайте посмотрим,
8:18
что произошло, потому что сейчас
8:19
произошла очень вещь. многим, даже
8:21
профессионалам, не очевидно. Видите, они
8:24
просто плюсом соединились,
8:27
то есть произошло просто сложение. То
8:28
есть семантические фактически э
8:31
размерности вектора, ну, которые могли
8:33
иметь вот как какой-то вот такой вот
8:35
смысл даже, допустим, они смешались, э,
8:37
с скажем так с семантикой, которая уже
8:41
не связана с отдельным словом, она
8:43
связана с порядком слов. Поэтому вот
8:44
такая вот такой пример на реальном
8:46
векторе он работать вообще не может. Вот
8:49
если вы это всё смотрели вот на
8:50
Blueбраун, вы должны просто понимать,
8:51
что это, ну, это просто блогерские
8:54
картинки, по большому счёту, это такой
8:56
академизм, идущий ещё вот достаточно
8:59
древних систем сам по себе. В реальных
9:01
боевых системах практически всегда такое
9:03
сложение делается, то есть не
9:05
разделяются между собой
9:07
как бы, ну, скажем так, измерение самого
9:09
вектора и позиционной кодировки. Они
9:11
сразу же входят в такую смесь. Вот на
9:13
первый взгляд это кажется, как же с этим
9:15
разберётся дальше нейросеть. Ну, по
9:17
большому счёту, нейросеть- это всё
9:18
равно, она потом будет искать
9:20
комбинации, но чётко уже понимает, что
9:23
вот этот вот вектор сам по себе, он
9:24
даже, вообще-то, бессмысленный. А в
9:26
каком плане? А потому что даже если вот
9:28
этот вектор смотреть, да, у него есть
9:30
какие-то корреляции с какими-то
9:31
понятиями, но это тоже как бы сейчас вот
9:33
этот toвек, это который здесь
9:35
используется, это некоторый академизм
9:37
тоже, да, в некотором плане. Вот. Потому
9:39
что реальные вектора — это болванка
9:41
такая, которая без вот этого
9:43
positionмеing, то есть вставленных
9:45
позиционных кодировок, которые порядок
9:47
слов кодируют, она, в общем-то, эта
9:49
болванка даже и не работает. Она, в
9:51
общем-то, не очень осмысленная, а смысл
9:53
у неё будет корреляционный, как мы
9:54
увидим дальше. Ну, дальше мы перейдём
9:56
уже в следующем ролике к атеншену. M.

