Size: a a a

Natural Language Processing

2021 January 06

VF

Vadim Fomin in Natural Language Processing
источник

B

Banof in Natural Language Processing
🔫 Hald siegfried кикнут — вернуть этого пользователя можно только разбаном в настройках чата.

Проголосовавшие за кик:
@wadimiusz, @mitya8128, @Nikitini, @Nikolay_Karelin, @gislygisly
При поддержке Золота Бородача
источник
2021 January 07

OS

Oleg Sb in Natural Language Processing
Верно что трансформер в режиме инференса работает рекуррентно:
1. подали <init>, получили 1-е слово
2. подали <init> и 1-е слово, получили 2-е слово
и так далее
источник

OS

Oleg Sb in Natural Language Processing
Это верно?
источник

OS

Oleg Sb in Natural Language Processing
Если это так, то на втором шаге мы получим сразу 2 слова на выходе - и что делать если 1-е слово не совпадет с полученным ранее?
источник

YB

Yuri Baburov in Natural Language Processing
Oleg Sb
Верно что трансформер в режиме инференса работает рекуррентно:
1. подали <init>, получили 1-е слово
2. подали <init> и 1-е слово, получили 2-е слово
и так далее
смотря какой трансформер.
BERT натренирован на предсказание слов внутри фразы
GPT натренирован на предсказание одного следующего слова
источник

YB

Yuri Baburov in Natural Language Processing
Oleg Sb
Если это так, то на втором шаге мы получим сразу 2 слова на выходе - и что делать если 1-е слово не совпадет с полученным ранее?
выдаётся только одно слово, поэтому проблемы не возникает.
но есть варианты, когда выдаётся несколько слов, тогда новое обычно считается "уточнённой версией".
источник

OS

Oleg Sb in Natural Language Processing
Пока читал только оригинальную статью, насколько я понял там трансформер решает задачу машинного перевода. Пусть фраза длиной input_length переводится как фраза на другом языке длиной target_length.

Декодер состоит из 6 блоков, каждый блок использует в качестве входных данных два массива:
1. массив размера (512, target_length), пришедший из предыдущего слоя декодера, для первого слоя - из эмбеддингов target'а
2. массив размера (512, input_length), пришедший из последнего блока энкодера
И выдает один массив размера (512, target_length)

Значит весь декодер выдает массив слов размером target_length, то есть столько же слов, сколько получил на вход.

Пусть наша задача - машинный перевод. Делая первый шаг в режиме инференса, мы знаем только первое слово - <init>, значит target_length == 1, и мы получим на выходе одно слово - начало фразы, назовем его word1. Теперь мы уже знаем 2 слова: <init> и word1, значит мы можем подать на вход декодеру оба слова, и target_length == 2. Поскольку декодер выдает столько же слов, сколько получил на вход, то он выдаст уже не одно, а два слова, в которых первое скорее всего совпадет с word1, а следующее назовем word2 - это продолжение фразы. На следующем шаге декодер получит и выдаст 3 слова и так далее. Или все не так работает?
источник

DD

David Dale in Natural Language Processing
Oleg Sb
Пока читал только оригинальную статью, насколько я понял там трансформер решает задачу машинного перевода. Пусть фраза длиной input_length переводится как фраза на другом языке длиной target_length.

Декодер состоит из 6 блоков, каждый блок использует в качестве входных данных два массива:
1. массив размера (512, target_length), пришедший из предыдущего слоя декодера, для первого слоя - из эмбеддингов target'а
2. массив размера (512, input_length), пришедший из последнего блока энкодера
И выдает один массив размера (512, target_length)

Значит весь декодер выдает массив слов размером target_length, то есть столько же слов, сколько получил на вход.

Пусть наша задача - машинный перевод. Делая первый шаг в режиме инференса, мы знаем только первое слово - <init>, значит target_length == 1, и мы получим на выходе одно слово - начало фразы, назовем его word1. Теперь мы уже знаем 2 слова: <init> и word1, значит мы можем подать на вход декодеру оба слова, и target_length == 2. Поскольку декодер выдает столько же слов, сколько получил на вход, то он выдаст уже не одно, а два слова, в которых первое скорее всего совпадет с word1, а следующее назовем word2 - это продолжение фразы. На следующем шаге декодер получит и выдаст 3 слова и так далее. Или все не так работает?
Декодер трансформера (например, gpt) действительно работает примерно так. Но там ещё накладываются ограничения на атеншн: он смотрит только справа налево. Поэтому даже если ты подашь на вход init, w1, w2, w3, нейроны на третьей позиции будут видеть только init и w1, как будто w2 и w3 нету. Поэтому дописывание слов справа не меняет то, что выдает трансформер слева.

А выдаёт он, кстати, на каждом шаге не слова, а распределение над всеми возможными словами. А дальше ты уже сам тем или иным методом выбираешь из этого распределения - и фиксируешь свой выбор.
источник

DD

David Dale in Natural Language Processing
Поэтому такого, чтобы "второе слово не совпало со вторым словом за прошлый раз" не бывает - трансформер выдает векторы вероятностей и они совпадают всегда, по построению (благодаря attention masks), а уж как ты из этих вероятностей выберешь слова - дело твое.
источник

BS

Bogdan Salyp in Natural Language Processing
Плюсую, там есть достаточно гибкая настройка результатов - можно настроить repetition_penalty (чтобы не повторялись n-граммы), temperature/top_k/top_p (https://towardsdatascience.com/how-to-sample-from-language-models-682bceb97277 вот тут кратко описано, результаты могут быть ужасными при top_k=10 и отличными при top_k=30 на одной нейронке)
источник

OS

Oleg Sb in Natural Language Processing
David Dale
Декодер трансформера (например, gpt) действительно работает примерно так. Но там ещё накладываются ограничения на атеншн: он смотрит только справа налево. Поэтому даже если ты подашь на вход init, w1, w2, w3, нейроны на третьей позиции будут видеть только init и w1, как будто w2 и w3 нету. Поэтому дописывание слов справа не меняет то, что выдает трансформер слева.

А выдаёт он, кстати, на каждом шаге не слова, а распределение над всеми возможными словами. А дальше ты уже сам тем или иным методом выбираешь из этого распределения - и фиксируешь свой выбор.
Да я это не учел, спасибо, классно
источник

D

D in Natural Language Processing
David Dale
Декодер трансформера (например, gpt) действительно работает примерно так. Но там ещё накладываются ограничения на атеншн: он смотрит только справа налево. Поэтому даже если ты подашь на вход init, w1, w2, w3, нейроны на третьей позиции будут видеть только init и w1, как будто w2 и w3 нету. Поэтому дописывание слов справа не меняет то, что выдает трансформер слева.

А выдаёт он, кстати, на каждом шаге не слова, а распределение над всеми возможными словами. А дальше ты уже сам тем или иным методом выбираешь из этого распределения - и фиксируешь свой выбор.
Давид, так это в вашу честь OpenAI новую модель назвал (https://openai.com/blog/dall-e/)
источник

SancheZz Мов in Natural Language Processing
источник

KK

Krep Kospit in Natural Language Processing
Oleg Sb
Верно что трансформер в режиме инференса работает рекуррентно:
1. подали <init>, получили 1-е слово
2. подали <init> и 1-е слово, получили 2-е слово
и так далее
На сайте "Системный Блокъ" есть ряд статей на русском от rnn до декодер транформера. По сути, компиляция статей с разных источников, но хорошо переработанная и многое разжёвано. Мне, после оригинала, хорошо зашло. Правда, что оригинал, что те статьи пришлось читать не один раз, пока не начал понимать хоть какую-то часть идеи.
источник

ЕЗ

Евгений Зубов... in Natural Language Processing
Krep Kospit
На сайте "Системный Блокъ" есть ряд статей на русском от rnn до декодер транформера. По сути, компиляция статей с разных источников, но хорошо переработанная и многое разжёвано. Мне, после оригинала, хорошо зашло. Правда, что оригинал, что те статьи пришлось читать не один раз, пока не начал понимать хоть какую-то часть идеи.
источник

KK

Krep Kospit in Natural Language Processing
Да
источник

AK

Anton Kolonin in Natural Language Processing
Тут вот наша свежая статья про NLP-сегментацию на основе Link Grammar: http://aigents.com/papers/2020/NLS_S_A_I_ence_Paper.pdf
http://aigents.com/papers/2020/NLS_S_A_I_ence_Presentation.pdf
В сборнике
https://ieeexplore.ieee.org/xpl/conhome/9303029/proceeding
Следующая будет про Natural Language Generation на этом же принципе.
источник
2021 January 08

Я

Ярослав in Natural Language Processing
Yuri Baburov
смотря какой трансформер.
BERT натренирован на предсказание слов внутри фразы
GPT натренирован на предсказание одного следующего слова
Правильно ли я понимаю, что гпт не применима для abstract summarization?
источник

DD

David Dale in Natural Language Processing
Ярослав
Правильно ли я понимаю, что гпт не применима для abstract summarization?
Применима, если её пофайньюнить на эту задачу. Или если дописать какой-нибудь TL;DR, как в статье про gpt-2
источник