Указание предложения в задачах нейронного машинного перевода

Я видел много людей, работающих над нейронным машинным переводом. Обычно они представляют свое предложение между тегами <BOS><EOS>, <START><END> и т. д. перед обучением сети. Конечно, указывать начало и конец предложения логичное решение, но интересно, как нейросети понимают, что строка <END> (или другие) означает конец предложения?


person Burhan Bilen    schedule 20.02.2021    source источник


Ответы (1)


Это не так.

Во время вывода существует жестко запрограммированное правило, согласно которому, если этот токен сгенерирован, последовательность выполняется, и базовая нейронная модель больше не будет запрашивать следующий токен.

source_seq = tokenize('This is not a test.')
print(source_seq)

На этом этапе вы получите что-то вроде:

[ '<BOS>', 'Thi###', ... , '###t', '.' , '<EOS>' ]

Теперь строим целевую последовательность в том же формате:

target_seq = [ '<BOS>' ]

while true:
    token = model.generate_next_token(source_seq, target_seq)
    if token == '<EOS>':
       break
    seq.append(token)

Сама модель только предсказывает наиболее вероятный следующий токен, дающий текущее состояние (входная последовательность и выходная последовательность на данный момент).

Он не может выйти из петли так же, как не может выдернуть вилку вашей машины из стены.

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

person Adam Bittlingmayer    schedule 20.02.2021
comment
Я одобрю ваш ответ, но не могли бы вы объяснить немного больше, если это возможно? Например, что, если я не соблюдаю это правило и не добавляю в свои предложения никаких токенов? - person Burhan Bilen; 21.02.2021
comment
@BurhanBilen Тогда у модели не будет возможности научиться предсказывать этот токен, и вы получите фактически бесконечный цикл. - person Adam Bittlingmayer; 22.02.2021
comment
Затем он будет генерировать бесконечно длинные предложения — если только вы не используете какое-то другое правило, чтобы обрезать его, например «остановиться, если длина больше 200». - person Arya McCarthy; 22.02.2021
comment
Генерация авторегрессионной последовательности (вы бы знали, если бы не делали этого) работает, создавая одно слово за раз, пока вы не создадите специальное слово «стоп-знак» EOS. - person Arya McCarthy; 22.02.2021
comment
Большое спасибо, очень приятные и понятные объяснения от вас обоих, теперь более понятно и понятно. - person Burhan Bilen; 22.02.2021
comment
Бурхан, я добавил примечание, которое может заинтересовать вас как носителя языка как с левым, так и с правым ответвлением. - person Adam Bittlingmayer; 23.02.2021
comment
@AdamBittlingmayer Большое спасибо, Адам. Я ценю вашу помощь, это также будет очень полезно для других людей. - person Burhan Bilen; 02.03.2021