Ремонтная мастерская для ревизии трансформаторов.
Заказать уникальную курсовую работу- 33 33 страницы
- 5 + 5 источников
- Добавлена 20.03.2022
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Часть 2: ТрансформаторВ статье "Внимание - это все, что Вам нужно" представлена новая архитектура под названием Transformer. Как следует из названия, он использует механизм внимания, который мы видели ранее. Как и LSTM, Transformer-это архитектура для преобразования одной последовательности в другую с помощью двух частей (кодера и декодера), но она отличается от ранее описанных/существующих моделей последовательностей, поскольку она не подразумевает никаких Рекуррентных сетей (GRU, LSTM и т. Д.).Рекуррентные сети до сих пор были одним из лучших способов фиксировать своевременные зависимости в последовательностях. Однако команда, представившая статью, доказала, что архитектура только с механизмами внимания без каких-либо RNN (рекуррентных нейронных сетей) может улучшить результаты в задаче перевода и других задачах! Одно из улучшений в задачах на естественном языке представлено командой, представляющей BERT: BERT: Предварительная подготовка Глубоких двунаправленных трансформаторов для понимания языка.Итак, что же такое Трансформатор?Изображение стоит тысячи слов, так что мы начнем с этого!Кодер находится слева, а декодер-справа. И кодер, и декодер состоят из модулей, которые могут быть сложены друг на друга несколько раз, что описано Nx на рисунке. Мы видим, что модули состоят в основном из Многоголовых уровней внимания и прямой передачи. Входные и выходные данные (целевые предложения) сначала встроены в n-мерное пространство, поскольку мы не можем напрямую использовать строки.Одной небольшой, но важной частью модели является позиционное кодирование различных слов. Поскольку у нас нет рекуррентных сетей, которые могли бы запоминать, как последовательности вводятся в модель, нам нужно каким-то образом придать каждому слову/части в нашей последовательности относительное положение, поскольку последовательность зависит от порядка ее элементов. Эти позиции добавляются во встроенное представление (n-мерный вектор) каждого слова.Давайте поближе рассмотрим эти кирпичики внимания с несколькими головками в модели:Давайте начнем с левого описания механизма внимания. Это не очень сложно и может быть описано следующим уравнением:Q-матрица, содержащая запрос (векторное представление одного слова в последовательности), K-все ключи (векторные представления всех слов в последовательности) и V-значения, которые снова являются векторными представлениями всех слов в последовательности. Для кодера и декодера, модулей внимания с несколькими головками, V состоит из той же последовательности слов, что и Q. Однако для модуля внимания, учитывающего последовательности кодера и декодера, V отличается от последовательности, представленной Q.Чтобы немного упростить это, мы могли бы сказать, что значения в V умножаются и суммируются с некоторыми весами внимания a, где наши веса определяются:Это означает, что веса a определяются тем, как на каждое слово последовательности (представленное Q) влияют все остальные слова в последовательности (представленные K). Кроме того, функция SoftMax применяется к весам a, чтобы иметь распределение между 0 и 1. Эти веса затем применяются ко всем словам в последовательности, которые вводятся в V (те же векторы, что и Q для кодера и декодера, но разные для модуля, имеющего входы кодера и декодера).На рисунке справа описано, как этот механизм внимания можно распараллелить на несколько механизмов, которые можно использовать бок о бок. Механизм внимания повторяется несколько раз с линейными проекциями Q, K и V. Это позволяет системе учиться на различных представлениях Q, K и V, что полезно для модели. Эти линейные представления выполняются путем умножения Q, K и V на весовые матрицы W, которые изучаются во время обучения.Эти матрицы Q, K и V различны для каждого положения модулей внимания в структуре в зависимости от того, находятся ли они в кодере, декодере или между кодером и декодером. Причина в том, что мы хотим присутствовать либо на всей входной последовательности кодера, либо на части входной последовательности декодера. Модуль внимания с несколькими головками, который соединяет кодер и декодер, гарантирует, что входная последовательность кодера учитывается вместе с входной последовательностью декодера до заданной позиции.После многозадачных головок как в кодере, так и в декодере у нас есть слой прямой передачи по точкам. Эта небольшая сеть прямой связи имеет идентичные параметры для каждой позиции, которые можно описать как отдельное, идентичное линейное преобразование каждого элемента из данной последовательности.ОбучениеКак приручить такого " зверя’? Обучение и вывод на моделях Seq2Seq немного отличаются от обычной задачи классификации. То же самое относится и к Трансформаторам.Мы знаем, что для обучения модели задачам перевода нам нужны два предложения на разных языках, которые являются переводами друг друга. Как только у нас будет много пар предложений, мы сможем начать обучение нашей модели. Допустим, мы хотим перевести французский на немецкий. Нашим закодированным вводом будет французское предложение, а вводом для декодера будет немецкое предложение. Однако вход декодера будет сдвинут вправо на одну позицию. ..Подожди, а почему?Одна из причин заключается в том, что мы не хотим, чтобы наша модель училась копировать входные данные декодера во время обучения, но мы хотим узнать, что, учитывая последовательность кодера и конкретную последовательность декодера, которая уже была замечена моделью, мы предсказываем следующее слово/символ.Если мы не изменим последовательность декодера, модель научится просто "копировать" входные данные декодера, поскольку целевым словом/символом для позиции i будет слово/символ i на входе декодера. Таким образом, сдвигая ввод декодера на одну позицию, наша модель должна предсказать целевое слово/символ для позиции i, увидев только слово/символы 1,..., i-1 в последовательности декодера. Это мешает нашей модели изучить задачу копирования/вставки. Мы заполняем первую позицию ввода декодера маркером начала предложения, так как в противном случае это место было бы пустым из-за сдвига вправо. Аналогично, мы добавляем маркер конца предложения во входную последовательность декодера, чтобы отметить конец этой последовательности, и он также добавляется к целевому выходному предложению. Через мгновение мы увидим, как это полезно для вывода результатов.Это справедливо для моделей Seq2Seq и для трансформатора. В дополнение к сдвигу вправо Трансформатор применяет маску к входу в первом многоголовом модуле внимания, чтобы избежать просмотра потенциальных элементов последовательности "будущее". Это специфично для архитектуры трансформатора, потому что у нас нет RNN, где мы могли бы последовательно вводить нашу последовательность. Здесь мы вводим все вместе, и если бы не было маски, многоголовое внимание рассматривало бы всю входную последовательность декодера в каждой позиции.Процесс подачи правильного смещенного ввода в декодер также называется принудительным обучением, как описано в этом блоге.Целевая последовательность, которую мы хотим получить для наших расчетов потерь,-это просто ввод декодера (немецкое предложение) без его сдвига и с маркером конца последовательности в конце.ВыводВывод с помощью этих моделей отличается от обучения, что имеет смысл, потому что в конце концов мы хотим перевести французское предложение без немецкого предложения. Хитрость здесь заключается в том, чтобы повторно использовать нашу модель для каждой позиции выходной последовательности, пока мы не наткнемся на маркер конца предложения.Более пошаговым методом было бы:Введите полную последовательность кодировщика (французское предложение), и в качестве входных данных декодера мы возьмем пустую последовательность, в которой на первой позиции находится только маркер начала предложения. Это выведет последовательность, в которой мы будем брать только первый элемент.Этот элемент будет заполнен во вторую позицию нашей входной последовательности декодера, в которой теперь есть маркер начала предложения и первое слово/символ в нем.Введите в модель как последовательность кодера, так и новую последовательность декодера. Возьмите второй элемент вывода и поместите его во входную последовательность декодера.Повторяйте это до тех пор, пока не появится маркер конца предложения, который отмечает конец перевода.Мы видим, что нам нужно несколько раз пройти через нашу модель, чтобы перевести наше предложение.Я надеюсь, что эти описания немного прояснили архитектуру трансформатора для всех, начиная со структур Seq2Seq и кодировщика-декодера.Часть 3: Пример использования "Трансформатор для временных рядов"Мы видели архитектуру Трансформатора и знаем из литературы и авторов "Внимание-это все, что вам нужно", что модель очень хорошо справляется с языковыми задачами. Давайте теперь протестируем трансформатор в случае использования.Вместо задачи перевода давайте реализуем прогноз временных рядов для почасового потока электроэнергии в Техасе, предоставленный Советом по электрической надежности Техаса (ERCOT). Вы можете найти почасовые данные здесь.Большое подробное объяснение трансформатора и его реализации предоставлено harvardnlp. Если вы хотите глубже разобраться в архитектуре, я рекомендую пройти через эту реализацию.Поскольку мы можем использовать модели последовательностей на основе LSTM для создания многоэтапных прогнозов, давайте взглянем на Трансформатор и его мощность, чтобы сделать эти прогнозы. Однако сначала нам нужно внести несколько изменений в архитектуру, так как мы работаем не с последовательностями слов, а со значениями. Кроме того, мы выполняем автоматическую регрессию, а не классификацию слов/символов.ДанныеДоступные данные дают нам почасовую нагрузку для всей зоны контроля ERCOT. Я использовал данные с 2003 по 2015 год в качестве учебного набора, а 2016 год-в качестве тестового набора. Имея только значение загрузки и временную метку загрузки, я расширил временную метку на другие функции. Из метки времени я извлек день недели, которому она соответствует, и одним нажатием закодировал ее. Кроме того, я использовал год (2003, 2004, ..., 2015) и соответствующий час (1, 2, 3, ..., 24) как сама ценность. Это дает мне в общей сложности 11 функций для каждого часа дня. В целях сближения я также нормализовал нагрузку ERCOT, разделив ее на 1000.Чтобы предсказать заданную последовательность, нам нужна последовательность из прошлого. Размер этих окон может варьироваться от случая к случаю, но здесь, в нашем примере, я использовал почасовые данные за предыдущие 24 часа, чтобы предсказать следующие 12 часов. Это помогает нам регулировать размер этих окон в зависимости от наших потребностей. Например, мы можем изменить это на ежедневные данные вместо почасовых данных.Изменения в модели из документаВ качестве первого шага нам нужно удалить вложения, так как у нас уже есть числовые значения в наших входных данных. Вложение обычно отображает заданное целое число в n-мерное пространство. Здесь вместо использования встраивания я просто использовал линейное преобразование для преобразования 11-мерных данных в n-мерное пространство. Это похоже на встраивание со словами.Нам также необходимо удалить слой SoftMax с выхода Трансформатора, потому что наши выходные узлы-это не вероятности, а реальные значения.После этих незначительных изменений обучение может начаться!Как уже упоминалось, для обучения я использовал принуждение учителей. Это означает, что кодировщик получает окно из 24 точек данных в качестве входных данных, а вход декодера представляет собой окно из 12 точек данных, где первая является значением "начало последовательности", а следующие точки данных являются просто целевой последовательностью. Введя значение "начало последовательности" в начале, я сдвинул вход декодера на одну позицию по отношению к целевой последовательности.Я использовал 11-мерный вектор с только -1 в качестве значений "начала последовательности". Конечно, это можно изменить, и, возможно, было бы полезно использовать другие значения в зависимости от варианта использования, но в данном примере это работает, так как у нас никогда не бывает отрицательных значений ни в одном измерении последовательностей ввода/вывода.Функция потерь для этого примера-это просто среднеквадратичная ошибка.РезультатыНа двух приведенных ниже графиках показаны результаты. Я взял среднее значение почасовых значений в день и сравнил его с правильными значениями. На первом графике показаны 12-часовые прогнозы, данные за 24 предыдущих часа. Для второго графика мы предсказали один час, учитывая 24 предыдущих часа. Мы видим, что модель очень хорошо улавливает некоторые колебания. Среднеквадратичная ошибка для обучающего набора составляет 859, а для проверочного набора-4106 для 12-часовых прогнозов и 2 583 для 1-часовых прогнозов. Это соответствует средней абсолютной процентной ошибке прогноза модели 8,4% для первого графика и 5,1% для второго.ЗаключениеРезультаты показывают, что можно было бы использовать архитектуру трансформатора для прогнозирования временных рядов. Однако во время оценки это показывает, что чем больше шагов мы хотим спрогнозировать, тем выше будет ошибка. Первый график (рис. 3) выше был получен с помощью 24 часов для прогнозирования следующих 12 часов. Если мы прогнозируем только один час, результаты будут намного лучше, как мы видим на втором графике (рис. 4).Там достаточно места, чтобы поиграть с параметрами трансформатора, такими как количество слоев декодера и кодера и т. Д. Это не было задумано как идеальная модель, и при лучшей настройке и обучении результаты, вероятно, улучшатся.Это может оказать большую помощь в ускорении обучения с использованием графических процессоров. Я использовал локальную платформу WatsonStudio для обучения своей модели с графическими процессорами и позволил ей работать там, а не на моей локальной машине. Вы также можете ускорить обучение с помощью графических процессоров машинного обучения Watson, которые свободны до определенного времени обучения! Ознакомьтесь с моим предыдущим блогом, чтобы узнать, как это можно легко интегрировать в ваш код.Большое вам спасибо за то, что прочитали это, и я надеюсь, что смог разъяснить несколько понятий людям, которые только начинают углубляться в изучение!Список литературы1. Смелков Г.И., Пехотиков В.А. Пожарная безопасность светотехнических изделий. М.: Энергоатомиздат, 1991. 160 с. 2. Иванов Е.А. Основные задачи в области методологического и аппаратурного обеспечения условий безопасности при эксплуатации судовых ЭЭС // Устройства защиты от поражения электротоком и возникновения пожаров в судовых ЭЭС. Часть II: Сб. ВНТО им. акад. А. Н. Крылова. Л.: Судостроение, 1990. Вып. 484. С. 6-13. 3. Гилерович Ю.М. Некоторые пути повышение пожаробезопасности ЭЭС на судах и кораблях зарубежной постройки // Судостроение за рубежом. 1985. №6. С. 21- 33. 4. Приходько В.М. Повышение электропожаробезопасности при электроснабжении судов от береговых сетей. СПб.: СПГУВК, 2009. 218 с. 5. Приходько В. М. Обеспечение электро- и пожаробезопасности при электроснабжении судов от береговых сетей. СПб.: СПГУВК, 2003. 163 с.
2. Иванов Е.А. Основные задачи в области методологического и аппаратурного обеспечения условий безопасности при эксплуатации судовых ЭЭС // Устройства защиты от поражения электротоком и возникновения пожаров
в судовых ЭЭС. Часть II: Сб. ВНТО им. акад. А. Н. Крылова. Л.: Судостроение, 1990. Вып. 484. С. 6-13. 3. Гилерович Ю.М. Некоторые пути повышение пожаробезопасности ЭЭС на судах и кораблях зарубежной постройки // Судостроение за рубежом. 1985. №6. С. 21- 33.
4. Приходько В.М. Повышение электропожаробезопасности при электроснабжении судов от береговых сетей. СПб.: СПГУВК, 2009. 218 с.
5. Приходько В. М. Обеспечение электро- и пожаробезопасности при электроснабжении судов от береговых сетей. СПб.: СПГУВК, 2003. 163 с.
Вопрос-ответ:
Что представляет новая архитектура под названием Transformer?
Transformer - это архитектура для преобразования одной последовательности в другую с помощью кодера и декодера, использующая механизм внимания.
В чем отличие архитектуры Transformer от других моделей последовательностей?
Transformer отличается от ранее описанных моделей последовательностей тем, что она не использует LSTM, а вместо этого основана на механизме внимания.
Какие компоненты входят в архитектуру Transformer?
Архитектура Transformer состоит из кодера и декодера, которые преобразуют одну последовательность в другую.
Какова основная идея архитектуры Transformer?
Основная идея архитектуры Transformer - использование механизма внимания для обработки входных данных и создания выходной последовательности.
Можно ли использовать архитектуру Transformer для решения задачи ревизии трансформаторов?
Статья не упоминает о применении архитектуры Transformer для решения задачи ревизии трансформаторов. Она лишь представляет эту архитектуру и объясняет ее принципы работы.
Какую новую архитектуру представляет статья?
Статья представляет новую архитектуру под названием Transformer.
Что такое механизм внимания?
Механизм внимания используется в архитектуре Transformer и является одной из ее составных частей.
В чем отличие архитектуры Transformer от других моделей последовательностей?
Transformer отличается от ранее описанных существующих моделей последовательностей тем, что не подразумевает использование LSTM и включает в себя кодер и декодер для преобразования одной последовательности в другую.
Какие компоненты включает в себя архитектура Transformer?
Архитектура Transformer включает в себя две основные компоненты - кодер и декодер.
Для чего применяется новая архитектура Transformer?
Новая архитектура Transformer применяется для преобразования одной последовательности в другую.
Какая архитектура представлена в статье или исследовании?
В статье представлена архитектура под названием Transformer.
Чем отличается архитектура Transformer от других моделей для преобразования последовательностей?
Архитектура Transformer отличается от других моделей тем, что она использует механизм внимания и не требует рекуррентных слоев, таких как LSTM.