Психология По характеру происхождения и средствам осуществления различают три основных вида внимания: • произвольная; • непроизвольная; • післядовільна. Непроизвольное внимание возникает и поддерживается независимо от сознательных намерений человека и без волевых усилий с ее стороны. Произвольное внимание — сознательно регулируемое сосредоточение, что направлено и связано с сознательно поставленной целью, с волевым усилием. Возникновение непроизвольного внимания определяется физическими, психофизиологическим и психическими факторами. Основными условиями его возникновения нужно считать особенности раздражителя, его новизну, силу влияния, соответствие актуальной потребности и т. д. Новизна может заключаться в появлении ранее отсутствующего раздражителя, в изменении физических свойств действующих раздражителей, в перемещении раздражителей в пространстве (движущиеся предметы обычно привлекают внимание), а также в отсутствии знакомых раздражителей или в изменении силы их влияния. Привлекают внимание также крепкие раздражители. Громкие звуки, яркие краски, резкие запахи — все это невольно заставляет обратить внимание на предмет, обладающий соответствующим качеством. При этом, значение имеет не столько абсолютная, сколько относительная интенсивность раздражителя, то есть соотношение по силе данного раздражителя с другими, действующими в этот момент. Звук шагов человека, которая движется за вами, едва ли привлечет к себе внимание днем на оживленном перекрестке, зато окажется слишком сильным раздражителем ночью. Таким образом, решающее значение имеет контраст между раздражителями, действующими в этот момент. Это относится не только к силы раздражителя, но и в других его свойств. Так, например, большой предмет скорее замечается среди мелких, квадрат — среди треугольников и т. д.Невольное внимание вызывают также раздражители, которые отвечают потребностям индивида, для него имеют определенное значение. Обращает внимание на себя то, что имеет для личности постоянную или временную значимость. Так, тихий голос близкой для нас человека, значительно скорее привлечет к себе наше внимание, чем могучий бас известного певца. Французский психолог Т. Рибо писал, что характер непроизвольного внимания находится в глубинных тайниках нашей сути. Направление непроизвольного внимания данного лица отражает ее характер или, по меньшей мере, ее интересы и стремления. Так яркий закат привлечет внимание художника, влияя на его эстетическое чувство, тогда как сельский житель в том же западе может увидеть только приближение ночи; простые камни могут вызвать заинтересованность геолога, тогда как другие увидят в них кругляк и ничего более. Таким образом, наблюдая за тем, на что человек обращает свое внимание, мы также можем судить и о самом человеке. Основная функция произвольного внимания заключается в быстрой и правильной ориентации человека в условиях окружающей среды, которое постоянно меняется, в обособлении тех ЕЕ объектов, которые могут иметь в этот момент наиболее жизненный смысл. Оно присуще как человеку, так и животным. Произвольное внимание является высшим видом внимания, она возможна только в человека и возникает благодаря ее сознательной трудовой деятельности. Оно возникает тогда, когда для достижения определенной цели человек ставит перед собой определенную задачу, производит определенную программу действий, делает то, что необходимо. При этом, если для достижения цели нужно заниматься не только тем, что само по себе является интересным и познавательным, для удержания внимания необходимо будет определенное волевое усилие. Таким образом, произвольное внимание является заведомо направленным и регулируемым сосредоточением, связанным с поставленной целью и волевым усилием. Основной функцией произвольного внимания является активное регулирование протекания психических процессов. Именно благодаря наличию произвольного внимания человек способен активно, выборочно «вытягивать» из памяти нужные ей сведения, выделять главное, существенное, принимать правильные решения, осуществлять задачи, возникающие в деятельности. Уровень развития такого внимания характеризует не только направления интересов человека, но и его личностные волевые качества: ведь, если непроизвольным вниманием распоряжаются в большей степени внешние объекты, то хозяином произвольного внимания является сама личность. Внешние условия влияют и на организацию произвольного внимания. Тяжело заставить себя быть внимательным в непривычной обстановке, а также под влиянием посторонних раздражителей, которые конкурируют между собой. Поэтому работа является более эффективной тогда, когда есть четкий режим, хороший ритм работы, подготовленное рабочее место (пусть даже это рабочий стол или парта, на которых нет ничего лишнего), устранены сильные посторонние раздражители (громкая музыка и т. п.) Едва ли удастся сосредоточиться на работе, если на всю мощность включен магнитофон или товарищи рядом обсуждают волнующую, но не важной для вашей работы проблему. Но также полная «стерильная» тишина не будет идеальной гарантией успешной деятельности. Известно немало примеров, когда даже сложная творческая деятельность успешно протекала в неудобных условиях. Так, польский писатель Генрик Сенкевич мог успешно писать свои произведения за столом кондитерской. А французский писатель М. Пруст, который приказал обить стены своего кабинета пробкой, так и не смог работать днем, боясь шумов. Решающее значение здесь приобретает привычный, свой, наиболее благоприятный стиль деятельности. Чаще всего соответствующий стиль производится словно бы сам по себе в процессе трудовой или учебной деятельности. Основные виды внимания — непроизвольное и произвольное — тесно связаны между собой, и порой переходят друг в друга. Чаще, садясь за чтение необходимой литературы или прослушивание учебной лекции, вы добавляете с начала определенное усилие, чтобы сконцентрироваться на проблеме. О післядовільну внимание следует говорить тогда, когда в целенаправленной деятельности для личности интересными и значительными становятся содержание и сам процесс деятельности, а не только ее результат, как при произвольной виду. В этом случае деятельность так захватывает человека, что ей становятся не нужны заметные волевые усилия для поддержания внимания. Післядовільна внимание характеризуется длительной и высокой сосредоточенностью, с ней обоснованно связывают наиболее интенсивную и плодотворную умственную деятельность, высокую производительность всех видов труда. Назад |
Произвольное внимание у дошкольников и школьников
Что это? Произвольное внимание – волевое усилие самого человека. Его активный характер обусловлен поставленной целью, благодаря чему такое умение концентрироваться позволяет достигать успеха.
Как вызвать? Очевидно, что такой вид внимания интенсивно используется в образовательном процессе. Однако далеко не всегда возможно добиться концентрации на поставленной цели. Какие методы помогают педагогу поддерживать произвольное внимание?
Оглавление:
- Особенности и виды произвольного внимания
- Как развивается произвольное внимание ребенка
- Игры для успешного формирования произвольного внимания у дошкольников
- 5 упражнений на развитие произвольного внимания школьников
Как успешно пройти аттестацию педагогу в 2023 году: пошаговая инструкция в 3-х документах Скачать бесплатно
10 инструкций по организации лагеря дневного пребывания: собрали в одном месте, учли все требования ФГОС Скачать бесплатно
Особенности и виды произвольного внимания
На основании того, какую роль играет воля в ходе запоминания, в психологии выделяются три типа внимания: непроизвольное, произвольное и послепроизвольное.
- Непроизвольное внимание проявляется без осознанного намерения и контроля со стороны человека.
- Произвольное внимание в психологии – это постановка цели и сознательное желание запомнить.
- Послепроизвольное внимание возникает как результат произвольного, которое с течением времени приобретает характер привычного и автоматического. В этом случае, хотя постановка цели запомнить сохраняется, волевые усилия уже не требуются. Человек неосознанно напрягает свою волю, поскольку процесс становится интуитивным и естественным благодаря его повторению и практике.
Одним из важных свойств произвольного внимания выступает предъявление себе конкретной задачи и разработка стратегии для ее выполнения. Это умение не дано с рождения. Ему необходимо обучаться. Благодаря этому мы не испытываем неприятные ощущения, связанные с необходимостью сосредоточиться на конкретном объекте.
Проявление произвольного внимания свидетельствует о наличии у человека воли и соответствующих качеств. Оно также выполняет главную цель – регулирование потока психических процессов, помогает в поиске уже известной нам информации, выделению важного и так далее.
Произвольное внимание включает активацию лобных отделов больших полушарий коры головного мозга, которые способны контролировать поведение и действия человека. Особенностью данного вида можно назвать поступление стимула от вторичной сигнальной системы.
Возбуждение, возникающее в коре больших полушарий в форме мысли или внутреннего указания, становится доминирующим, активируются верхние уровни мозгового ствола, ретикулярной формации и гипоталамуса. Это происходит под влиянием словесных стимулов. Данная форма внимания выступает отличительной особенностью человека.
Его проявление также связано с осознанным приложением волевых усилий. Это особенно полезно при работе с новым и незнакомым материалом, в случае возникновения трудностей в деятельности, при снижении познавательного интереса к теме или наличии различных отвлекающих факторов.
Произвольное внимание можно определить как высшую психическую функцию, которая имеет отличительные особенности. Вот некоторые из них: оно является опосредованным и осознанным, то есть происходит с участием мышления и имеет разумный характер, обладает произвольностью, то есть его направление и управление происходит контролируемо и волевым усилием.
Важно отметить, что способность к такой концентрации возникает в процессе эволюции развития общества и формируется в течение жизни человека. Оно проходит определенные фазы в онтогенезе и зависит от включенности ребенка в процесс обучения, а также от усвоения определенных образцов организации внимания.
Существует несколько различных видов, каждый из которых обладает своими уникальными особенностями. Ниже представлены характеристики разных типов произвольного внимания:
- Волевое проявляется в условиях конфликта между «хочу» и «нужно», когда приходится применить силу воли и приложить усилия.
- Выжидательное необходимо в процессе решения задач, предполагающих бдительность.
- Сознательное по характеру произвольно, но не требует больших усилий и протекает легко.
Кроме того, существует такой вид, как спонтанное внимание, особенностью которого выступает появление трудностей в начале деятельности.
Как развивается произвольное внимание ребенка
Умение проявлять произвольное внимание у ребенка связано с его возможностью активно контролировать и регулировать течение психических процессов. Результатом его первых признаков выступает способность перевести взгляд на определенный предмет.
В два-три года проявляется простейшая форма такого вида внимания. Далее по мере взросления ребенок адаптируется к восприятию более сложных инструкций и их выполнению. В возрасте шести лет он может самостоятельно выбирать объект своей концентрации. По мере взросления происходит развитие воли.
Очень важно не упускать такой фактор, как возрастные возможности ребенка, которые ограничивают его способность сосредоточиться на заданиях в течение длительного времени. Некомпетентность родителей выражается в том, что они слишком много ждут от малыша.
Психологи утверждают, что причина, по которой ребенок переключается между видами деятельности, не связана с отсутствием внимательности. Разница между концентрацией на игре в полгода и в шесть лет составляет весомый промежуток времени.
Процесс развития способности концентрировать произвольное внимание ребенка дошкольного возраста происходит постепенно. Исследования показывают, что в среднем в три года ребенок не способен удерживать концентрацию больше двух-трех минут, при том что в шестилетнем возрасте это время возрастает до восьми–десяти минут.
Исходя из этого, при занятиях с дошкольниками, следует использовать чередующиеся и короткие упражнения, которые будут перезапускать произвольное внимание и увеличивать интерес к процессу обучения. Все эти действия помогут вовлечь ребенка и запустить послепроизвольный тип концентрации, что даст возможность удлинить время занятий.
Около шести лет формируются произвольное и послепроизвольное внимание. В этом возрасте ребенок благодаря волевым качествам способен совершить выбор в пользу выполнения необходимой задачи, даже если у него есть желание заняться чем-то более интересным. В третьем классе формируется способность концентрироваться до 40 минут без отвлечения.
Факторы развития произвольного внимания детей
Для того чтобы старшие дошкольники развивали такой вид внимания, необходимо учитывать определенный ряд факторов. Некоторые из них включают в себя:
- Группировка воспринимаемых объектов. Представление объектов или заданий в группах или категориях помогает ребенку лучше ориентироваться и сосредоточить внимание на каждой области по очереди.
- Четкое построение начала и конца игры, наличие атрибутов. Установление четких правил и структуры игры с определенным стартом и финишем, а также использование реквизита помогает ребенку ориентироваться в задаче и удерживать внимание на процессе.
- Логически последовательные и понятные указания взрослого. Доступные комментарии помогают ребенку понять, что от него требуется и как правильно выполнить задание, что способствует более эффективному сосредоточению.
- Чередование разных видов деятельности с использованием анализаторов. Предоставление разнообразных заданий, которые включают применение тех или иных анализаторов (слухового, тактильного, зрительного и т. д.), помогает ребенку оставаться заинтересованным и поддерживать активность внимания.
- Дозирование нагрузки с учетом индивидуальных особенностей. Важно учитывать возрастные и личностные нюансы каждого ребенка и предоставлять задания и активности, соответствующие его способностям и уровню развития, чтобы обеспечить оптимальную нагрузку и поддерживать концентрацию.
Учет этих факторов в работе способствует формированию произвольного внимания малыша дошкольного возраста и развитию его эффективности.
Игры для успешного формирования произвольного внимания у дошкольников
Чтобы развить произвольное внимание, следует использовать различные задания.
Игра «Следи за другими»
Подходит для большого детского коллектива. Ведущий просит детей двигаться друг за другом. Когда он скажет «стоп», все должны остановиться, затопать ногами и повернуться на 180 градусов. Если кто-то допустит ошибку, то выбывает из игры.
Игра «Коршун»
Представляет собой следующий сценарий: один ребенок садится на стул, выступая в роли коршуна. Ведущий произносит слово «ночь», в это время коршун закрывает глаза и ждет. Остальные дети могут прыгать или бегать. Когда звучит команда «день», все игроки должны замереть. Участник, который не услышал слово и продолжает выполнять непроизвольные действия, выбывает. Он становится новым коршуном, и игра продолжается.
«Поймай момент»
Имеет следующий формат: ведущий демонстрирует различные движения перед детьми. Участники должны повторять их только в том случае, если прозвучит команда «повтори». Если данное слово не произнесено, дети остаются неподвижными. Ребенок, который не проявляет внимания и повторяет движение без команды, выбывает из игры.
«Печатаем слово»
Каждому участнику выдаются большие буквы, сделанные из прочной бумаги. Ведущий игры пишет на доске слово (желательно знакомое, например, «парта», «ручка», «ложка», «стол»). Дети, у которых есть соответствующие буквы, хлопают в ладоши. Когда слово «собирается», все кричат: «Ура».
«Зоркие соседи»
В этой игре дети формируют круг. Водящий становится в середину и перемещается по нему, пытаясь «усыпить» внимание участников. Затем он внезапно останавливается рядом с одним из игроков и говорит: «Руки вверх». Тот, на кого указал водящий, остается неподвижным, а участники-соседи, стоящие рядом, должны поднять руки вверх. Если кто-то проявляет невнимательность, он выбывает из игры.
5 упражнений на развитие произвольного внимания школьников
Ниже перечень игр, которые можно использовать, чтобы развивать произвольное внимание у младших школьников
- Упражнение «Переверни слово». Ученикам предлагаются слова, в которых буквы стоят в неверном порядке. Например, «снаве» – «весна», «тапар» – «парта», «лакош» – «школа». Дети должны распознать слово и правильно его записать.
- Упражнение «Найди ошибки». Учитель пишет предложение на доске, намеренно делая ошибки, например, «Миша поше гулять с сабакой и не замети, как заблудился». Детям предлагается найти их и записать предложение правильно. В этом задании участвует весь класс.
- Упражнение «Найди другое слово». Учитель пишет на доске слова, в которых скрыто еще одно. Например, «укол» («кол»), «смех» («мех»), «вдруг» («друг»). Дети должны определить скрытые слова и записать их в тетради.
- Упражнение «Найди родственные слова». На доске записывается начальное слово, например, «ложка». Ученики должны найти как можно больше однокоренных к нему, например, «ложка – ложечка, положить, ложе, положение». Победителем становится тот, кто найдет максимальное число верных вариантов.
- Упражнение «Найди лишнее слово». Учитель пишет на доске слова, которые связаны по смыслу, например, «кошка», «лошадь», «корова» – все они относятся к домашним животным. В список необходимо добавить «щука», которая является рыбой. Ученики должны найти «неправильное» слово.
Произвольное внимание имеет определенные условия возникновения: среда, окружающие, наличие образовательной системы. В процессе обучения и воспитания развиваются волевые качества, стимулируется осознанное отношение к получению знаний, а также включается физическое и эстетическое воспитание.
[banner_services]Для эффективной организации занятий с дошкольниками играет важную роль педагогическое мастерство. Поэтому стоит отдавать предпочтение учителям, которые умеют очень легко и понятно объяснять необходимый материал, используя соответствующие инструменты, игры на произвольное внимание, например, выделение или закрашивание букв, поиск ошибок и так далее.
Новизна в обучении и кураторство со стороны взрослых помогут развить у детей навык самостоятельного управления концентрацией.
Материал основан на следующих источниках:
- Министерство науки и высшего образования РФ
- Институт развития стратегии образования
- Воспитатели России
- ФГОС
- Портал Российской образование
( голосов 1 )
Понравилась статья? Поделитесь:
Краткий обзор механизма внимания | по синхронизации | SyncedReview
Опубликовано в·
5 минут чтения·
25 сентября 2017 г.Внимание — это просто вектор, часто результат работы плотного слоя с использованием функции softmax.
Перед механизмом «Внимание» перевод основан на чтении полного предложения и сжатии всей информации в вектор фиксированной длины, как вы можете себе представить, предложение с сотнями слов, представленных несколькими словами, несомненно, приведет к потере информации, неадекватному переводу и т. д.
Однако внимание частично решает эту проблему. Это позволяет машинному переводчику просматривать всю информацию, содержащуюся в исходном предложении, а затем генерировать правильное слово в соответствии с текущим словом, с которым он работает, и контекстом. Он даже может позволить переводчику увеличивать или уменьшать масштаб (фокусироваться на локальных или глобальных функциях).
Внимание не таинственно и не сложно. Это всего лишь интерфейс, сформулированный параметрами и тонкой математикой. Вы можете подключить его в любом месте, где вы сочтете это подходящим, и потенциально результат может быть улучшен.
Суть вероятностной языковой модели заключается в присвоении вероятности предложению по Марковскому предположению. Из-за природы предложений, состоящих из разного количества слов, RNN естественным образом вводится для моделирования условной вероятности среди слов.
Ванильная RNN (классическая) часто попадает в ловушку при моделировании:
- Структурная дилемма: в реальном мире длина выходных и входных данных может быть совершенно разной, в то время как ванильная RNN может обрабатывать только задачу фиксированной длины, что сложно для выравнивание. Рассмотрим примеры перевода с английского на французский: «он не любит яблоки» → «Il n’aime pas les pommes».
- Математическая природа: он страдает от исчезновения/взрыва градиента, что означает, что его трудно тренировать, когда предложения достаточно длинные (может быть, не более 4 слов).
Трансляция часто требует произвольной входной и выходной длины, чтобы справиться с указанными выше недостатками, принимается модель кодер-декодер, и базовая ячейка RNN заменяется на ячейку GRU или LSTM, активация гиперболического тангенса заменяется на ReLU. Здесь мы используем камеру ГРУ.
Слой внедрения отображает дискретные слова в плотные векторы для повышения эффективности вычислений. Затем встроенные векторы слов последовательно подаются в кодировщик, также известный как ячейки GRU. Что произошло во время кодирования? Информация течет слева направо, и каждый вектор слов изучается не только в соответствии с текущим вводом, но и в соответствии со всеми предыдущими словами. Когда предложение полностью прочитано, кодировщик генерирует выходные данные и скрытое состояние на временном шаге 4 для дальнейшей обработки. Для части кодирования декодер (также GRU) захватывает скрытое состояние от кодировщика, обученного учителем (режим, в котором предыдущая ячейка выводит в качестве текущего ввода), а затем последовательно генерирует слова перевода.
Кажется удивительным, поскольку эта модель может быть применена к последовательности N-to-M, но все еще остается нерешенным один главный вопрос: действительно ли достаточно одного скрытого состояния?
Да, Внимание!
Подобно базовой архитектуре кодер-декодер, этот причудливый механизм вставляет вектор контекста в промежуток между кодером и декодером. Согласно приведенной выше схеме, синий представляет кодировщик, а красный — декодер; и мы могли видеть, что вектор контекста принимает все выходные данные ячеек в качестве входных данных для вычисления распределения вероятностей слов исходного языка для каждого отдельного слова, которое декодер хочет сгенерировать. Используя этот механизм, декодер может собирать некоторую глобальную информацию, а не делать выводы исключительно на основе одного скрытого состояния.
И построить вектор контекста довольно просто. Для фиксированного целевого слова сначала мы перебираем все состояния кодировщиков, чтобы сравнить целевое и исходное состояния, чтобы сгенерировать оценки для каждого состояния в кодировщиках. Затем мы могли бы использовать softmax для нормализации всех оценок, что генерирует распределение вероятностей, обусловленное целевыми состояниями. Наконец, введены веса, чтобы облегчить обучение контекстного вектора. Вот и все. Математика показана ниже:
Чтобы понять кажущуюся сложной математику, нам нужно помнить о трех ключевых моментах:
- Во время декодирования векторы контекста вычисляются для каждого выходного слова. Таким образом, у нас будет двумерная матрица, размер которой равен # целевых слов, умноженных на # исходных слов. Уравнение (1) демонстрирует, как вычислить одно значение по одному целевому слову и набору исходных слов.
- После вычисления вектора контекста вектор внимания можно вычислить по вектору контекста, целевому слову и функции внимания
f
. - Нам нужен обучаемый механизм внимания. Согласно уравнению (4), оба стиля предлагают обучаемые веса (W у Луонга, W1 и W2 у Багданау). Таким образом, разные стили могут привести к разным результатам.
Мы надеемся, что вы понимаете, почему внимание является одной из самых горячих тем сегодня, и, что наиболее важно, основная математика, стоящая за вниманием. Приветствуется реализация собственного уровня внимания. В современных исследованиях существует множество вариантов, и они в основном различаются выбором функции счета и функции внимания, либо мягкого внимания и жесткого внимания (будь то дифференцируемые). Но основные понятия все те же. Если интересно, вы можете проверить документы ниже.
[1] Vinyals, Oriol, et al. Покажи и расскажи: нейронный генератор подписей к изображениям. arXiv:1411.4555 (2014).
[2] Богданау, Дмитрий, Кёнхён Чо и Йошуа Бенгио. Нейронный машинный перевод путем совместного обучения выравниванию и переводу. arXiv:1409.0473 (2014).
[3] Чо, Кёнхён, Аарон Курвиль и Йошуа Бенджио. Описание мультимедийного контента с использованием сетей кодирования-декодера на основе внимания. arXiv:1507.01053 (2015)
[4] Xu, Kelvin, et al. Показывайте, посещайте и рассказывайте: генерация подписей к изображениям на основе нейронных сетей с визуальным вниманием. архив: 1502.03044 (2015).
[5] Сухэ-Батор, Сайнбаяр, Джейсон Уэстон и Роб Фергус. Сквозные сети памяти. Достижения в области нейронных систем обработки информации . (2015).
[6] Жулен, Арман и Томас Миколов. Вывод алгоритмических шаблонов с рекуррентными сетями, дополненными стеком. архив: 1503.01007 (2015).
[7] Германн, Карл Мориц и др. Учим машины читать и понимать. Достижения в области нейронных систем обработки информации . (2015).
[8] Раффель, Колин и Дэниел П. У. Эллис. Сети прямой связи с вниманием могут решить некоторые проблемы с долговременной памятью. архив: 1512.08756 (2015).
[9] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., & Gomez, A. et al. . Внимание — это все, что вам нужно . arXiv: 1706.03762 (2017).
Технический аналитик: Qingtong Wu
Понимание и кодирование механизма самоконтроля больших языковых моделей с нуля
В этой статье мы с нуля разберемся, как работает внимание к себе. Это означает, что мы будем кодировать его сами шаг за шагом.
С момента своего появления в оригинальной статье-трансформере (Внимание — это все, что вам нужно) внимание к себе стало краеугольным камнем многих современных моделей глубокого обучения, особенно в области обработки естественного языка (NLP). Поскольку внимание к себе сейчас повсюду, важно понять, как оно работает.
Самостоятельное внимание #
Концепция «внимания» в глубоком обучении уходит корнями в попытки улучшить рекуррентные нейронные сети (RNN) для обработки более длинных последовательностей или предложений. Например, рассмотрим перевод предложения с одного языка на другой. Перевод предложения слово за словом не работает эффективно.
Чтобы решить эту проблему, были введены механизмы внимания, предоставляющие доступ ко всем элементам последовательности на каждом временном шаге. Ключ в том, чтобы быть избирательным и определять, какие слова являются наиболее важными в конкретном контексте. В 2017 году в архитектуре преобразователя появился автономный механизм самообслуживания, полностью устранивший необходимость в RNN.
(Для краткости и для того, чтобы статья была сосредоточена на технических деталях самоконтроля, я пропускаю части мотивации, но в моей книге «Машинное обучение с PyTorch и Scikit-Learn» есть некоторые дополнительные подробности в главе 16, если вам интересно . )
Мы можем думать о самовнимании как о механизме, который увеличивает информационное содержание встраивания ввода, включая информацию о контексте ввода. Другими словами, механизм внутреннего внимания позволяет модели взвешивать важность различных элементов во входной последовательности и динамически регулировать их влияние на выходные данные. Это особенно важно для задач языковой обработки, где значение слова может меняться в зависимости от его контекста в предложении или документе.
Обратите внимание, что существует множество вариантов внимания к себе. Особое внимание уделялось повышению эффективности самоконтроля. Тем не менее, в большинстве статей по-прежнему используется оригинальный механизм внимания с масштабируемым точечным продуктом, обсуждаемый в этой статье, поскольку он обычно приводит к превосходной точности и потому, что собственное внимание редко является вычислительным узким местом для большинства компаний, обучающих крупномасштабных преобразователей.
В этой статье мы сосредоточимся на оригинальном механизме внимания, основанном на масштабированном точечном произведении (называемом самовниманием), который остается наиболее популярным и наиболее широко используемым механизмом внимания на практике. Однако, если вас интересуют другие типы механизмов внимания, ознакомьтесь с 2020 Efficient Transformers: A Survey и 2023 A Survey on Efficient Training of Transformers обзор и недавний документ FlashAttention.
Встраивание входного предложения #
Прежде чем мы начнем, давайте рассмотрим входное предложение «Жизнь коротка, сначала съешьте десерт» , которое мы хотим провести через механизм само-внимания. Подобно другим типам подходов к моделированию для обработки текста (например, с использованием рекуррентных нейронных сетей или сверточных нейронных сетей), мы сначала создаем встраивание предложения.
Для простоты здесь наш словарь dc
ограничен словами, встречающимися во входном предложении. В реальном приложении мы будем рассматривать все слова в обучающем наборе данных (типичный размер словарного запаса варьируется от 30 до 50 тысяч).
В:
предложение = «Жизнь коротка, сначала съешь десерт» dc = {s:i для i,s в enumerate(sorted(sentence.replace(',', '').split()))} печать (постоянный ток)
Исходящий:
{'Жизнь': 0, 'десерт': 1, 'есть': 2, 'первое': 3, 'есть': 4, 'короткое': 5}
Далее мы используем этот словарь, чтобы присвоить каждому слову целочисленный индекс:
В:
импортный факел Offering_int = torch.tensor([dc[s] для s в предложении.replace(',', '').split()]) печать (предложение_int)
Исходящий:
тензор([0, 4, 5, 2, 1, 3])
Теперь, используя целочисленное векторное представление входного предложения, мы можем использовать слой встраивания для кодирования входных данных в встраивание вещественного вектора. Здесь мы будем использовать 16-мерное вложение, чтобы каждое входное слово было представлено 16-мерным вектором. Поскольку предложение состоит из 6 слов, это приведет к \(6 \times 16\)-мерному вложению:
В:
факел.manual_seed(123) embed = torch.nn.Embedding(6, 16) embed_sentence = встроить (sentence_int).detach () печать (встроенное_предложение) печать (embedded_sentence.shape)
Исходящий:
тензор([[ 0,3374, -0,1778, -0,3035, -0,5880, 0,3486, 0,6603, -0,2196, -0,3792, 0,7671, -1,1925, 0,6984, -1,4097, 0,1794, 1,8951, 0,4954, 0,2692], [0,5146, 0,9938, -0,2587, -1,0826, -0,0444, 1,6236, -2,3229, 1,0878, 0,6716, 0,6933, -0,9487, -0,0765, -0,1526, 0,1167, 0,4403, -1,4465], [0,2553, -0,5496, 1,0042, 0,8272, -0,3948, 0,4892, -0,2168, -1,7472, -1,6025, -1,0764, 0,9031, -0,7218, -0,5951, -0,7112, 0,6230, -1,3729], [-1,3250, 0,1784, -2,1338, 1,0524, -0,3885, -0,9343, -0,4991, -1,0867, 0,8805, 1,5542, 0,6266, -0,1755, 0,0983, -0,0935, 0,2662, -0,5850], [-0,0770, -1,0205, -0,1690, 0,9178, 1,5810, 1,3010, 1,2753, -0,2010, 0,4965, -1,5723, 0,9666, -1,1481, -1,1589, 0,3255, -0,6315, -2,8400], [0,8768, 1,6221, -1,4779, 1,1331, -1,2203, 1,3139, 1,0533, 0,1388, 2,2473, -0,8036, -0,2808, 0,7697, -0,6596, -0,7979, 0,1838, 0,2293]]) факел. {(i)}\), которое определяет размер результирующего вектора контекста, является произвольным.Итак, для следующего пошагового руководства по коду мы установим \(d_q = d_k = 24\) и будем использовать \(d_v = 28\), инициализируя матрицы проекций следующим образом:
В:
факел.manual_seed(123) d = встроенное_предложение.shape[1] д_к, д_к, д_в = 24, 24, 28 W_query = torch.nn.Parameter (torch.rand (d_q, d)) W_key = torch.nn.Parameter(torch.rand(d_k, d)) W_value = torch.nn.Parameter(torch.rand(d_v, d))Вычисление ненормализованного веса внимания #
Теперь предположим, что нас интересует вычисление вектора внимания для второго элемента ввода — здесь второй элемент ввода действует как запрос:
В коде это выглядит следующим образом:
В:
x_2 = встроенное_предложение[1] query_2 = W_query.matmul(x_2) key_2 = W_key. matmul(x_2) значение_2 = W_значение.matmul(x_2) печать (запрос_2. форма) печать (key_2.shape) печать (значение_2.форма)горелка.Размер([24]) факел.Размер([24]) факел.Размер([28])Затем мы можем обобщить это, чтобы вычислить оставшийся ключ и элементы значений для всех входных данных, поскольку они понадобятся нам на следующем шаге, когда мы будем вычислять ненормализованные веса внимания \(\omega\):
В:
ключей = W_key.matmul(embedded_sentence.T).T значения = W_value.matmul(embedded_sentence.T).T печать("ключи.форма:", ключи.форма) печать("значения.форма:", значения.форма)Исходящий:
keys.shape: torch.Size([6, 24]) values.shape: torch.Size([6, 28]) 9{(к)}\).Например, мы можем вычислить ненормализованный вес внимания для запроса и 5-го элемента ввода (соответствующего позиции индекса 4) следующим образом:
В:
omega_24 = query_2. dot(keys[4]) печать (омега_24)Исходящий:
тензор (11.1466)Поскольку они потребуются нам позже для вычисления показателей внимания, давайте вычислим значения \(\omega\) для всех входных токенов, как показано на предыдущем рисунке:
В:
omega_2 = query_2.matmul(keys.T) печать (омега_2)Исходящий:
тензор([ 8.5808, -7.6597, 3.2558, 1.0395, 11.1466, -0.4800])Вычисление показателей внимания #
Следующим шагом во внимании к себе является нормализация ненормализованных весов внимания, \(\omega\), для получения нормализованных весов внимания, \(\alpha\), путем применения функции softmax. Кроме того, \(1/\sqrt{d_k}\) используется для масштабирования \(\omega\) перед его нормализацией с помощью функции softmax, как показано ниже:
Масштабирование с помощью \(d_k\) гарантирует, что евклидова длина весовых векторов будет примерно одинаковой величины. Это помогает предотвратить слишком малые или слишком большие веса внимания, что может привести к численной нестабильности или повлиять на способность модели сходиться во время обучения.
В коде мы можем реализовать вычисление весов внимания следующим образом:
В:
import torch.nn.функционально как F Attention_weights_2 = F.softmax (omega_2 / d_k ** 0,5, тусклый = 0) печать (внимание_весов_2) 9{(2)}\), включая все остальные элементы ввода в качестве своего контекста через веса внимания:
В коде это выглядит следующим образом:
В:
context_vector_2 = внимание_весов_2.matmul(значения) печать (context_vector_2.shape) печать (context_vector_2)Исходящий:
горелка.Размер([28]) тензор(факел.Размер([28]) тензор([-1,5993, 0,0156, 1,2670, 0,0032, -0,6460, -1,1407, -0,4908, -1,4632, 0,4747, 1,1926, 0,4506, -0,7110, 0,0602, 0,7125, -0,1628, -2,0184, 0,3838, -2,1188, -0,8136, -1,5694, 0,7934, -0,2911, -1,3640, -0,2366, -0,9564, -0,5265, 0,0624, 1,7084])Обратите внимание, что этот выходной вектор имеет больше измерений (\(d_v=28\)), чем исходный входной вектор (\(d=16\)), так как ранее мы указали \(d_v > d\); однако выбор размера встраивания произвольный.
Многоголовое внимание #
На самом первом рисунке вверху этой статьи мы видели, что в трансформерах используется модуль под названием мультиголовное внимание . Как это связано с механизмом само-внимания (внимание с масштабируемым точечным продуктом), который мы рассмотрели выше?
В масштабированном скалярном произведении входная последовательность была преобразована с использованием трех матриц, представляющих запрос, ключ и значение. Эти три матрицы можно рассматривать как единую головку внимания в контексте внимания с несколькими головками. Рисунок ниже суммирует эту единственную голову внимания, которую мы рассмотрели ранее:
Как следует из названия, внимание с несколькими головками включает несколько таких головок, каждая из которых состоит из матриц запросов, ключей и значений. Эта концепция аналогична использованию нескольких ядер в сверточных нейронных сетях.
Чтобы проиллюстрировать это в коде, предположим, что у нас есть 3 головы внимания, поэтому теперь мы расширяем матрицы размерных весов \(d' \times d\) так \(3 \times d' \times d\):
В:
ч = 3 multihead_W_query = torch.nn.Parameter (torch.rand (h, d_q, d)) multihead_W_key = torch.nn.Parameter(torch.rand(h, d_k, d)) multihead_W_value = torch.nn.Parameter(torch.rand(h, d_v, d))Следовательно, каждый элемент запроса теперь является \(3 \times d_q\) размерным, где \(d_q=24\) (здесь давайте сосредоточим внимание на 3-м элементе, соответствующем позиции индекса 2):
В:
multihead_query_2 = multihead_W_query.matmul(x_2) печать (multihead_query_2.shape)Исходящий:
факел.Размер([3, 24])Затем мы можем получить ключи и значения аналогичным образом:
В:
multihead_key_2 = multihead_W_key.matmul(x_2) multihead_value_2 = multihead_W_value. matmul(x_2)Теперь эти элементы ключа и значения относятся к элементу запроса. Но, как и ранее, нам также потребуются значения и ключи для других элементов последовательности, чтобы вычислить оценки внимания для запроса. Мы можем сделать это, расширив вложения входной последовательности до размера 3, то есть количество головок внимания:
В:
stacked_inputs = встроенное_предложение.T.repeat(3, 1, 1) печать (stacked_inputs.shape)Исходящий:
факел.Размер([3, 16, 6])Теперь мы можем вычислить все ключи и значения, используя
через torch.bmm()
(умножение пакетной матрицы):В:
multihead_keys = torch.bmm(multihead_W_key, stacked_inputs) multihead_values = torch.bmm (multihead_W_value, stacked_inputs) print("multihead_keys.shape:", multihead_keys.shape) print("multihead_values.shape:", multihead_values.shape)Исходящий:
multihead_keys. shape: torch.Size([3, 24, 6]) multihead_values.shape: torch.Size([3, 28, 6])Теперь у нас есть тензоры, представляющие три головы внимания в их первом измерении. Третье и второе измерения относятся к количеству слов и размеру встраивания соответственно. Чтобы сделать значения и ключи более интуитивно понятными для интерпретации, мы поменяем местами второе и третье измерения, в результате чего тензоры будут иметь ту же размерную структуру, что и исходная входная последовательность,
.embedded_sentence
:В:
multihead_keys = multihead_keys.permute(0, 2, 1) multihead_values = multihead_values.permute(0, 2, 1) print("multihead_keys.shape:", multihead_keys.shape) print("multihead_values.shape:", multihead_values.shape) 9{(2)}\).Перекрестное внимание #
В пошаговом руководстве выше мы установили \(d_q = d_k = 24\) и \(d_v=28\). Или, другими словами, мы использовали одни и те же параметры для запросов и последовательностей ключей. Хотя матрица значений \(\mathbf{W}_v\) часто выбирается так, чтобы иметь ту же размерность, что и матрицы запросов и ключей (например, в классе PyTorch MultiHeadAttention), мы можем выбрать произвольный числовой размер для измерений значений.
Поскольку размеры иногда немного сложно отслеживать, давайте обобщим все, что мы рассмотрели до сих пор, на рисунке ниже, на котором изображены различные размеры тензора для одной головы внимания.
Рисунок выше соответствует механизму самоконтроля , используемому в трансформаторах. Один из видов этого механизма внимания, который нам еще предстоит обсудить, — это крест — внимание.
Что такое перекрестное внимание и чем оно отличается от внимания к себе?
При самоконтроле мы работаем с той же входной последовательностью. В перекрестном внимании мы смешиваем или комбинируем две различных входных последовательностей. В случае описанной выше исходной архитектуры преобразователя это последовательность, возвращаемая модулем кодировщика слева, и входная последовательность, обрабатываемая частью декодера справа.
Обратите внимание, что две входные последовательности \(\mathbf{x}_1\) и \(\mathbf{x}_2\) могут иметь разное количество элементов. Однако их установочные размеры должны совпадать.
На рисунке ниже показана концепция перекрестного внимания. Если мы установим \(\mathbf{x}_1 = \mathbf{x}_2\), это эквивалентно само-вниманию.
(Обратите внимание, что запросы обычно исходят от декодера, а ключи и значения — от кодировщика.)
Как это работает в коде? Ранее, когда мы реализовывали механизм самоконтроля в начале этой статьи, мы использовали следующий код для вычисления запроса второго элемента ввода вместе со всеми ключами и значениями следующим образом:
В:
факел.manual_seed(123) d = встроенное_предложение.shape[1] print("embedded_sentence.shape:", embedded_sentence.shape:) д_к, д_к, д_в = 24, 24, 28 W_query = torch.rand(d_q, d) W_key = факел.rand(d_k, d) W_value = факел.rand(d_v, d) x_2 = встроенное_предложение[1] query_2 = W_query. matmul(x_2) печать("запрос.форма", запрос_2.форма) ключи = W_key.matmul(embedded_sentence.T).T значения = W_value.matmul(embedded_sentence.T).T печать("ключи.форма:", ключи.форма) печать("значения.форма:", значения.форма)Исходящий:
embedded_sentence.shape: torch.Size([6, 16]) query.shape: torch.Size([24]) keys.shape: torch.Size([6, 24]) values.shape: torch.Size([6, 28])Единственная часть, которая меняется при перекрестном внимании, это то, что теперь у нас есть вторая входная последовательность, например, второе предложение с 8 входными элементами вместо 6. Предположим, это предложение с 8 токенами.
В:
embedded_sentence_2 = torch.rand(8, 16) # 2-я входная последовательность ключи = W_key.matmul(embedded_sentence_2.T).T значения = W_value.matmul(embedded_sentence_2.T).T печать("ключи.форма:", ключи.форма) печать("значения.форма:", значения.форма)Исходящий:
keys. shape: torch.Size([8, 24]) values.shape: torch.Size([8, 28])Обратите внимание, что по сравнению с самостоятельным вниманием ключи и значения теперь имеют 8 строк вместо 6. Все остальное остается прежним.
Выше мы много говорили о языковых трансформерах. В исходной архитектуре преобразователя перекрестное внимание полезно, когда мы переходим от входного предложения к выходному в контексте языкового перевода. Входное предложение представляет собой одну входную последовательность, а перевод представляет собой вторую входную последовательность (два предложения могут содержать разное количество слов).
Еще одна популярная модель, в которой используется перекрестное внимание, — Stable Diffusion. Стабильная диффузия использует перекрестное внимание между сгенерированным изображением в модели U-Net и текстовыми подсказками, используемыми для кондиционирования, как описано в Синтезе изображений высокого разрешения с моделями скрытой диффузии — оригинальной статье, описывающей модель стабильной диффузии, которая позже была принята Стабильность AI для реализации популярной модели Stable Diffusion.