subtitles/ru/05_transformer-models-encoders.srt (304 lines of code) (raw):
1
00:00:00,253 --> 00:00:03,003
2
00:00:04,440 --> 00:00:07,830
- В этом видео мы изучим архитектуру кодера.
3
00:00:07,830 --> 00:00:11,070
Примером популярной архитектуры, использующей только кодер, является BERT,
4
00:00:11,070 --> 00:00:13,323
который является самой популярной моделью такого рода.
5
00:00:14,550 --> 00:00:16,950
Для начала давайте разберемся, как это работает.
6
00:00:18,360 --> 00:00:20,910
Мы воспользуемся небольшим примером, используя три слова.
7
00:00:20,910 --> 00:00:23,823
Мы используем их в качестве входных данных и пропустим через кодер.
8
00:00:25,290 --> 00:00:28,173
Мы получили числовое представление каждого слова.
9
00:00:29,970 --> 00:00:32,700
Вот, например, кодер преобразует три слова
10
00:00:32,700 --> 00:00:37,350
"Welcome to NYC" в эти три последовательности цифр.
11
00:00:37,350 --> 00:00:40,350
Кодер выдает ровно одну последовательность чисел
12
00:00:40,350 --> 00:00:41,493
на каждое входное слово.
13
00:00:42,330 --> 00:00:44,880
Это числовое представление можно также назвать
14
00:00:44,880 --> 00:00:47,163
вектор признаков или тензор признаков.
15
00:00:49,080 --> 00:00:51,030
Давайте погрузимся в это представление.
16
00:00:51,030 --> 00:00:52,740
Он содержит один вектор на каждое слово
17
00:00:52,740 --> 00:00:54,540
которое было пропущено через кодер.
18
00:00:56,130 --> 00:00:58,620
Каждый из этих векторов является числовым представлением
19
00:00:58,620 --> 00:01:00,033
рассматриваемого слова.
20
00:01:01,080 --> 00:01:03,300
Размерность этого вектора определяется
21
00:01:03,300 --> 00:01:05,520
архитектурой модели.
22
00:01:05,520 --> 00:01:08,703
Для базовой модели BERT это значение равно 768.
23
00:01:10,650 --> 00:01:13,230
Эти представления содержат значение слова,
24
00:01:13,230 --> 00:01:15,240
но с учетом контекста.
25
00:01:15,240 --> 00:01:18,570
Например, вектор, приписываемый слову "to"
26
00:01:18,570 --> 00:01:22,290
не является представлением только слова "to".
27
00:01:22,290 --> 00:01:25,650
Он также учитывает окружающие слова,
28
00:01:25,650 --> 00:01:27,363
которые мы называем контекстом.
29
00:01:28,650 --> 00:01:30,780
Например, он смотрит на левый контекст,
30
00:01:30,780 --> 00:01:32,970
слова слева от изучаемого нами,
31
00:01:32,970 --> 00:01:34,980
здесь слово "Welcome",
32
00:01:34,980 --> 00:01:37,497
и контекст справа, здесь слово "NYC",
33
00:01:38,348 --> 00:01:42,000
и выводит значение для слова с учетом его контекста.
34
00:01:42,000 --> 00:01:45,420
Таким образом, это контекстуализированное значение.
35
00:01:45,420 --> 00:01:48,810
Можно сказать, что вектор из 768 значений
36
00:01:48,810 --> 00:01:51,993
хранит значение слова в тексте.
37
00:01:53,310 --> 00:01:56,073
Это происходит благодаря механизму самовнимания.
38
00:01:57,240 --> 00:02:00,630
Механизм самовнимания связан с различными позициями,
39
00:02:00,630 --> 00:02:02,850
или различным словам в одной последовательности
40
00:02:02,850 --> 00:02:06,003
для того, чтобы вычислить представление этой последовательности.
41
00:02:07,200 --> 00:02:09,000
Как мы уже видели, это означает, что
42
00:02:09,000 --> 00:02:11,130
на результирующее представление слова
43
00:02:11,130 --> 00:02:13,983
повлияли другие слова в последовательности.
44
00:02:15,840 --> 00:02:18,030
Мы не будем углубляться в детали,
45
00:02:18,030 --> 00:02:19,680
но предлагаем вам ознакомиться с некоторыми дополнительными материалами,
46
00:02:19,680 --> 00:02:21,330
если вы хотите лучше понять,
47
00:02:21,330 --> 00:02:22,953
что происходит под капотом.
48
00:02:25,050 --> 00:02:27,480
Так почему же следует использовать кодер?
49
00:02:27,480 --> 00:02:29,370
Кодеры могут использоваться в качестве автономных моделей
50
00:02:29,370 --> 00:02:31,263
в самых разнообразных задачах.
51
00:02:32,100 --> 00:02:33,360
Например, BERT,
52
00:02:33,360 --> 00:02:35,670
возможно, самая известная модель трансформера,
53
00:02:35,670 --> 00:02:37,590
является отдельной моделью кодера,
54
00:02:37,590 --> 00:02:38,820
и на момент выпуска
55
00:02:38,820 --> 00:02:40,440
она была передовой
56
00:02:40,440 --> 00:02:42,780
во многих задачах классификации последовательностей,
57
00:02:42,780 --> 00:02:44,190
задачах ответа на вопросы,
58
00:02:44,190 --> 00:02:46,743
и моделировании языка с маской, и это лишь некоторые из них.
59
00:02:48,150 --> 00:02:50,460
Идея заключается в том, что кодеры очень сильны
60
00:02:50,460 --> 00:02:52,470
в извлечении векторов, которые несут
61
00:02:52,470 --> 00:02:55,350
значимую информацию о последовательности.
62
00:02:55,350 --> 00:02:57,870
Этот вектор затем может быть обработан в дальнейшем
63
00:02:57,870 --> 00:03:00,070
дополнительными нейронами, чтобы понять его смысл.
64
00:03:01,380 --> 00:03:02,850
Давайте рассмотрим несколько примеров
65
00:03:02,850 --> 00:03:04,563
где кодер действительно блистает.
66
00:03:06,210 --> 00:03:09,900
Прежде всего, Masked Language Modeling, или MLM.
67
00:03:09,900 --> 00:03:11,970
Это задача предсказания скрытого слова
68
00:03:11,970 --> 00:03:13,590
в последовательности слов.
69
00:03:13,590 --> 00:03:15,630
Здесь, например, мы скрыли слово
70
00:03:15,630 --> 00:03:17,247
между "My" и "is".
71
00:03:18,270 --> 00:03:21,120
Это одна из целей обучения BERT.
72
00:03:21,120 --> 00:03:24,393
Он был обучен предсказывать скрытые слова в последовательности.
73
00:03:25,230 --> 00:03:27,930
В этом сценарии кодеры проявляют себя особенно ярко, поскольку
74
00:03:27,930 --> 00:03:31,140
двунаправленная информация имеет здесь решающее значение.
75
00:03:31,140 --> 00:03:32,947
Если бы у нас не было слов справа,
76
00:03:32,947 --> 00:03:34,650
это "Sylvain" и ".",
77
00:03:34,650 --> 00:03:35,940
то очень мало шансов,
78
00:03:35,940 --> 00:03:38,580
что BERT смог бы определить имя
79
00:03:38,580 --> 00:03:40,500
как правильное слово.
80
00:03:40,500 --> 00:03:42,270
Кодер должен хорошо понимать
81
00:03:42,270 --> 00:03:45,360
последовательности, чтобы предсказать замаскированное слово
82
00:03:45,360 --> 00:03:48,840
поскольку даже если текст грамматически правильный,
83
00:03:48,840 --> 00:03:50,610
он не обязательно имеет смысл
84
00:03:50,610 --> 00:03:52,413
в контексте последовательности.
85
00:03:55,230 --> 00:03:56,580
Как упоминалось ранее,
86
00:03:56,580 --> 00:03:59,520
кодеры хорошо справляются с классификацией последовательностей.
87
00:03:59,520 --> 00:04:02,883
Анализ настроений является примером классификации последовательностей.
88
00:04:04,410 --> 00:04:09,410
Цель модели - определить настроение последовательности.
89
00:04:09,540 --> 00:04:11,280
Это может варьироваться от присвоения последовательности
90
00:04:11,280 --> 00:04:12,960
рейтинга от одной до пяти звезд
91
00:04:12,960 --> 00:04:15,900
если проводится анализ отзывов, до присвоения положительного
92
00:04:15,900 --> 00:04:17,820
или отрицательного рейтинга последовательности
93
00:04:17,820 --> 00:04:19,220
что и показано здесь.
94
00:04:20,280 --> 00:04:22,950
Например, здесь, даны две последовательности,
95
00:04:22,950 --> 00:04:25,860
мы используем модель для вычисления прогноза,
96
00:04:25,860 --> 00:04:27,420
и классифицируем последовательности
97
00:04:27,420 --> 00:04:30,393
между двумя классами, положительным и отрицательным.
98
00:04:31,230 --> 00:04:33,450
Хотя эти две последовательности очень похожи
99
00:04:33,450 --> 00:04:35,220
и содержат одни и те же слова,
100
00:04:35,220 --> 00:04:37,170
смысл совершенно разный,
101
00:04:37,170 --> 00:04:40,143
и модель кодера способна уловить эту разницу.
102
00:04:41,404 --> 00:04:44,154