Игры для развития внимания
«Последний из могикан»
Эту игру хорошо проводить после рассказа об индейцах, а еще лучше после того, как ребенок посмотрел фильм или прочитал книгу об индейцах. Обсудите основные характеристики индейцев: близость к природе, умение слышать и видеть все, что происходит вокруг. Особенно внимательны должны быть индейцы, отправившиеся на охоту или «откопавшие топор войны». От того, заметят ли они вовремя различные шумы, может зависеть их благополучие. Теперь, когда игровая мотивация создана, предложите ребенку побыть таким индейцем. Пусть он закроет глаза и постарается услышать все звуки в комнате и за ее пределами. Спросите его о происхождении этих звуков.
Примечание. Чтобы было интереснее, можно специально организовать некоторые шумы и звуки. Постучите по различным предметам в комнате, хлопните дверью, пошуршите газетой и т. д.
«Учитель»
Эта игра наверняка понравится тем, кто уже учится в школе, особенно в начальных классах. В этом возрасте дети легко отождествляют себя с учителем и с удовольствием побудут на его месте.
А вот вам, наоборот, придется представить себя нерадивым школьником и подготовиться к уроку, списав несколько предложений из книги. При этом вы должны допустить в своем тексте несколько ошибок. Лучше не делать орфографических или пунктуационных ошибок, ведь ребенок может не знать некоторых правил. Зато можно допускать пропуски букв, изменения окончаний, несогласованность слов в лице и падеже. Пусть ребенок войдет в роль учителя и проверит вашу работу. Когда все ошибки будут найдены, предложите ему поставить оценку за такое списывание. Будьте морально готовы, что ваши сын или дочь с нескрываемой радостью поставят двойку в ваш воображаемый дневник. Хорошо еще, если родителей в школу не будут требовать!
Примечание. Если у вас неразборчивый почерк, то лучше напечатать текст с ошибками или написать печатными буквами.
«Только об одном»
Эта игра может показаться скучноватой на взгляд взрослых. Однако дети ее почему-то очень любят.
Предложите ребенку выбрать одну любую игрушку. Теперь объясните правила. В этой игре можно говорить только об одном — о выбранной игрушке. Причем говорит только тот, у кого игрушка в руках. Сказать нужно одно предложение, описывающее эту игрушку в целом или какие-то ее детали. После этого следует передать ее другому игроку. Тогда он скажет свое предложение об этом же предмете. Обратите внимание, что нельзя повторять уже сказанные ответы или делать отвлеченные высказывания. Так фразы типа: «А я у бабушки видел похожую…» — будут караться штрафным баллом. А игрок, набравший три таких балла, считается проигравшим! Сюда же начисляются штрафы за повторение сказанного и ответ не в свою очередь.
Примечание. Лучше ограничивать время этой игры. Например, если по истечении десяти минут никто из участников не набрал три штрафных балла, то выигрывают оба. Постепенно эту игру можно усложнять, выбирая в качестве ее объекта не игрушку, а более простые предметы, у которых не так уж много признаков. Если в результате вы сможете описывать достаточно долго предметы типа карандаша, то смело считайте, что достигли со своим ребенком определенных высот!
«Лови — не лови»
Правила этой игры похожи на всем известный способ играть в «Съедобное — несъедобное». Только условие, когда ребенок ловит мяч, а когда нет, может меняться в каждом коне игры Например, сейчас вы договариваетесь с ним, что если водящий бросает мяч, произнося слово, относящееся к растениям, то игрок ловит его. Если же слово не является растением, то отбивает мяч. Например, один кон игры мог бы называться «Мебель — не мебель». Аналогично можно играть в такие варианты, как «Рыба — не рыба», «Транспорт — не транспорт», «Летает — не летает» и множество других. Количество выбираемых условий игры зависит только от вашей фантазии. Если она вдруг иссякнет, предложите ребенку самому выбрать условие игры, то есть категорию слов, которые он будет ловить. Дети иногда дают совершенно свежие и творческие идеи!
Примечание. Как вы, наверное, заметили, эта игра развивает не только внимание, но и способность к обобщению, а также скорость обработки услышанной информации. Поэтому в целях интеллектуального развития ребенка постарайтесь, чтобы категории этих обобщаемых понятий были разнообразны и затрагивали разные сферы, а не ограничивались бытовыми и часто используемыми словами.
«Дрессированная муха»
Для этой игры вам потребуется взять лист бумаги и расчертить его на 16 клеток (квадрат из четырех клеток по вертикали и четырех по горизонтали). Изображение мухи можно сделать самим на отдельном маленьком листке или взять пуговку (игровую фишку), которая будет просто символизировать это насекомое.
Поместите вашу «муху» на какую-либо клетку игрового поля. Теперь вы будете ей приказывать, на сколько клеточек и в каком направлении нужно перемещаться. Ребенок должен представить себе мысленно эти передвижения. После того как вы отдали мухе несколько приказаний (например, одна клеточка вверх, две вправо, одна вниз), попросите сына (дочь) показать то место, где теперь должна быть хорошо дрессированная муха. Если место указано верно, то передвиньте муху на соответствующую клеточку. Продолжайте быть «повелителем мух».
Примечание. Если, следя мысленным взором за движениями мухи, ваш ребенок увидит, что она, выполняя ваши инструкции, выползла за пределы клеточного поля, то пусть он немедленно даст вам знать об этом. Договоритесь, каким образом он может это сделать: кому-то достаточно встать с места или поднять руку, а кто-то предпочитает более выразительные действия, например вскрикнуть или подпрыгнуть, что помогает снять напряжение и усталость от пристального внимания.
«Я весь во внимании»
В этой игре вашему ребенку понадобится все его актерское дарование, а вам — изобретательность. Можно ввести участников в игру с помощью представления, действие которого происходит на кинопробах. Юным актерам предлагают изобразить человека, который «весь во внимании», то есть полностью поглощен своими мыслями и чувствами, поэтому он совершенно не замечает того, что происходит вокруг него. Подскажите начинающему актеру, что получится лучше сосредоточиться, если он представит, что смотрит очень интересный фильм или читает книгу. Но этим роль не ограничивается. У начинающей звезды экрана есть конкуренты. Они будут всячески мешать ему хорошо сыграть свою роль. Для этого они (то есть опять-таки вы в такой «вредной» роли) могут рассказывать анекдоты, обращаться к актеру за помощью, пытаться удивить или рассмешить его, чтобы привлечь к себе внимание. Единственное, чего они не имеют права делать, — это дотрагиваться до актера. Но и у актера есть ограничения в правах: он не может закрывать глаза или уши.
После того как режиссер (то есть вы или другой член семьи) скажет: «Стоп», все участники перестают играть. Можно даже взять интервью у начинающего артиста, пусть он расскажет, как ему удалось быть внимательным и не отвлекаться на специально создаваемые помехи.
Примечание. Конечно, эта игра будет еще веселее, если вы подключите к ней нескольких детей. Правда, тогда нужно будет следить за порядком, чтобы «конкуренты» не переусердствовали в стремлении отвлечь «актера». Также участие взрослого может показать детям неожиданные и интересные ходы, которые они могут использовать. Если вы заметите, что попытки отвлечь актера ограничиваются криками и кривляньем, то подскажите игрокам более оригинальные способы. Так можно сообщать личные новости («Бабушка приехала!»), показывать новую игрушку, делать вид, что все уходят и т. п.
«Зоркий Глаз»
Для того чтобы стать победителем в этой игре, ребенку нужно быть очень внимательным и уметь не отвлекаться на посторонние предметы.
Выберите маленькую игрушку или предмет, который ребенку предстоит найти. Дайте ему возможность запомнить, что это такое, особенно если это новая вещь в доме. Попросите ребенка выйти из комнаты. Когда он выполнит эту просьбу, поставьте выбранный предмет на доступном взгляду месте, но так, чтобы тот не сразу бросался в глаза. В этой игре нельзя прятать предметы в ящики стола, за шкаф и тому подобные места. Игрушка должна стоять так, чтобы играющий мог ее обнаружить, не дотрагиваясь до предметов в комнате, а просто внимательно их рассматривая.
Примечание. Если ваши сын или дочь сумели найти игрушку, то они достойны похвалы. Можно даже сказать им о том, что, родись они в племени индейцев, их, возможно, назвали бы гордым именем типа Зоркий Глаз.
«Ушки на макушке»
Прежде чем начать с ребенком играть в «Ушки на макушке», узнайте, как он понимает смысл этого выражения применительно к людям. Если окажется, что переносный смысл этой фразы остается для малыша неясным, поясните ему сами образное выражение: о людях так говорят, когда они внимательно прислушиваются. А в применении к животным данная фраза имеет прямой смысл, так как, прислушиваясь, звери обычно приподнимают уши.
Теперь можно объяснять правила игры. Вы будете произносить самые разные слова. Если в них слышится определенный звук, например [с], или тот же звук, но мягкий, то ребенок должен немедленно встать. Если же вы произносите слово, где этот звук отсутствует, то ребенку следует оставаться на своем месте.
Примечание. Эта игра развивает слуховое внимание, то есть внимание к звукам. Поэтому она будет очень полезна тем детям, которые готовятся к поступлению в школу и только начинают учиться читать и писать. Для ребят, у которых имеются какие-либо логопедические трудности, особенно нарушения фонематического слуха (что должен установить логопед), такая игра может стать не только развивающей внимание, но и корректирующей некоторые недостатки развития.
«Волшебное число»
С этой игрой могут справиться дети, умеющие хорошо считать и делить в уме, то есть не младше третьего класса.
Необходимо несколько участников игры. Они будут считать по кругу от одного до тридцати. Чтобы сосредоточить внимание на том, кто должен отвечать, можно перекидывать мяч. Каждый игрок должен просто назвать число, следующее за тем, которое назвал предыдущий участник. Но если это число содержит цифру три или делится на три без остатка, то произносить его нельзя. В этом случае нужно сказать какое-то волшебное заклинание (например, «абракадабра») и перекинуть мяч следующему человеку.
Сложность игры заключается в том, чтобы не сбиться со счета, продолжая четко называть числа, даже после того, как предыдущий игрок произнес «заклинание», а не число.
Примечание. «Волшебным» в этой игре можно сделать любое число, но начинать лучше с трех, так как это действительно волшебное число всех русских сказок (что можно обсудить с ребенком).
«Пишущая машинка»
В эту игру имеет смысл играть, если у вас в доме (постоянно или временно) есть несколько детей, умеющих читать. Пусть они представят себя клавишами печатной машинки и «напечатают» то предложение, которое вы им скажете. Участники игры должны по очереди вставать и называть по одной букве. Им придется быть очень внимательными, чтобы не ошибиться в выборе буквы и не пропустить свою очередь!
Когда «печатаемое» слово заканчивается, все «клавиши» должны встать. Когда нужен знак препинания, то все топают ногой, а в конце предложения точку обозначают хлопком в ладоши.
Клавиши, которые неверно печатают, будут отправляться в мастерскую, то есть дети, сделавшие по три ошибки, будут выходить из игры. Оставшиеся, напротив, считаются победителями. На таких детей-клавиш можно и гарантию давать, не боясь разориться на ремонте!
Например: Если игроки разного возраста, то фразу для печати лучше давать такую, с которой справится даже самый младший из них. Тогда все играющие будут в равных условиях и не проиграют только потому, что еще не учили в школе тех или иных правил русского языка.
Источник: МАДОУ «Детский сад №35», https://clck.ru/HoHPR
Как использовать разные типы внимания, чтобы всё успевать
9 марта Продуктивность
От них зависит, насколько быстро истощаются ваши запасы энергии в течение дня.
Оставаться сосредоточенным в мире нескончаемых электронных писем и уведомлений из социальных сетей — настоящая борьба с самим собой. Победой в ней мы обычно считаем глубокое сфокусированное внимание. Но у него есть и другие грани. Например, творчество, которое возникает из скуки, комфорт, который дают нам бессмысленные рутинные действия, или удовлетворение, которое мы испытываем от завершения сложной пугающей задачи.
Об этом размышляет автор книги «Концентрация внимания: поиск фокуса для полноценной жизни», психолог и профессор информатики Калифорнийского университета в Ирвайне Глория Марк. Она считает, что у внимания есть два измерения. Первое — насколько нам трудно выполнять что‑то, второе — насколько мы вовлечены в процесс.
Глубокое внимание предполагает высокий уровень сложности и вовлечённости. В то же время мы можем считать какую‑то задачу сложной, но не быть в неё вовлечёнными, и наоборот. В зависимости от соотношения компонентов Глория Марк выделяет четыре типа внимания.
Каким бывает внимание
1. Сосредоточенное внимание
Когда мы говорим о напряжённой продуктивной работе, то чаще всего имеем в виду именно этот тип. При сосредоточенном внимании мы полностью поглощены каким‑то делом, и оно требует от нас некоторых усилий, бросая вызов нашим знаниям и навыкам. Например, мы собираем мебель или завершаем важный проект.
По словам Глории Марк, почти весь рабочий день мы проводим в сосредоточенном внимании. Но его «график» постоянно меняется: подъёмы чередуется со спадами, а пика оно обычно достигает в 11:00 и 15:00.
Этому типу сопутствуют мотивация и креативность. Именно из состояния сосредоточенного внимания можно попасть в состояние потока, когда мы полностью погружаемся в работу, забываем о времени и используем свои навыки оптимальным способом.
2. Механическое внимание
При этом типе внимания мы вовлечены в задачу, но считаем её не трудной, а скорее рутинной и автоматической. Например, когда проверяем социальные сети или играем в тайм‑киллер на телефоне.
Многие привыкли считать подобные занятия бессмысленными, но они могут быть очень полезными, если использовать их стратегически. Механическое внимание позволяет нам восполнить ресурсы, поддерживая активность мозга без особых усилий и затрат энергии.
У этого типа внимания, как и у сосредоточенного, есть определённый ритм. Оно активизируется к 9:00 и сохраняется примерно до 14:00.
3. Расфокусированное внимание
Мы сталкиваемся с этим типом, когда то, чем мы занимаемся, ни сложно, ни увлекательно, так что нам становится скучно. Например, когда мы быстро переключаем ТВ‑каналы или вкладки в браузере и даже не успеваем понять, что видим на экране, потому что нас совершенно ничего не «цепляет».
При расфокусированном внимании мы гораздо острее воспринимаем течение времени. Каждая минута для нас длится вечность, а всё, на что мы способны, — думать, когда это закончится. Всё потому что мы не используем свои когнитивные ресурсы. Наш мозг активно работает, но нам некуда девать эту энергию.
Тем не менее этот тип внимания (обычно он усиливается около 13:00) можно обернуть себе на пользу. Например, если мы пытаемся развеять скуку и найти новое интересное занятие, то переходим от расфокусированного внимания к сосредоточенному.
4. Вынужденное внимание
Этот тип внимания возникает, когда высокий уровень сложности того, чем мы занимаемся, сочетается с отсутствием вовлечённости. Стоящая перед нами задача настолько трудная и неприятная, что мы никак не можем заставить себя её выполнить.
Глория Марк описывает этот тип внимания как ощущения программиста, который изо всех сил пытается исправить баг и не находит решения. В такие моменты кажется, что мы бьёмся головой о стену, но у нас не получается её пробить и двигаться вперёд. При этом отказаться от задачи тоже нельзя — нас сковывает строгий дедлайн, требования руководства или другие обязательства.
Вынужденное внимание расходует очень много энергии и когнитивных ресурсов, поэтому мы пытаемся избегать его любой ценой.
Как управлять вниманием
Каким бы ценным ни было сосредоточенное внимание, оно требует значительных когнитивных ресурсов и очень много энергии. К сожалению, наши запасы и того и другого ограничены, поэтому оставаться сфокусированным в течение долгого времени не получится.
Тем не менее развить способность концентрироваться и улучшить продуктивность вполне можно. Для этого нужно найти способ регулярно переключаться между сосредоточенным и механическим вниманием. Если использовать первый тип в течение всего дня, он быстро «сожрёт» все доступные ресурсы. Второму типу их требуется намного меньше, третьему — расфокусированному — ещё меньше, а четвёртому — вынужденному — наоборот, больше.
Именно поэтому для восстановления сил лучше использовать механическое внимание. Оно не отнимает ресурсы, сохраняет высокий уровень вовлечённости и приносит удовлетворение. Можно поиграть в простые игры на телефоне, сходить на прогулку или найти любое другое лёгкое, даже бессмысленное занятие, которое позволит отдохнуть от сосредоточенного внимания. После перерыва будет проще вернуться в сфокусированное состояние и продолжить серьёзную работу.
Учиться управлять своим вниманием и контролировать запасы внутренних ресурсов невероятно важно. Это поможет вовремя замечать упадок сил и переключаться в нужный режим, чтобы восстановиться, больше успеть, сохранить продуктивность и избежать выгорания.
Читайте также 🧐
- Гиперфокус может привести к выгоранию. Вот как понять, что вам это грозит
- Как улучшить концентрацию внимания
- 4 простых упражнения для концентрации внимания
Объяснение уровня All-Attention | Бумаги с кодом
Вам необходимо авторизоваться для редактирования.
Вы можете создать новую учетную запись, если у вас ее нет.
Или обсудите изменение в Slack.
Название метода:*
Полное название метода:*
Описание с уценкой (необязательно):
**Уровень всего внимания** — это модуль внимания и уровень для преобразователей, которые объединяют подуровни собственного внимания и прямой связи в единый унифицированный уровень внимания.
В отличие от двухэтапного механизма слоя [Transformer](https://paperswithcode.com/method/transformer), он напрямую строит свое представление из контекста и блока постоянной памяти без прохождения прямого преобразования. Дополнительный блок постоянной памяти хранит в виде векторов ключ-значение информацию, не зависящую от контекста. С точки зрения параметров, эти постоянные векторы ключ-значение заменяют подуровень прямой связи.URL-адрес фрагмента кода (необязательно):
Прикрепленные коллекции:
- ВНИМАНИЕ МОДУЛИ
Добавлять:
———
Нет в списке?
Создайте новую коллекцию.
Новое название коллекции:
Зона верхнего уровня:
———АудиоКомпьютерное зрениеОбщиеГрафикиОбработка естественного языкаОбучение с подкреплениемПоследовательный
Родительская коллекция (если есть):———
Описание (необязательно):
Добавлять:*
———
Отметьте, если эта зависимость является необязательной
Внимание — это все, что вам нужно: Знакомство с бумагой-трансформером | Эдуардо Муньос
Подробная реализация модели Transformer в Tensorflow
Изображение Винсона Тана с PixabayВ этом посте мы опишем и демистифицируем соответствующие артефакты в статье «Внимание — это все, что вам нужно» (Васвани, Ашиш и Шазир, Ноам и Пармар, Ники и Ушкорейт, Якоб и Джонс, Ллион и Гомес, Эйдан и Кайзер, Лукаш и Полосухин, Илья (2017))[1] . Эта статья была большим шагом вперед в использовании механизма внимания, являясь основным усовершенствованием модели под названием Transformer. Наиболее известные современные модели, возникающие в задачах NLP, состоят из десятков преобразователей или некоторых их вариантов, например, GPT-2 или BERT.
Мы опишем компоненты этой модели, проанализируем их работу и построим простую модель, которую применим к маломасштабной задаче NMT (Neural Machine Translation). Чтобы узнать больше о проблеме, которую мы будем решать, и узнать, как работает основной механизм внимания, я рекомендую вам прочитать мой предыдущий пост «Руководство по модели кодировщика-декодера и механизму внимания».
В задачах последовательного преобразования, таких как нейронный машинный перевод, первоначальные предложения были основаны на использовании RNN в архитектуре кодер-декодер. Эти архитектуры имеют большое ограничение при работе с длинными последовательностями, их способность сохранять информацию из первых элементов терялась при включении в последовательность новых элементов. В кодировщике скрытое состояние на каждом шаге связано с определенным словом во входном предложении, обычно одним из самых последних. Следовательно, если декодер обращается только к последнему скрытому состоянию декодера, он потеряет соответствующую информацию о первых элементах последовательности. Затем, чтобы справиться с этим ограничением, была введена новая концепция механизм внимания .
Вместо того, чтобы обращать внимание на последнее состояние энкодера, как это обычно делается с RNN, на каждом шаге декодера мы смотрим на все состояния энкодера, имея возможность получить доступ к информации обо всех элементах входной последовательности. Это то, что делает внимание, оно извлекает информацию из всей последовательности, взвешенную сумму всех прошлых состояний кодировщика . Это позволяет декодеру присваивать больший вес или важность определенному элементу ввода для каждого элемента вывода. Учимся на каждом этапе фокусироваться на правильном элементе ввода, чтобы предсказать следующий элемент вывода.
Но этот подход по-прежнему имеет важное ограничение: каждая последовательность должна обрабатываться по одному элементу за раз. И кодер, и декодер должны дождаться завершения t-1
шагов для обработки t-го
шага. Таким образом, работа с огромным корпусом требует очень много времени и неэффективна в вычислительном отношении .
В этой работе мы предлагаем Transformer, архитектуру модели, избегающую повторения и вместо этого полностью полагающуюся на механизм внимания для построения глобальных зависимостей между вводом и выводом. Transformer обеспечивает значительно большее распараллеливание… Transformer — это первая модель преобразования, полностью полагающаяся на собственное внимание для вычисления представлений своих входных и выходных данных без использования выровненных по последовательности RNN или свертки.
Бумага «Внимание — это все, что вам нужно» [1]
Модель Transformer извлекает функции для каждого слова, используя механизм самоконтроля , чтобы выяснить, насколько важны все остальные слова в предложении w. r.t. к упомянутому слову. И для получения этих функций не используются рекуррентные единицы, это просто взвешенные суммы и активации, поэтому они могут быть очень распараллеливаемыми и эффективными.
Но мы углубимся в его архитектуру (следующий рисунок), чтобы понять, что делают все эти части [1].
Из статьи Васвани и др. «Внимание — это все, что вам нужно», 2017 г. [1]Мы видим, что слева находится модель кодировщика, а справа — декодер. Оба содержат основной блок «сети внимания и прямой связи», повторяющийся N раз. Но сначала нам нужно подробно изучить основную концепцию: механизм само-внимания.
Само-внимание — это последовательность операций: входит последовательность векторов и выходит последовательность векторов. Назовем входные векторы
x1
,x2
,…,xt
и соответствующие выходные векторыy1
,y2
,…,yt
. Все векторы имеют размерность k. Чтобы получить выходной векторyi
, операция самоконтроля просто берет средневзвешенное значение по всем входным векторам, простейшим вариантом является скалярное произведение.Преобразователи с нуля Питера Блума [2]
В механизм само-внимания нашей модели нам нужно ввести три элемента: запросы, значения и ключи
Запрос, Значение и Ключ
Каждый входной вектор используется в механизме само-внимания тремя различными способами: Запрос, Ключ и Значение. В каждой роли он сравнивается с другими векторами, чтобы получить собственный вывод yi
(Запрос), получить j-й вывод yj
(Ключ) и вычислить каждый выходной вектор после установления весов (Значение ).
Чтобы получить эти роли, нам нужны три весовые матрицы размерности k x k и вычислить три линейных преобразования для каждой xi
:
Эти три матрицы обычно известны как K , Q и V, три обучаемых весовых слоя, которые применяются к одному и тому же закодированному входу . Следовательно, поскольку каждая из этих трех матриц исходит из одного и того же входа, мы можем применить механизм внимания входного вектора к самому себе, «само-внимание».
Масштабированное скалярное произведение Внимание
Входные данные состоят из запросов и ключей размерности
dk
и значения размерностиdv
. Мы вычисляем точечный продукт запроса со всеми ключами, делим каждый на квадратный корень изdk
и применяем функциюsoftmax
для получения весов значений.«Внимание — это все, что вам нужно» документ [1]
Затем мы используем матрицы Q , K и V для расчета показателей внимания. Баллы показывают, сколько внимания нужно уделять другим местам или словам входной последовательности по отношению к слову в определенной позиции . То есть скалярное произведение вектора запроса на вектор ключа соответствующего слова, которое мы оцениваем. Итак, для позиции 1 мы вычисляем скалярное произведение (.) q1
и k1
, затем q1
. к2
, кв1
. k3
и так далее,…
Затем мы применяем «масштабированный» фактор, чтобы получить более стабильные градиенты. Функция softmax не может правильно работать с большими значениями, что приводит к исчезновению градиентов и замедлению обучения [2]. После «мягкого максимизации» мы умножаем на матрицу значений, чтобы сохранить значения слов, на которых мы хотим сосредоточиться, и минимизировать или удалить значения для нерелевантных слов (его значение в матрице V должно быть очень маленьким).
Формула для этих операций:
Из статьи «Внимание — это все, что вам нужно» Васвани и др., 2017 [1]. Масштабированная формула скалярного произведения внимания.Multi-head Attention
В предыдущем описании оценки внимания сосредоточены на всем предложении за раз, это даст одинаковые результаты, даже если два предложения содержат одни и те же слова в разном порядке. Вместо этого мы хотели бы обратить внимание на разные сегменты слов. «Мы можем дать вниманию к себе большую силу различения, путем объединения нескольких заголовков с самостоятельным вниманием, деления векторов слов на фиксированное количество (h, количество головок) фрагментов, а затем самовнимание применяется к соответствующим фрагментам с использованием Q, K и V sub -матрицы. », [2] Питер Блум, «Трансформеры с нуля». Это дает ч различных выходных матриц оценок.
Из статьи Васвани и др. «Внимание — это все, что вам нужно», 2017 [1] Но следующий слой (уровень прямой связи) ожидает только одну матрицу, вектор для каждого слова, поэтому «после вычисления скалярного произведения каждой головы мы объединяем выходные матрицы и умножаем их на дополнительную матрицу весов Wo
», [3]. Эта окончательная матрица собирает информацию со всех головок внимания.
Позиционное кодирование
Мы вкратце упомянули, что порядок слов в предложении является проблемой, которую необходимо решить в этой модели, потому что сеть и механизм внутреннего внимания инвариантны к перестановкам. Если мы перемешаем слова во входном предложении, мы получим те же решения. Нам нужно создать представление положения слова в предложении и добавить его к встраиванию слова.
С этой целью мы добавляем «позиционные кодировки» к входным вложениям в нижней части стеков кодировщика и декодера. Позиционные кодировки имеют ту же размерность, что и вложения, поэтому их можно суммировать. Есть много вариантов позиционного кодирования.
Бумага «Внимание — это все, что вам нужно»
Итак, мы применяем функцию для сопоставления положения в предложении с вещественным вектором. Сеть научится использовать эту информацию. Другим подходом может быть использование встраивания позиций, аналогичного встраиванию слов, с кодированием каждой известной позиции вектором. «Во время цикла обучения потребуются предложения со всеми принятыми позициями, но позиционное кодирование позволяет модели экстраполировать на более длинные последовательности, чем те, которые встречаются во время обучения» , [2].
В статье применена синусоидальная функция:
Из статьи «Внимание — это все, что вам нужно» Васвани и др., 2017 [1]. Позиционное кодированиеТеперь, когда все основные части модели описаны, мы можем представить компоненты кодировщика [4]:
- Позиционное кодирование : Добавьте кодирование положения к входному встраиванию (наши входные слова преобразуются в векторы встраивания). «Одна и та же весовая матрица используется двумя слоями внедрения (кодер и декодер) и линейным преобразованием до softmax. Во встраиваемых слоях мы умножаем эти веса на квадратный корень из размера модели» [1].
-
N=6
одинаковых слоев, содержащих два подслоя: мультиголовка с самостоятельным вниманием механизм и полностью связанная сеть прямой связи (два линейных преобразования с активацией ReLU). Но он применяется к входным данным по положению, а это означает, что одна и та же нейронная сеть применяется к каждому отдельному вектору «токенов», принадлежащему последовательности предложений.
- Существует остаточное соединение вокруг каждого подуровня (внимание и сеть FC), суммирующее выходные данные уровня с его входными данными, за которыми следует нормализация уровня .
- Перед каждым остаточным соединением применяется регуляризация : «Мы применяем отсев к выходу каждого подуровня, прежде чем он будет добавлен к входу подуровня и нормализован. Кроме того, мы применяем отсев к суммам вложений и позиционных кодировок как в стеках кодировщика, так и в стеках декодера» [1] с коэффициентом отсева 0,1.
Нормализация и остаточные соединения — это стандартные приемы, которые помогают глубоким нейронным сетям обучаться быстрее и точнее. Нормализация слоя применяется только к измерению встраивания.
Питер Блум, «Трансформеры с нуля» [2]
Сначала мы реализуем уровень энкодера, каждый из шести блоков, содержащихся в энкодере:
На следующем рисунке подробно показаны компоненты:
«The Ilustrated Transformer» Jay Alammar [3]И код энкодера:
Имейте в виду, что только вектор из последнего слоя (6-го) отправляется на декодер .
Декодер разделяет некоторые компоненты с энкодером, но они используются по-разному, чтобы учитывать выходные данные энкодера, [4]:
- Позиционное кодирование : Аналогично кодировщику
-
N=6
идентичных слоев, содержащих 3 три подслоя. Во-первых, маскированное многоголовое внимание или замаскировало причинное внимание , чтобы не допустить, чтобы позиции обращались к последующим позициям. «Эта маскировка в сочетании с тем фактом, что выходные вложения смещены на одну позицию, гарантирует, что прогнозы для позиции i могут зависеть только от известных выходных данных в позициях, меньших i» [1] . Реализована установка в -∞ значений, соответствующих запрещенным состояниям в слое softmax модулей внимания скалярного произведения. Второй компонент или «внимание кодера-декодера» выполняет многоголовочное внимание к выходу декодера, векторы ключа и значения поступают с выхода кодера, но запросы поступают с предыдущего уровня декодера. «Это позволяет каждой позиции в декодере преобладать над всеми позициями во входной последовательности» [1] . И, наконец, полносвязная сеть. - Остаточное соединение и нормализация уровня вокруг каждого подуровня, аналогично кодировщику.
- И повторите тот же остаточный сброс , который был выполнен в энкодере.
Уровень декодера:
«Иллюстрированный преобразователь» Джея Аламмара [3]В конце N сложенных декодеров линейный уровень , полностью связанная сеть, преобразует сложенные выходные данные в гораздо больший вектор , логиты . « слой softmax затем превращает эти оценки (логиты) в вероятности (все положительные, все в сумме дают 1,0). Выбирается ячейка с наибольшей вероятностью, и слово, связанное с ней, создается в качестве выходных данных для этого временного шага», [3] Джей Аламмар, «Иллюстрированный преобразователь».
Компонент декодера:
После того, как мы определили наши компоненты и создали кодировщик, декодер и последний слой linear-softmax, мы соединяем части, чтобы сформировать нашу модель, Трансформатор.
Стоит отметить, что мы создаем 3 маски , каждая из которых позволит нам:
- Маска кодировщика : Это маска заполнения для отбрасывания токенов заполнения из расчета внимания.
- Маска декодера 1 : эта маска представляет собой объединение маски заполнения и маски упреждения, которая поможет каузальному вниманию отбросить токены «в будущем». Мы берем максимальное значение между маской заполнения и опережающей маской.
- Маска декодера 2: это маска заполнения, которая применяется на уровне внимания кодер-декодер.
Как видите, затем мы вызываем кодировщик, декодер и последний слой linear-softmax, чтобы получить прогнозируемый результат нашей модели Transformer.
Изображение Герда Альтманна с PixabayТеперь, когда мы подробно описали компоненты в статье, мы готовы реализовать их и обучить модель трансформатора решению задачи NMT. Это игрушечная задача для образовательных целей.
В этом посте мы не будем касаться обработки данных. Перейдите по ссылке, которую я упомянул во введении, чтобы получить дополнительную информацию и предоставленный код, чтобы увидеть, как данные загружаются и подготавливаются. Таким образом, создайте словарь, токенизируйте (включая токен eos
и sos
) и дополните предложения. Затем мы создаем набор данных, генератор пакетных данных, для обучения на пакетах.
Нам нужно создать пользовательскую функцию потерь для маскировки токенов заполнения.
Мы используем оптимизатор Adam, описанный в статье, с beta1=0,9
, beta2=0,98
и epsilon=10e-9
. Затем мы создаем планировщик для изменения скорости обучения в процессе обучения в соответствии с:
Основная функция обучения
Функция обучения похожа на многие другие тренировки Tensorflow, обычный цикл обучения для последовательных задач:
- Для каждой итерации генератора пакетов, который производит входные и выходные данные размера пакета
- Получить входную последовательность от 0 до длины-1 и фактические выходные данные от 1 до длины, следующее слово, ожидаемое на каждом шаге последовательности.
- Вызов преобразователя для получения прогнозов
- Рассчитать функцию потерь между реальными выходными данными и прогнозами
- Применить градиенты для обновления весов в модели и обновить также оптимизатор
- Рассчитать средние потери и точность для пакетные данные
- Показать некоторые результаты и сохранить модель в каждой эпохе
И все, у нас есть все необходимые элементы для обучения нашей модели, нам просто нужно их создать и вызвать функцию обучения:
Photo by Jr Korpa на Unsplash При обучении модели машинного обучения мы заинтересованы не только в оптимизации потерь или точности, мы хотим, чтобы наша модель делала достаточно хорошие прогнозы и, в этом случае, видела, как модель работает с новыми предложениями. Функция прогнозирования введет в модель токенизированное предложение и вернет предсказанное новое предложение, в нашем примере перевод с английского на испанский.Вот шаги в этом процессе:
- Токенизируйте входное предложение последовательностью токенов
- Установите начальную выходную последовательность на токен
sos
- Пока мы не достигнем максимальной длины или токена
eos
это возвращается моделью - Получить предсказанное следующее слово. Модель возвращает логиты, помните, что функция softmax применяется при расчете потерь.
- Получить индекс в словаре слова с наибольшей вероятностью
- Объединить следующее предсказанное слово с выходной последовательностью
И, наконец, наша последняя функция получает предложение на английском языке, вызывает преобразователь для перевода его на испанский язык и показывает результат.
В этом примере мы просто экспериментируем с некоторыми значениями размерности модели и единицами сети прямой связи, чтобы обучить модель в течение часа. Если вы хотите оптимизировать модель, вам, вероятно, следует обучать ее дольше и с разными значениями гиперпараметров.
Код доступен в моем репозитории github «Transformer-NMT». Код частично взят из отличного курса SuperDataScience Team под названием «Современная обработка естественного языка в Python» на Udemy. Я очень рекомендую это.
Некоторые примеры переводов:
#Показать некоторые переводы
предложение = "вы должны заплатить за это. "
print("Входное предложение: {}".format(sentence))
предсказанное_предложение = перевести(предложение)
print("Выходное предложение: {}".format(предсказанное_предложение)) Введите предложение: вы должны заплатить за это.
Выходное предложение: Deberías pagar por ello. #Показать некоторые переводы
предложение = "у нас нет лишних денег."
print("Входное предложение: {}".format(sentence))
predicted_sentence = translate(sentence)
print("Выходное предложение: {}".format(predicted_sentence)) Входное предложение: у нас нет лишних денег.
Выходное предложение: Нет дополнительных денег. #Показать некоторые переводы
предложение = "Это проблема, с которой нужно разобраться."
print("Входное предложение: {}".format(sentence))
predicted_sentence = translate(sentence)print("Выходное предложение: {}".format(predicted_sentence)) Входное предложение: это проблема, с которой нужно разобраться .