All streams
Search
Write a publication
Pull to refresh
1
0
Send message

Не, порядок в сетках трансформерах там вполне себе задается, через positional encoding который кодирует порядковую информацию о расположении по отношению друг к другу токенов подслов и эта информация добавляется к самим эмбедингам токенов. Кодироваться может явно через определенный алгоритм, либо да, можно сделать так, что бы это тоже выучивалось. Обычно для NLP берется первый вариант.

Основная же штука в трансформерах это механизм self-attention, который учится пониманию взаимоотношения поступивших токенов всех ко всем. Этих атеншенов там много и каждый из них учится какому-либо типу оценивающиму взаимотношения токенов друг к другу, условно к примеру смысловых или грамматических, ну или как раз к примеру сцеплять подслова в слова. Но опять же это условно, чему по итогу выучивается атеншен на практике часто очень сложно интерпретировать.

Если под ассоциативной памяти имеешь ввиду насколько большой контекст разговора может удержать сетка, то у разных моделей по разному, у GPT3 к примеру контекстное окно равно 2048 токенам, что грубо говоря около 500-1000 слов.

Также там приводятся примеры решения простых математических и физических задач, например, на преодоление расстояний. Но в этой нейросети общение идёт не просто диалогом, а сначала ей даются пара примеров вопроса и ответа и уже по этому образцу на следующий вопрос она даёт свои ответы, например, объясняя шутки.

А это очень интересная штука. Называется chain of thought prompting. Если давать достаточно большим моделям в качестве затравки, такой пример с вопрос и ответом с рассуждениями, нейронки достаточно сильно становится лучше в этой задаче. Но без этого, к примеру как тут затравить их как диалоговых чат-ботов они заметно тупеют в этом плане

*Блин, не туда ответил.

Раскладываются на буквы и заполняют входы нейронной сети? То есть длина сообщения ограничена?

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

И да, у сеток обычно есть максимальная длина, с которой они могут работать.

Интересно, каким образом вообще поступают тексты на вход модели? Раскладываются на буквы и заполняют входы нейронной сети? То есть длина сообщения ограничена?

В NLP есть куча разных способов кодирования текста. Но для языковых моделей обычно используется Byte Pair Encoding или его вариации. Это алгоритм для формирования словаря из подслов, он тоже обучается на корпусе текстов, ну а точнее тупо итеративно строится статистика по частоте каких-либо сочетаний букв, добавляя то что встречается чаще, пока не достигается заданное ограничение на размер словаря.

А правда, от чего зависит пол нейронки?

От статистики текстов на которых мы обучали нейронку, контекста заданного на первых словах которые мы послали в нейронку и богов рандома, когда мы выбираем слова из генерируемого сетью распределения вероятностей по словарю.

А у нее и нет оперативной памяти в обычном смысле слова. Веса как и у любых других моделей не меняются после обучения. Просто данный тип нейронок является авторегрессивными. Он получает слово или набор слов (ну точнее токенов, но я буду говорить слова) и генерирует следующее, которые потом присобачивается к ним и это все снова посылается на вход сети и так пока не сгенерируется специализированный стоп токен или пока не достигнет ограничения на максимум сколько слов за раз может она проглотить, ну или любое другое условие, которое придет программисту в голову. В диалоговых системах на базе языковых моделей, просто человек может дописать свой ответ на то, что генерит нейронка и ответ с прошлым диалогом посылается на вход сети. Так что оперативной памятью в каком то смысле как раз и являются прошлые вопросы и ответы, они и являются контекстом для последующей генерации.

2

Information

Rating
Does not participate
Registered
Activity

Specialization

Дата-сайентист
Middle
Python
Git
OOP
SQL