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