Читать книгу Как устроен ChatGPT? Полное погружение в принципы работы и спектр возможностей самой известной нейросети в мире онлайн
Откуда берутся эти вероятности?
Итак, ChatGPT всегда выбирает следующее слово, основываясь на вероятностях. Но откуда берутся эти вероятности? Давайте начнем с более простой задачи. Рассмотрим создание текста на английском языке по одной букве (а не по слову) за раз. Как мы можем определить вероятность для каждой буквы?
Самое простое, что мы могли бы сделать, – это взять образец английского текста и подсчитать, как часто в нем встречается каждая буква. Например, так подсчитываются буквы в статье о кошках (англ. cats) в «Википедии»:
LetterCounts[WikipediaData["cats"]]
Out[]= <|e → 4279, a → 3442, t → 3397, i → 2739, s → 2615, n → 2463, o → 2426, r → 2147, h → 1613, l → 1552, c → 1405, d → 1331, m → 989, u → 916, f → 760, g → 745, p → 651, y → 591, b → 511, w → 509, v → 395, k → 212, T → 114, x → 85, A → 81, I → 68, S → 55, F → 42, z → 38, F → 36…|>
А это в статье о собаках (англ. dogs):
LetterCounts[WikipediaData["dogs"]]
Out[]= <|e → 3911, a → 2741, o → 2608, i → 2562, t → 2528, s → 2406, n → 2340, r → 1866, d → 1584, h → 1463, l → 1355, c → 1083, g → 929, m → 859, u → 782, f → 662, p → 636, y → 500, b → 462, w → 409, v → 406, k → 151, T → 90, C → 85, I → 80, A → 74, x → 71, S → 65…|>
Результаты похожи, но не идентичны (буква о, без сомнения, чаще встречается в статье о собаках, потому что, в конце концов, она присутствует в самом слове dog). Тем не менее, если мы возьмем достаточно большую выборку текстов на английском языке, то можем ожидать, что в итоге получим достаточно схожие результаты:
Out[]= {e → 12,7 %, t → 9,06 %, a → 8,17 %, o → 7,51 %, i → 6,97 %, n → 6,75 %, s → 6,33 %, h → 6,09 %, r → 5,99 %, d → 4,25 %, I → 4,03 %, c → 2,78 %, u → 2,76 %, m → 2,41 %, w → 2,36 %, f → 2,23 %, g → 2,02 %, y → 1,97 %, p → 1,93 %, b → 1,49 %, v → 0,978 %, K → 0,772 %, j → 0,153 %, x → 0,150 %, q → 0,0950 %, z → 0,0740 %}
Вот что мы получим, если просто сгенерируем последовательность букв с такими вероятностями:
rronoitadatcaeaesaotdoysaroiyiinnbantoioestlhddeocneooewceseciselnodrtrdgriscsatsepesdcniouhoetsedeyhedslernevstothindtbmnaohngotannbthrdthtonsipieldn
Мы можем разбить это на «слова», добавив пробелы, как если бы это были буквы с определенной вероятностью:
sd n oeiaim satnwhoo eer rtr ofiianordrenapwokom del oaas ill e h f rellptohltvoettseodtrncilntehtotrkthrslo hdaol n sriaefr hthehtn ld gpod a h y oi
Мы также можем упростить процесс, разделив буквы в соответствии со стандартной длиной слов в английском языке:
ni hilwhuei kjtn isjd erogofnr n rwhwfao rcuw lis fahte uss cpnc nluoe nusaetat llfo oeme rrhrtn xdses ohm oa tne ebedcon oarvthv ist